@lincros-ui/components 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/styles.ts","../src/components/ui/accordion.tsx","../src/components/ui/alert.tsx","../src/components/ui/button.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/calendar.tsx","../src/components/ui/card.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/chat-layout.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/dialog.tsx","../src/components/ui/command.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/dialog-maximizable.tsx","../src/components/ui/drawer.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/label.tsx","../src/components/ui/form.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/input.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/menubar.tsx","../src/components/ui/message-bubble.tsx","../src/components/ui/message-input.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/popover.tsx","../src/components/ui/progress.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/select.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/use-mobile.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/sidebar-custom.tsx","../src/components/ui/slider.tsx","../src/components/ui/switch.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/components/ui/textarea.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/tooltip-button.tsx","../src/components/ui/use-toast.ts","../src/components/EnsureTenant.tsx","../src/components/auth/SSOLoadingOverlay.tsx","../src/hooks/useSidebarState.ts","../src/components/ControlSidebar.tsx","../src/components/MainLayout.tsx","../src/components/ProtectedRoute.tsx","../src/components/FilterBar.tsx","../src/components/GenericFilterBar.tsx","../src/components/PageHeader.tsx","../src/components/PaginationControls.tsx","../src/components/RichTextEditor.tsx","../src/components/RichTextRenderer.tsx","../src/components/StandardPageLayout.tsx","../src/components/StatusIndicator.tsx","../src/components/ViewToggle.tsx","../src/components/auth/SSOError.tsx","../src/components/auth/SSOLoginButton.tsx","../src/components/webhook/EventInspector.tsx","../src/utils/webhook.utils.ts","../src/components/whatsapp/WebhookConfigPanel.tsx","../src/components/webhook/WebhookConfigModal.tsx","../src/components/webhook/WebhookEventCard.tsx","../src/components/webhook/WebhookFlowLink.tsx","../src/components/webhook/WebhookLogsViewer.tsx","../src/components/webhook/WebhookMetricsChart.tsx","../src/components/webhook/WebhookTestModal.tsx","../src/components/webhook/WebhookTimeline.tsx","../src/components/whatsapp/MessageHistory.tsx","../src/components/whatsapp/QRCodeModal.tsx","../src/components/whatsapp/SendMessageModal.tsx","../src/components/whatsapp/WhatsAppHealthMonitor.tsx","../src/utils/date-formatter.ts","../src/utils/node-styling.utils.ts","../src/utils/string-formatter.ts","../src/types/mcp.types.ts","../src/types/webhook.types.ts","../src/components/ui/toast.tsx","../src/components/ui/toaster.tsx"],"names":["React","jsxs","jsx","React2","cva","React3","React4","React5","React6","count","React7","Slot","ChevronRight","React8","React9","api","React10","Fragment","React11","StatusBadge","React12","CollapsibleTrigger","CollapsibleContent","React13","React14","CommandPrimitive","React15","Check","React16","DialogPrimitive2","X","DrawerPrimitive","React17","React18","Circle","Label","React19","React20","React21","React22","React23","React24","Icon","formatTime","useState","useEffect","React26","ChevronDown","React27","ChevronLeft","MoreHorizontal","React28","React29","RadioGroup","React30","React31","Separator","React32","SheetPrimitive","React33","React34","Tooltip","React35","style","open","React38","React39","React40","React41","React42","React43","React44","toast","props","React46","error","useMemo","Clock","Link","Shield","Bot","useLocation","Loader2","Search","User","AlertCircle","Building2","UserCheck","ChevronUp","useRef","children","useCallback","scrollLeft","Image","editor","List","Link2","ImageIcon","memo","Key","Users","RefreshCw","CheckCircle","Info","Code","Database","AlertTriangle","WebhookEventStatus","format","ptBR","webhookService","useMutation","Plus","CheckCircle2","XCircle","MessageSquare","Phone","Workflow","MoreVertical","useQuery","formatDistanceToNow","Timer","Activity","FileJson","Zap","ExternalLink","ArrowRight","Filter","Trash2","Copy","formatEventType","ResponsiveContainer","Legend","WebhookEventType","Send","Download","Wifi","QrCode","MessageCircle","FileText","WifiOff","BarChart3","React63","AlertIcons"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"icon-size shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground border-border\",\n destructive: \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n\n // Variantes semânticas Acorde\n success: \"border-acorde-success/20 bg-acorde-success/5 text-acorde-success [&>svg]:text-acorde-success\",\n warning: \"border-acorde-warning/20 bg-acorde-warning/5 text-acorde-warning [&>svg]:text-acorde-warning\",\n error: \"border-acorde-error/20 bg-acorde-error/5 text-acorde-error [&>svg]:text-acorde-error\",\n info: \"border-acorde-info/20 bg-acorde-info/5 text-acorde-info [&>svg]:text-acorde-info\",\n acorde: \"border-acorde-primary/20 bg-acorde-primary/5 text-acorde-primary [&>svg]:text-acorde-primary\",\n },\n size: {\n sm: \"px-3 py-2 text-xs\",\n default: \"px-4 py-3 text-sm\",\n lg: \"px-6 py-4 text-base\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst AlertIcons = {\n success: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 12l2 2 4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n ),\n warning: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ),\n error: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n ),\n info: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <path d=\"M12 16v-4M12 8h.01\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ),\n}\n\nconst CloseIcon = () => (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n)\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n icon?: React.ReactNode\n closable?: boolean\n onClose?: () => void\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant, size, icon, closable, onClose, children, ...props }, ref) => {\n // Auto-detect icon based on variant\n const defaultIcon = variant && AlertIcons[variant as keyof typeof AlertIcons]\n const displayIcon = icon !== undefined ? icon : defaultIcon\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant, size }), className)}\n {...props}\n >\n <div className=\"flex gap-3\">\n {displayIcon && (\n <div className=\"flex-shrink-0 mt-0.5\">\n {displayIcon}\n </div>\n )}\n <div className=\"flex-1\">\n {children}\n </div>\n {closable && onClose && (\n <button\n onClick={onClose}\n className=\"flex-shrink-0 p-1 rounded-md hover:bg-black/10 dark:hover:bg-white/10 transition-colors\"\n aria-label=\"Close alert\"\n >\n <CloseIcon />\n </button>\n )}\n </div>\n </div>\n )\n }\n)\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\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/styles\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n primary:\n \"bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n\n \"primary-acorde\": \"bg-acorde-primary text-white hover:bg-acorde-primary/90 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-acorde-primary\",\n \"secondary-acorde\": \"bg-acorde-secondary text-white hover:bg-acorde-secondary/90 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-acorde-secondary\",\n \"success\": \"bg-green-500 text-white hover:bg-green-600 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-green-500\",\n \"warning\": \"bg-amber-500 text-white hover:bg-amber-600 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-amber-500\",\n \"error\": \"bg-red-500 text-white hover:bg-red-600 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-red-500\",\n \"info\": \"bg-blue-500 text-white hover:bg-blue-600 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-blue-500\",\n\n \"outline-acorde\": \"border-2 border-acorde-primary text-acorde-primary bg-transparent hover:bg-acorde-primary hover:text-white focus-visible:ring-acorde-primary\",\n \"outline-success\": \"border-2 border-green-500 text-green-500 bg-transparent hover:bg-green-500 hover:text-white focus-visible:ring-green-500\",\n \"outline-warning\": \"border-2 border-amber-500 text-amber-500 bg-transparent hover:bg-amber-500 hover:text-white focus-visible:ring-amber-500\",\n \"outline-error\": \"border-2 border-red-500 text-red-500 bg-transparent hover:bg-red-500 hover:text-white focus-visible:ring-red-500\",\n },\n size: {\n xs: \"h-8 rounded px-2 text-xs\",\n sm: \"h-9 rounded-md px-3\",\n default: \"h-10 px-4 py-2\",\n lg: \"h-11 rounded-md px-8\",\n xl: \"h-12 rounded-lg px-10 text-base\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n loading?: boolean\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n}\n\nconst LoadingSpinner = () => (\n <svg className=\"icon-size animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n)\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props\n }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n const isDisabled = disabled || loading\n\n if (asChild) {\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {children}\n </Comp>\n )\n }\n\n return (\n <Comp\n className={`${cn(buttonVariants({ variant, size, className }))}`}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {loading && <LoadingSpinner />}\n {!loading && leftIcon && <span className=\"mr-1\">{leftIcon}</span>}\n {children}\n {!loading && rightIcon && <span className=\"ml-1\">{rightIcon}</span>}\n </Comp>\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"../../utils/styles\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className\n )}\n {...props}\n />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","import * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nconst AspectRatio = AspectRatioPrimitive.Root\n\nexport { AspectRatio }\n","import * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive: \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground border-border hover:bg-accent hover:text-accent-foreground\",\n\n // Variantes semânticas Acorde\n success: \"border-transparent bg-acorde-success text-white hover:bg-acorde-success/90 shadow-sm\",\n warning: \"border-transparent bg-acorde-warning text-white hover:bg-acorde-warning/90 shadow-sm\",\n error: \"border-transparent bg-acorde-error text-white hover:bg-acorde-error/90 shadow-sm\",\n info: \"border-transparent bg-acorde-info text-white hover:bg-acorde-info/90 shadow-sm\",\n\n // Variantes Acorde\n \"primary-acorde\": \"border-transparent bg-acorde-primary text-white hover:bg-acorde-primary/90 shadow-sm\",\n \"secondary-acorde\": \"border-transparent bg-acorde-secondary text-white hover:bg-acorde-secondary/90 shadow-sm\",\n\n // Variantes outline semânticas\n \"outline-success\": \"border-acorde-success text-acorde-success bg-acorde-success/10 hover:bg-acorde-success/20\",\n \"outline-warning\": \"border-acorde-warning text-acorde-warning bg-acorde-warning/10 hover:bg-acorde-warning/20\",\n \"outline-error\": \"border-acorde-error text-acorde-error bg-acorde-error/10 hover:bg-acorde-error/20\",\n \"outline-info\": \"border-acorde-info text-acorde-info bg-acorde-info/10 hover:bg-acorde-info/20\",\n \"outline-acorde\": \"border-acorde-primary text-acorde-primary bg-acorde-primary/10 hover:bg-acorde-primary/20\",\n\n // Variantes ghost\n \"ghost-success\": \"text-acorde-success hover:bg-acorde-success/10\",\n \"ghost-warning\": \"text-acorde-warning hover:bg-acorde-warning/10\",\n \"ghost-error\": \"text-acorde-error hover:bg-acorde-error/10\",\n \"ghost-info\": \"text-acorde-info hover:bg-acorde-info/10\",\n },\n size: {\n sm: \"px-2 py-0.5 text-[10px] rounded-md\",\n default: \"px-2.5 py-0.5 text-xs rounded-full\",\n lg: \"px-3 py-1 text-sm rounded-full\",\n xl: \"px-4 py-1.5 text-base rounded-full\",\n },\n interactive: {\n none: \"\",\n clickable: \"cursor-pointer hover:scale-105 active:scale-95\",\n removable: \"pr-1\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n interactive: \"none\",\n },\n }\n)\n\nconst RemoveIcon = ({ onClick }: { onClick: () => void }) => (\n <button\n onClick={onClick}\n className=\"ml-1 rounded-full p-0.5 hover:bg-black/20 dark:hover:bg-white/20 transition-colors\"\n aria-label=\"Remove badge\"\n >\n <svg className=\"h-3 w-3\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </button>\n)\n\nconst StatusDot = ({ variant }: { variant: string }) => {\n const dotColor = variant.includes(\"success\") ? \"bg-acorde-success\" :\n variant.includes(\"warning\") ? \"bg-acorde-warning\" :\n variant.includes(\"error\") ? \"bg-acorde-error\" :\n variant.includes(\"info\") ? \"bg-acorde-info\" :\n variant.includes(\"acorde\") ? \"bg-acorde-primary\" :\n \"bg-muted-foreground\"\n\n return <span className={`w-2 h-2 rounded-full ${dotColor} mr-1`} />\n}\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n asChild?: boolean\n icon?: React.ReactNode\n onRemove?: () => void\n removable?: boolean\n dot?: boolean\n}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n ({\n className,\n variant,\n size,\n interactive,\n asChild = false,\n icon,\n onRemove,\n removable,\n dot,\n children,\n onClick,\n ...props\n }, ref) => {\n const Comp = asChild ? \"span\" : \"div\"\n\n // Auto-detect interactive mode\n const resolvedInteractive =\n onRemove || removable ? \"removable\" :\n onClick ? \"clickable\" :\n interactive || \"none\"\n\n return (\n <Comp\n className={cn(badgeVariants({ variant, size, interactive: resolvedInteractive, className }))}\n ref={ref}\n onClick={onClick}\n {...props}\n >\n {dot && <StatusDot variant={variant || \"default\"} />}\n {icon && <span className=\"mr-1\">{icon}</span>}\n {children}\n {(onRemove || removable) && onRemove && <RemoveIcon onClick={onRemove} />}\n </Comp>\n )\n }\n)\nBadge.displayName = \"Badge\"\n\n// Badge com contador\nexport const CountBadge = React.forwardRef<HTMLDivElement, BadgeProps & {\n count: number\n max?: number\n showZero?: boolean\n}>(\n ({ count, max = 99, showZero = false, ...props }, ref) => {\n if (count === 0 && !showZero) return null\n\n const displayCount = count > max ? `${max}+` : count.toString()\n\n return (\n <Badge\n {...props}\n ref={ref}\n size=\"sm\"\n className=\"min-w-[20px] h-5 px-1.5 text-[10px] font-bold justify-center\"\n >\n {displayCount}\n </Badge>\n )\n }\n)\nCountBadge.displayName = \"CountBadge\"\n\n// Badge de status\nexport const StatusBadge = React.forwardRef<HTMLDivElement, BadgeProps & {\n status: \"online\" | \"offline\" | \"away\" | \"busy\" | \"idle\"\n}>(\n ({ status, ...props }, ref) => {\n const statusConfig = {\n online: { variant: \"success\" as const, text: \"Online\" },\n offline: { variant: \"outline\" as const, text: \"Offline\" },\n away: { variant: \"warning\" as const, text: \"Away\" },\n busy: { variant: \"error\" as const, text: \"Busy\" },\n idle: { variant: \"outline-warning\" as const, text: \"Idle\" },\n }\n\n const config = statusConfig[status]\n\n return (\n <Badge\n {...props}\n ref={ref}\n variant={config.variant}\n dot\n >\n {config.text}\n </Badge>\n )\n }\n)\nStatusBadge.displayName = \"StatusBadge\"\n\n// Badge notification\nexport const NotificationBadge = React.forwardRef<HTMLDivElement, BadgeProps & {\n position?: \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\"\n}>(\n ({ position = \"top-right\", className, ...props }, ref) => {\n const positionClasses = {\n \"top-right\": \"-top-1 -right-1\",\n \"top-left\": \"-top-1 -left-1\",\n \"bottom-right\": \"-bottom-1 -right-1\",\n \"bottom-left\": \"-bottom-1 -left-1\",\n }\n\n return (\n <Badge\n {...props}\n ref={ref}\n size=\"sm\"\n className={cn(\n \"absolute rounded-full min-w-[18px] h-[18px] px-1.5 text-[10px] font-bold justify-center\",\n positionClasses[position],\n className\n )}\n />\n )\n }\n)\nNotificationBadge.displayName = \"NotificationBadge\"\n\n// Badge Group\nexport const BadgeGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement> & {\n spacing?: \"sm\" | \"md\" | \"lg\"\n}>(\n ({ className, spacing = \"md\", ...props }, ref) => {\n const spacingClasses = {\n sm: \"gap-1\",\n md: \"gap-2\",\n lg: \"gap-3\",\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-wrap items-center\", spacingClasses[spacing], className)}\n {...props}\n />\n )\n }\n)\nBadgeGroup.displayName = \"BadgeGroup\"\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumb.displayName = \"Breadcrumb\"\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\n className\n )}\n {...props}\n />\n))\nBreadcrumbList.displayName = \"BreadcrumbList\"\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n))\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n )\n})\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n))\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"icon-size\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\"\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { cn } from \"../../utils/styles\";\nimport { buttonVariants } from \"@/components/ui/button\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\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: cn(\n buttonVariants({ variant: \"outline\" }),\n \"h-7 w-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-y-1\",\n head_row: \"flex\",\n head_cell:\n \"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-range-end)]:rounded-r-md [&: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\",\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\"\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\",\n day_today: \"bg-accent text-accent-foreground\",\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=\"icon-size\" />,\n IconRight: () => <ChevronRight className=\"icon-size\" />,\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\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/styles\"\n\nconst cardVariants = cva(\n \"rounded-lg border bg-card transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border-border shadow-sm\",\n elevated: \"border-border shadow-md hover:shadow-lg\",\n outlined: \"border-2 border-border shadow-none\",\n ghost: \"border-transparent shadow-none bg-transparent\",\n success: \"border-green-200 bg-green-50 dark:border-green-800 dark:bg-green-950/20 shadow-sm\",\n warning: \"border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950/20 shadow-sm\",\n error: \"border-red-200 bg-red-50 dark:border-red-800 dark:bg-red-950/20 shadow-sm\",\n info: \"border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950/20 shadow-sm\",\n acorde: \"border-acorde-primary/20 bg-gradient-to-br from-background to-acorde-primary/5 shadow-md\",\n },\n size: {\n sm: \"p-4\",\n default: \"p-6\",\n lg: \"p-8\",\n xl: \"p-10\",\n },\n elevation: {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n \"2xl\": \"shadow-2xl\",\n },\n interactive: {\n none: \"\",\n hover: \"hover:shadow-lg hover:-translate-y-1 cursor-pointer\",\n clickable: \"hover:shadow-lg hover:-translate-y-1 cursor-pointer active:scale-[0.98]\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n elevation: \"sm\",\n interactive: \"none\",\n },\n }\n)\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n asChild?: boolean\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, size, elevation, interactive, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n return (\n <Comp\n ref={ref}\n className={cn(cardVariants({ variant, size, elevation, interactive, className }))}\n {...props}\n />\n )\n }\n)\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement> & {\n variant?: \"default\" | \"accent\" | \"minimal\"\n}>(\n ({ className, variant = \"default\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col space-y-1.5\",\n {\n \"p-6\": variant === \"default\",\n \"p-6 border-b bg-muted/50\": variant === \"accent\",\n \"p-4\": variant === \"minimal\",\n },\n className\n )}\n {...props}\n />\n )\n)\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement> & {\n level?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\"\n size?: \"sm\" | \"default\" | \"lg\" | \"xl\"\n}>(\n ({ className, level = \"h3\", size = \"default\", ...props }, ref) => {\n const Comp = level\n return (\n <Comp\n ref={ref}\n className={cn(\n \"font-semibold leading-none tracking-tight\",\n {\n \"text-lg\": size === \"sm\",\n \"text-2xl\": size === \"default\",\n \"text-3xl\": size === \"lg\",\n \"text-4xl\": size === \"xl\",\n },\n className\n )}\n {...props}\n />\n )\n }\n)\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement> & {\n size?: \"sm\" | \"default\" | \"lg\"\n}>(\n ({ className, size = \"default\", ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\n \"text-muted-foreground\",\n {\n \"text-xs\": size === \"sm\",\n \"text-sm\": size === \"default\",\n \"text-base\": size === \"lg\",\n },\n className\n )}\n {...props}\n />\n )\n)\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement> & {\n noPadding?: boolean\n}>(\n ({ className, noPadding = false, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"\" : \"p-6 pt-0\",\n className\n )}\n {...props}\n />\n )\n)\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement> & {\n variant?: \"default\" | \"accent\" | \"minimal\"\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\"\n}>(\n ({ className, variant = \"default\", justify = \"start\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center\",\n {\n \"p-6 pt-0\": variant === \"default\",\n \"p-6 pt-0 border-t bg-muted/50\": variant === \"accent\",\n \"p-4 pt-0\": variant === \"minimal\",\n },\n {\n \"justify-start\": justify === \"start\",\n \"justify-center\": justify === \"center\",\n \"justify-end\": justify === \"end\",\n \"justify-between\": justify === \"between\",\n \"justify-around\": justify === \"around\",\n },\n className\n )}\n {...props}\n />\n )\n)\nCardFooter.displayName = \"CardFooter\"\n\nexport const CardWithIcon = React.forwardRef<HTMLDivElement, CardProps & {\n icon?: React.ReactNode\n iconPosition?: \"top\" | \"side\"\n}>(\n ({ icon, iconPosition = \"top\", children, ...props }, ref) => (\n <Card {...props} ref={ref}>\n {icon && iconPosition === \"top\" && (\n <>\n <div className=\"flex justify-center mb-4\">\n <div className=\"p-3 rounded-full bg-primary/10 text-primary\">\n {icon}\n </div>\n </div>\n {children}\n </>\n )}\n {icon && iconPosition === \"side\" && (\n <div className=\"flex items-start gap-4\">\n <div className=\"p-2 rounded-lg bg-primary/10 text-primary flex-shrink-0\">\n {icon}\n </div>\n <div className=\"flex-1\">{children}</div>\n </div>\n )}\n {!icon && children}\n </Card>\n )\n)\nCardWithIcon.displayName = \"CardWithIcon\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * 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/styles\"\nimport { Button } from \"@/components/ui/button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nconst Carousel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) {\n return\n }\n\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) {\n return\n }\n\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) {\n return\n }\n\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 ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n }\n)\nCarousel.displayName = \"Carousel\"\n\nconst CarouselContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n})\nCarouselContent.displayName = \"CarouselContent\"\n\nconst CarouselItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n})\nCarouselItem.displayName = \"CarouselItem\"\n\nconst CarouselPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-left-12 top-1/2 -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 className=\"icon-size\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n})\nCarouselPrevious.displayName = \"CarouselPrevious\"\n\nconst CarouselNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight className=\"icon-size\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n})\nCarouselNext.displayName = \"CarouselNext\"\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","import * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"../../utils/styles\";\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\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\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});\nChartContainer.displayName = \"Chart\";\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, itemConfig]) => itemConfig.theme || itemConfig.color\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n 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\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [\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 ref={ref}\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background 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, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\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=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n);\nChartTooltipContent.displayName = \"ChartTooltip\";\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean;\n nameKey?: string;\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\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);\nChartLegendContent.displayName = \"ChartLegend\";\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","import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n","import React from 'react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/utils/styles';\nimport { MoreVertical, Phone, Video, Info } from 'lucide-react';\n\ninterface ChatUser {\n id: string;\n name: string;\n avatar?: string;\n status: 'online' | 'offline' | 'away' | 'busy';\n lastSeen?: Date;\n}\n\ninterface ChatHeaderProps {\n user: ChatUser;\n title?: string;\n subtitle?: string;\n onCallClick?: () => void;\n onVideoClick?: () => void;\n onInfoClick?: () => void;\n onMenuClick?: () => void;\n className?: string;\n}\n\ninterface ChatContainerProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface StatusBadgeProps {\n status: ChatUser['status'];\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst StatusBadge: React.FC<StatusBadgeProps> = ({ status, size = 'sm' }) => {\n const statusConfig = {\n online: { color: 'bg-green-500', label: 'Online' },\n offline: { color: 'bg-gray-400', label: 'Offline' },\n away: { color: 'bg-yellow-500', label: 'Ausente' },\n busy: { color: 'bg-red-500', label: 'Ocupado' }\n };\n\n const config = statusConfig[status];\n const sizeClasses = {\n sm: 'w-2 h-2',\n md: 'w-3 h-3',\n lg: 'w-4 h-4'\n };\n\n return (\n <div className=\"relative\">\n <div\n className={cn(\n \"rounded-full border-2 border-background\",\n config.color,\n sizeClasses[size]\n )}\n title={config.label}\n />\n </div>\n );\n};\n\nexport const ChatHeader: React.FC<ChatHeaderProps> = ({\n user,\n title,\n subtitle,\n onCallClick,\n onVideoClick,\n onInfoClick,\n onMenuClick,\n className\n}) => {\n const formatLastSeen = (date?: Date) => {\n if (!date) return null;\n if (user.status === 'online') return 'Online';\n\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMins = Math.floor(diffMs / (1000 * 60));\n const diffHours = Math.floor(diffMins / 60);\n const diffDays = Math.floor(diffHours / 24);\n\n if (diffMins < 1) return 'Visto agora há pouco';\n if (diffMins < 60) return `Visto ${diffMins}m atrás`;\n if (diffHours < 24) return `Visto ${diffHours}h atrás`;\n if (diffDays < 7) return `Visto ${diffDays}d atrás`;\n\n return `Visto em ${date.toLocaleDateString('pt-BR')}`;\n };\n\n return (\n <CardHeader variant=\"accent\" className={cn(\"border-b\", className)}>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"relative\">\n <Avatar className=\"h-10 w-10\">\n <AvatarImage src={user.avatar} />\n <AvatarFallback>{user.name.slice(0, 2).toUpperCase()}</AvatarFallback>\n </Avatar>\n <div className=\"absolute -bottom-1 -right-1\">\n <StatusBadge status={user.status} />\n </div>\n </div>\n <div className=\"flex-1 min-w-0\">\n <CardTitle className=\"truncate text-base\">\n {title || user.name}\n </CardTitle>\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <span className=\"truncate\">\n {subtitle || formatLastSeen(user.lastSeen)}\n </span>\n </div>\n </div>\n </div>\n\n {/* Action buttons */}\n <div className=\"flex items-center gap-1\">\n {onCallClick && (\n <Button variant=\"ghost\" size=\"icon\" onClick={onCallClick}>\n <Phone className=\"icon-size\" />\n </Button>\n )}\n {onVideoClick && (\n <Button variant=\"ghost\" size=\"icon\" onClick={onVideoClick}>\n <Video className=\"icon-size\" />\n </Button>\n )}\n {onInfoClick && (\n <Button variant=\"ghost\" size=\"icon\" onClick={onInfoClick}>\n <Info className=\"icon-size\" />\n </Button>\n )}\n {onMenuClick && (\n <Button variant=\"ghost\" size=\"icon\" onClick={onMenuClick}>\n <MoreVertical className=\"icon-size\" />\n </Button>\n )}\n </div>\n </div>\n </CardHeader>\n );\n};\n\nexport const ChatContainer: React.FC<ChatContainerProps> = ({\n children,\n className\n}) => {\n return (\n <Card variant=\"elevated\" className={cn(\"flex flex-col h-full\", className)}>\n {children}\n </Card>\n );\n};\n\nexport const ChatMessages: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <CardContent className={cn(\"flex-1 overflow-hidden p-0\", className)}>\n <ScrollArea className=\"h-full\">\n <div className=\"p-4\">\n {children}\n </div>\n </ScrollArea>\n </CardContent>\n );\n};\n\nexport const ChatInput: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <div className={cn(\"border-t p-4 bg-background\", className)}>\n {children}\n </div>\n );\n};\n\n// Componente completo de layout\ninterface ChatLayoutProps {\n user: ChatUser;\n title?: string;\n subtitle?: string;\n messages: React.ReactNode;\n input: React.ReactNode;\n onCallClick?: () => void;\n onVideoClick?: () => void;\n onInfoClick?: () => void;\n onMenuClick?: () => void;\n className?: string;\n}\n\nexport const ChatLayout: React.FC<ChatLayoutProps> = ({\n user,\n title,\n subtitle,\n messages,\n input,\n onCallClick,\n onVideoClick,\n onInfoClick,\n onMenuClick,\n className\n}) => {\n return (\n <ChatContainer className={className}>\n <ChatHeader\n user={user}\n title={title}\n subtitle={subtitle}\n onCallClick={onCallClick}\n onVideoClick={onVideoClick}\n onInfoClick={onInfoClick}\n onMenuClick={onMenuClick}\n />\n <ChatMessages>\n {messages}\n </ChatMessages>\n <ChatInput>\n {input}\n </ChatInput>\n </ChatContainer>\n );\n};","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport {Check} from \"lucide-react\"\n\nimport {cn} from \"../../utils/styles\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer w-4 h-4 icon-size shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"icon-size w-4 h-4 \"/>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"icon-size\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","import * as React from \"react\"\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { Search } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\nimport { Dialog, DialogContent } from \"@/components/ui/dialog\"\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\ntype CommandDialogProps = DialogProps;\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 icon-size shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","import * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst ContextMenu = ContextMenuPrimitive.Root\n\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger\n\nconst ContextMenuGroup = ContextMenuPrimitive.Group\n\nconst ContextMenuPortal = ContextMenuPrimitive.Portal\n\nconst ContextMenuSub = ContextMenuPrimitive.Sub\n\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto icon-size\" />\n </ContextMenuPrimitive.SubTrigger>\n))\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n))\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Check className=\"icon-size\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n))\nContextMenuCheckboxItem.displayName =\n ContextMenuPrimitive.CheckboxItem.displayName\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n))\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n))\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName\n\nconst ContextMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nContextMenuShortcut.displayName = \"ContextMenuShortcut\"\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","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X, Maximize2, Minimize2 } from \"lucide-react\"\nimport { cn } from \"../../utils/styles\"\nimport { Button } from \"./button\"\n\ninterface DialogMaximizableContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n onMaximizeChange?: (maximized: boolean) => void;\n isMaximized?: boolean;\n}\n\nconst DialogMaximizableContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogMaximizableContentProps\n>(({ className, children, onMaximizeChange, isMaximized = false, ...props }, ref) => (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay \n className=\"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\"\n />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 flex flex-col w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n isMaximized \n ? \"max-w-full max-h-full h-screen w-screen m-0 rounded-none\" \n : \"max-w-lg sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <div className=\"absolute right-4 top-4 flex items-center gap-1\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => onMaximizeChange?.(!isMaximized)}\n className=\"h-8 w-8 rounded-sm opacity-70 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n >\n {isMaximized ? (\n <Minimize2 className=\"icon-size\" />\n ) : (\n <Maximize2 className=\"icon-size\" />\n )}\n <span className=\"sr-only\">{isMaximized ? 'Minimizar' : 'Maximizar'}</span>\n </Button>\n <DialogPrimitive.Close className=\"h-8 w-8 rounded-sm opacity-70 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 inline-flex items-center justify-center\">\n <X className=\"icon-size\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n))\nDialogMaximizableContent.displayName = \"DialogMaximizableContent\"\n\nexport { DialogMaximizableContent }","import * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Drawer = ({\n shouldScaleBackground = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n {...props}\n />\n)\nDrawer.displayName = \"Drawer\"\n\nconst DrawerTrigger = DrawerPrimitive.Trigger\n\nconst DrawerPortal = DrawerPrimitive.Portal\n\nconst DrawerClose = DrawerPrimitive.Close\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\n {...props}\n />\n))\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\n className\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n))\nDrawerContent.displayName = \"DrawerContent\"\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n)\nDrawerHeader.displayName = \"DrawerHeader\"\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n)\nDrawerFooter.displayName = \"DrawerFooter\"\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","import * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto icon-size\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"icon-size\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\"\n\nimport { cn } from \"../../utils/styles\"\nimport { Label } from \"@/components/ui/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n const value = React.useMemo(() => ({ name: props.name }), [props.name]);\n \n return (\n <FormFieldContext.Provider value={value}>\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, formState } = useFormContext()\n\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\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId()\n const value = React.useMemo(() => ({ id }), [id])\n\n return (\n <FormItemContext.Provider value={value}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n )\n})\nFormItem.displayName = \"FormItem\"\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n})\nFormLabel.displayName = \"FormLabel\"\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n})\nFormControl.displayName = \"FormControl\"\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n})\nFormDescription.displayName = \"FormDescription\"\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message) : children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-sm font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n )\n})\nFormMessage.displayName = \"FormMessage\"\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","import * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst HoverCard = HoverCardPrimitive.Root\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst inputVariants = cva(\n \"flex h-10 w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border-input focus-visible:ring-ring\",\n success: \"border-green-500 focus-visible:ring-green-500 bg-green-50 dark:bg-green-950/20\",\n error: \"border-red-500 focus-visible:ring-red-500 bg-red-50 dark:bg-red-950/20\",\n warning: \"border-amber-500 focus-visible:ring-amber-500 bg-amber-50 dark:bg-amber-950/20\",\n acorde: \"border-blue-500 focus-visible:ring-blue-500 hover:border-blue-400\",\n },\n size: {\n sm: \"h-8 px-2 text-xs\",\n default: \"h-10 px-3\",\n lg: \"h-12 px-4 text-base\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst ValidationIcon = ({ variant }: { variant: string }) => {\n switch (variant) {\n case \"success\":\n return (\n <svg className=\"icon-size text-green-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 12l2 2 4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n )\n case \"error\":\n return (\n <svg className=\"icon-size text-red-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n )\n case \"warning\":\n return (\n <svg className=\"icon-size text-amber-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n default:\n return null\n }\n}\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n error?: string\n success?: string\n helperText?: string\n showValidationIcon?: boolean\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({\n className,\n variant,\n size,\n type,\n leftIcon,\n rightIcon,\n error,\n success,\n helperText,\n showValidationIcon = true,\n ...props\n }, ref) => {\n const resolvedVariant = error ? \"error\" : success ? \"success\" : variant || \"default\"\n\n return (\n <div className=\"w-full space-y-1\">\n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground\">\n {leftIcon}\n </div>\n )}\n\n <input\n type={type}\n className={cn(\n inputVariants({ variant: resolvedVariant, size, className }),\n leftIcon && \"pl-10\",\n (rightIcon || (showValidationIcon && (error || success))) && \"pr-10\"\n )}\n ref={ref}\n aria-invalid={error ? \"true\" : \"false\"}\n aria-describedby={\n error\n ? `${props.id || 'input'}-error`\n : success\n ? `${props.id || 'input'}-success`\n : helperText\n ? `${props.id || 'input'}-helper`\n : undefined\n }\n {...props}\n />\n\n {(rightIcon || (showValidationIcon && (error || success))) && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2\">\n {rightIcon || (showValidationIcon && (error || success) && (\n <ValidationIcon variant={resolvedVariant} />\n ))}\n </div>\n )}\n </div>\n\n {(error || success || helperText) && (\n <p\n id={\n error\n ? `${props.id || 'input'}-error`\n : success\n ? `${props.id || 'input'}-success`\n : `${props.id || 'input'}-helper`\n }\n className={cn(\n \"text-xs\",\n error && \"text-red-500\",\n success && \"text-green-500\",\n !error && !success && \"text-muted-foreground\"\n )}\n >\n {error || success || helperText}\n </p>\n )}\n </div>\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport const InputWithLabel = React.forwardRef<HTMLInputElement, InputProps & { label?: string }>(\n ({ label, id, ...props }, ref) => {\n const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label\n htmlFor={inputId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n <Input {...props} id={inputId} ref={ref} />\n </div>\n )\n }\n)\nInputWithLabel.displayName = \"InputWithLabel\"\n\nexport { Input }\n","import * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { Dot } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput>\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n))\nInputOTP.displayName = \"InputOTP\"\n\nconst InputOTPGroup = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n))\nInputOTPGroup.displayName = \"InputOTPGroup\"\n\nconst InputOTPSlot = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\n>(({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\",\n isActive && \"z-10 ring-2 ring-ring ring-offset-background\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n )\n})\nInputOTPSlot.displayName = \"InputOTPSlot\"\n\nconst InputOTPSeparator = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Dot />\n </div>\n))\nInputOTPSeparator.displayName = \"InputOTPSeparator\"\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","import * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst MenubarMenu = MenubarPrimitive.Menu\n\nconst MenubarGroup = MenubarPrimitive.Group\n\nconst MenubarPortal = MenubarPrimitive.Portal\n\nconst MenubarSub = MenubarPrimitive.Sub\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup\n\nconst Menubar = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Root\n ref={ref}\n className={cn(\n \"flex h-10 items-center space-x-1 rounded-md border bg-background p-1\",\n className\n )}\n {...props}\n />\n))\nMenubar.displayName = MenubarPrimitive.Root.displayName\n\nconst MenubarTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n className\n )}\n {...props}\n />\n))\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <MenubarPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto icon-size\" />\n </MenubarPrimitive.SubTrigger>\n))\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName\n\nconst MenubarSubContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 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\",\n className\n )}\n {...props}\n />\n))\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName\n\nconst MenubarContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(\n (\n { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\n ref\n ) => (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </MenubarPrimitive.Portal>\n )\n)\nMenubarContent.displayName = MenubarPrimitive.Content.displayName\n\nconst MenubarItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nMenubarItem.displayName = MenubarPrimitive.Item.displayName\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <MenubarPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Check className=\"icon-size\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n))\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName\n\nconst MenubarRadioItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <MenubarPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n))\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName\n\nconst MenubarLabel = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName\n\nconst MenubarSeparator = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName\n\nconst MenubarShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nMenubarShortcut.displayname = \"MenubarShortcut\"\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarSeparator,\n MenubarLabel,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarPortal,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarGroup,\n MenubarSub,\n MenubarShortcut,\n}\n","import React from 'react';\nimport { Card, CardContent } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';\nimport { cn } from '@/utils/styles';\nimport { Clock, User, Bot } from 'lucide-react';\n\ninterface MessageBubbleProps {\n message: string;\n sender: string;\n timestamp: Date;\n isOwn?: boolean;\n senderType?: 'human' | 'ai' | 'system';\n avatar?: string;\n status?: 'sending' | 'sent' | 'delivered' | 'read' | 'error';\n attachments?: Array<{\n id: string;\n type: 'image' | 'file' | 'video' | 'audio';\n url: string;\n name?: string;\n }>;\n className?: string;\n}\n\nconst MessageStatus: React.FC<{ status: MessageBubbleProps['status'] }> = ({ status }) => {\n const statusConfig = {\n sending: { icon: Clock, color: \"text-blue-500\", label: \"Enviando\" },\n sent: { icon: Clock, color: \"text-gray-500\", label: \"Enviado\" },\n delivered: { icon: Clock, color: \"text-green-500\", label: \"Entregue\" },\n read: { icon: Clock, color: \"text-acorde-primary\", label: \"Lido\" },\n error: { icon: Clock, color: \"text-red-500\", label: \"Erro\" }\n };\n\n if (!status || !statusConfig[status]) return null;\n\n const config = statusConfig[status];\n const Icon = config.icon;\n\n return (\n <div className=\"flex items-center gap-1\">\n <Icon className={cn(\"h-3 w-3\", config.color)} />\n <span className=\"sr-only\">{config.label}</span>\n </div>\n );\n};\n\nconst MessageAttachment: React.FC<{ attachment: MessageBubbleProps['attachments'][0] }> = ({ attachment }) => {\n const getAttachmentIcon = () => {\n switch (attachment.type) {\n case 'image':\n return '🖼️';\n case 'video':\n return '🎥';\n case 'audio':\n return '🎵';\n case 'file':\n return '📄';\n default:\n return '📎';\n }\n };\n\n return (\n <div className=\"flex items-center gap-2 p-2 bg-background/10 rounded-md\">\n <span className=\"text-sm\">{getAttachmentIcon()}</span>\n <span className=\"text-sm truncate\">{attachment.name || 'Anexo'}</span>\n </div>\n );\n};\n\nexport const MessageBubble: React.FC<MessageBubbleProps> = ({\n message,\n sender,\n timestamp,\n isOwn = false,\n senderType = 'human',\n avatar,\n status,\n attachments = [],\n className\n}) => {\n const bubbleVariant = isOwn ? 'acorde' : 'outlined';\n const alignment = isOwn ? 'justify-end' : 'justify-start';\n\n const getSenderIcon = () => {\n if (senderType === 'ai') return <Bot className=\"h-3 w-3\" />;\n if (senderType === 'system') return <div className=\"h-3 w-3 bg-current rounded-full\" />;\n return <User className=\"h-3 w-3\" />;\n };\n\n const formatTime = (date: Date) => {\n return date.toLocaleTimeString('pt-BR', {\n hour: '2-digit',\n minute: '2-digit'\n });\n };\n\n return (\n <div className={cn(\"flex mb-3\", alignment, className)}>\n {!isOwn && (\n <Avatar className=\"h-8 w-8 mr-2 mt-1\">\n <AvatarImage src={avatar} />\n <AvatarFallback className=\"text-xs\">\n {sender.slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n )}\n\n <Card\n variant={bubbleVariant}\n size=\"sm\"\n className={cn(\n \"max-w-[70%] transition-all duration-200\",\n isOwn && \"bg-acorde-primary text-white\"\n )}\n >\n <CardContent className=\"p-3\">\n <div className=\"space-y-2\">\n {/* Header com sender e tipo */}\n {!isOwn && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">{sender}</span>\n <Badge\n variant={senderType === 'ai' ? 'primary-acorde' : senderType === 'system' ? 'secondary' : 'outline'}\n size=\"sm\"\n className=\"flex items-center gap-1\"\n >\n {getSenderIcon()}\n <span className=\"text-xs\">\n {senderType === 'ai' ? 'IA' : senderType === 'system' ? 'Sistema' : 'Humano'}\n </span>\n </Badge>\n </div>\n )}\n\n {/* Conteúdo da mensagem */}\n <div className=\"space-y-2\">\n {message && (\n <p className=\"text-sm leading-relaxed whitespace-pre-wrap\">\n {message}\n </p>\n )}\n\n {/* Anexos */}\n {attachments.length > 0 && (\n <div className=\"space-y-2\">\n {attachments.map(attachment => (\n <MessageAttachment key={attachment.id} attachment={attachment} />\n ))}\n </div>\n )}\n </div>\n\n {/* Footer com timestamp e status */}\n <div className={cn(\n \"flex items-center justify-between mt-2 pt-2 border-t text-xs\",\n isOwn\n ? \"border-white/20 text-white/70\"\n : \"border-border text-muted-foreground\"\n )}>\n <span>{formatTime(timestamp)}</span>\n {isOwn && status && <MessageStatus status={status} />}\n </div>\n </div>\n </CardContent>\n </Card>\n\n {isOwn && (\n <Avatar className=\"h-8 w-8 ml-2 mt-1\">\n <AvatarImage src={avatar} />\n <AvatarFallback className=\"text-xs bg-acorde-primary text-white\">\n {sender.slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n )}\n </div>\n );\n};","import React, { useState, useRef, useEffect } from 'react';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport { cn } from '@/utils/styles';\nimport { Send, Paperclip, Smile, Mic, X } from 'lucide-react';\n\ninterface MessageInputProps {\n onSendMessage: (message: string, attachments?: File[]) => void;\n placeholder?: string;\n disabled?: boolean;\n maxLength?: number;\n showAttachments?: boolean;\n showEmoji?: boolean;\n showVoice?: boolean;\n className?: string;\n}\n\ninterface TypingIndicatorProps {\n isTyping: boolean;\n className?: string;\n}\n\nexport const TypingIndicator: React.FC<TypingIndicatorProps> = ({\n isTyping,\n className\n}) => {\n if (!isTyping) return null;\n\n return (\n <div className={cn(\"flex items-center gap-2 text-xs text-muted-foreground\", className)}>\n <div className=\"flex gap-1\">\n <div className=\"w-1 h-1 bg-acorde-primary rounded-full animate-bounce\" />\n <div\n className=\"w-1 h-1 bg-acorde-primary rounded-full animate-bounce\"\n style={{ animationDelay: '0.1s' }}\n />\n <div\n className=\"w-1 h-1 bg-acorde-primary rounded-full animate-bounce\"\n style={{ animationDelay: '0.2s' }}\n />\n </div>\n <span>Digitando...</span>\n </div>\n );\n};\n\nexport const MessageInput: React.FC<MessageInputProps> = ({\n onSendMessage,\n placeholder = \"Digite sua mensagem...\",\n disabled = false,\n maxLength = 4096,\n showAttachments = true,\n showEmoji = false,\n showVoice = false,\n className\n}) => {\n const [message, setMessage] = useState('');\n const [isTyping, setIsTyping] = useState(false);\n const [attachments, setAttachments] = useState<File[]>([]);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n // Auto-resize textarea\n useEffect(() => {\n if (textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;\n }\n }, [message]);\n\n // Typing indicator logic\n useEffect(() => {\n if (message.length > 0) {\n setIsTyping(true);\n const timeout = setTimeout(() => setIsTyping(false), 1000);\n return () => clearTimeout(timeout);\n } else {\n setIsTyping(false);\n }\n }, [message]);\n\n const handleSend = () => {\n if (message.trim() || attachments.length > 0) {\n onSendMessage(message.trim(), attachments);\n setMessage('');\n setAttachments([]);\n setIsTyping(false);\n }\n };\n\n const handleKeyPress = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSend();\n }\n };\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || []);\n setAttachments(prev => [...prev, ...files]);\n };\n\n const removeAttachment = (index: number) => {\n setAttachments(prev => prev.filter((_, i) => i !== index));\n };\n\n const getFileIcon = (file: File) => {\n const type = file.type;\n if (type.startsWith('image/')) return '🖼️';\n if (type.startsWith('video/')) return '🎥';\n if (type.startsWith('audio/')) return '🎵';\n if (type.includes('pdf')) return '📄';\n return '📎';\n };\n\n return (\n <div className={cn(\"space-y-3\", className)}>\n {/* Typing indicator */}\n <TypingIndicator isTyping={isTyping} />\n\n {/* Attachments preview */}\n {attachments.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {attachments.map((file, index) => (\n <Badge\n key={index}\n variant=\"outline\"\n className=\"flex items-center gap-2 max-w-[200px]\"\n >\n <span>{getFileIcon(file)}</span>\n <span className=\"text-xs truncate\">{file.name}</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"icon-size p-0 hover:bg-destructive hover:text-destructive-foreground\"\n onClick={() => removeAttachment(index)}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </Badge>\n ))}\n </div>\n )}\n\n {/* Input area */}\n <div className=\"flex gap-2 items-end\">\n {/* Attachment button */}\n {showAttachments && (\n <>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => fileInputRef.current?.click()}\n disabled={disabled}\n className=\"flex-shrink-0\"\n >\n <Paperclip className=\"icon-size\" />\n </Button>\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n onChange={handleFileSelect}\n className=\"hidden\"\n />\n </>\n )}\n\n {/* Text input */}\n <div className=\"flex-1 relative\">\n <textarea\n ref={textareaRef}\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n onKeyDown={handleKeyPress}\n placeholder={placeholder}\n disabled={disabled}\n maxLength={maxLength}\n className={cn(\n \"w-full min-h-[40px] max-h-[120px] px-3 py-2 text-sm bg-background\",\n \"border border-input rounded-md resize-none\",\n \"placeholder:text-muted-foreground\",\n \"focus:outline-none focus:ring-2 focus:ring-acorde-primary focus:border-acorde-primary\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n )}\n rows={1}\n />\n\n {/* Character count */}\n {maxLength && (\n <div className={cn(\n \"absolute bottom-1 right-2 text-xs pointer-events-none\",\n message.length > maxLength * 0.9 ? \"text-warning\" : \"text-muted-foreground\",\n message.length === maxLength && \"text-destructive\"\n )}>\n {message.length}/{maxLength}\n </div>\n )}\n </div>\n\n {/* Action buttons */}\n <div className=\"flex gap-1\">\n {/* Emoji button */}\n {showEmoji && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled}\n className=\"flex-shrink-0\"\n >\n <Smile className=\"icon-size\" />\n </Button>\n )}\n\n {/* Voice button */}\n {showVoice && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled}\n className=\"flex-shrink-0\"\n >\n <Mic className=\"icon-size\" />\n </Button>\n )}\n\n {/* Send button */}\n <Button\n variant=\"primary-acorde\"\n size=\"icon\"\n onClick={handleSend}\n disabled={disabled || (!message.trim() && attachments.length === 0)}\n className=\"flex-shrink-0\"\n >\n <Send className=\"icon-size\" />\n </Button>\n </div>\n </div>\n </div>\n );\n};","import * as React from \"react\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n))\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"group flex flex-1 list-none items-center justify-center space-x-1\",\n className\n )}\n {...props}\n />\n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\"\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDown\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"left-0 top-0 w-full 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 md:absolute md:w-auto \",\n className\n )}\n {...props}\n />\n))\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n))\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n))\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n}\n","import * as React from \"react\"\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\nimport { ButtonProps, buttonVariants } from \"@/components/ui/button\"\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n)\nPagination.displayName = \"Pagination\"\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n))\nPaginationContent.displayName = \"PaginationContent\"\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n))\nPaginationItem.displayName = \"PaginationItem\"\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">\n\nconst PaginationLink = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )}\n {...props}\n />\n)\nPaginationLink.displayName = \"PaginationLink\"\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"icon-size\" />\n <span>Previous</span>\n </PaginationLink>\n)\nPaginationPrevious.displayName = \"PaginationPrevious\"\n\nconst PaginationNext = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"icon-size\" />\n </PaginationLink>\n)\nPaginationNext.displayName = \"PaginationNext\"\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"icon-size\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n)\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\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 <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n","import * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-4 w-full overflow-hidden rounded-full bg-secondary\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Circle } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square icon-size rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","import { GripVertical } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst ResizablePanelGroup = ({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\n <ResizablePrimitive.PanelGroup\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n)\n\nconst ResizablePanel = ResizablePrimitive.Panel\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) => (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 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=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n)\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"icon-size opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"icon-size\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"icon-size\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <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)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"icon-size\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> { }\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"icon-size\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet, SheetClose,\n SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger\n}\n\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","import { cn } from \"../../utils/styles\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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\",\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { VariantProps, cva } from \"class-variance-authority\"\nimport { PanelLeft } from \"lucide-react\"\n\nimport { useIsMobile } from \"./use-mobile\"\nimport { cn } from \"../../utils/styles\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Separator } from \"./separator\"\nimport { Sheet, SheetContent } 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 SidebarContext = {\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<SidebarContext | 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\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\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\n ? setOpenMobile((open) => !open)\n : 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<SidebarContext>(\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 style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\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-mobile=\"true\"\n className=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden md:block text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] 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)_+_theme(spacing.4))]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n )}\n />\n <div\n className={cn(\n \"duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] 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)_+_theme(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 className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeft />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"main\">\n>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex min-h-svh flex-1 flex-col bg-background\",\n \"peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\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})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n))\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n))\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n))\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\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-none 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\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ 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)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-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))\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\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 ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"rounded-md h-8 flex gap-2 px-2 items-center\", 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 flex-1 max-w-[--skeleton-width]\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring 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 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\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})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import React from 'react';\nimport { \n SidebarMenuSub as OriginalSidebarMenuSub, \n SidebarMenuSubItem as OriginalSidebarMenuSubItem,\n SidebarMenuSubButton as OriginalSidebarMenuSubButton\n} from './sidebar';\nimport { cn } from '../../utils/styles';\nimport './sidebar-custom.css';\n\n// Versão customizada de SidebarMenuSub para submenus aninhados\nexport const CustomSidebarMenuSub = React.forwardRef<\n React.ElementRef<typeof OriginalSidebarMenuSub>,\n React.ComponentPropsWithoutRef<typeof OriginalSidebarMenuSub> & {\n level?: number;\n }\n>(({ className, level = 1, ...props }, ref) => {\n // Aplicar classe específica de nível para tratamento diferenciado no CSS\n const customClass = `sidebar-menu-sub-level-${level}`;\n \n return (\n <OriginalSidebarMenuSub \n ref={ref}\n className={cn('submenu-custom', customClass, className)} \n data-level={level}\n {...props}\n />\n );\n});\nCustomSidebarMenuSub.displayName = 'CustomSidebarMenuSub';\n\n// Versão customizada de SidebarMenuSubItem para melhor layout\nexport const CustomSidebarMenuSubItem = React.forwardRef<\n React.ElementRef<typeof OriginalSidebarMenuSubItem>,\n React.ComponentPropsWithoutRef<typeof OriginalSidebarMenuSubItem>\n>(({ className, ...props }, ref) => {\n return (\n <OriginalSidebarMenuSubItem \n ref={ref}\n className={cn('sidebar-menu-sub-item', className)} \n {...props}\n />\n );\n});\nCustomSidebarMenuSubItem.displayName = 'CustomSidebarMenuSubItem';\n\n// Versão customizada de SidebarMenuSubButton para melhor layout\nexport const CustomSidebarMenuSubButton = React.forwardRef<\n React.ElementRef<typeof OriginalSidebarMenuSubButton>,\n React.ComponentPropsWithoutRef<typeof OriginalSidebarMenuSubButton>\n>(({ className, ...props }, ref) => {\n return (\n <OriginalSidebarMenuSubButton \n ref={ref}\n className={cn('sidebar-menu-button-custom', className)} \n {...props}\n />\n );\n});\nCustomSidebarMenuSubButton.displayName = 'CustomSidebarMenuSubButton';\n","import * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n","import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"../../utils/styles\"\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> {\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizeVariants = {\n sm: {\n root: \"h-4 w-7\",\n thumb: \"h-3 w-3 data-[state=checked]:translate-x-3\"\n },\n md: {\n root: \"h-6 w-11\",\n thumb: \"h-5 w-5 data-[state=checked]:translate-x-5\"\n },\n lg: {\n root: \"h-8 w-14\",\n thumb: \"h-7 w-7 data-[state=checked]:translate-x-6\"\n }\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(({ className, size = 'md', ...props }, ref) => {\n const sizeClasses = sizeVariants[size]\n\n return (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 switch-color\",\n sizeClasses.root,\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-0\",\n sizeClasses.thumb\n )}\n />\n </SwitchPrimitives.Root>\n )\n})\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst tableVariants = cva(\n \"w-full caption-bottom text-sm transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border-collapse\",\n striped: \"border-collapse [&_tbody_tr:nth-child(even)]:bg-muted/50\",\n bordered: \"border border-border rounded-lg overflow-hidden\",\n compact: \"border-collapse text-xs\",\n acorde: \"border border-acorde-primary/20 rounded-lg overflow-hidden shadow-sm\",\n },\n size: {\n sm: \"[&_th]:py-2 [&_th]:px-2 [&_td]:py-2 [&_td]:px-2\",\n default: \"[&_th]:py-3 [&_th]:px-4 [&_td]:py-3 [&_td]:px-4\",\n lg: \"[&_th]:py-4 [&_th]:px-6 [&_td]:py-4 [&_td]:px-6\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst tableHeaderVariants = cva(\n \"border-b text-left font-medium text-muted-foreground transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-border bg-muted/50\",\n acorde: \"border-acorde-primary/20 bg-acorde-primary/5 text-acorde-primary font-semibold\",\n minimal: \"border-border bg-transparent\",\n accent: \"border-border bg-primary/10 text-primary font-semibold\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst tableRowVariants = cva(\n \"border-b transition-colors\",\n {\n variants: {\n variant: {\n default: \"hover:bg-muted/50 data-[state=selected]:bg-muted\",\n interactive: \"hover:bg-muted/50 cursor-pointer active:bg-muted/70\",\n success: \"bg-acorde-success/5 border-acorde-success/20\",\n warning: \"bg-acorde-warning/5 border-acorde-warning/20\",\n error: \"bg-acorde-error/5 border-acorde-error/20\",\n acorde: \"hover:bg-acorde-primary/5 data-[state=selected]:bg-acorde-primary/10\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface TableProps\n extends React.HTMLAttributes<HTMLTableElement>,\n VariantProps<typeof tableVariants> {}\n\nexport interface TableHeaderProps\n extends React.HTMLAttributes<HTMLTableSectionElement>,\n VariantProps<typeof tableHeaderVariants> {}\n\nexport interface TableRowProps\n extends React.HTMLAttributes<HTMLTableRowElement>,\n VariantProps<typeof tableRowVariants> {\n selected?: boolean\n}\n\nexport interface TableCellProps\n extends React.TdHTMLAttributes<HTMLTableCellElement> {\n variant?: \"default\" | \"numeric\" | \"action\"\n}\n\nexport interface TableHeadProps\n extends React.ThHTMLAttributes<HTMLTableCellElement> {\n sortable?: boolean\n sorted?: \"asc\" | \"desc\" | false\n onSort?: () => void\n}\n\nconst SortIcon = ({ sorted }: { sorted: \"asc\" | \"desc\" | false }) => {\n if (!sorted) return (\n <svg className=\"ml-2 icon-size opacity-50\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M8 9l4-4 4 4M16 15l-4 4-4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n\n return sorted === \"asc\" ? (\n <svg className=\"ml-2 icon-size text-primary\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M8 15l4-4 4 4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ) : (\n <svg className=\"ml-2 icon-size text-primary\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M8 9l4-4 4 4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nconst Table = React.forwardRef<HTMLTableElement, TableProps>(\n ({ className, variant, size, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(tableVariants({ variant, size, className }))}\n {...props}\n />\n </div>\n )\n)\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ className, variant, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(tableHeaderVariants({ variant, className }))}\n {...props}\n />\n )\n)\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, variant, selected, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n tableRowVariants({ variant, className }),\n selected && \"data-[state=selected]:bg-muted\"\n )}\n data-state={selected ? \"selected\" : undefined}\n {...props}\n />\n )\n)\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, sortable, sorted = false, onSort, children, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n sortable && \"cursor-pointer select-none hover:text-foreground\",\n className\n )}\n onClick={sortable ? onSort : undefined}\n {...props}\n >\n <div className=\"flex items-center\">\n {children}\n {sortable && <SortIcon sorted={sorted} />}\n </div>\n </th>\n )\n)\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, variant = \"default\", ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"align-middle [&:has([role=checkbox])]:pr-0\",\n {\n \"text-left\": variant === \"default\",\n \"text-right font-mono\": variant === \"numeric\",\n \"text-center\": variant === \"action\",\n },\n className\n )}\n {...props}\n />\n )\n)\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","import * as React from \"react\"\n\nimport { cn } from \"../../utils/styles\"\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n","import * 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/styles\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\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-10 px-3\",\n sm: \"h-9 px-2.5\",\n lg: \"h-11 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, ...props }, ref) => (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }\n","import * 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/styles\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n})\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => {\n const contextValue = React.useMemo(() => ({ variant, size }), [variant, size]);\n \n return (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"flex items-center justify-center gap-1\", className)}\n {...props}\n >\n <ToggleGroupContext.Provider value={contextValue}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n})\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n})\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\n\nexport { ToggleGroup, ToggleGroupItem }\n","import React from 'react';\nimport { Button } from './button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from './tooltip';\nimport { type VariantProps } from 'class-variance-authority';\nimport { buttonVariants } from './button';\nimport { cn } from '@/utils/styles';\n\nexport interface TooltipButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n tooltip: string | React.ReactNode;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n showTextOnMobile?: boolean;\n}\n\nexport const TooltipButton = React.forwardRef<HTMLButtonElement, TooltipButtonProps>(\n ({ tooltip, icon, children, variant = 'outline', size, className, showTextOnMobile = true, ...props }, ref) => {\n return (\n <>\n {/* Desktop version with tooltip */}\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(showTextOnMobile ? 'hidden md:inline-flex' : '', className)}\n {...props}\n >\n {icon}\n {children}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n\n {/* Mobile version with text inside button */}\n {showTextOnMobile && (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn('md:hidden', className)}\n {...props}\n >\n {icon}\n {typeof tooltip === 'string' ? (\n <span className=\"ml-2\">{tooltip}</span>\n ) : (\n tooltip\n )}\n {children}\n </Button>\n )}\n </>\n );\n }\n);\n\nTooltipButton.displayName = 'TooltipButton';\n","import * as React from \"react\";\n\nimport {\n type ToastProps,\n type ToastActionElement,\n} from \"./toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype Action =\n | {\n type: \"ADD_TOAST\";\n toast: ToasterToast;\n }\n | {\n type: \"UPDATE_TOAST\";\n toast: Partial<ToasterToast>;\n }\n | {\n type: \"DISMISS_TOAST\";\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: \"REMOVE_TOAST\";\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nconst toastHelpers = {\n success: (title: string, description?: string, options?: Omit<Toast, \"variant\" | \"title\" | \"description\">) => {\n return toast({\n variant: \"success\",\n title,\n description,\n ...options\n });\n },\n error: (title: string, description?: string, options?: Omit<Toast, \"variant\" | \"title\" | \"description\">) => {\n return toast({\n variant: \"error\",\n title,\n description,\n ...options\n });\n },\n warning: (title: string, description?: string, options?: Omit<Toast, \"variant\" | \"title\" | \"description\">) => {\n return toast({\n variant: \"warning\",\n title,\n description,\n ...options\n });\n },\n info: (title: string, description?: string, options?: Omit<Toast, \"variant\" | \"title\" | \"description\">) => {\n return toast({\n variant: \"info\",\n title,\n description,\n ...options\n });\n },\n acorde: (title: string, description?: string, options?: Omit<Toast, \"variant\" | \"title\" | \"description\">) => {\n return toast({\n variant: \"acorde\",\n title,\n description,\n ...options\n });\n }\n};\n\nconst toastWithHelpers = Object.assign(toast, toastHelpers);\n\nexport { useToast, toast, toastWithHelpers };\n","import React, { useEffect, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { Loader2 } from 'lucide-react';\n\ninterface Tenant {\n id: string;\n tenant_id?: string;\n tenant_code?: string;\n nome?: string;\n razao_social?: string;\n cnpj?: string;\n is_active?: boolean;\n status?: string;\n created_at?: string;\n updated_at?: string;\n}\n\ninterface UseTenantReturn {\n currentTenant: Tenant | null;\n tenantList: Tenant[];\n setCurrentTenant: (tenant: Tenant | null) => void;\n setTenantList: (list: Tenant[]) => void;\n switchTenant: (tenant: Tenant) => void;\n clearTenant: () => void;\n}\n\ninterface TenantService {\n getUserTenants: () => Promise<Tenant[]>;\n}\n\ninterface EnsureTenantProps {\n readonly children: React.ReactNode;\n readonly useTenant: () => UseTenantReturn;\n readonly tenantService: TenantService;\n}\n\nexport function EnsureTenant({ children, useTenant, tenantService }: EnsureTenantProps) {\n const { currentTenant, setCurrentTenant } = useTenant();\n const navigate = useNavigate();\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n const checkAndSetTenant = async () => {\n // Se já tem tenant no contexto, não precisa fazer nada\n if (currentTenant) {\n setIsLoading(false);\n return;\n }\n\n // Verifica se há tenant salvo (do SSO ou login normal)\n const savedTenant = localStorage.getItem('current_tenant');\n if (savedTenant) {\n try {\n const tenant = JSON.parse(savedTenant);\n setCurrentTenant(tenant);\n setIsLoading(false);\n return;\n } catch (error) {\n console.error('Erro ao parsear tenant salvo:', error);\n }\n }\n\n // Para SSO, verifica se tem tenant_id simples\n const tenantId = localStorage.getItem('tenant_id');\n if (tenantId) {\n // Cria objeto tenant mínimo para SSO\n const ssoTenant = {\n id: tenantId,\n tenant_id: tenantId,\n tenant_code: tenantId,\n status: 'active' as const,\n created_at: new Date().toISOString(),\n updated_at: new Date().toISOString()\n };\n setCurrentTenant(ssoTenant);\n localStorage.setItem('current_tenant', JSON.stringify(ssoTenant));\n setIsLoading(false);\n return;\n }\n\n // Só tenta buscar da API se realmente não tem nenhum tenant\n // E se não estiver em contexto SSO\n const isSSO = window.location.hostname.includes('.');\n if (!isSSO) {\n try {\n // Busca os tenants disponíveis\n const tenants = await tenantService.getUserTenants();\n\n if (tenants.length === 0) {\n setError('Nenhum tenant disponível');\n setIsLoading(false);\n return;\n }\n\n // Se só tem um tenant, seleciona automaticamente\n if (tenants.length === 1) {\n const tenant = tenants[0];\n setCurrentTenant(tenant);\n localStorage.setItem('current_tenant', JSON.stringify(tenant));\n } else {\n // Se tem múltiplos tenants, redireciona para a seleção\n navigate('/tenant-selection');\n }\n } catch {\n console.log('Endpoints de tenant não disponíveis, usando tenant do subdomínio');\n setIsLoading(false);\n return;\n }\n }\n\n setIsLoading(false);\n };\n\n checkAndSetTenant();\n }, [currentTenant, setCurrentTenant, navigate]);\n\n if (isLoading) {\n return (\n <div className=\"min-h-screen flex items-center justify-center\">\n <div className=\"text-center\">\n <Loader2 className=\"w-8 h-8 animate-spin mx-auto mb-4\" />\n <p className=\"text-gray-600\">Verificando tenant...</p>\n </div>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"min-h-screen flex items-center justify-center\">\n <div className=\"text-center\">\n <p className=\"text-red-600 mb-4\">{error}</p>\n <button\n onClick={() => window.location.reload()}\n className=\"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700\"\n >\n Tentar novamente\n </button>\n </div>\n </div>\n );\n }\n\n // Se não tem tenant selecionado e não está carregando, ainda assim renderiza\n // Isso evita o problema de tela em branco após o login\n return <>{children}</>;\n}","import React, { memo, useMemo } from 'react';\nimport { Card, CardContent } from '@/components/ui/card';\nimport { Progress } from '@/components/ui/progress';\nimport { Shield, CheckCircle, AlertCircle, Clock } from 'lucide-react';\n\ninterface SSOLoadingOverlayProps {\n /** Current step in SSO process */\n step: 'redirecting' | 'authenticating' | 'processing' | 'completing' | 'error';\n /** Progress percentage (0-100) */\n progress: number;\n /** Optional message to display */\n message?: string;\n /** Tenant ID being processed */\n tenantId?: string;\n /** Error message if step is 'error' */\n error?: string;\n /** Whether to show the overlay */\n show?: boolean;\n /** Custom class name */\n className?: string;\n /** SSO Provider name */\n ssoProviderName?: string;\n /** Application name */\n appName?: string;\n}\n\nconst SSOLoadingOverlay: React.FC<SSOLoadingOverlayProps> = memo(({\n step,\n progress,\n message,\n tenantId,\n error,\n show = true,\n className = '',\n ssoProviderName = 'SSO',\n appName = 'o sistema'\n}) => {\n // Performance: Memoized step icon calculation\n const getStepIcon = useMemo(() => {\n switch (step) {\n case 'redirecting':\n return <Shield className=\"h-8 w-8 animate-pulse text-blue-500\" />;\n case 'authenticating':\n return (\n <div className=\"relative\">\n <Shield className=\"h-8 w-8 text-blue-500\" />\n <div className=\"absolute inset-0 h-8 w-8 animate-spin rounded-full border-2 border-blue-500 border-t-transparent\" />\n </div>\n );\n case 'processing':\n return (\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-green-500 border-t-transparent\" />\n );\n case 'completing':\n return <CheckCircle className=\"h-8 w-8 text-green-500\" />;\n case 'error':\n return <AlertCircle className=\"h-8 w-8 text-red-500\" />;\n default:\n return <Clock className=\"h-8 w-8 text-muted-foreground\" />;\n }\n }, [step]);\n\n // Performance: Memoized step title calculation\n const getStepTitle = useMemo(() => {\n switch (step) {\n case 'redirecting':\n return 'Redirecionando para SSO';\n case 'authenticating':\n return `Autenticando com ${ssoProviderName}`;\n case 'processing':\n return 'Processando credenciais';\n case 'completing':\n return 'Finalizando login';\n case 'error':\n return 'Erro na autenticação';\n default:\n return 'Carregando...';\n }\n }, [step, ssoProviderName]);\n\n // Performance: Memoized step description calculation\n const getStepDescription = useMemo(() => {\n if (message) return message;\n\n switch (step) {\n case 'redirecting':\n return `Preparando conexão segura com ${ssoProviderName}...`;\n case 'authenticating':\n return `Verificando suas credenciais no sistema ${ssoProviderName}...`;\n case 'processing':\n return 'Criando sua sessão e configurando acesso...';\n case 'completing':\n return `Redirecionando para ${appName}...`;\n case 'error':\n return error || 'Ocorreu um erro durante a autenticação SSO';\n default:\n return 'Aguarde...';\n }\n }, [message, step, error, ssoProviderName, appName]);\n\n // Performance: Memoized background color calculation\n const getBgColor = useMemo(() => {\n switch (step) {\n case 'error':\n return 'bg-red-50 dark:bg-red-950/20';\n case 'completing':\n return 'bg-green-50 dark:bg-green-950/20';\n default:\n return 'bg-background';\n }\n }, [step]);\n\n // Performance: Memoized progress color calculation\n const getProgressColor = useMemo(() => {\n switch (step) {\n case 'error':\n return 'bg-red-500';\n case 'completing':\n return 'bg-green-500';\n default:\n return 'bg-blue-500';\n }\n }, [step]);\n\n // Early return after all hooks\n if (!show) return null;\n\n return (\n <div className={`\n fixed inset-0 z-50 flex items-center justify-center\n bg-background/80 backdrop-blur-sm\n ${className}\n `}>\n <Card className={`w-full max-w-md mx-4 shadow-2xl ${getBgColor}`}>\n <CardContent className=\"p-8\">\n {/* Header */}\n <div className=\"text-center mb-6\">\n <div className=\"flex justify-center mb-4\">\n {getStepIcon}\n </div>\n\n <h2 className=\"text-xl font-semibold mb-2\">\n {getStepTitle}\n </h2>\n\n <p className=\"text-sm text-muted-foreground\">\n {getStepDescription}\n </p>\n </div>\n\n {/* Progress Bar */}\n <div className=\"mb-6\">\n <div className=\"flex justify-between text-xs text-muted-foreground mb-2\">\n <span>Progresso</span>\n <span>{Math.round(progress)}%</span>\n </div>\n\n <Progress\n value={progress}\n className=\"h-2\"\n style={{\n '--progress-background': getProgressColor\n } as React.CSSProperties}\n />\n </div>\n\n {/* Tenant Info */}\n {tenantId && (\n <div className=\"text-center\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-muted text-xs\">\n <Shield className=\"h-3 w-3\" />\n <span>Tenant: {tenantId}</span>\n </div>\n </div>\n )}\n\n {/* Step Progress Indicators */}\n <div className=\"flex justify-center gap-2 mt-6\">\n {['redirecting', 'authenticating', 'processing', 'completing'].map((stepName, index) => {\n const currentStepIndex = ['redirecting', 'authenticating', 'processing', 'completing'].indexOf(step);\n const stepIndex = index;\n\n let stepState: 'completed' | 'active' | 'pending' | 'error' = 'pending';\n\n if (step === 'error') {\n stepState = stepIndex <= currentStepIndex ? 'error' : 'pending';\n } else if (stepIndex < currentStepIndex) {\n stepState = 'completed';\n } else if (stepIndex === currentStepIndex) {\n stepState = 'active';\n }\n\n return (\n <div\n key={stepName}\n className={`\n h-2 w-8 rounded-full transition-colors duration-300\n ${stepState === 'completed' ? 'bg-green-500' : ''}\n ${stepState === 'active' ? 'bg-blue-500' : ''}\n ${stepState === 'error' ? 'bg-red-500' : ''}\n ${stepState === 'pending' ? 'bg-muted' : ''}\n `}\n />\n );\n })}\n </div>\n\n {/* Error Actions */}\n {step === 'error' && (\n <div className=\"flex gap-2 mt-6\">\n <button\n onClick={() => window.location.reload()}\n className=\"flex-1 px-4 py-2 text-sm bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors\"\n >\n Tentar Novamente\n </button>\n <button\n onClick={() => window.location.href = '/login'}\n className=\"flex-1 px-4 py-2 text-sm border border-border rounded-md hover:bg-muted transition-colors\"\n >\n Voltar ao Login\n </button>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n );\n});\n\nexport default SSOLoadingOverlay;\n\n// Display name for debugging\nSSOLoadingOverlay.displayName = 'SSOLoadingOverlay';","import { useState, useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst STORAGE_KEY = 'sidebar-expanded-menus';\n\nexport function useSidebarState(routePaths: Record<string, string>) {\n const location = useLocation();\n\n const [expandedMenus, setExpandedMenus] = useState<string[]>(() => {\n try {\n const saved = localStorage.getItem(STORAGE_KEY);\n return saved ? JSON.parse(saved) : [];\n } catch {\n return [];\n }\n });\n\n useEffect(() => {\n const userManagementPaths = [\n routePaths.USER_MANAGEMENT,\n routePaths.USER_PROFILES,\n routePaths.PERMISSIONS_MANAGEMENT,\n ].filter(Boolean);\n\n const whatsAppPaths = [\n routePaths.WHATSAPP,\n routePaths.WHATSAPP_CONFIG,\n routePaths.WHATSAPP_MONITORING,\n routePaths.WHATSAPP_MESSAGES,\n routePaths.WHATSAPP_TEMPLATES,\n routePaths.WHATSAPP_TRIGGERS,\n ].filter(Boolean);\n\n const configurationsPaths = [\n routePaths.SETTINGS,\n routePaths.UNIDADES_NEGOCIO,\n routePaths.TENANT_MANAGEMENT,\n routePaths.MOTORISTAS,\n routePaths.CREDENTIALS,\n ].filter(Boolean);\n\n const automationPaths = [\n routePaths.FLOWS,\n routePaths.CREDENTIALS,\n ].filter(Boolean);\n\n const isInUsersPage = userManagementPaths.some(path =>\n location.pathname.includes(path)\n );\n\n const isInWhatsAppPage = whatsAppPaths.some(path =>\n location.pathname.includes(path)\n );\n\n const isInAutomationPage = automationPaths.some(path =>\n location.pathname.includes(path)\n );\n\n const isInConfigurationsPage = configurationsPaths.some(path =>\n location.pathname.includes(path)\n ) || isInUsersPage || isInWhatsAppPage;\n\n setExpandedMenus(prev => {\n const newExpanded = [...prev];\n let changed = false;\n\n if (isInUsersPage && !prev.includes('Usuários')) {\n newExpanded.push('Usuários');\n changed = true;\n }\n\n if (isInWhatsAppPage && !prev.includes('WhatsApp')) {\n newExpanded.push('WhatsApp');\n changed = true;\n }\n\n if (isInConfigurationsPage && !prev.includes('Configurações')) {\n newExpanded.push('Configurações');\n changed = true;\n }\n\n if (isInAutomationPage && !prev.includes('Automação')) {\n newExpanded.push('Automação');\n changed = true;\n }\n\n if (changed) {\n saveToStorage(newExpanded);\n return newExpanded;\n }\n\n return prev;\n });\n }, [location.pathname, routePaths]);\n\n const saveToStorage = (menus: string[]) => {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(menus));\n } catch (error) {\n console.warn('Erro ao salvar estado do menu no localStorage:', error);\n }\n };\n\n const toggleSubmenu = (menuTitle: string) => {\n setExpandedMenus(prev => {\n const newExpanded = prev.includes(menuTitle)\n ? prev.filter(title => title !== menuTitle)\n : [...prev, menuTitle];\n\n saveToStorage(newExpanded);\n return newExpanded;\n });\n };\n\n const isMenuExpanded = (menuTitle: string) => {\n return expandedMenus.includes(menuTitle);\n };\n\n const isMenuItemActive = (url: string) => {\n return location.pathname.includes(url);\n };\n\n const isExactMenuItemActive = (url: string) => {\n return location.pathname === url;\n };\n\n return {\n expandedMenus,\n toggleSubmenu,\n isMenuExpanded,\n isMenuItemActive,\n isExactMenuItemActive,\n };\n}\n","import React from \"react\";\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarTrigger,\n useSidebar,\n} from \"@/components/ui/sidebar\";\nimport {\n CustomSidebarMenuSub as SidebarMenuSub,\n CustomSidebarMenuSubButton as SidebarMenuSubButton,\n CustomSidebarMenuSubItem as SidebarMenuSubItem,\n} from \"@/components/ui/sidebar-custom\";\nimport {\n BarChart3,\n Bell,\n Bot,\n Building2,\n Car,\n ChevronRight,\n Clock,\n Database,\n Key,\n LogOut,\n type LucideIcon,\n MessageCircle,\n Monitor,\n Navigation,\n Settings,\n Shield,\n UserCheck,\n UserCog,\n Users,\n Workflow,\n} from \"lucide-react\";\nimport {Link} from \"react-router-dom\";\nimport {Button} from \"./ui/button\";\nimport {Tooltip, TooltipContent, TooltipTrigger} from \"./ui/tooltip\";\nimport \"./ui/sidebar-custom.css\";\nimport {canAccessMenu, MenuPermissionLevel} from \"@/lib/menu-permissions\";\nimport type {UserResponse} from \"@/services/types/api.types\";\nimport {useSidebarState} from \"../hooks/useSidebarState\";\n\ninterface ControlTowerSidebarProps {\n currentTime?: Date;\n routePaths: Record<string, string>;\n user: UserResponse | null;\n onLogout: () => void;\n getCurrentTenantId: () => string | null;\n logoUrl?: string;\n appName?: string;\n appSubtitle?: string;\n}\n\ninterface MenuItem {\n title: string;\n url?: string;\n icon: LucideIcon;\n permission?: MenuPermissionLevel;\n subItems?: Array<{\n title: string;\n url?: string;\n icon?: LucideIcon;\n permission?: MenuPermissionLevel;\n subItems?: Array<{\n title: string;\n url: string;\n icon?: LucideIcon;\n permission?: MenuPermissionLevel;\n }>;\n }>;\n}\n\ninterface RenderSubmenuProps {\n items: MenuItem[\"subItems\"];\n level: number;\n isMenuExpanded: (title: string) => boolean;\n isMenuItemActive: (url: string) => boolean;\n toggleSubmenu: (title: string) => void;\n}\n\nfunction filterMenuItems(\n items: MenuItem[],\n user: UserResponse | null\n): MenuItem[] {\n return items\n .filter((item) => canAccessMenu(user, item.permission))\n .map((item) => {\n if (item.subItems) {\n const filteredSubItems = filterMenuItems(\n item.subItems as unknown as MenuItem[],\n user\n );\n if (filteredSubItems.length === 0) {\n return null;\n }\n return {\n ...item,\n subItems: filteredSubItems,\n };\n }\n return item;\n })\n .filter((item): item is MenuItem => item !== null);\n}\n\nfunction RenderSubmenu({\n items,\n level,\n isMenuExpanded,\n isMenuItemActive,\n toggleSubmenu,\n}: Readonly<RenderSubmenuProps>) {\n const { state } = useSidebar();\n const isCollapsed = state === \"collapsed\";\n\n if (!items) return null;\n\n return (\n <SidebarMenuSub level={level}>\n {items.map((subItem) => {\n const hasSubItems = subItem.subItems && subItem.subItems.length > 0;\n const paddingLeft = isCollapsed ? 8 : Math.min(level * 8 + 4, 28);\n\n return (\n <SidebarMenuSubItem key={subItem.title}>\n {hasSubItems ? (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <SidebarMenuSubButton\n onClick={() => toggleSubmenu(subItem.title)}\n className=\"w-full justify-start pr-2\"\n style={{ paddingLeft: `${paddingLeft}px` }}\n >\n {subItem.icon && (\n <subItem.icon className=\"w-4 h-4 shrink-0 mr-2\" />\n )}\n {!isCollapsed && (\n <>\n <span className=\"truncate flex-1\">\n {subItem.title}\n </span>\n <ChevronRight\n className={`w-4 h-4 shrink-0 transition-transform ${\n isMenuExpanded(subItem.title) ? \"rotate-90\" : \"\"\n }`}\n />\n </>\n )}\n </SidebarMenuSubButton>\n </TooltipTrigger>\n {isCollapsed && (\n <TooltipContent side=\"right\" className=\"font-medium\">\n {subItem.title}\n </TooltipContent>\n )}\n </Tooltip>\n {isMenuExpanded(subItem.title) && (\n <RenderSubmenu\n items={subItem.subItems}\n level={level + 1}\n isMenuExpanded={isMenuExpanded}\n isMenuItemActive={isMenuItemActive}\n toggleSubmenu={toggleSubmenu}\n />\n )}\n </>\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>\n <SidebarMenuSubButton asChild>\n <Link\n to={subItem.url || \"#\"}\n className={`justify-start pr-2 ${\n isMenuItemActive(subItem.url || \"\")\n ? \"bg-accent text-accent-foreground\"\n : \"\"\n }`}\n style={{ paddingLeft: `${paddingLeft}px` }}\n >\n {subItem.icon && (\n <subItem.icon className=\"w-4 h-4 shrink-0 mr-2\" />\n )}\n {!isCollapsed && (\n <span className=\"truncate flex-1\">{subItem.title}</span>\n )}\n </Link>\n </SidebarMenuSubButton>\n </TooltipTrigger>\n {isCollapsed && (\n <TooltipContent side=\"right\" className=\"font-medium\">\n {subItem.title}\n </TooltipContent>\n )}\n </Tooltip>\n )}\n </SidebarMenuSubItem>\n );\n })}\n </SidebarMenuSub>\n );\n}\n\nexport function ControlSidebar({\n currentTime,\n routePaths,\n user,\n onLogout,\n getCurrentTenantId,\n logoUrl = '/lovable-uploads/632ebc32-3ae3-4944-8e70-0e9c2539494a.png',\n appName = 'App',\n appSubtitle = 'Sistema'\n}: Readonly<ControlTowerSidebarProps>) {\n const {\n toggleSubmenu,\n isMenuExpanded,\n isMenuItemActive,\n isExactMenuItemActive,\n } = useSidebarState(routePaths);\n const { state } = useSidebar();\n const isCollapsed = state === \"collapsed\";\n const [internalTime, setInternalTime] = React.useState(new Date());\n\n const currentTenantId = getCurrentTenantId();\n console.log(currentTenantId)\n const isMasterTenant = currentTenantId === \"master\";\n\n const menuItems: MenuItem[] = [\n {\n title: \"Dashboard\",\n url: routePaths.DASHBOARD,\n icon: Monitor,\n permission: MenuPermissionLevel.ALL,\n },\n {\n title: \"Monitoramento de Rotas\",\n url: routePaths.ROUTE_MONITORING,\n icon: Navigation,\n permission: MenuPermissionLevel.MASTER_TENANT_ONLY,\n },\n {\n title: \"Monitoramento de Rotas\",\n url: routePaths.ROUTE_MONITORING,\n icon: Navigation,\n permission: MenuPermissionLevel.ADMIN_ONLY,\n },\n {\n title: \"Alertas\",\n url: routePaths.ALERTS,\n icon: Bell,\n permission: MenuPermissionLevel.ALL,\n },\n {\n title: \"Relatórios\",\n url: routePaths.REPORTS,\n icon: BarChart3,\n permission: MenuPermissionLevel.ALL,\n },\n {\n title: \"Configurações\",\n icon: Settings,\n permission: MenuPermissionLevel.ADMIN_ONLY,\n subItems: [\n {\n title: \"Configurações Gerais\",\n url: routePaths.SETTINGS,\n icon: Settings,\n permission: MenuPermissionLevel.ALL,\n },\n {\n title: \"Usuários\",\n icon: Users,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n subItems: [\n {\n title: \"Gestão de Usuários\",\n url: routePaths.USER_MANAGEMENT,\n icon: UserCheck,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"Perfis de Usuário\",\n url: routePaths.USER_PROFILES,\n icon: UserCog,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"Permissões\",\n url: routePaths.PERMISSIONS_MANAGEMENT,\n icon: Shield,\n permission: MenuPermissionLevel.ADMIN_ONLY,\n },\n ],\n },\n {\n title: \"Motoristas\",\n url: routePaths.MOTORISTAS,\n icon: Car,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"WhatsApp\",\n icon: MessageCircle,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n subItems: [\n {\n title: \"Configurações\",\n url: routePaths.WHATSAPP_CONFIG,\n icon: Settings,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"Triggers de Fluxo\",\n url: routePaths.WHATSAPP_TRIGGERS,\n icon: Workflow,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"Monitoramento\",\n url: routePaths.WHATSAPP_MONITORING,\n icon: Monitor,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n ],\n },\n ...(isMasterTenant ? [] : [{\n title: \"Unidades de Negócio\",\n url: routePaths.UNIDADES_NEGOCIO,\n icon: Building2,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n }]),\n ...(isMasterTenant\n ? [\n {\n title: \"Tenants\",\n url: routePaths.TENANT_MANAGEMENT,\n icon: Database,\n permission: MenuPermissionLevel.ADMIN_ONLY,\n },\n ]\n : []),\n ],\n },\n {\n title: \"Automação\",\n icon: Bot,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n subItems: [\n {\n title: \"Fluxos de Automação\",\n url: routePaths.FLOWS,\n icon: Workflow,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"Credenciais\",\n url: routePaths.CREDENTIALS,\n icon: Key,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n ],\n },\n ];\n\n React.useEffect(() => {\n if (!currentTime) {\n const timer = setInterval(() => {\n setInternalTime(new Date());\n }, 1000);\n return () => clearInterval(timer);\n }\n }, [currentTime]);\n\n const displayTime = currentTime || internalTime;\n const filteredMenuItems = filterMenuItems(menuItems, user);\n return (\n <Sidebar className=\"border-r border-gray-200\" collapsible=\"icon\">\n <SidebarHeader className=\"border-b border-gray-200\">\n <div className=\"flex items-center justify-between px-2 py-2\">\n <SidebarTrigger className=\"ml-auto\" />\n </div>\n {!isCollapsed && (\n <div className=\"flex flex-col items-center gap-1 px-2 py-1\">\n <img\n src={logoUrl}\n alt={`${appName} Logo`}\n className=\"w-20 h-20 object-contain\"\n />\n <div className=\"text-center\">\n <h2 className=\"font-bold text-lg text-gray-800\">{appName}</h2>\n <p className=\"text-xs text-gray-500\">{appSubtitle}</p>\n </div>\n </div>\n )}\n {isCollapsed && (\n <div className=\"flex justify-center px-2 py-2\">\n <img\n src={logoUrl}\n alt={`${appName} Logo`}\n className=\"w-8 h-8 object-contain\"\n />\n </div>\n )}\n </SidebarHeader>\n\n <SidebarContent>\n <SidebarGroup>\n {!isCollapsed && (\n <SidebarGroupLabel>Menu Principal</SidebarGroupLabel>\n )}\n <SidebarGroupContent>\n <SidebarMenu>\n {filteredMenuItems.map((item) => (\n <SidebarMenuItem key={item.title}>\n {item.subItems ? (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <SidebarMenuButton\n onClick={() => toggleSubmenu(item.title)}\n className=\"w-full justify-start pr-2\"\n >\n <item.icon className=\"w-4 h-4 shrink-0\" />\n {!isCollapsed && (\n <>\n <span className=\"truncate flex-1\">\n {item.title}\n </span>\n <ChevronRight\n className={`w-4 h-4 shrink-0 transition-transform ${\n isMenuExpanded(item.title)\n ? \"rotate-90\"\n : \"\"\n }`}\n />\n </>\n )}\n </SidebarMenuButton>\n </TooltipTrigger>\n {isCollapsed && (\n <TooltipContent side=\"right\" className=\"font-medium\">\n {item.title}\n </TooltipContent>\n )}\n </Tooltip>\n {isMenuExpanded(item.title) && (\n <RenderSubmenu\n items={item.subItems}\n level={1}\n isMenuExpanded={isMenuExpanded}\n isMenuItemActive={isMenuItemActive}\n toggleSubmenu={toggleSubmenu}\n />\n )}\n </>\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>\n <SidebarMenuButton asChild>\n <Link\n to={item.url || \"#\"}\n className={`justify-start pr-2 ${\n isExactMenuItemActive(item.url || \"\")\n ? \"bg-accent text-accent-foreground\"\n : \"\"\n }`}\n >\n <item.icon className=\"w-4 h-4 shrink-0\" />\n {!isCollapsed && (\n <span className=\"truncate flex-1\">\n {item.title}\n </span>\n )}\n </Link>\n </SidebarMenuButton>\n </TooltipTrigger>\n {isCollapsed && (\n <TooltipContent side=\"right\" className=\"font-medium\">\n {item.title}\n </TooltipContent>\n )}\n </Tooltip>\n )}\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n </SidebarContent>\n\n <SidebarFooter className=\"border-t border-gray-200\">\n <div className={`p-2 space-y-2 ${isCollapsed ? \"px-1\" : \"\"}`}>\n {user && (\n <div className=\"flex items-center justify-between\">\n {!isCollapsed ? (\n <>\n <div className=\"flex flex-col min-w-0 flex-1\">\n <span className=\"text-sm font-medium text-gray-700 truncate\">\n {user.login}\n </span>\n <span className=\"text-xs text-gray-500 truncate\">\n {user.email}\n </span>\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onLogout()}\n className=\"h-8 w-8 p-0 shrink-0 ml-2\"\n title=\"Logout\"\n >\n <LogOut className=\"icon-size\" />\n </Button>\n </>\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onLogout()}\n className=\"h-8 w-8 p-0\"\n >\n <LogOut className=\"icon-size\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n Logout ({user.login})\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n )}\n {!isCollapsed && (\n <>\n <div className=\"flex items-center gap-2\">\n <div className=\"w-2 h-2 bg-green-500 rounded-full animate-pulse\"></div>\n <span className=\"text-xs text-gray-600 font-medium\">\n Sistema Online\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <Clock className=\"w-3 h-3 text-gray-400\" />\n <p className=\"text-xs text-gray-500\">\n {displayTime.toLocaleString(\"pt-BR\")}\n </p>\n </div>\n </>\n )}\n {isCollapsed && (\n <div className=\"flex flex-col items-center gap-2\">\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"w-2 h-2 bg-green-500 rounded-full animate-pulse\"></div>\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n Sistema Online\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Clock className=\"w-4 h-4 text-gray-400\" />\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n {displayTime.toLocaleString(\"pt-BR\")}\n </TooltipContent>\n </Tooltip>\n </div>\n )}\n </div>\n </SidebarFooter>\n </Sidebar>\n );\n}\n","import React from 'react';\nimport { SidebarProvider } from '@/components/ui/sidebar';\nimport { ControlSidebar } from '@/components/ControlSidebar.tsx';\nimport type { UserResponse } from '@/services/types/api.types';\n\ninterface MainLayoutProps {\n readonly children: React.ReactNode;\n readonly routePaths: Record<string, string>;\n readonly user: UserResponse | null;\n readonly onLogout: () => void;\n readonly getCurrentTenantId: () => string | null;\n readonly currentTime?: Date;\n}\n\nexport function MainLayout({\n children,\n routePaths,\n user,\n onLogout,\n getCurrentTenantId,\n currentTime\n}: MainLayoutProps) {\n return (\n <SidebarProvider>\n <div className=\"h-screen w-full flex\">\n <ControlSidebar\n routePaths={routePaths}\n user={user}\n onLogout={onLogout}\n getCurrentTenantId={getCurrentTenantId}\n currentTime={currentTime}\n />\n <main className=\"flex-1 overflow-hidden\">\n <div className=\"h-full overflow-y-auto\">\n {children}\n </div>\n </main>\n </div>\n </SidebarProvider>\n );\n}\n","import { ReactNode, useEffect } from 'react';\nimport { Navigate, useLocation } from 'react-router-dom';\nimport { Loader2 } from 'lucide-react';\nimport { EnsureTenant } from './EnsureTenant';\nimport SSOLoadingOverlay from './auth/SSOLoadingOverlay';\nimport {MainLayout} from \"./MainLayout.tsx\";\n\ninterface Tenant {\n id: string;\n tenant_id?: string;\n tenant_code?: string;\n nome?: string;\n razao_social?: string;\n cnpj?: string;\n is_active?: boolean;\n status?: string;\n created_at?: string;\n updated_at?: string;\n}\n\ninterface UseTenantReturn {\n currentTenant: Tenant | null;\n tenantList: Tenant[];\n setCurrentTenant: (tenant: Tenant | null) => void;\n setTenantList: (list: Tenant[]) => void;\n switchTenant: (tenant: Tenant) => void;\n clearTenant: () => void;\n}\n\ninterface TenantService {\n getUserTenants: () => Promise<Tenant[]>;\n}\n\ninterface ProtectedRouteProps {\n readonly children: ReactNode;\n readonly useAuthContext: () => {\n isAuthenticated: boolean;\n isLoading: boolean;\n logout: () => void;\n user: any;\n getCurrentTenantId: () => string;\n };\n readonly tenantId?: string;\n readonly useSSO: (tenantId?: string) => {\n state: {\n loading: boolean;\n callbackProcessing: boolean;\n isAuthenticated: boolean;\n user: any;\n currentStep: 'idle' | 'redirecting' | 'authenticating' | 'processing' | 'completing' | 'error';\n progress: number;\n };\n checkStatus: () => void;\n };\n readonly routePaths: any;\n readonly useTenant: () => UseTenantReturn;\n readonly tenantService: TenantService;\n}\n\nexport function ProtectedRoute({ children, useAuthContext, tenantId, useSSO, routePaths, useTenant, tenantService }: ProtectedRouteProps) {\n const { isAuthenticated, isLoading, logout, user, getCurrentTenantId } = useAuthContext();\n\n const location = useLocation();\n\n // Get tenant from subdomain for SSO check\n const sso = useSSO(tenantId || undefined);\n\n // Check SSO authentication status if we have a tenant\n useEffect(() => {\n if (tenantId && !isAuthenticated && !isLoading && !sso.state.loading && !sso.state.callbackProcessing && !sso.state.isAuthenticated) {\n console.log('[ProtectedRoute] Checking SSO status - not authenticated');\n sso.checkStatus();\n }\n }, [tenantId, isAuthenticated, isLoading, sso.state.loading, sso.state.callbackProcessing, sso.state.isAuthenticated, sso]);\n\n // Show SSO loading overlay if callback is being processed\n if (sso.state.callbackProcessing || sso.state.currentStep !== 'idle') {\n return (\n <SSOLoadingOverlay\n step={sso.state.currentStep}\n progress={sso.state.progress}\n tenantId={tenantId}\n show={true}\n />\n );\n }\n\n // If SSO user is authenticated, allow access\n if (sso.state.isAuthenticated && sso.state.user) {\n return <EnsureTenant useTenant={useTenant} tenantService={tenantService}>{children}</EnsureTenant>;\n }\n\n // Standard loading check\n if (isLoading || sso.state.loading) {\n return (\n <div className=\"min-h-screen flex items-center justify-center\">\n <div className=\"text-center\">\n <Loader2 className=\"mx-auto h-8 w-8 animate-spin text-blue-600\" />\n <p className=\"mt-2 text-sm text-gray-600\">Verificando autenticação...</p>\n </div>\n </div>\n );\n }\n\n // If neither traditional auth nor SSO is authenticated, redirect to login\n if (!isAuthenticated && !sso.state.isAuthenticated) {\n // Salva a rota atual para redirecionamento após login\n return <Navigate to=\"/login\" state={{ from: location }} replace />;\n }\n return (\n <MainLayout\n routePaths={routePaths}\n user={user}\n onLogout={logout}\n getCurrentTenantId={getCurrentTenantId}\n >\n <EnsureTenant useTenant={useTenant} tenantService={tenantService}>{children}</EnsureTenant>\n </MainLayout>)\n}\n","import React, {useState} from 'react';\nimport {AlertCircle, Bot, Building2, ClipboardList, Search, User, UserCheck, X} from 'lucide-react';\nimport {Button} from '@/components/ui/button';\nimport {Input} from '@/components/ui/input';\nimport {Badge} from '@/components/ui/badge';\nimport {Popover, PopoverContent, PopoverTrigger} from '@/components/ui/popover';\nimport {ToggleGroup, ToggleGroupItem} from '@/components/ui/toggle-group';\nimport {Checkbox} from '@/components/ui/checkbox';\nimport {Separator} from '@/components/ui/separator';\n\ninterface FilterBarProps {\n onFilterChange: (filters: FilterState) => void;\n filters: FilterState;\n operators: string[];\n taskTypes: string[];\n businessUnits: Array<{ codigo: string; descricao: string }>;\n}\n\nexport interface FilterState {\n vehicleId: string;\n operators: string[];\n taskTypes: string[];\n businessUnits: string[];\n operatorType: string;\n status: string[];\n startDate: string;\n endDate: string;\n}\n\nconst FilterBar: React.FC<FilterBarProps> = ({ onFilterChange, filters, operators, taskTypes, businessUnits }) => {\n const [openPopovers, setOpenPopovers] = useState({\n businessUnits: false,\n operators: false,\n taskTypes: false,\n status: false\n });\n\n const statusOptions = [\n { value: 'pending', label: 'Pendente' },\n {value: 'in-progress', label: 'Em Andamento (IA)'},\n {value: 'human-interaction', label: 'Em Andamento (Humano)'},\n { value: 'completed', label: 'Concluído' },\n {value: 'alert', label: 'Precisam de Interação'}\n ];\n\n const updateFilter = (key: keyof FilterState, value: string | string[] | number[]) => {\n const newFilters = { ...filters, [key]: value };\n onFilterChange(newFilters);\n };\n\n const clearFilter = (key: keyof FilterState) => {\n if (key === 'vehicleId' || key === 'operatorType') {\n updateFilter(key, '');\n } else if (key === 'status') {\n // Ao limpar status, voltar ao padrão (não concluídos)\n updateFilter(key, ['pending', 'in-progress', 'human-interaction']);\n } else {\n updateFilter(key, []);\n }\n };\n\n const clearAllFilters = () => {\n const emptyFilters = { \n vehicleId: '', \n operators: [], \n taskTypes: [], \n businessUnits: [], \n operatorType: '',\n status: ['pending', 'in-progress'], // Manter padrão ao limpar tudo\n startDate: '',\n endDate: ''\n };\n onFilterChange(emptyFilters);\n setOpenPopovers({ businessUnits: false, operators: false, taskTypes: false, status: false });\n };\n\n const toggleArrayFilter = (key: 'operators' | 'taskTypes' | 'businessUnits' | 'status', value: string) => {\n const currentArray = filters[key];\n const newArray = currentArray.includes(value)\n ? currentArray.filter(item => item !== value)\n : [...currentArray, value];\n updateFilter(key, newArray);\n };\n\n\n\n const activeFiltersCount = [\n filters.vehicleId,\n filters.operatorType,\n filters.startDate,\n filters.endDate,\n ...filters.operators,\n ...filters.taskTypes,\n ...filters.businessUnits,\n // Não contar status como filtro ativo se for o padrão\n ...(JSON.stringify([...filters.status].sort()) !== JSON.stringify(['human-interaction', 'in-progress', 'pending']) ? filters.status : [])\n ].filter(value => value !== '').length;\n\n return (\n <div className=\"bg-white border-b border-gray-200 p-4 space-y-4\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n {/* Search by Vehicle ID */}\n <div className=\"relative flex-shrink-0\">\n <Input\n placeholder=\"Buscar por placa...\"\n value={filters.vehicleId}\n onChange={(e) => updateFilter('vehicleId', e.target.value)}\n leftIcon={<Search className=\"w-4 h-4\" />}\n rightIcon={\n filters.vehicleId ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('vehicleId')}\n className=\"h-6 w-6 p-0 hover:bg-gray-100 -mr-2\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n ) : undefined\n }\n className=\"w-48\"\n showValidationIcon={false}\n />\n </div>\n\n {/* Date Range Filter */}\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n <Input\n type=\"date\"\n placeholder=\"Data inicial\"\n value={filters.startDate}\n onChange={(e) => updateFilter('startDate', e.target.value)}\n className=\"w-30 h-10 px-3\"\n />\n <span className=\"text-gray-400\">até</span>\n <Input\n type=\"date\"\n placeholder=\"Data final\"\n value={filters.endDate}\n onChange={(e) => updateFilter('endDate', e.target.value)}\n className=\"w-30 h-10 px-3\"\n />\n {(filters.startDate || filters.endDate) && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n clearFilter('startDate');\n clearFilter('endDate');\n }}\n className=\"h-6 w-6 p-0 hover:bg-gray-100 flex items-center justify-center ml-0\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n )}\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-8\" />\n\n {/* Operator Type Toggle */}\n <div className=\"flex items-center gap-1\">\n <span className=\"text-sm font-medium text-gray-700\">Tipo:</span>\n <ToggleGroup\n type=\"single\"\n value={filters.operatorType}\n onValueChange={(value) => updateFilter('operatorType', value || '')}\n className=\"border rounded-md p-0.5 h-10\"\n >\n <ToggleGroupItem value=\"ia\" className=\"flex items-center gap-1 text-xs h-9\">\n <Bot className=\"w-3 h-3\" />\n IA\n </ToggleGroupItem>\n <ToggleGroupItem value=\"humano\" className=\"flex items-center gap-1 text-xs h-9\">\n <User className=\"w-3 h-3\" />\n Humano\n </ToggleGroupItem>\n </ToggleGroup>\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-8\" />\n\n {/* Status Filter */}\n <Popover \n open={openPopovers.status} \n onOpenChange={(open) => setOpenPopovers(prev => ({ ...prev, status: open }))}\n >\n <PopoverTrigger asChild>\n <Button variant=\"outline\" className=\"relative h-10\">\n <AlertCircle className=\"w-4 h-4 mr-2\" />\n Status\n {filters.status.length > 0 && (\n <Badge variant=\"destructive\" className=\"ml-2 h-5 w-5 p-0 text-xs flex items-center justify-center\">\n {filters.status.length}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-4 bg-white border shadow-lg\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"font-semibold text-gray-800\">Status</h3>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('status')}\n className=\"text-gray-500 hover:text-gray-700\"\n >\n Padrão\n </Button>\n </div>\n <div className=\"max-h-60 overflow-y-auto space-y-2\">\n {statusOptions.map((status) => (\n <div key={status.value} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`status-${status.value}`}\n checked={filters.status.includes(status.value)}\n onCheckedChange={() => toggleArrayFilter('status', status.value)}\n />\n <label\n htmlFor={`status-${status.value}`}\n className=\"text-sm cursor-pointer flex-1\"\n >\n {status.label}\n </label>\n </div>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Business Units Filter */}\n <Popover \n open={openPopovers.businessUnits} \n onOpenChange={(open) => setOpenPopovers(prev => ({ ...prev, businessUnits: open }))}\n >\n <PopoverTrigger asChild>\n <Button variant=\"outline\" className=\"relative h-10\">\n <Building2 className=\"w-4 h-4 mr-2\" />\n Unidades\n {filters.businessUnits.length > 0 && (\n <Badge variant=\"destructive\" className=\"ml-2 h-5 w-5 p-0 text-xs flex items-center justify-center\">\n {filters.businessUnits.length}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-4 bg-white border shadow-lg\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"font-semibold text-gray-800\">Unidades de Negócio</h3>\n {filters.businessUnits.length > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('businessUnits')}\n className=\"text-gray-500 hover:text-gray-700\"\n >\n Limpar\n </Button>\n )}\n </div>\n <div className=\"max-h-60 overflow-y-auto space-y-2\">\n {businessUnits.map((unit) => (\n <div key={unit.codigo} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`unit-${unit.codigo}`}\n checked={filters.businessUnits.includes(unit.codigo)}\n onCheckedChange={() => toggleArrayFilter('businessUnits', unit.codigo)}\n />\n <label\n htmlFor={`unit-${unit.codigo}`}\n className=\"text-sm cursor-pointer flex-1\"\n >\n {unit.descricao}\n </label>\n </div>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Users Filter */}\n <Popover \n open={openPopovers.operators} \n onOpenChange={(open) => setOpenPopovers(prev => ({ ...prev, operators: open }))}\n >\n <PopoverTrigger asChild>\n <Button variant=\"outline\" className=\"relative h-10\">\n <UserCheck className=\"w-4 h-4 mr-2\" />\n Usuários\n {filters.operators.length > 0 && (\n <Badge variant=\"destructive\" className=\"ml-2 h-5 w-5 p-0 text-xs flex items-center justify-center\">\n {filters.operators.length}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-4 bg-white border shadow-lg\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"font-semibold text-gray-800\">Usuários</h3>\n {filters.operators.length > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('operators')}\n className=\"text-gray-500 hover:text-gray-700\"\n >\n Limpar\n </Button>\n )}\n </div>\n <div className=\"max-h-60 overflow-y-auto space-y-2\">\n {operators.map((operator) => (\n <div key={operator} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`operator-${operator}`}\n checked={filters.operators.includes(operator)}\n onCheckedChange={() => toggleArrayFilter('operators', operator)}\n />\n <label\n htmlFor={`operator-${operator}`}\n className=\"text-sm cursor-pointer flex-1\"\n >\n {operator}\n </label>\n </div>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Task Types Filter */}\n <Popover \n open={openPopovers.taskTypes} \n onOpenChange={(open) => setOpenPopovers(prev => ({ ...prev, taskTypes: open }))}\n >\n <PopoverTrigger asChild>\n <Button variant=\"outline\" className=\"relative h-10\">\n <ClipboardList className=\"w-4 h-4 mr-2\" />\n Tipos de Tarefa\n {filters.taskTypes.length > 0 && (\n <Badge variant=\"destructive\" className=\"ml-2 h-5 w-5 p-0 text-xs flex items-center justify-center\">\n {filters.taskTypes.length}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-4 bg-white border shadow-lg\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"font-semibold text-gray-800\">Tipos de Tarefa</h3>\n {filters.taskTypes.length > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('taskTypes')}\n className=\"text-gray-500 hover:text-gray-700\"\n >\n Limpar\n </Button>\n )}\n </div>\n <div className=\"max-h-60 overflow-y-auto space-y-2\">\n {taskTypes.map((taskType) => (\n <div key={taskType} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`task-${taskType}`}\n checked={filters.taskTypes.includes(taskType)}\n onCheckedChange={() => toggleArrayFilter('taskTypes', taskType)}\n />\n <label\n htmlFor={`task-${taskType}`}\n className=\"text-sm cursor-pointer flex-1\"\n >\n {taskType}\n </label>\n </div>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Clear All Filters */}\n {activeFiltersCount > 0 && (\n <>\n <Separator orientation=\"vertical\" className=\"h-8\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={clearAllFilters}\n className=\"text-gray-500 hover:text-gray-700\"\n >\n <X className=\"w-4 h-4 mr-1\" />\n Limpar todos\n </Button>\n </>\n )}\n </div>\n\n {/* Active Filters Display */}\n {activeFiltersCount > 0 && (\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"text-sm text-gray-600\">Filtros ativos:</span>\n {filters.vehicleId && (\n <Badge variant=\"secondary\" className=\"flex items-center gap-1\">\n Placa: {filters.vehicleId}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('vehicleId')}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n )}\n {filters.operatorType && (\n <Badge variant=\"secondary\" className=\"flex items-center gap-1\">\n Tipo: {filters.operatorType === 'ia' ? 'IA' : 'Humano'}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('operatorType')}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n )}\n {filters.status.length > 0 &&\n filters.status.map((status) => {\n const statusLabel = statusOptions.find(s => s.value === status)?.label || status;\n return (\n <Badge key={status} variant=\"secondary\" className=\"flex items-center gap-1\">\n Status: {statusLabel}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => toggleArrayFilter('status', status)}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n );\n })\n }\n {filters.businessUnits.map((unitCodigo) => {\n const unit = businessUnits.find(u => u.codigo === unitCodigo);\n return (\n <Badge key={unitCodigo} variant=\"secondary\" className=\"flex items-center gap-1\">\n Unidade: {unit?.descricao}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => toggleArrayFilter('businessUnits', unitCodigo)}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n );\n })}\n {filters.operators.map((operator) => (\n <Badge key={operator} variant=\"secondary\" className=\"flex items-center gap-1\">\n Operador: {operator}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => toggleArrayFilter('operators', operator)}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n ))}\n {filters.taskTypes.map((taskType) => (\n <Badge key={taskType} variant=\"secondary\" className=\"flex items-center gap-1\">\n Tipo: {taskType}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => toggleArrayFilter('taskTypes', taskType)}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n ))}\n </div>\n )}\n </div>\n );\n};\n\nexport default FilterBar;\n","import React, { useState } from \"react\";\nimport { Filter, X, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\n\nexport interface FilterField {\n key: string;\n label: string;\n type: \"text\" | \"select\" | \"formatted-text\" | \"multi-select\";\n placeholder?: string;\n options?: Array<{ value: string; label: string }>;\n formatter?: (value: string) => string;\n}\n\ntype FilterValue = string | number | boolean;\ntype FiltersRecord = Record<string, FilterValue>;\n\nexport interface GenericFilterBarProps {\n fields: FilterField[];\n filters: FiltersRecord;\n onFilterChange: (filters: FiltersRecord) => void;\n onClearFilters: () => void;\n totalResults?: number;\n isLoading?: boolean;\n isFiltersLoaded?: boolean; // Novo prop para indicar se os filtros foram carregados do localStorage\n}\n\nexport function GenericFilterBar({\n fields,\n filters,\n onFilterChange,\n onClearFilters,\n totalResults,\n isLoading = false,\n isFiltersLoaded = true,\n}: Readonly<GenericFilterBarProps>) {\n const [isExpanded, setIsExpanded] = useState(() => {\n // Expandir automaticamente se houver filtros ativos salvos\n return Object.keys(filters).some((key) => {\n const value = filters[key];\n return (\n value !== \"\" &&\n value !== null &&\n value !== undefined &&\n value !== \"todos\"\n );\n });\n });\n\n // Estado para controlar os popovers dos multi-selects\n const [openPopovers, setOpenPopovers] = useState<Record<string, boolean>>({});\n\n // Estado para controlar o termo de busca de cada multi-select\n const [searchTerms, setSearchTerms] = useState<Record<string, string>>({});\n\n const updateFilter = (key: string, value: string | number | boolean) => {\n const newFilters = { ...filters, [key]: value };\n onFilterChange(newFilters);\n };\n\n const removeFilter = (key: string) => {\n const newFilters = { ...filters };\n // Para filtros de texto, definir como string vazia ao invés de deletar\n const field = fields.find((f) => f.key === key);\n if (field?.type === \"text\" || field?.type === \"formatted-text\") {\n newFilters[key] = \"\";\n } else if (field?.type === \"select\") {\n // Para selects, usar o primeiro valor das opções (geralmente 'todos')\n newFilters[key] = field.options?.[0]?.value || \"\";\n } else if (field?.type === \"multi-select\") {\n // Para multi-selects, limpar seleção\n newFilters[key] = \"\";\n } else {\n delete newFilters[key];\n }\n onFilterChange(newFilters);\n };\n\n const hasActiveFilters = Object.keys(filters).some((key) => {\n const value = filters[key];\n return (\n value !== \"\" && value !== null && value !== undefined && value !== \"todos\"\n );\n });\n\n const getDisplayValueForField = (field: FilterField | undefined, value: FilterValue): string => {\n let displayValue = String(value);\n\n // Para selects, mostrar o label ao invés do value\n if (field?.type === \"select\" && field.options) {\n const option = field.options.find((opt) => opt.value === value);\n if (option) displayValue = option.label;\n }\n\n // Para multi-selects, mostrar labels dos valores selecionados\n if (field?.type === \"multi-select\" && field.options) {\n const selectedValues = String(value)\n .split(\",\")\n .filter((v) => v.trim() !== \"\");\n const selectedLabels = selectedValues.map((val) => {\n const option = field.options?.find((opt) => opt.value === val);\n return option?.label || val;\n });\n displayValue = selectedLabels.join(\", \");\n }\n\n return displayValue;\n };\n\n const getActiveFilterBadges = () => {\n return Object.entries(filters)\n .filter(\n ([, value]) =>\n value !== \"\" &&\n value !== null &&\n value !== undefined &&\n value !== \"todos\"\n )\n .map(([key, value]) => {\n const field = fields.find((f) => f.key === key);\n const label = field?.label || key;\n const displayValue = getDisplayValueForField(field, value);\n return { key, label, value: displayValue };\n });\n };\n\n const handleMultiSelectChange = (field: FilterField, optionValue: string, checked: boolean, selectedValues: string[]) => {\n let newSelectedValues;\n if (checked) {\n newSelectedValues = [...selectedValues, optionValue];\n } else {\n newSelectedValues = selectedValues.filter((v) => v !== optionValue);\n }\n updateFilter(field.key, newSelectedValues.join(\",\"));\n };\n\n const renderMultiSelectOption = (field: FilterField, option: { value: string; label: string }, selectedValues: string[]) => {\n if (!option?.value || !option?.label) {\n return null;\n }\n const isSelected = selectedValues.includes(option.value);\n return (\n <div key={option.value} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`${field.key}-${option.value}`}\n checked={isSelected}\n onCheckedChange={(checked) => handleMultiSelectChange(field, option.value, !!checked, selectedValues)}\n />\n <Label\n htmlFor={`${field.key}-${option.value}`}\n className=\"text-sm font-normal cursor-pointer\"\n >\n {option.label}\n </Label>\n </div>\n );\n };\n\n const renderField = (field: FilterField) => {\n const value = filters[field.key] || \"\";\n\n switch (field.type) {\n case \"text\":\n return (\n <Input\n placeholder={field.placeholder}\n value={String(value)}\n onChange={(e) => updateFilter(field.key, e.target.value)}\n className=\"w-full\"\n />\n );\n\n case \"formatted-text\":\n return (\n <Input\n placeholder={field.placeholder}\n value={String(value)}\n onChange={(e) => {\n const formattedValue = field.formatter\n ? field.formatter(e.target.value)\n : e.target.value;\n updateFilter(field.key, formattedValue);\n }}\n className=\"w-full\"\n />\n );\n\n case \"select\":\n return (\n <Select\n value={String(value)}\n onValueChange={(newValue) => updateFilter(field.key, newValue)}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder={field.placeholder} />\n </SelectTrigger>\n <SelectContent>\n {field.options?.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n\n case \"multi-select\": {\n const selectedValues = String(value)\n .split(\",\")\n .filter((v) => v.trim() !== \"\");\n const isOpen = openPopovers[field.key] || false;\n const searchTerm = searchTerms[field.key] || \"\";\n\n const filteredOptions = Array.isArray(field.options)\n ? field.options.filter(\n (option) =>\n option &&\n typeof option.label === \"string\" &&\n option.label.toLowerCase().includes(searchTerm.toLowerCase())\n )\n : [];\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={(open) => {\n setOpenPopovers((prev) => ({ ...prev, [field.key]: open }));\n if (!open) {\n // Clear search when closing\n setSearchTerms((prev) => ({ ...prev, [field.key]: \"\" }));\n }\n }}\n >\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-label={field.label}\n className=\"w-full justify-between\"\n >\n {(() => {\n if (selectedValues.length === 0) {\n return field.placeholder || \"Selecionar...\";\n }\n const plural = selectedValues.length > 1 ? \"s\" : \"\";\n return `${selectedValues.length} selecionado${plural}`;\n })()}\n <ChevronDown className=\"ml-2 icon-size shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-2\">\n <div className=\"space-y-2\">\n <Input\n placeholder=\"Buscar...\"\n value={searchTerm}\n onChange={(e) =>\n setSearchTerms((prev) => ({\n ...prev,\n [field.key]: e.target.value,\n }))\n }\n className=\"h-8\"\n />\n <div className=\"space-y-2 max-h-60 overflow-y-auto\">\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option) => renderMultiSelectOption(field, option, selectedValues))\n ) : (\n <div className=\"text-sm text-muted-foreground\">\n {searchTerm\n ? \"Nenhum item encontrado\"\n : \"Nenhuma opção disponível\"}\n </div>\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n }\n\n default:\n return null;\n }\n };\n\n return (\n <Card className=\"mb-6\">\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"flex items-center gap-4\">\n <Collapsible open={isExpanded} onOpenChange={setIsExpanded}>\n <CollapsibleTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <Filter className=\"w-4 h-4 mr-2\" />\n Filtros\n {isExpanded ? (\n <ChevronUp className=\"w-4 h-4 ml-2\" />\n ) : (\n <ChevronDown className=\"w-4 h-4 ml-2\" />\n )}\n </Button>\n </CollapsibleTrigger>\n </Collapsible>\n\n {hasActiveFilters && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClearFilters}\n className=\"text-muted-foreground\"\n >\n <X className=\"w-4 h-4 mr-1\" />\n Limpar Filtros\n </Button>\n )}\n </div>\n\n {totalResults !== undefined && (\n <div className=\"text-sm text-muted-foreground\">\n {(() => {\n if (!isFiltersLoaded) return \"Carregando filtros...\";\n if (isLoading) return \"Carregando...\";\n\n const suffix = totalResults === 1 ? \"\" : \"s\";\n return `${totalResults} resultado${suffix}`;\n })()}\n </div>\n )}\n </div>\n\n <Collapsible open={isExpanded} onOpenChange={setIsExpanded}>\n <CollapsibleContent className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {fields.map((field) => (\n <div key={field.key} className=\"space-y-2\">\n <Label htmlFor={field.key} className=\"text-sm font-medium\">\n {field.label}\n </Label>\n {renderField(field)}\n </div>\n ))}\n </div>\n </CollapsibleContent>\n </Collapsible>\n\n {hasActiveFilters && (\n <div className=\"mt-4 pt-4 border-t\">\n <div className=\"flex flex-wrap gap-2\">\n <span className=\"text-sm text-muted-foreground self-center\">\n Filtros ativos:\n </span>\n {getActiveFilterBadges().map(({ key, label, value }) => (\n <Badge\n key={key}\n variant=\"secondary\"\n className=\"cursor-pointer hover:bg-destructive hover:text-destructive-foreground\"\n onClick={() => removeFilter(key)}\n >\n {label}: {value}\n <X className=\"w-3 h-3 ml-1\" />\n </Badge>\n ))}\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n","import { LucideIcon, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { ReactNode, useRef, useState, useEffect, useCallback } from 'react';\nimport { Button } from './ui/button';\n\ninterface PageHeaderProps {\n icon?: LucideIcon;\n title: string;\n description?: string;\n children?: ReactNode;\n}\n\nexport function PageHeader({ icon: Icon, title, description, children }: PageHeaderProps) {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const headerContainerRef = useRef<HTMLDivElement>(null);\n const isDraggingRef = useRef(false);\n const startXRef = useRef(0);\n const scrollLeftRef = useRef(0);\n const [showLeftGradient, setShowLeftGradient] = useState(false);\n const [showRightGradient, setShowRightGradient] = useState(false);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n const checkHeaderOverflow = () => {\n const headerContainer = headerContainerRef.current;\n if (!headerContainer) return false;\n\n const children = Array.from(headerContainer.children);\n if (children.length < 2) return false;\n\n const titleContainer = children[0] as HTMLElement;\n const buttonsContainer = children[1] as HTMLElement;\n\n const totalWidth = titleContainer.offsetWidth + buttonsContainer.offsetWidth + 32;\n const availableWidth = headerContainer.offsetWidth;\n\n return totalWidth > availableWidth;\n };\n\n const updateGradients = useCallback(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const { scrollLeft, scrollWidth, clientWidth } = container;\n const overflowing = scrollWidth > clientWidth;\n\n setShowLeftGradient(overflowing && scrollLeft > 10);\n setShowRightGradient(overflowing && scrollLeft < scrollWidth - clientWidth - 10);\n }, []);\n\n const updateLayout = useCallback(() => {\n const headerOverflowing = checkHeaderOverflow();\n setIsOverflowing(headerOverflowing);\n if (headerOverflowing) {\n updateGradients();\n }\n }, [updateGradients]);\n\n useEffect(() => {\n const headerContainer = headerContainerRef.current;\n const scrollContainer = scrollContainerRef.current;\n if (!headerContainer) return;\n\n updateLayout();\n\n const resizeObserver = new ResizeObserver(updateLayout);\n resizeObserver.observe(headerContainer);\n\n if (scrollContainer) {\n scrollContainer.addEventListener('scroll', updateGradients);\n }\n\n return () => {\n resizeObserver.disconnect();\n if (scrollContainer) {\n scrollContainer.removeEventListener('scroll', updateGradients);\n }\n };\n }, [children, updateLayout, updateGradients]);\n\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!scrollContainerRef.current) return;\n isDraggingRef.current = true;\n startXRef.current = e.pageX - scrollContainerRef.current.offsetLeft;\n scrollLeftRef.current = scrollContainerRef.current.scrollLeft;\n };\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!isDraggingRef.current || !scrollContainerRef.current) return;\n e.preventDefault();\n const x = e.pageX - scrollContainerRef.current.offsetLeft;\n const walk = (x - startXRef.current) * 2;\n scrollContainerRef.current.scrollLeft = scrollLeftRef.current - walk;\n };\n\n const handleMouseUp = () => {\n isDraggingRef.current = false;\n };\n\n const handleMouseLeave = () => {\n isDraggingRef.current = false;\n };\n\n const scrollLeft = () => {\n if (!scrollContainerRef.current) return;\n scrollContainerRef.current.scrollBy({ left: -200, behavior: 'smooth' });\n };\n\n const scrollRight = () => {\n if (!scrollContainerRef.current) return;\n scrollContainerRef.current.scrollBy({ left: 200, behavior: 'smooth' });\n };\n\n return (\n <div className=\"sticky top-0 z-40 bg-sidebar border-b p-4\">\n <div\n ref={headerContainerRef}\n className={`flex items-center justify-between gap-2 ${isOverflowing ? 'flex-col md:flex-row' : 'flex-row'}`}\n >\n <div className=\"flex items-center gap-4 mr-auto \">\n <div>\n <h1 className=\"text-2xl font-bold text-sidebar-foreground flex items-center gap-2\">\n {Icon && <Icon className=\"h-6 w-6 text-primary\" />}\n {title}\n </h1>\n {description && (\n <p className=\"text-sm text-sidebar-foreground mt-1\">\n {description}\n </p>\n )}\n </div>\n </div>\n\n {children && (\n <>\n {!isOverflowing ? (\n <div className=\"flex items-center gap-4\">\n {children}\n </div>\n ) : (\n <div className={`${isOverflowing? \"w-full md:w-fit\": \"\"} relative`}>\n {showLeftGradient && (\n <>\n <div className=\"absolute left-0 top-0 bottom-0 w-8 bg-gradient-to-r from-sidebar to-transparent pointer-events-none z-10\" />\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute -left-4 top-1/2 -translate-y-1/2 z-20 h-8 w-8 bg-sidebar/80 hover:bg-sidebar\"\n onClick={scrollLeft}\n >\n <ChevronLeft className=\"icon-size\" />\n </Button>\n </>\n )}\n {showRightGradient && (\n <>\n <div className=\"absolute right-0 top-0 bottom-0 w-8 bg-gradient-to-l from-sidebar to-transparent pointer-events-none z-10\" />\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute -right-4 top-1/2 -translate-y-1/2 z-20 h-8 w-8 bg-sidebar/80 hover:bg-sidebar\"\n onClick={scrollRight}\n >\n <ChevronRight className=\"icon-size\" />\n </Button>\n </>\n )}\n <div\n ref={scrollContainerRef}\n className=\"w-full overflow-x-auto hide-scrollbar-x cursor-grab active:cursor-grabbing\"\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseUp={handleMouseUp}\n onMouseLeave={handleMouseLeave}\n >\n <div className=\"flex items-center gap-4 px-1 py-2\">\n {children}\n </div>\n </div>\n </div>\n )}\n </>\n )}\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { Button } from './ui/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './ui/select';\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react';\n\ninterface PaginationControlsProps {\n currentPage: number;\n totalPages: number;\n pageSize: number;\n totalItems: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n onPageChange: (page: number) => void;\n onPageSizeChange: (size: number) => void;\n pageSizeOptions?: number[];\n showPageSizeSelector?: boolean;\n showTotalItems?: boolean;\n}\n\nexport function PaginationControls({\n currentPage,\n totalPages,\n pageSize,\n totalItems,\n hasNextPage,\n hasPreviousPage,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 50, 100],\n showPageSizeSelector = true,\n showTotalItems = true,\n}: Readonly<PaginationControlsProps>) {\n const startItem = totalItems > 0 ? (currentPage - 1) * pageSize + 1 : 0;\n const endItem = Math.min(currentPage * pageSize, totalItems);\n\n const renderPageNumbers = () => {\n const pages = [];\n const maxVisiblePages = 5;\n \n let startPage = Math.max(1, currentPage - Math.floor(maxVisiblePages / 2));\n const endPage = Math.min(totalPages, startPage + maxVisiblePages - 1);\n \n // Adjust start page if we're near the end\n if (endPage - startPage + 1 < maxVisiblePages) {\n startPage = Math.max(1, endPage - maxVisiblePages + 1);\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pages.push(\n <Button\n key={i}\n variant={i === currentPage ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => onPageChange(i)}\n className=\"min-w-[40px]\"\n >\n {i}\n </Button>\n );\n }\n\n return pages;\n };\n\n if (totalPages <= 1 && !showTotalItems) {\n return null;\n }\n\n return (\n <div className=\"flex items-center justify-between gap-4 py-4\">\n <div className=\"flex items-center gap-4\">\n {showTotalItems && (\n <div className=\"text-sm text-muted-foreground\">\n Mostrando {startItem} a {endItem} de {totalItems} registro{totalItems !== 1 ? 's' : ''}\n </div>\n )}\n \n {showPageSizeSelector && totalPages > 1 && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Itens por página:</span>\n <Select value={pageSize.toString()} onValueChange={(value) => onPageSizeChange(Number(value))}>\n <SelectTrigger className=\"w-[80px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={size.toString()}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n </div>\n\n {totalPages > 1 && (\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(1)}\n disabled={!hasPreviousPage}\n className=\"h-8 w-8 p-0\"\n >\n <ChevronsLeft className=\"icon-size\" />\n </Button>\n \n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={!hasPreviousPage}\n className=\"h-8 w-8 p-0\"\n >\n <ChevronLeft className=\"icon-size\" />\n </Button>\n\n <div className=\"flex items-center gap-1\">\n {renderPageNumbers()}\n </div>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={!hasNextPage}\n className=\"h-8 w-8 p-0\"\n >\n <ChevronRight className=\"icon-size\" />\n </Button>\n \n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(totalPages)}\n disabled={!hasNextPage}\n className=\"h-8 w-8 p-0\"\n >\n <ChevronsRight className=\"icon-size\" />\n </Button>\n </div>\n )}\n </div>\n );\n}\n","import { useEditor, EditorContent } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport Image from '@tiptap/extension-image';\nimport Link from '@tiptap/extension-link';\nimport { Bold, Italic, List, ListOrdered, Quote, Code, Link2, Image as ImageIcon } from 'lucide-react';\nimport { Toggle } from '@/components/ui/toggle';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogFooter,\n} from '@/components/ui/dialog';\nimport { useState, useEffect } from 'react';\nimport { toast } from '@/components/ui/use-toast';\n\ninterface RichTextEditorProps {\n readonly content: string;\n readonly onChange: (html: string) => void;\n readonly placeholder?: string;\n}\n\nexport function RichTextEditor({ content, onChange, placeholder }: RichTextEditorProps) {\n const [linkUrl, setLinkUrl] = useState('');\n const [imageUrl, setImageUrl] = useState('');\n const [showLinkDialog, setShowLinkDialog] = useState(false);\n const [showImageDialog, setShowImageDialog] = useState(false);\n const [isDragging, setIsDragging] = useState(false);\n\n const editor = useEditor({\n extensions: [\n StarterKit.configure({\n // Disable the default link extension from StarterKit\n link: false,\n }),\n Image.configure({\n inline: true,\n allowBase64: true,\n HTMLAttributes: {\n class: 'max-w-full h-auto rounded-lg my-2',\n },\n }),\n Link.configure({\n openOnClick: false,\n HTMLAttributes: {\n class: 'text-primary underline',\n },\n }),\n ],\n content,\n onUpdate: ({ editor }) => {\n onChange(editor.getHTML());\n },\n editorProps: {\n attributes: {\n class: 'rich-text-editor focus:outline-none min-h-[400px] p-4',\n },\n handlePaste: (view, event) => {\n const items = event.clipboardData?.items;\n if (!items) return false;\n\n for (const item of items) {\n if (item.type.startsWith('image/')) {\n event.preventDefault();\n const file = item.getAsFile();\n if (!file) return false;\n\n // Check file size (5MB limit)\n const maxSize = 5 * 1024 * 1024; // 5MB\n if (file.size > maxSize) {\n toast({\n title: 'Imagem muito grande',\n description: 'Por favor, use uma imagem menor que 5MB.',\n variant: 'destructive',\n });\n return true;\n }\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result;\n if (typeof result === 'string') {\n editor?.chain().focus().setImage({ src: result }).run();\n }\n };\n reader.readAsDataURL(file);\n return true;\n }\n }\n return false;\n },\n handleDrop: (view, event, slice, moved) => {\n if (!moved && event.dataTransfer?.files.length) {\n event.preventDefault();\n const files = Array.from(event.dataTransfer.files);\n const imageFiles = files.filter(file => file.type.startsWith('image/'));\n \n imageFiles.forEach(file => {\n // Check file size (5MB limit)\n const maxSize = 5 * 1024 * 1024; // 5MB\n if (file.size > maxSize) {\n toast({\n title: 'Imagem muito grande',\n description: 'Por favor, use uma imagem menor que 5MB.',\n variant: 'destructive',\n });\n return;\n }\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result;\n if (typeof result === 'string') {\n const pos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (pos) {\n editor?.chain().focus().insertContentAt(pos.pos, {\n type: 'image',\n attrs: { src: result },\n }).run();\n }\n }\n };\n reader.readAsDataURL(file);\n });\n return true;\n }\n return false;\n },\n },\n });\n\n useEffect(() => {\n if (editor && content !== editor.getHTML()) {\n editor.commands.setContent(content || '');\n }\n }, [content, editor]);\n\n if (!editor) {\n return null;\n }\n\n const addLink = () => {\n if (linkUrl) {\n editor.chain().focus().setLink({ href: linkUrl }).run();\n setLinkUrl('');\n setShowLinkDialog(false);\n }\n };\n\n const addImage = () => {\n if (imageUrl) {\n editor.chain().focus().setImage({ src: imageUrl }).run();\n setImageUrl('');\n setShowImageDialog(false);\n }\n };\n\n return (\n <div className=\"border rounded-lg shadow-sm\">\n <div className=\"border-b bg-muted/30 p-3 flex items-center gap-2 flex-wrap\">\n <div className=\"flex items-center gap-1\">\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('bold')}\n onPressedChange={() => editor.chain().focus().toggleBold().run()}\n title=\"Negrito\"\n >\n <Bold className=\"icon-size\" />\n </Toggle>\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('italic')}\n onPressedChange={() => editor.chain().focus().toggleItalic().run()}\n title=\"Itálico\"\n >\n <Italic className=\"icon-size\" />\n </Toggle>\n </div>\n \n <div className=\"w-px h-6 bg-border\" />\n \n <div className=\"flex items-center gap-1\">\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('bulletList')}\n onPressedChange={() => editor.chain().focus().toggleBulletList().run()}\n title=\"Lista com marcadores\"\n >\n <List className=\"icon-size\" />\n </Toggle>\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('orderedList')}\n onPressedChange={() => editor.chain().focus().toggleOrderedList().run()}\n title=\"Lista numerada\"\n >\n <ListOrdered className=\"icon-size\" />\n </Toggle>\n </div>\n \n <div className=\"w-px h-6 bg-border\" />\n \n <div className=\"flex items-center gap-1\">\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('blockquote')}\n onPressedChange={() => editor.chain().focus().toggleBlockquote().run()}\n title=\"Citação\"\n >\n <Quote className=\"icon-size\" />\n </Toggle>\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('code')}\n onPressedChange={() => editor.chain().focus().toggleCode().run()}\n title=\"Código\"\n >\n <Code className=\"icon-size\" />\n </Toggle>\n </div>\n \n <div className=\"w-px h-6 bg-border\" />\n \n <div className=\"flex items-center gap-1\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => setShowLinkDialog(true)}\n className=\"h-8 px-2\"\n title=\"Adicionar link\"\n >\n <Link2 className=\"icon-size\" />\n </Button>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => setShowImageDialog(true)}\n className=\"h-8 px-2\"\n title=\"Adicionar imagem\"\n >\n <ImageIcon className=\"icon-size\" />\n </Button>\n </div>\n </div>\n <section \n className={`relative ${isDragging ? 'ring-2 ring-primary ring-offset-2' : ''}`}\n aria-label=\"Rich text editor\"\n onDragEnter={(e) => {\n e.preventDefault();\n setIsDragging(true);\n }}\n onDragLeave={(e) => {\n e.preventDefault();\n if (e.currentTarget === e.target) {\n setIsDragging(false);\n }\n }}\n onDragOver={(e) => {\n e.preventDefault();\n }}\n onDrop={() => {\n setIsDragging(false);\n }}\n >\n <EditorContent editor={editor} />\n {placeholder && editor.isEmpty && (\n <div className=\"absolute top-4 left-4 text-muted-foreground pointer-events-none\">\n {placeholder}\n </div>\n )}\n {isDragging && (\n <div className=\"absolute inset-0 bg-primary/5 pointer-events-none flex items-center justify-center\">\n <div className=\"bg-background/90 rounded-lg p-4 shadow-lg\">\n <p className=\"text-lg font-medium\">Solte a imagem aqui</p>\n </div>\n </div>\n )}\n </section>\n\n <Dialog open={showLinkDialog} onOpenChange={setShowLinkDialog}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Adicionar Link</DialogTitle>\n </DialogHeader>\n <Input\n placeholder=\"https://exemplo.com\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && addLink()}\n />\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setShowLinkDialog(false)}>\n Cancelar\n </Button>\n <Button onClick={addLink}>Adicionar</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n\n <Dialog open={showImageDialog} onOpenChange={setShowImageDialog}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Adicionar Imagem</DialogTitle>\n </DialogHeader>\n <Input\n placeholder=\"https://exemplo.com/imagem.jpg\"\n value={imageUrl}\n onChange={(e) => setImageUrl(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && addImage()}\n />\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setShowImageDialog(false)}>\n Cancelar\n </Button>\n <Button onClick={addImage}>Adicionar</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\n// Add editor styles\nif (typeof document !== 'undefined') {\n const style = document.createElement('style');\n style.textContent = `\n .rich-text-editor {\n font-size: 0.875rem;\n line-height: 1.5;\n }\n \n .rich-text-editor p {\n margin-bottom: 0.5rem;\n }\n \n .rich-text-editor p:last-child {\n margin-bottom: 0;\n }\n \n .rich-text-editor h1,\n .rich-text-editor h2,\n .rich-text-editor h3,\n .rich-text-editor h4,\n .rich-text-editor h5,\n .rich-text-editor h6 {\n font-weight: 600;\n margin-top: 1rem;\n margin-bottom: 0.5rem;\n }\n \n .rich-text-editor ul,\n .rich-text-editor ol {\n margin-left: 1.5rem;\n margin-bottom: 0.5rem;\n }\n \n .rich-text-editor li {\n margin-bottom: 0.25rem;\n }\n \n .rich-text-editor a {\n color: hsl(var(--primary));\n text-decoration: underline;\n }\n \n .rich-text-editor img {\n max-width: 100%;\n height: auto;\n border-radius: 0.375rem;\n margin: 1rem 0;\n display: block;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n }\n \n .rich-text-editor blockquote {\n border-left: 3px solid hsl(var(--border));\n padding-left: 1rem;\n margin: 0.5rem 0;\n font-style: italic;\n }\n \n .rich-text-editor code {\n background-color: hsl(var(--muted));\n padding: 0.125rem 0.375rem;\n border-radius: 0.25rem;\n font-size: 0.875rem;\n font-family: monospace;\n }\n \n .ProseMirror:focus {\n outline: none;\n }\n `;\n document.head.appendChild(style);\n}","import DOMPurify from 'dompurify';\n\ninterface RichTextRendererProps {\n readonly content: string;\n readonly className?: string;\n readonly maxLength?: number;\n readonly blockImages?: boolean;\n}\n\nexport function RichTextRenderer({ content, className = '', maxLength, blockImages = false }: RichTextRendererProps) {\n const allowedTags = blockImages\n ? ['p', 'br', 'strong', 'b', 'em', 'i', 'u', 'a', 'ul', 'ol', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'code', 'pre']\n : ['p', 'br', 'strong', 'b', 'em', 'i', 'u', 'a', 'ul', 'ol', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'blockquote', 'code', 'pre'];\n\n const sanitizedContent = DOMPurify.sanitize(content, {\n ALLOWED_TAGS: allowedTags,\n ALLOWED_ATTR: ['href', 'target', 'rel', 'src', 'alt', 'width', 'height', 'class'],\n ALLOW_DATA_ATTR: false,\n });\n\n // Truncate content if maxLength is provided\n const displayContent = maxLength && sanitizedContent.length > maxLength\n ? sanitizedContent.substring(0, maxLength) + '...'\n : sanitizedContent;\n\n return (\n <div \n className={`rich-text-content ${className}`}\n dangerouslySetInnerHTML={{ __html: displayContent }}\n />\n );\n}\n\n// Add global styles for rich text content\nconst style = document.createElement('style');\nstyle.textContent = `\n .rich-text-content {\n font-size: 0.875rem;\n line-height: 1.5;\n color: var(--muted-foreground);\n }\n \n .rich-text-content p {\n margin-bottom: 0.5rem;\n }\n \n .rich-text-content p:last-child {\n margin-bottom: 0;\n }\n \n .rich-text-content h1,\n .rich-text-content h2,\n .rich-text-content h3,\n .rich-text-content h4,\n .rich-text-content h5,\n .rich-text-content h6 {\n font-weight: 600;\n margin-top: 1rem;\n margin-bottom: 0.5rem;\n }\n \n .rich-text-content h1 { font-size: 1.5rem; }\n .rich-text-content h2 { font-size: 1.25rem; }\n .rich-text-content h3 { font-size: 1.125rem; }\n .rich-text-content h4 { font-size: 1rem; }\n .rich-text-content h5 { font-size: 0.875rem; }\n .rich-text-content h6 { font-size: 0.75rem; }\n \n .rich-text-content ul,\n .rich-text-content ol {\n margin-left: 1.5rem;\n margin-bottom: 0.5rem;\n }\n \n .rich-text-content li {\n margin-bottom: 0.25rem;\n }\n \n .rich-text-content a {\n color: hsl(var(--primary));\n text-decoration: underline;\n }\n \n .rich-text-content a:hover {\n text-decoration: none;\n }\n \n .rich-text-content img {\n max-width: 100%;\n height: auto;\n border-radius: 0.375rem;\n margin: 0.5rem 0;\n }\n \n .rich-text-content blockquote {\n border-left: 3px solid hsl(var(--border));\n padding-left: 1rem;\n margin: 0.5rem 0;\n font-style: italic;\n }\n \n .rich-text-content code {\n background-color: hsl(var(--muted));\n padding: 0.125rem 0.375rem;\n border-radius: 0.25rem;\n font-size: 0.875rem;\n font-family: monospace;\n }\n \n .rich-text-content pre {\n background-color: hsl(var(--muted));\n padding: 1rem;\n border-radius: 0.375rem;\n overflow-x: auto;\n margin: 0.5rem 0;\n }\n \n .rich-text-content pre code {\n background-color: transparent;\n padding: 0;\n }\n`;\ndocument.head.appendChild(style);","import React, { ReactNode } from 'react';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from './ui/card';\nimport { Button } from './ui/button';\nimport { TooltipButton } from './ui/tooltip-button';\nimport { AlertCircle, RefreshCw, Plus, LucideIcon } from 'lucide-react';\nimport { GenericFilterBar, FilterField } from './GenericFilterBar';\nimport { PageHeader } from './PageHeader';\n\nexport interface StandardPageLayoutProps {\n // Header\n readonly title: string;\n readonly description?: string;\n readonly icon?: LucideIcon;\n \n // Actions\n readonly onRefresh?: () => void;\n readonly onCreateNew?: () => void;\n readonly refreshButtonText?: string;\n readonly createButtonText?: string;\n readonly refreshLoading?: boolean;\n \n // Filters\n readonly filterFields?: FilterField[];\n readonly filters?: Record<string, string | number | boolean>;\n readonly onFilterChange?: (filters: Record<string, string | number | boolean>) => void;\n readonly onClearFilters?: () => void;\n readonly totalResults?: number;\n readonly isFiltersLoaded?: boolean;\n \n // Error state\n readonly error?: string | null;\n readonly onRetryError?: () => void;\n readonly onClearError?: () => void;\n \n // Content\n readonly children: ReactNode;\n readonly contentTitle?: string;\n readonly contentDescription?: string;\n readonly contentIcon?: ReactNode;\n \n // Loading\n readonly loading?: boolean;\n \n // Layout\n readonly className?: string;\n}\n\nexport function StandardPageLayout({\n // Header\n title,\n description,\n icon,\n \n // Actions\n onRefresh,\n onCreateNew,\n refreshButtonText = \"Atualizar\",\n createButtonText = \"Novo\",\n refreshLoading = false,\n \n // Filters\n filterFields,\n filters,\n onFilterChange,\n onClearFilters,\n totalResults,\n isFiltersLoaded = true,\n \n // Error state\n error,\n onRetryError,\n onClearError,\n \n // Content\n children,\n contentTitle,\n contentDescription,\n contentIcon,\n \n // Loading\n loading = false,\n \n // Layout\n className = \"\"\n}: StandardPageLayoutProps) {\n \n const hasActions = onRefresh || onCreateNew;\n const hasFilters = filterFields && filterFields.length > 0;\n \n return (\n <div className={className}>\n <PageHeader\n icon={icon}\n title={title}\n description={description}\n >\n {hasActions && (\n <>\n {onRefresh && (\n <TooltipButton\n variant=\"outline\"\n onClick={onRefresh}\n disabled={refreshLoading || loading}\n tooltip={refreshButtonText}\n icon={<RefreshCw className={`w-4 h-4 ${refreshLoading || loading ? 'animate-spin' : ''}`} />}\n >\n </TooltipButton>\n )}\n\n {onCreateNew && (\n <TooltipButton\n variant=\"primary\"\n onClick={onCreateNew}\n tooltip={createButtonText}\n icon={<Plus className=\"w-4 h-4\" />}\n >\n </TooltipButton>\n )}\n </>\n )}\n </PageHeader>\n\n <div className=\"container mx-auto py-6 space-y-6\">\n\n {/* Filter Bar */}\n {hasFilters && filters && onFilterChange && onClearFilters && (\n <GenericFilterBar\n fields={filterFields}\n filters={filters}\n onFilterChange={onFilterChange}\n onClearFilters={onClearFilters}\n totalResults={totalResults}\n isLoading={loading}\n isFiltersLoaded={isFiltersLoaded}\n />\n )}\n\n {/* Error State */}\n {error && (\n <Card className=\"border-destructive\">\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center gap-2 text-destructive\">\n <AlertCircle className=\"icon-size\" />\n <span>{error}</span>\n \n <div className=\"ml-auto flex gap-2\">\n {onRetryError && (\n <Button variant=\"outline\" size=\"sm\" onClick={onRetryError}>\n <RefreshCw className=\"w-4 h-4 mr-2\" />\n Tentar novamente\n </Button>\n )}\n {onClearError && (\n <Button variant=\"outline\" size=\"sm\" onClick={onClearError}>\n Fechar\n </Button>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n )}\n\n {/* Main Content */}\n {!error && (\n <Card>\n {(contentTitle || contentDescription) && (\n <CardHeader>\n {contentTitle && (\n <CardTitle className=\"flex items-center gap-2\">\n {contentIcon}\n {contentTitle}\n </CardTitle>\n )}\n {contentDescription && (\n <CardDescription>\n {contentDescription}\n </CardDescription>\n )}\n </CardHeader>\n )}\n <CardContent className=\"p-6\">\n {children}\n </CardContent>\n </Card>\n )}\n </div>\n </div>\n );\n}\n","import React from 'react';\n\ninterface StatusIndicatorProps {\n status: 'online' | 'busy' | 'offline';\n count: number;\n label: string;\n onClick?: () => void;\n}\n\nconst StatusIndicator: React.FC<StatusIndicatorProps> = ({status, count, label, onClick}) => {\n const getStatusColor = () => {\n switch (status) {\n case 'online':\n return 'bg-green-500';\n case 'busy':\n return 'bg-yellow-500';\n case 'offline':\n return 'bg-red-500';\n default:\n return 'bg-gray-500';\n }\n };\n\n return (\n <div onClick={onClick}\n className={`flex items-center gap-3 bg-white rounded-lg p-4 shadow-sm border border-gray-100 my-auto ${onClick ? \"cursor-pointer\" : \"\"}`}>\n <div className={`flex w-3 h-3 rounded-full ${getStatusColor()} animate-pulse m-auto`}></div>\n <div className={'flex items-center m-auto w-full'}>\n <div className={'flex flex-row gap-2 w-full justify-start'}>\n <p className=\"text-2xl font-bold text-gray-800\">{count}</p>\n <p className=\"flex my-auto text-sm text-gray-500\">{label}</p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default StatusIndicator;\n","\nimport React from 'react';\nimport { Button } from '@/components/ui/button';\nimport { LayoutGrid, Circle, MessageSquare } from 'lucide-react';\n\ninterface ViewToggleProps {\n viewMode: 'cards' | 'dots' | 'chat';\n onViewModeChange: (mode: 'cards' | 'dots' | 'chat') => void;\n}\n\nconst ViewToggle: React.FC<ViewToggleProps> = ({ viewMode, onViewModeChange }) => {\n return (\n <div className=\"flex items-center gap-2 rounded-lg border p-1\">\n <Button\n variant={viewMode === 'cards' ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => onViewModeChange('cards')}\n className=\"flex items-center gap-2\"\n >\n <LayoutGrid className=\"icon-size\" />\n Cards\n </Button>\n <Button\n variant={viewMode === 'dots' ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => onViewModeChange('dots')}\n className=\"flex items-center gap-2\"\n >\n <Circle className=\"icon-size\" />\n Resumido\n </Button>\n <Button\n variant={viewMode === 'chat' ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => onViewModeChange('chat')}\n className=\"flex items-center gap-2\"\n >\n <MessageSquare className=\"icon-size\" />\n Conversa\n </Button>\n </div>\n );\n};\n\nexport default ViewToggle;\n","import React, { memo, useCallback } from 'react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Button } from '@/components/ui/button';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Badge } from '@/components/ui/badge';\nimport {\n AlertTriangle,\n RefreshCw,\n Home,\n ExternalLink,\n Shield,\n Clock,\n Key,\n Server,\n Users\n} from 'lucide-react';\n\ninterface SSOErrorProps {\n /** Type of SSO error */\n errorType: 'authentication_failed' | 'invalid_state' | 'token_expired' | 'server_error' | 'tenant_mismatch' | 'unknown';\n /** Error message */\n message: string;\n /** Additional error details */\n details?: string;\n /** Tenant ID where error occurred */\n tenantId?: string;\n /** Error code from SSO provider */\n errorCode?: string;\n /** Whether retry is possible */\n canRetry?: boolean;\n /** Custom class name */\n className?: string;\n /** Callback when retry is requested */\n onRetry?: () => void;\n /** Callback when user goes back to login */\n onBackToLogin?: () => void;\n /** Callback when user requests support */\n onContactSupport?: () => void;\n /** SSO Provider name */\n ssoProviderName?: string;\n /** Application name */\n appName?: string;\n /** Support email */\n supportEmail?: string;\n}\n\nconst SSOError: React.FC<SSOErrorProps> = memo(({\n errorType,\n message,\n details,\n tenantId,\n errorCode,\n canRetry = true,\n className = '',\n onRetry,\n onBackToLogin,\n onContactSupport,\n ssoProviderName = 'SSO',\n appName = 'o sistema',\n supportEmail = 'suporte@example.com'\n}) => {\n const getErrorIcon = () => {\n switch (errorType) {\n case 'authentication_failed':\n return <Key className=\"h-12 w-12 text-red-500\" />;\n case 'invalid_state':\n return <Shield className=\"h-12 w-12 text-orange-500\" />;\n case 'token_expired':\n return <Clock className=\"h-12 w-12 text-yellow-500\" />;\n case 'server_error':\n return <Server className=\"h-12 w-12 text-red-500\" />;\n case 'tenant_mismatch':\n return <Users className=\"h-12 w-12 text-purple-500\" />;\n default:\n return <AlertTriangle className=\"h-12 w-12 text-red-500\" />;\n }\n };\n\n const getErrorTitle = () => {\n switch (errorType) {\n case 'authentication_failed':\n return 'Falha na Autenticação SSO';\n case 'invalid_state':\n return 'Sessão SSO Inválida';\n case 'token_expired':\n return 'Sessão SSO Expirada';\n case 'server_error':\n return 'Erro no Servidor SSO';\n case 'tenant_mismatch':\n return 'Tenant Incompatível';\n default:\n return 'Erro SSO Inesperado';\n }\n };\n\n const getErrorDescription = () => {\n switch (errorType) {\n case 'authentication_failed':\n return `Não foi possível autenticar suas credenciais no sistema ${ssoProviderName}. Verifique suas permissões e tente novamente.`;\n case 'invalid_state':\n return 'A sessão SSO é inválida ou foi comprometida. Por segurança, o login foi cancelado.';\n case 'token_expired':\n return 'Sua sessão SSO expirou durante o processo de autenticação. Inicie o login novamente.';\n case 'server_error':\n return 'Ocorreu um erro interno no servidor durante a autenticação SSO. Tente novamente em alguns instantes.';\n case 'tenant_mismatch':\n return 'O tenant configurado não corresponde ao esperado para esta sessão SSO.';\n default:\n return 'Ocorreu um erro inesperado durante a autenticação SSO. Nossa equipe foi notificada.';\n }\n };\n\n const getSolutionSteps = () => {\n switch (errorType) {\n case 'authentication_failed':\n return [\n `Verifique se você tem acesso ao sistema ${ssoProviderName}`,\n 'Confirme se suas credenciais estão corretas',\n 'Entre em contato com o administrador se o problema persistir'\n ];\n case 'invalid_state':\n return [\n 'Limpe os cookies do navegador',\n `Feche todas as abas de ${appName} e ${ssoProviderName}`,\n 'Inicie um novo processo de login SSO'\n ];\n case 'token_expired':\n return [\n 'Inicie um novo processo de login',\n 'Complete o login mais rapidamente da próxima vez',\n 'Verifique sua conexão com a internet'\n ];\n case 'server_error':\n return [\n 'Aguarde alguns minutos e tente novamente',\n `Verifique se o serviço ${ssoProviderName} está funcionando`,\n 'Use o login tradicional como alternativa'\n ];\n case 'tenant_mismatch':\n return [\n 'Verifique se está acessando o subdomínio correto',\n 'Confirme o tenant ID com o administrador',\n 'Limpe o cache do navegador e tente novamente'\n ];\n default:\n return [\n 'Tente novamente em alguns instantes',\n 'Limpe o cache do navegador',\n 'Entre em contato com o suporte se o problema persistir'\n ];\n }\n };\n\n const getErrorSeverity = () => {\n switch (errorType) {\n case 'server_error':\n case 'unknown':\n return 'destructive';\n case 'authentication_failed':\n case 'tenant_mismatch':\n return 'destructive';\n case 'invalid_state':\n case 'token_expired':\n return 'default';\n default:\n return 'destructive';\n }\n };\n\n const handleRetry = useCallback(() => {\n onRetry?.();\n // Default retry behavior\n window.location.href = `/auth/sso/login?tenant=${tenantId}`;\n }, [onRetry, tenantId]);\n\n const handleBackToLogin = useCallback(() => {\n onBackToLogin?.();\n // Default behavior\n window.location.href = '/login';\n }, [onBackToLogin]);\n\n const handleContactSupport = useCallback(() => {\n onContactSupport?.();\n window.open(`mailto:${supportEmail}?subject=Erro SSO&body=` + encodeURIComponent(\n `Erro SSO\\n\\nTipo: ${errorType}\\nMensagem: ${message}\\nTenant: ${tenantId}\\nCódigo: ${errorCode}\\nDetalhes: ${details}`\n ), '_blank');\n }, [onContactSupport, errorType, message, tenantId, errorCode, details, supportEmail]);\n\n return (\n <div className={`min-h-screen flex items-center justify-center p-4 bg-muted/30 ${className}`}>\n <Card className=\"w-full max-w-2xl shadow-lg\">\n <CardHeader className=\"text-center pb-4\">\n <div className=\"flex justify-center mb-4\">\n {getErrorIcon()}\n </div>\n\n <CardTitle className=\"text-2xl mb-2\">\n {getErrorTitle()}\n </CardTitle>\n\n <p className=\"text-muted-foreground\">\n {getErrorDescription()}\n </p>\n </CardHeader>\n\n <CardContent className=\"space-y-6\">\n {/* Error Details Alert */}\n <Alert variant={getErrorSeverity()}>\n <AlertTriangle className=\"icon-size\" />\n <AlertDescription>\n <strong>Erro:</strong> {message}\n {details && (\n <div className=\"mt-2 text-xs opacity-75\">\n <strong>Detalhes:</strong> {details}\n </div>\n )}\n </AlertDescription>\n </Alert>\n\n {/* Error Metadata */}\n <div className=\"flex flex-wrap gap-2 justify-center\">\n {tenantId && (\n <Badge variant=\"outline\">\n <Users className=\"h-3 w-3 mr-1\" />\n Tenant: {tenantId}\n </Badge>\n )}\n\n {errorCode && (\n <Badge variant=\"outline\">\n Código: {errorCode}\n </Badge>\n )}\n\n <Badge variant=\"outline\">\n Tipo: {errorType}\n </Badge>\n </div>\n\n {/* Solution Steps */}\n <div className=\"bg-muted/50 p-4 rounded-lg\">\n <h4 className=\"font-medium mb-3 flex items-center gap-2\">\n <Shield className=\"icon-size\" />\n Passos para Resolver\n </h4>\n\n <ol className=\"space-y-2 text-sm\">\n {getSolutionSteps().map((step, index) => (\n <li key={index} className=\"flex items-start gap-2\">\n <span className=\"flex-shrink-0 w-5 h-5 bg-primary text-primary-foreground rounded-full text-xs flex items-center justify-center\">\n {index + 1}\n </span>\n <span>{step}</span>\n </li>\n ))}\n </ol>\n </div>\n\n {/* Action Buttons */}\n <div className=\"flex flex-col sm:flex-row gap-3\">\n {canRetry && (\n <Button\n onClick={handleRetry}\n className=\"flex-1\"\n size=\"lg\"\n >\n <RefreshCw className=\"icon-size mr-2\" />\n Tentar Novamente\n </Button>\n )}\n\n <Button\n onClick={handleBackToLogin}\n variant=\"outline\"\n className=\"flex-1\"\n size=\"lg\"\n >\n <Home className=\"icon-size mr-2\" />\n Voltar ao Login\n </Button>\n\n <Button\n onClick={handleContactSupport}\n variant=\"ghost\"\n className=\"flex-1\"\n size=\"lg\"\n >\n <ExternalLink className=\"icon-size mr-2\" />\n Contatar Suporte\n </Button>\n </div>\n\n {/* Additional Help */}\n <div className=\"text-center text-xs text-muted-foreground border-t pt-4\">\n <p>\n Se você continuar enfrentando problemas, entre em contato com o administrador do sistema\n ou visite nossa central de ajuda.\n </p>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n});\n\nexport default SSOError;\n\n// Display name for debugging\nSSOError.displayName = 'SSOError';","import React, { useState, memo, useCallback } from 'react';\nimport { Button } from '@/components/ui/button';\nimport { AlertCircle, LogIn, Shield } from 'lucide-react';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\n\ninterface SSOLoginButtonProps {\n tenantId: string;\n redirectUrl?: string;\n loading?: boolean;\n error?: string;\n variant?: 'default' | 'outline' | 'secondary' | 'ghost' | 'link' | 'destructive' | 'primary-acorde' | 'secondary-acorde' | 'outline-acorde';\n size?: 'default' | 'sm' | 'lg' | 'icon';\n fullWidth?: boolean;\n className?: string;\n onLoginStart?: () => void;\n onLoginError?: (error: string) => void;\n hideAlternativeLogin?: boolean;\n ssoLoginUrl?: string;\n apiBaseUrl?: string;\n ssoProviderName?: string;\n}\n\nconst SSOLoginButton: React.FC<SSOLoginButtonProps> = memo(({\n tenantId,\n redirectUrl,\n loading = false,\n error,\n variant = 'primary-acorde',\n size = 'default',\n fullWidth = true,\n className = '',\n onLoginStart,\n onLoginError,\n hideAlternativeLogin = false,\n ssoLoginUrl,\n apiBaseUrl = 'http://localhost:8000',\n ssoProviderName = 'SSO'\n}) => {\n const [isInitiating, setIsInitiating] = useState(false);\n\n const handleSSOLogin = useCallback(async () => {\n if (loading || isInitiating) return;\n\n try {\n setIsInitiating(true);\n onLoginStart?.();\n\n let ssoUrl: string;\n if (ssoLoginUrl && ssoLoginUrl.trim()) {\n const trimmedUrl = ssoLoginUrl.trim();\n\n try {\n let url: URL;\n\n if (trimmedUrl.startsWith('/')) {\n url = new URL(trimmedUrl, apiBaseUrl);\n console.info('Converted relative SSO URL to absolute:', trimmedUrl, '→', url.toString());\n } else {\n url = new URL(trimmedUrl);\n console.info('Using absolute SSO URL:', url.toString());\n }\n\n if (!url.searchParams.has('tenant_id')) {\n url.searchParams.set('tenant_id', tenantId);\n }\n\n if (redirectUrl && !url.searchParams.has('redirect_url')) {\n url.searchParams.set('redirect_url', redirectUrl);\n }\n\n ssoUrl = url.toString();\n } catch (urlError) {\n console.warn('Invalid SSO login URL provided, falling back to default:', trimmedUrl, urlError);\n ssoUrl = '';\n }\n } else {\n ssoUrl = '';\n }\n\n if (!ssoUrl) {\n const params = new URLSearchParams();\n\n params.set('tenant_id', tenantId);\n\n if (redirectUrl) {\n params.set('redirect_url', redirectUrl);\n }\n\n ssoUrl = `${apiBaseUrl}/api/v1/auth/sso/login?${params.toString()}`;\n console.info('Using default SSO URL:', ssoUrl);\n }\n\n console.info('Redirecting to SSO:', ssoUrl);\n window.location.href = ssoUrl;\n\n } catch (err) {\n let errorMessage = 'Failed to initiate SSO login';\n\n if (err instanceof Error) {\n if (err.message.includes('Invalid URL')) {\n errorMessage = 'Configuração de SSO inválida. Entre em contato com o administrador.';\n console.error('Invalid SSO URL configuration:', ssoLoginUrl, err);\n } else {\n errorMessage = err.message;\n }\n }\n\n onLoginError?.(errorMessage);\n } finally {\n setIsInitiating(false);\n }\n }, [loading, isInitiating, onLoginStart, tenantId, redirectUrl, onLoginError, ssoLoginUrl, apiBaseUrl]);\n\n const isLoading = loading || isInitiating;\n\n return (\n <div className=\"w-full space-y-4\">\n {error && (\n <Alert variant=\"destructive\">\n <AlertCircle className=\"icon-size\" />\n <AlertDescription>{error}</AlertDescription>\n </Alert>\n )}\n <Button\n onClick={handleSSOLogin}\n disabled={isLoading}\n variant={variant}\n size={size}\n className={`\n ${fullWidth ? 'w-full' : ''}\n ${className}\n relative overflow-hidden transition-all duration-200\n hover:scale-[1.02] active:scale-[0.98]\n `}\n >\n <div className=\"flex items-center justify-center gap-3\">\n {isLoading ? (\n <div className=\"icon-size animate-spin rounded-full border-2 border-background border-t-foreground\" />\n ) : (\n <Shield className=\"icon-size\" />\n )}\n\n <span className=\"font-medium\">\n {isLoading ? 'Iniciando SSO...' : `Entrar com ${ssoProviderName}`}\n </span>\n </div>\n\n {isLoading && (\n <div className=\"absolute inset-0 bg-background/50 backdrop-blur-sm\" />\n )}\n </Button>\n {!hideAlternativeLogin && (\n <div className=\"text-center\">\n <Button\n variant=\"link\"\n size=\"sm\"\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n onClick={() => {\n window.location.href = '/login/traditional';\n }}\n >\n <LogIn className=\"h-3 w-3 mr-1\" />\n Usar login tradicional\n </Button>\n </div>\n )}\n </div>\n );\n});\n\nSSOLoginButton.displayName = 'SSOLoginButton';\n\nexport default SSOLoginButton;","import React, { useState } from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport {\n AlertCircle,\n CheckCircle,\n Clock,\n Code,\n Copy,\n FileJson,\n Hash,\n Info,\n Loader2,\n RefreshCw,\n Timer,\n XCircle,\n ChevronDown,\n ChevronRight,\n Activity,\n Database,\n Network,\n Zap,\n AlertTriangle\n} from 'lucide-react';\nimport { useToast } from '../ui/use-toast';\nimport { WebhookEvent, WebhookEventStatus } from '@/domain/entities/WebhookEvent';\nimport { webhookService } from '@/services/api/webhook.service';\nimport { cn } from '@/utils/styles';\nimport { format, formatDistanceToNow } from 'date-fns';\nimport { ptBR } from 'date-fns/locale';\n\ninterface EventInspectorProps {\n event: WebhookEvent;\n onRetry?: (eventId: string) => void;\n onClose?: () => void;\n className?: string;\n}\n\ninterface ProcessingStep {\n name: string;\n status: 'pending' | 'processing' | 'success' | 'failed' | 'skipped';\n startTime?: Date;\n endTime?: Date;\n duration?: number;\n error?: string;\n details?: Record<string, unknown>;\n}\n\nexport function EventInspector({ event, onRetry, className }: EventInspectorProps) {\n const { toast } = useToast();\n const [expandedSections, setExpandedSections] = useState<Set<string>>(new Set(['overview']));\n const [copiedField, setCopiedField] = useState<string | null>(null);\n\n const retryMutation = useMutation({\n mutationFn: async (eventId: string) => {\n return await webhookService.retryEvent(eventId);\n },\n onSuccess: () => {\n toast({\n title: 'Reprocessamento iniciado',\n description: 'O evento será reprocessado em breve',\n });\n onRetry?.(event.id);\n },\n onError: (error: Error) => {\n toast({\n title: 'Erro ao reprocessar',\n description: error.message,\n variant: 'destructive',\n });\n }\n });\n\n const getStatusIcon = (status: WebhookEventStatus) => {\n switch (status) {\n case WebhookEventStatus.SUCCESS:\n return <CheckCircle className=\"icon-size text-green-500\" />;\n case WebhookEventStatus.FAILED:\n return <XCircle className=\"icon-size text-red-500\" />;\n case WebhookEventStatus.PROCESSING:\n return <Loader2 className=\"icon-size text-blue-500 animate-spin\" />;\n case WebhookEventStatus.PENDING:\n return <Clock className=\"icon-size text-yellow-500\" />;\n case WebhookEventStatus.RETRYING:\n return <RefreshCw className=\"icon-size text-orange-500 animate-spin\" />;\n default:\n return <Info className=\"icon-size text-muted-foreground\" />;\n }\n };\n\n const getStatusBadge = (status: WebhookEventStatus) => {\n const variants: Record<WebhookEventStatus, 'default' | 'secondary' | 'destructive' | 'outline'> = {\n [WebhookEventStatus.SUCCESS]: 'default',\n [WebhookEventStatus.FAILED]: 'destructive',\n [WebhookEventStatus.PROCESSING]: 'secondary',\n [WebhookEventStatus.PENDING]: 'outline',\n [WebhookEventStatus.RETRYING]: 'secondary'\n };\n\n return (\n <Badge variant={variants[status]} className=\"gap-1\">\n {getStatusIcon(status)}\n {status}\n </Badge>\n );\n };\n\n const copyToClipboard = async (text: string, field: string) => {\n await navigator.clipboard.writeText(text);\n setCopiedField(field);\n setTimeout(() => setCopiedField(null), 2000);\n toast({\n title: 'Copiado!',\n description: 'Conteúdo copiado para a área de transferência',\n });\n };\n\n const toggleSection = (section: string) => {\n setExpandedSections(prev => {\n const newSet = new Set(prev);\n if (newSet.has(section)) {\n newSet.delete(section);\n } else {\n newSet.add(section);\n }\n return newSet;\n });\n };\n\n const renderJsonTree = (data: unknown, path: string = ''): React.ReactNode => {\n if (data === null) return <span className=\"text-muted-foreground\">null</span>;\n if (data === undefined) return <span className=\"text-muted-foreground\">undefined</span>;\n\n if (typeof data === 'object' && !Array.isArray(data)) {\n const obj = data as Record<string, unknown>;\n return (\n <div className=\"ml-4\">\n {Object.entries(obj).map(([key, value]) => {\n const currentPath = path ? `${path}.${key}` : key;\n const isExpanded = expandedSections.has(currentPath);\n const isExpandable = typeof value === 'object' && value !== null;\n\n return (\n <div key={currentPath} className=\"my-1\">\n {isExpandable ? (\n <Collapsible open={isExpanded} onOpenChange={() => toggleSection(currentPath)}>\n <CollapsibleTrigger className=\"flex items-center gap-1 hover:bg-muted/50 px-2 py-1 rounded cursor-pointer w-full text-left\">\n {isExpanded ? <ChevronDown className=\"h-3 w-3\" /> : <ChevronRight className=\"h-3 w-3\" />}\n <span className=\"font-mono text-sm text-blue-600 dark:text-blue-400\">{key}:</span>\n <span className=\"text-muted-foreground text-xs\">\n {Array.isArray(value) ? `[${value.length}]` : '{...}'}\n </span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n {renderJsonTree(value, currentPath)}\n </CollapsibleContent>\n </Collapsible>\n ) : (\n <div className=\"flex items-center gap-2 px-2 py-1\">\n <span className=\"font-mono text-sm text-blue-600 dark:text-blue-400\">{key}:</span>\n <span className=\"font-mono text-sm\">\n {typeof value === 'string' ? (\n <span className=\"text-green-600 dark:text-green-400\">\"{value}\"</span>\n ) : typeof value === 'number' ? (\n <span className=\"text-orange-600 dark:text-orange-400\">{value}</span>\n ) : typeof value === 'boolean' ? (\n <span className=\"text-purple-600 dark:text-purple-400\">{String(value)}</span>\n ) : (\n renderJsonTree(value, currentPath)\n )}\n </span>\n {typeof value === 'string' && value.length > 20 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => copyToClipboard(value, currentPath)}\n >\n <Copy className={cn(\n \"h-3 w-3\",\n copiedField === currentPath && \"text-green-500\"\n )} />\n </Button>\n )}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n }\n\n if (Array.isArray(data)) {\n return (\n <div className=\"ml-4\">\n {data.map((item, index) => {\n const currentPath = `${path}[${index}]`;\n const isExpanded = expandedSections.has(currentPath);\n const isExpandable = typeof item === 'object' && item !== null;\n\n return (\n <div key={currentPath} className=\"my-1\">\n {isExpandable ? (\n <Collapsible open={isExpanded} onOpenChange={() => toggleSection(currentPath)}>\n <CollapsibleTrigger className=\"flex items-center gap-1 hover:bg-muted/50 px-2 py-1 rounded cursor-pointer w-full text-left\">\n {isExpanded ? <ChevronDown className=\"h-3 w-3\" /> : <ChevronRight className=\"h-3 w-3\" />}\n <span className=\"font-mono text-sm text-purple-600 dark:text-purple-400\">[{index}]</span>\n <span className=\"text-muted-foreground text-xs\">\n {Array.isArray(item) ? `[${item.length}]` : '{...}'}\n </span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n {renderJsonTree(item, currentPath)}\n </CollapsibleContent>\n </Collapsible>\n ) : (\n <div className=\"flex items-center gap-2 px-2 py-1\">\n <span className=\"font-mono text-sm text-purple-600 dark:text-purple-400\">[{index}]:</span>\n <span className=\"font-mono text-sm\">{renderJsonTree(item, currentPath)}</span>\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n }\n\n if (typeof data === 'string') return <span className=\"text-green-600 dark:text-green-400\">\"{data}\"</span>;\n if (typeof data === 'number') return <span className=\"text-orange-600 dark:text-orange-400\">{data}</span>;\n if (typeof data === 'boolean') return <span className=\"text-purple-600 dark:text-purple-400\">{String(data)}</span>;\n\n return <span className=\"text-muted-foreground\">{String(data)}</span>;\n };\n\n const getProcessingSteps = (): ProcessingStep[] => {\n const steps: ProcessingStep[] = [\n {\n name: 'Recebimento',\n status: event.createdAt ? 'success' : 'pending',\n startTime: event.createdAt,\n details: {\n eventId: event.eventId,\n source: event.source\n }\n },\n {\n name: 'Validação',\n status: event.status !== WebhookEventStatus.PENDING ? 'success' : 'pending',\n details: {\n type: event.type,\n retryCount: event.retryCount\n }\n },\n {\n name: 'Processamento',\n status: event.status === WebhookEventStatus.PROCESSING ? 'processing' :\n event.status === WebhookEventStatus.SUCCESS ? 'success' :\n event.status === WebhookEventStatus.FAILED ? 'failed' : 'pending',\n startTime: event.processedAt,\n error: event.error?.message\n }\n ];\n\n if (event.metadata.flowId) {\n steps.push({\n name: 'Execução de Fluxo',\n status: event.status === WebhookEventStatus.SUCCESS ? 'success' :\n event.status === WebhookEventStatus.FAILED ? 'failed' : 'pending',\n details: {\n flowId: event.metadata.flowId,\n triggerId: event.metadata.triggerId,\n sessionId: event.metadata.sessionId\n }\n });\n }\n\n if (event.retryCount > 0) {\n steps.push({\n name: 'Retry',\n status: event.status === WebhookEventStatus.RETRYING ? 'processing' : 'success',\n details: {\n attempt: event.retryCount,\n maxRetries: event.maxRetries\n }\n });\n }\n\n return steps;\n };\n\n const formatDuration = (start?: Date, end?: Date): string => {\n if (!start) return '-';\n const endTime = end || new Date();\n const duration = endTime.getTime() - start.getTime();\n \n if (duration < 1000) return `${duration}ms`;\n if (duration < 60000) return `${(duration / 1000).toFixed(1)}s`;\n return `${Math.floor(duration / 60000)}m ${Math.floor((duration % 60000) / 1000)}s`;\n };\n\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle className=\"flex items-center gap-2\">\n <FileJson className=\"h-5 w-5\" />\n Inspetor de Evento\n </CardTitle>\n <CardDescription>\n Detalhes completos do evento webhook\n </CardDescription>\n </div>\n <div className=\"flex items-center gap-2\">\n {getStatusBadge(event.status)}\n {(event.status === WebhookEventStatus.FAILED || event.status === WebhookEventStatus.RETRYING) && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => retryMutation.mutate(event.id)}\n disabled={retryMutation.isPending}\n >\n {retryMutation.isPending ? (\n <Loader2 className=\"icon-size animate-spin\" />\n ) : (\n <RefreshCw className=\"icon-size\" />\n )}\n Reprocessar\n </Button>\n )}\n </div>\n </div>\n </CardHeader>\n\n <CardContent>\n <Tabs defaultValue=\"overview\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-4\">\n <TabsTrigger value=\"overview\">\n <Info className=\"icon-size mr-2\" />\n Visão Geral\n </TabsTrigger>\n <TabsTrigger value=\"payload\">\n <Code className=\"icon-size mr-2\" />\n Payload\n </TabsTrigger>\n <TabsTrigger value=\"timeline\">\n <Activity className=\"icon-size mr-2\" />\n Timeline\n </TabsTrigger>\n <TabsTrigger value=\"metadata\">\n <Database className=\"icon-size mr-2\" />\n Metadados\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"overview\" className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2 text-sm\">\n <Hash className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Event ID:</span>\n <code className=\"text-xs bg-muted px-1 py-0.5 rounded\">{event.eventId}</code>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => copyToClipboard(event.eventId, 'eventId')}\n >\n <Copy className={cn(\n \"h-3 w-3\",\n copiedField === 'eventId' && \"text-green-500\"\n )} />\n </Button>\n </div>\n\n <div className=\"flex items-center gap-2 text-sm\">\n <Zap className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Tipo:</span>\n <Badge variant=\"outline\">{event.type}</Badge>\n </div>\n\n <div className=\"flex items-center gap-2 text-sm\">\n <Network className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Origem:</span>\n <span>{event.source}</span>\n </div>\n\n <div className=\"flex items-center gap-2 text-sm\">\n <RefreshCw className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Tentativas:</span>\n <span>{event.retryCount} / {event.maxRetries}</span>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2 text-sm\">\n <Clock className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Criado:</span>\n <span title={format(event.createdAt, 'PPpp', { locale: ptBR })}>\n {formatDistanceToNow(event.createdAt, { addSuffix: true, locale: ptBR })}\n </span>\n </div>\n\n {event.processedAt && (\n <div className=\"flex items-center gap-2 text-sm\">\n <CheckCircle className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Processado:</span>\n <span title={format(event.processedAt, 'PPpp', { locale: ptBR })}>\n {formatDistanceToNow(event.processedAt, { addSuffix: true, locale: ptBR })}\n </span>\n </div>\n )}\n\n <div className=\"flex items-center gap-2 text-sm\">\n <Timer className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Duração:</span>\n <span>{formatDuration(event.createdAt, event.processedAt)}</span>\n </div>\n </div>\n </div>\n\n {event.error && (\n <Alert variant=\"destructive\">\n <AlertTriangle className=\"icon-size\" />\n <AlertDescription className=\"space-y-2\">\n <div>\n <strong>Código:</strong> {event.error.code}\n </div>\n <div>\n <strong>Mensagem:</strong> {event.error.message}\n </div>\n {event.error.details && (\n <details className=\"cursor-pointer\">\n <summary className=\"text-sm font-medium\">Detalhes do erro</summary>\n <pre className=\"mt-2 text-xs bg-background p-2 rounded overflow-auto\">\n {JSON.stringify(event.error.details, null, 2)}\n </pre>\n </details>\n )}\n </AlertDescription>\n </Alert>\n )}\n </TabsContent>\n\n <TabsContent value=\"payload\">\n <Card>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-sm font-medium\">Dados do Evento</CardTitle>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => copyToClipboard(JSON.stringify(event.payload, null, 2), 'payload')}\n >\n <Copy className={cn(\n \"icon-size\",\n copiedField === 'payload' && \"text-green-500\"\n )} />\n Copiar JSON\n </Button>\n </div>\n </CardHeader>\n <CardContent>\n <ScrollArea className=\"h-[400px] w-full rounded border p-4\">\n <div className=\"font-mono text-sm\">\n {renderJsonTree(event.payload)}\n </div>\n </ScrollArea>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"timeline\">\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-medium\">Etapas de Processamento</h3>\n <div className=\"relative\">\n <div className=\"absolute left-4 top-0 bottom-0 w-0.5 bg-border\" />\n {getProcessingSteps().map((step, index) => (\n <div key={index} className=\"relative flex items-start pb-4 last:pb-0\">\n <div className={cn(\n \"absolute left-2.5 h-3 w-3 rounded-full border-2 bg-background\",\n step.status === 'success' && \"border-green-500 bg-green-500\",\n step.status === 'failed' && \"border-red-500 bg-red-500\",\n step.status === 'processing' && \"border-blue-500 bg-blue-500\",\n step.status === 'skipped' && \"border-gray-400 bg-gray-400\",\n step.status === 'pending' && \"border-yellow-500 bg-yellow-500\"\n )} />\n \n <div className=\"ml-8 flex-1\">\n <div className=\"flex items-center gap-2 mb-1\">\n <span className=\"font-medium text-sm\">{step.name}</span>\n <Badge\n variant={\n step.status === 'success' ? 'default' :\n step.status === 'failed' ? 'destructive' :\n step.status === 'processing' ? 'secondary' :\n 'outline'\n }\n className=\"text-xs\"\n >\n {step.status}\n </Badge>\n </div>\n \n {step.startTime && (\n <div className=\"text-xs text-muted-foreground\">\n {format(step.startTime, 'HH:mm:ss.SSS')}\n {step.duration && ` (${step.duration}ms)`}\n </div>\n )}\n \n {step.error && (\n <Alert variant=\"destructive\" className=\"mt-2\">\n <AlertCircle className=\"h-3 w-3\" />\n <AlertDescription className=\"text-xs\">\n {step.error}\n </AlertDescription>\n </Alert>\n )}\n \n {step.details && (\n <div className=\"mt-2 space-y-1\">\n {Object.entries(step.details).map(([key, value]) => (\n <div key={key} className=\"flex items-center gap-2 text-xs\">\n <span className=\"text-muted-foreground\">{key}:</span>\n <code className=\"bg-muted px-1 py-0.5 rounded\">\n {typeof value === 'object' ? JSON.stringify(value) : String(value)}\n </code>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"metadata\">\n <div className=\"space-y-4\">\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium\">Metadados do Evento</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n {Object.entries(event.metadata).map(([key, value]) => (\n value && (\n <div key={key} className=\"flex items-center gap-2 text-sm\">\n <span className=\"text-muted-foreground min-w-[140px]\">{key}:</span>\n <code className=\"bg-muted px-2 py-1 rounded text-xs flex-1\">\n {value}\n </code>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => copyToClipboard(value, key)}\n >\n <Copy className={cn(\n \"h-3 w-3\",\n copiedField === key && \"text-green-500\"\n )} />\n </Button>\n </div>\n )\n ))}\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium\">Informações do Sistema</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2 text-sm\">\n <span className=\"text-muted-foreground min-w-[140px]\">ID Interno:</span>\n <code className=\"bg-muted px-2 py-1 rounded text-xs\">{event.id}</code>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n <span className=\"text-muted-foreground min-w-[140px]\">Última Atualização:</span>\n <span className=\"text-xs\">\n {format(event.updatedAt, 'dd/MM/yyyy HH:mm:ss', { locale: ptBR })}\n </span>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n </TabsContent>\n </Tabs>\n </CardContent>\n </Card>\n );\n}","import { WebhookEventStatus } from '@/domain/entities/WebhookEvent';\nimport { format } from 'date-fns';\nimport { ptBR } from 'date-fns/locale';\n\nexport const validateUrl = (url: string): boolean => {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n};\n\nexport const formatEventType = (type: string): string => {\n return type.replace(/[._]/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\n};\n\nexport const formatStatus = (status: string): string => {\n const statusMap: Record<string, string> = {\n [WebhookEventStatus.PENDING]: 'Pendente',\n [WebhookEventStatus.PROCESSING]: 'Processando',\n [WebhookEventStatus.SUCCESS]: 'Sucesso',\n [WebhookEventStatus.FAILED]: 'Falhou',\n [WebhookEventStatus.RETRYING]: 'Tentando novamente'\n };\n return statusMap[status] || status;\n};\n\nexport const formatDateTime = (date: Date): string => {\n return format(date, 'dd/MM/yyyy HH:mm:ss', { locale: ptBR });\n};\n\nexport const formatDate = (date: Date): string => {\n return format(date, 'dd/MM/yyyy', { locale: ptBR });\n};\n\nexport const formatTime = (date: Date): string => {\n return format(date, 'HH:mm:ss', { locale: ptBR });\n};\n\nexport const calculateProcessingTime = (startDate: Date, endDate: Date): number => {\n return Math.round((endDate.getTime() - startDate.getTime()) / 1000);\n};\n\nexport const getStatusVariant = (status: WebhookEventStatus): string => {\n switch (status) {\n case WebhookEventStatus.SUCCESS:\n return 'default';\n case WebhookEventStatus.FAILED:\n return 'destructive';\n case WebhookEventStatus.PROCESSING:\n case WebhookEventStatus.RETRYING:\n return 'secondary';\n case WebhookEventStatus.PENDING:\n return 'outline';\n default:\n return 'outline';\n }\n};\n\nexport const getEventTypeVariant = (type: string): string => {\n if (type.includes('message')) return 'default';\n if (type.includes('connection')) return 'secondary';\n if (type.includes('flow')) return 'outline';\n return 'outline';\n};\n\nexport const getTimelineColor = (status: WebhookEventStatus): string => {\n switch (status) {\n case WebhookEventStatus.SUCCESS:\n return 'bg-green-500';\n case WebhookEventStatus.FAILED:\n return 'bg-red-500';\n case WebhookEventStatus.PROCESSING:\n case WebhookEventStatus.RETRYING:\n return 'bg-blue-500';\n case WebhookEventStatus.PENDING:\n return 'bg-gray-400';\n default:\n return 'bg-gray-300';\n }\n};\n\nexport const getMetricColor = (type: 'success' | 'error' | 'warning' | 'info' | 'default'): string => {\n switch (type) {\n case 'success':\n return 'green';\n case 'error':\n return 'red';\n case 'warning':\n return 'yellow';\n case 'info':\n return 'blue';\n default:\n return 'gray';\n }\n};\n\nexport const DEFAULT_WEBHOOK_CONFIG = {\n maxRetries: 3,\n retryDelay: 1000,\n timeout: 30000,\n maxQueueSize: 10000,\n rateLimitPerMinute: 1000,\n backoffMultiplier: 2,\n maxRetryDelay: 60000\n};\n\nexport const WEBHOOK_TEST_EVENTS = [\n { value: 'message.received', label: 'Mensagem Recebida' },\n { value: 'message.sent', label: 'Mensagem Enviada' },\n { value: 'connection.update', label: 'Atualização de Conexão' },\n { value: 'instance.created', label: 'Instância Criada' },\n { value: 'flow.triggered', label: 'Fluxo Iniciado' },\n { value: 'flow.completed', label: 'Fluxo Concluído' }\n];\n\nexport const isValidWebhookPayload = (payload: unknown): boolean => {\n return payload !== null && \n typeof payload === 'object' && \n !Array.isArray(payload);\n};\n\nexport const sanitizeWebhookUrl = (url: string): string => {\n if (!url) return '';\n \n const trimmedUrl = url.trim();\n \n if (!trimmedUrl.startsWith('http://') && !trimmedUrl.startsWith('https://')) {\n return `https://${trimmedUrl}`;\n }\n \n return trimmedUrl;\n};","import React, { useState, useEffect } from 'react';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Switch } from '@/components/ui/switch';\nimport { Badge } from '@/components/ui/badge';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Separator } from '@/components/ui/separator';\nimport { \n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@/components/ui/select';\nimport {\n RefreshCw,\n Save,\n TestTube,\n AlertTriangle,\n Plus,\n Trash2,\n Loader2\n} from 'lucide-react';\nimport { webhookService } from '@/services/api/webhook.service';\nimport { WebhookConfiguration, WebhookTestRequest } from '@/types/webhook.types';\nimport { toast } from 'sonner';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { validateUrl, sanitizeWebhookUrl } from '@/utils/webhook.utils';\n\ninterface WebhookConfigPanelProps {\n instanceId?: string;\n onConfigChange?: (config: WebhookConfiguration) => void;\n}\n\nexport const WebhookConfigPanel: React.FC<WebhookConfigPanelProps> = ({\n instanceId,\n onConfigChange\n}) => {\n const queryClient = useQueryClient();\n const [testUrl, setTestUrl] = useState('');\n const [testEventType, setTestEventType] = useState('message.received');\n const [isTesting, setIsTesting] = useState(false);\n const [allowedOrigins, setAllowedOrigins] = useState<string[]>([]);\n const [newOrigin, setNewOrigin] = useState('');\n\n const { data: config, isLoading } = useQuery({\n queryKey: ['webhookConfig'],\n queryFn: () => webhookService.getConfiguration(),\n staleTime: 30000,\n });\n\n const updateConfigMutation = useMutation({\n mutationFn: (updates: Partial<WebhookConfiguration>) => \n webhookService.updateConfiguration(updates),\n onSuccess: (updatedConfig) => {\n queryClient.invalidateQueries({ queryKey: ['webhookConfig'] });\n toast.success('Configuração atualizada com sucesso');\n onConfigChange?.(updatedConfig);\n },\n onError: (error) => {\n toast.error('Erro ao atualizar configuração: ' + (error as Error).message);\n }\n });\n\n useEffect(() => {\n if (config?.allowedOrigins) {\n setAllowedOrigins(config.allowedOrigins);\n }\n }, [config]);\n\n const handleTestWebhook = async () => {\n if (!testUrl) {\n toast.error('Por favor, insira uma URL para testar');\n return;\n }\n\n setIsTesting(true);\n try {\n const testRequest: WebhookTestRequest = {\n url: testUrl,\n event_type: testEventType,\n payload: {\n test: true,\n timestamp: new Date().toISOString(),\n instanceId: instanceId || 'test-instance'\n }\n };\n\n const result = await webhookService.testWebhook(testRequest);\n \n if (result.success) {\n toast.success(`Teste bem-sucedido! Tempo de resposta: ${result.response_time}ms`);\n } else {\n toast.error(`Teste falhou: ${result.error || 'Erro desconhecido'}`);\n }\n } catch (error) {\n toast.error('Erro ao testar webhook: ' + (error as Error).message);\n } finally {\n setIsTesting(false);\n }\n };\n\n const handleAddOrigin = () => {\n if (!newOrigin) return;\n \n const sanitizedUrl = sanitizeWebhookUrl(newOrigin);\n if (!validateUrl(sanitizedUrl)) {\n toast.error('URL inválida');\n return;\n }\n \n const updatedOrigins = [...allowedOrigins, sanitizedUrl];\n setAllowedOrigins(updatedOrigins);\n setNewOrigin('');\n updateConfigMutation.mutate({ allowedOrigins: updatedOrigins });\n };\n\n const handleRemoveOrigin = (origin: string) => {\n const updatedOrigins = allowedOrigins.filter(o => o !== origin);\n setAllowedOrigins(updatedOrigins);\n updateConfigMutation.mutate({ allowedOrigins: updatedOrigins });\n };\n\n const handleToggleEnabled = (enabled: boolean) => {\n updateConfigMutation.mutate({ enabled });\n };\n\n const handleUpdateRetryPolicy = (field: string, value: number) => {\n const updates: Partial<WebhookConfiguration> = {\n [field]: value\n };\n updateConfigMutation.mutate(updates);\n };\n\n if (isLoading) {\n return (\n <Card>\n <CardContent className=\"py-12\">\n <div className=\"flex items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-gray-400\" />\n </div>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle>Configuração de Webhooks</CardTitle>\n <CardDescription>\n Gerencie as configurações globais de webhooks\n </CardDescription>\n </div>\n <Badge variant={config?.enabled ? 'default' : 'secondary'}>\n {config?.enabled ? 'Ativo' : 'Inativo'}\n </Badge>\n </div>\n </CardHeader>\n \n <CardContent>\n <Tabs defaultValue=\"general\" className=\"space-y-4\">\n <TabsList className=\"grid w-full grid-cols-4\">\n <TabsTrigger value=\"general\">Geral</TabsTrigger>\n <TabsTrigger value=\"security\">Segurança</TabsTrigger>\n <TabsTrigger value=\"retry\">Retry Policy</TabsTrigger>\n <TabsTrigger value=\"test\">Teste</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"general\" className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-1\">\n <Label htmlFor=\"enabled\">Webhooks Ativos</Label>\n <p className=\"text-sm text-gray-500\">\n Ativar ou desativar o processamento de webhooks\n </p>\n </div>\n <Switch\n id=\"enabled\"\n checked={config?.enabled || false}\n onCheckedChange={handleToggleEnabled}\n />\n </div>\n\n <Separator />\n\n <div className=\"grid gap-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"timeout\">Timeout (ms)</Label>\n <Input\n id=\"timeout\"\n type=\"number\"\n value={config?.timeout || 30000}\n onChange={(e) => handleUpdateRetryPolicy('timeout', parseInt(e.target.value))}\n min={1000}\n max={60000}\n />\n <p className=\"text-xs text-gray-500\">\n Tempo máximo de espera para resposta (1-60 segundos)\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"maxQueueSize\">Tamanho Máximo da Fila</Label>\n <Input\n id=\"maxQueueSize\"\n type=\"number\"\n value={config?.maxQueueSize || 10000}\n onChange={(e) => handleUpdateRetryPolicy('maxQueueSize', parseInt(e.target.value))}\n min={100}\n max={100000}\n />\n <p className=\"text-xs text-gray-500\">\n Número máximo de eventos na fila de processamento\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"rateLimitPerMinute\">Rate Limit (por minuto)</Label>\n <Input\n id=\"rateLimitPerMinute\"\n type=\"number\"\n value={config?.rateLimitPerMinute || 1000}\n onChange={(e) => handleUpdateRetryPolicy('rateLimitPerMinute', parseInt(e.target.value))}\n min={10}\n max={10000}\n />\n <p className=\"text-xs text-gray-500\">\n Número máximo de requisições por minuto\n </p>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"security\" className=\"space-y-4\">\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"signatureHeader\">Header de Assinatura</Label>\n <Input\n id=\"signatureHeader\"\n value={config?.signatureHeader || 'X-Webhook-Signature'}\n onChange={(e) => updateConfigMutation.mutate({ signatureHeader: e.target.value })}\n />\n <p className=\"text-xs text-gray-500\">\n Nome do header usado para validação de assinatura\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"signatureAlgorithm\">Algoritmo de Assinatura</Label>\n <Select\n value={config?.signatureAlgorithm || 'sha256'}\n onValueChange={(value: 'sha256' | 'sha512') => \n updateConfigMutation.mutate({ signatureAlgorithm: value })\n }\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"sha256\">SHA-256</SelectItem>\n <SelectItem value=\"sha512\">SHA-512</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <Separator />\n\n <div className=\"space-y-2\">\n <Label>Origens Permitidas (CORS)</Label>\n <div className=\"space-y-2\">\n {allowedOrigins.map((origin) => (\n <div key={origin} className=\"flex items-center justify-between p-2 border rounded\">\n <span className=\"text-sm\">{origin}</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handleRemoveOrigin(origin)}\n >\n <Trash2 className=\"icon-size\" />\n </Button>\n </div>\n ))}\n \n <div className=\"flex items-center space-x-2\">\n <Input\n placeholder=\"https://example.com\"\n value={newOrigin}\n onChange={(e) => setNewOrigin(e.target.value)}\n />\n <Button onClick={handleAddOrigin} size=\"sm\">\n <Plus className=\"icon-size mr-2\" />\n Adicionar\n </Button>\n </div>\n </div>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"retry\" className=\"space-y-4\">\n <div className=\"grid gap-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"maxRetries\">Máximo de Tentativas</Label>\n <Input\n id=\"maxRetries\"\n type=\"number\"\n value={config?.maxRetries || 3}\n onChange={(e) => handleUpdateRetryPolicy('maxRetries', parseInt(e.target.value))}\n min={0}\n max={10}\n />\n <p className=\"text-xs text-gray-500\">\n Número máximo de tentativas em caso de falha (0-10)\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"retryDelay\">Delay entre Tentativas (ms)</Label>\n <Input\n id=\"retryDelay\"\n type=\"number\"\n value={config?.retryDelay || 1000}\n onChange={(e) => handleUpdateRetryPolicy('retryDelay', parseInt(e.target.value))}\n min={100}\n max={60000}\n />\n <p className=\"text-xs text-gray-500\">\n Tempo de espera inicial entre tentativas\n </p>\n </div>\n\n <Alert>\n <AlertTriangle className=\"icon-size\" />\n <AlertDescription>\n O delay entre tentativas usa backoff exponencial. \n Cada tentativa esperará progressivamente mais tempo.\n </AlertDescription>\n </Alert>\n </div>\n </TabsContent>\n\n <TabsContent value=\"test\" className=\"space-y-4\">\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"testUrl\">URL de Teste</Label>\n <Input\n id=\"testUrl\"\n placeholder=\"https://seu-webhook.com/endpoint\"\n value={testUrl}\n onChange={(e) => setTestUrl(e.target.value)}\n />\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"testEventType\">Tipo de Evento</Label>\n <Select value={testEventType} onValueChange={setTestEventType}>\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"message.received\">Mensagem Recebida</SelectItem>\n <SelectItem value=\"message.sent\">Mensagem Enviada</SelectItem>\n <SelectItem value=\"connection.update\">Atualização de Conexão</SelectItem>\n <SelectItem value=\"instance.created\">Instância Criada</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <Button\n onClick={handleTestWebhook}\n disabled={isTesting || !testUrl}\n className=\"w-full\"\n >\n {isTesting ? (\n <>\n <Loader2 className=\"mr-2 icon-size animate-spin\" />\n Testando...\n </>\n ) : (\n <>\n <TestTube className=\"mr-2 icon-size\" />\n Testar Webhook\n </>\n )}\n </Button>\n\n <Alert>\n <AlertTriangle className=\"icon-size\" />\n <AlertDescription>\n O teste enviará um evento de exemplo para a URL especificada.\n Certifique-se de que o endpoint está preparado para receber a requisição.\n </AlertDescription>\n </Alert>\n </div>\n </TabsContent>\n </Tabs>\n\n <div className=\"flex justify-end mt-6\">\n <Button\n onClick={() => queryClient.invalidateQueries({ queryKey: ['webhookConfig'] })}\n variant=\"outline\"\n className=\"mr-2\"\n >\n <RefreshCw className=\"mr-2 icon-size\" />\n Recarregar\n </Button>\n <Button\n disabled={updateConfigMutation.isPending}\n >\n {updateConfigMutation.isPending ? (\n <>\n <Loader2 className=\"mr-2 icon-size animate-spin\" />\n Salvando...\n </>\n ) : (\n <>\n <Save className=\"mr-2 icon-size\" />\n Salvar Alterações\n </>\n )}\n </Button>\n </div>\n </CardContent>\n </Card>\n );\n};","import React from 'react';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { WebhookConfigPanel } from '@/components/whatsapp/WebhookConfigPanel';\n\ninterface WebhookConfigModalProps {\n isOpen: boolean;\n onClose: () => void;\n instanceName?: string;\n flowId?: string;\n triggerId?: string;\n}\n\nexport const WebhookConfigModal: React.FC<WebhookConfigModalProps> = ({\n isOpen,\n onClose,\n instanceName\n}) => {\n return (\n <Dialog open={isOpen} onOpenChange={onClose}>\n <DialogContent className=\"max-w-4xl max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>Configurações de Webhook</DialogTitle>\n <DialogDescription>\n Configure os webhooks para receber eventos da Evolution API\n </DialogDescription>\n </DialogHeader>\n \n <WebhookConfigPanel\n instanceName={instanceName || ''}\n onSave={() => {\n console.log('Webhook configuration saved');\n onClose();\n }}\n />\n </DialogContent>\n </Dialog>\n );\n};","import React from 'react';\nimport { Card, CardContent, CardHeader } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { \n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger\n} from '@/components/ui/dropdown-menu';\nimport { \n MoreVertical, \n RefreshCw, \n X, \n Eye, \n Clock, \n CheckCircle2, \n XCircle, \n AlertCircle,\n Loader2,\n MessageSquare,\n Phone,\n Wifi,\n WifiOff,\n QrCode,\n Workflow\n} from 'lucide-react';\nimport { WebhookEvent, WebhookEventStatus, WebhookEventType } from '@/domain/entities/WebhookEvent';\nimport { cn } from '@/utils/styles';\nimport { \n formatEventType, \n formatStatus, \n formatDateTime, \n calculateProcessingTime,\n getStatusVariant,\n getEventTypeVariant \n} from '@/utils/webhook.utils';\n\ninterface WebhookEventCardProps {\n event: WebhookEvent;\n onRetry?: (eventId: string) => void;\n onCancel?: (eventId: string) => void;\n onViewDetails?: (event: WebhookEvent) => void;\n isRetrying?: boolean;\n isCancelling?: boolean;\n}\n\nexport const WebhookEventCard: React.FC<WebhookEventCardProps> = ({\n event,\n onRetry,\n onCancel,\n onViewDetails,\n isRetrying,\n isCancelling\n}) => {\n const getStatusIcon = () => {\n switch (event.status) {\n case WebhookEventStatus.SUCCESS:\n return <CheckCircle2 className=\"icon-size text-green-500\" />;\n case WebhookEventStatus.FAILED:\n return <XCircle className=\"icon-size text-red-500\" />;\n case WebhookEventStatus.PROCESSING:\n return <Loader2 className=\"icon-size text-blue-500 animate-spin\" />;\n case WebhookEventStatus.RETRYING:\n return <RefreshCw className=\"icon-size text-orange-500 animate-spin\" />;\n case WebhookEventStatus.PENDING:\n return <Clock className=\"icon-size text-gray-500\" />;\n default:\n return <AlertCircle className=\"icon-size text-gray-400\" />;\n }\n };\n\n const getEventIcon = () => {\n switch (event.type) {\n case WebhookEventType.MESSAGE_RECEIVED:\n case WebhookEventType.MESSAGE_SENT:\n case WebhookEventType.MESSAGE_DELIVERED:\n case WebhookEventType.MESSAGE_READ:\n case WebhookEventType.MESSAGE_FAILED:\n return <MessageSquare className=\"icon-size\" />;\n case WebhookEventType.CONNECTION_UPDATE:\n return (event.payload && 'connected' in event.payload && event.payload.connected) ? \n <Wifi className=\"icon-size\" /> : <WifiOff className=\"icon-size\" />;\n case WebhookEventType.QR_CODE_UPDATED:\n return <QrCode className=\"icon-size\" />;\n case WebhookEventType.INSTANCE_CREATED:\n case WebhookEventType.INSTANCE_DELETED:\n return <Phone className=\"icon-size\" />;\n case WebhookEventType.FLOW_TRIGGERED:\n case WebhookEventType.FLOW_COMPLETED:\n return <Workflow className=\"icon-size\" />;\n default:\n return <AlertCircle className=\"icon-size\" />;\n }\n };\n\n const getStatusBadgeVariant = () => getStatusVariant(event.status);\n\n const getEventTypeBadgeVariant = () => getEventTypeVariant(event.type);\n\n\n return (\n <Card className={cn(\n \"hover:shadow-md transition-shadow\",\n event.status === WebhookEventStatus.FAILED && \"border-red-200\",\n event.status === WebhookEventStatus.SUCCESS && \"border-green-200\"\n )}>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-start space-x-3\">\n <div className=\"flex items-center justify-center w-10 h-10 rounded-lg bg-gray-100\">\n {getEventIcon()}\n </div>\n <div className=\"flex-1\">\n <div className=\"flex items-center space-x-2\">\n <h3 className=\"text-sm font-semibold text-gray-900\">\n {event.eventId}\n </h3>\n <Badge variant={getEventTypeBadgeVariant()} className=\"text-xs\">\n {formatEventType(event.type)}\n </Badge>\n </div>\n <div className=\"flex items-center space-x-2 mt-1\">\n {getStatusIcon()}\n <Badge variant={getStatusBadgeVariant()} className=\"text-xs\">\n {formatStatus(event.status)}\n </Badge>\n {event.retryCount > 0 && (\n <span className=\"text-xs text-gray-500\">\n Tentativa {event.retryCount}/{event.maxRetries}\n </span>\n )}\n </div>\n </div>\n </div>\n \n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n disabled={isRetrying || isCancelling}\n >\n <MoreVertical className=\"icon-size\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => onViewDetails?.(event)}>\n <Eye className=\"mr-2 icon-size\" />\n Ver Detalhes\n </DropdownMenuItem>\n {event.status === WebhookEventStatus.FAILED && onRetry && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem \n onClick={() => onRetry(event.id)}\n disabled={isRetrying}\n >\n <RefreshCw className=\"mr-2 icon-size\" />\n Tentar Novamente\n </DropdownMenuItem>\n </>\n )}\n {(event.status === WebhookEventStatus.PENDING || \n event.status === WebhookEventStatus.RETRYING) && onCancel && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem \n onClick={() => onCancel(event.id)}\n disabled={isCancelling}\n className=\"text-red-600\"\n >\n <X className=\"mr-2 icon-size\" />\n Cancelar\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </CardHeader>\n \n <CardContent className=\"pt-0\">\n <div className=\"space-y-2\">\n {event.metadata.instanceName && (\n <div className=\"flex items-center text-xs text-gray-600\">\n <Phone className=\"mr-1 h-3 w-3\" />\n <span className=\"font-medium\">Instância:</span>\n <span className=\"ml-1\">{event.metadata.instanceName}</span>\n </div>\n )}\n \n {event.metadata.phoneNumber && (\n <div className=\"flex items-center text-xs text-gray-600\">\n <MessageSquare className=\"mr-1 h-3 w-3\" />\n <span className=\"font-medium\">Telefone:</span>\n <span className=\"ml-1\">{event.metadata.phoneNumber}</span>\n </div>\n )}\n\n {event.metadata.flowId && (\n <div className=\"flex items-center text-xs text-gray-600\">\n <Workflow className=\"mr-1 h-3 w-3\" />\n <span className=\"font-medium\">Fluxo:</span>\n <span className=\"ml-1\">{event.metadata.flowId}</span>\n </div>\n )}\n\n {event.error && (\n <div className=\"mt-2 p-2 bg-red-50 rounded-md\">\n <p className=\"text-xs text-red-600 font-medium\">\n Erro: {event.error.message}\n </p>\n {event.error.code && (\n <p className=\"text-xs text-red-500 mt-1\">\n Código: {event.error.code}\n </p>\n )}\n </div>\n )}\n\n <div className=\"flex items-center justify-between pt-2 border-t\">\n <span className=\"text-xs text-gray-500\">\n {formatDateTime(event.createdAt)}\n </span>\n {event.processedAt && (\n <span className=\"text-xs text-gray-500\">\n Processado em {calculateProcessingTime(event.createdAt, event.processedAt)}s\n </span>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n );\n};","import React from 'react';\nimport { useQuery, useMutation } from '@tanstack/react-query';\nimport { Link } from 'react-router-dom';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport { Progress } from '@/components/ui/progress';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Separator } from '@/components/ui/separator';\nimport {\n AlertCircle,\n CheckCircle,\n Clock,\n ExternalLink,\n GitBranch,\n Loader2,\n RefreshCw,\n Timer,\n XCircle,\n Zap,\n ArrowRight,\n Activity,\n Database,\n FileJson\n} from 'lucide-react';\nimport { useToast } from '../ui/use-toast';\nimport { WebhookEvent } from '@/domain/entities/WebhookEvent';\nimport { flowExecutionService } from '@/services/api/flow-execution.service';\nimport { flowsService } from '@/services/api/flows.service';\nimport { cn } from '@/utils/styles';\nimport { format, formatDistanceToNow } from 'date-fns';\nimport { ptBR } from 'date-fns/locale';\n\ninterface WebhookFlowLinkProps {\n event: WebhookEvent;\n className?: string;\n showDetails?: boolean;\n onReExecute?: () => void;\n}\n\ninterface FlowExecutionInfo {\n id: string;\n flowId: string;\n flowName: string;\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n startedAt: Date;\n completedAt?: Date;\n duration?: number;\n currentNode?: string;\n progress: number;\n error?: {\n message: string;\n node?: string;\n };\n result?: Record<string, unknown>;\n stats?: {\n nodesExecuted: number;\n totalNodes: number;\n messagesProcessed?: number;\n apiCallsMade?: number;\n };\n}\n\nexport function WebhookFlowLink({ \n event, \n className, \n showDetails = true,\n onReExecute \n}: WebhookFlowLinkProps) {\n const { toast } = useToast();\n\n const { data: flowExecution, isLoading, refetch } = useQuery({\n queryKey: ['flow-execution', event.metadata.sessionId],\n queryFn: async (): Promise<FlowExecutionInfo | null> => {\n if (!event.metadata.flowId || !event.metadata.sessionId) {\n return null;\n }\n\n try {\n const execution = await flowExecutionService.getExecution(event.metadata.sessionId);\n const flow = await flowsService.getFlow(event.metadata.flowId);\n \n return {\n id: execution.id,\n flowId: execution.flow_id,\n flowName: flow.name,\n status: execution.status,\n startedAt: new Date(execution.started_at),\n completedAt: execution.completed_at ? new Date(execution.completed_at) : undefined,\n duration: execution.duration,\n currentNode: execution.current_node,\n progress: execution.progress || 0,\n error: execution.error,\n result: execution.result,\n stats: {\n nodesExecuted: execution.nodes_executed || 0,\n totalNodes: flow.nodes?.length || 0,\n messagesProcessed: execution.messages_processed,\n apiCallsMade: execution.api_calls_made\n }\n };\n } catch (error) {\n console.error('Error fetching flow execution:', error);\n return null;\n }\n },\n enabled: !!event.metadata.flowId && !!event.metadata.sessionId,\n refetchInterval: (data) => {\n if (data?.status === 'running' || data?.status === 'pending') {\n return 2000;\n }\n return false;\n }\n });\n\n const reExecuteMutation = useMutation({\n mutationFn: async () => {\n if (!event.metadata.flowId) {\n throw new Error('Flow ID não encontrado');\n }\n\n const execution = await flowExecutionService.createExecution({\n flow_id: event.metadata.flowId,\n trigger_data: event.payload,\n metadata: {\n triggeredBy: 'webhook_re_execution',\n originalEventId: event.id,\n ...event.metadata\n }\n });\n\n return execution;\n },\n onSuccess: (execution) => {\n toast({\n title: 'Fluxo re-executado',\n description: `Nova execução iniciada: ${execution.id}`,\n });\n onReExecute?.();\n refetch();\n },\n onError: (error: Error) => {\n toast({\n title: 'Erro ao re-executar fluxo',\n description: error.message,\n variant: 'destructive',\n });\n }\n });\n\n const getStatusIcon = (status?: string) => {\n switch (status) {\n case 'completed':\n return <CheckCircle className=\"icon-size text-green-500\" />;\n case 'failed':\n return <XCircle className=\"icon-size text-red-500\" />;\n case 'running':\n return <Loader2 className=\"icon-size text-blue-500 animate-spin\" />;\n case 'pending':\n return <Clock className=\"icon-size text-yellow-500\" />;\n case 'cancelled':\n return <XCircle className=\"icon-size text-gray-500\" />;\n default:\n return <AlertCircle className=\"icon-size text-muted-foreground\" />;\n }\n };\n\n const getStatusBadge = (status?: string) => {\n const variants: Record<string, 'default' | 'secondary' | 'destructive' | 'outline'> = {\n completed: 'default',\n failed: 'destructive',\n running: 'secondary',\n pending: 'outline',\n cancelled: 'outline'\n };\n\n const labels: Record<string, string> = {\n completed: 'Concluído',\n failed: 'Falhou',\n running: 'Executando',\n pending: 'Pendente',\n cancelled: 'Cancelado'\n };\n\n if (!status) return null;\n\n return (\n <Badge variant={variants[status] || 'outline'} className=\"gap-1\">\n {getStatusIcon(status)}\n {labels[status] || status}\n </Badge>\n );\n };\n\n const formatDuration = (ms?: number): string => {\n if (!ms) return '-';\n \n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n \n const minutes = Math.floor(ms / 60000);\n const seconds = Math.floor((ms % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n };\n\n if (!event.metadata.flowId) {\n return null;\n }\n\n if (isLoading) {\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-center py-4\">\n <Loader2 className=\"h-6 w-6 animate-spin text-muted-foreground\" />\n </div>\n </CardContent>\n </Card>\n );\n }\n\n if (!flowExecution) {\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium flex items-center gap-2\">\n <GitBranch className=\"icon-size\" />\n Execução de Fluxo\n </CardTitle>\n </CardHeader>\n <CardContent>\n <Alert>\n <AlertCircle className=\"icon-size\" />\n <AlertDescription>\n Nenhuma execução de fluxo encontrada para este evento.\n {event.metadata.flowId && (\n <div className=\"mt-2\">\n <span className=\"text-sm text-muted-foreground\">\n Flow ID: {event.metadata.flowId}\n </span>\n </div>\n )}\n </AlertDescription>\n </Alert>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-sm font-medium flex items-center gap-2\">\n <GitBranch className=\"icon-size\" />\n Execução de Fluxo\n </CardTitle>\n <div className=\"flex items-center gap-2\">\n {getStatusBadge(flowExecution.status)}\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => reExecuteMutation.mutate()}\n disabled={reExecuteMutation.isPending}\n >\n {reExecuteMutation.isPending ? (\n <Loader2 className=\"icon-size animate-spin\" />\n ) : (\n <RefreshCw className=\"icon-size\" />\n )}\n Re-executar\n </Button>\n </div>\n </div>\n <CardDescription>\n {flowExecution.flowName}\n </CardDescription>\n </CardHeader>\n\n <CardContent className=\"space-y-4\">\n {flowExecution.status === 'running' && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"text-muted-foreground\">Progresso</span>\n <span className=\"font-medium\">{flowExecution.progress}%</span>\n </div>\n <Progress value={flowExecution.progress} className=\"h-2\" />\n {flowExecution.currentNode && (\n <div className=\"text-xs text-muted-foreground\">\n Nó atual: {flowExecution.currentNode}\n </div>\n )}\n </div>\n )}\n\n <div className=\"grid grid-cols-2 gap-4 text-sm\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <Clock className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Iniciado:</span>\n </div>\n <span className=\"text-xs\" title={format(flowExecution.startedAt, 'PPpp', { locale: ptBR })}>\n {formatDistanceToNow(flowExecution.startedAt, { addSuffix: true, locale: ptBR })}\n </span>\n </div>\n\n {flowExecution.completedAt && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <CheckCircle className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Concluído:</span>\n </div>\n <span className=\"text-xs\" title={format(flowExecution.completedAt, 'PPpp', { locale: ptBR })}>\n {formatDistanceToNow(flowExecution.completedAt, { addSuffix: true, locale: ptBR })}\n </span>\n </div>\n )}\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <Timer className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Duração:</span>\n </div>\n <span className=\"text-xs\">{formatDuration(flowExecution.duration)}</span>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <Activity className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Nós:</span>\n </div>\n <span className=\"text-xs\">\n {flowExecution.stats?.nodesExecuted} / {flowExecution.stats?.totalNodes}\n </span>\n </div>\n </div>\n\n {flowExecution.error && (\n <Alert variant=\"destructive\">\n <AlertCircle className=\"icon-size\" />\n <AlertDescription>\n <strong>Erro:</strong> {flowExecution.error.message}\n {flowExecution.error.node && (\n <div className=\"mt-1 text-xs\">\n Nó: {flowExecution.error.node}\n </div>\n )}\n </AlertDescription>\n </Alert>\n )}\n\n {showDetails && flowExecution.stats && (\n <>\n <Separator />\n <div className=\"space-y-2\">\n <h4 className=\"text-sm font-medium\">Estatísticas</h4>\n <div className=\"grid grid-cols-2 gap-2 text-sm\">\n {flowExecution.stats.messagesProcessed !== undefined && (\n <div className=\"flex items-center gap-2\">\n <FileJson className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Mensagens:</span>\n <span className=\"font-medium\">{flowExecution.stats.messagesProcessed}</span>\n </div>\n )}\n {flowExecution.stats.apiCallsMade !== undefined && (\n <div className=\"flex items-center gap-2\">\n <Zap className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Chamadas API:</span>\n <span className=\"font-medium\">{flowExecution.stats.apiCallsMade}</span>\n </div>\n )}\n </div>\n </div>\n </>\n )}\n\n {flowExecution.result && Object.keys(flowExecution.result).length > 0 && (\n <>\n <Separator />\n <div className=\"space-y-2\">\n <h4 className=\"text-sm font-medium\">Resultado</h4>\n <pre className=\"text-xs bg-muted p-2 rounded overflow-auto max-h-[200px]\">\n {JSON.stringify(flowExecution.result, null, 2)}\n </pre>\n </div>\n </>\n )}\n\n <Separator />\n\n <div className=\"flex items-center justify-between\">\n <Link\n to={`/flows/${flowExecution.flowId}/executions/${flowExecution.id}`}\n className=\"inline-flex items-center gap-2 text-sm text-primary hover:underline\"\n >\n Ver detalhes da execução\n <ExternalLink className=\"h-3 w-3\" />\n </Link>\n\n <Link\n to={`/flows/${flowExecution.flowId}/edit`}\n className=\"inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-primary\"\n >\n <Database className=\"h-3 w-3\" />\n Editar fluxo\n <ArrowRight className=\"h-3 w-3\" />\n </Link>\n </div>\n </CardContent>\n </Card>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Badge } from '@/components/ui/badge';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { Separator } from '@/components/ui/separator';\nimport {\n AlertCircle,\n Download,\n Filter,\n Info,\n Loader2,\n RefreshCw,\n Search,\n Terminal,\n Trash2,\n AlertTriangle,\n Bug,\n FileText,\n Play,\n Pause,\n Copy,\n ChevronLeft,\n ChevronRight\n} from 'lucide-react';\nimport { useToast } from '../ui/use-toast';\nimport { webhookService } from '@/services/api/webhook.service';\nimport { WebhookLogEntry } from '@/types/webhook.types';\nimport { cn } from '@/utils/styles';\nimport { format } from 'date-fns';\n\ninterface WebhookLogsViewerProps {\n eventId?: string;\n subscriptionId?: string;\n autoRefresh?: boolean;\n refreshInterval?: number;\n maxLogs?: number;\n className?: string;\n}\n\ntype LogLevel = 'all' | 'info' | 'warning' | 'error' | 'debug';\n\nexport function WebhookLogsViewer({\n eventId,\n subscriptionId,\n autoRefresh = false,\n refreshInterval = 5000,\n maxLogs = 500,\n className\n}: WebhookLogsViewerProps) {\n const { toast } = useToast();\n const scrollAreaRef = useRef<HTMLDivElement>(null);\n const [searchTerm, setSearchTerm] = useState('');\n const [selectedLevel, setSelectedLevel] = useState<LogLevel>('all');\n const [isAutoRefresh, setIsAutoRefresh] = useState(autoRefresh);\n const [autoScroll, setAutoScroll] = useState(true);\n const [selectedLogs, setSelectedLogs] = useState<Set<string>>(new Set());\n const [page, setPage] = useState(1);\n const [pageSize] = useState(100);\n\n const { data: logs, isLoading, error, refetch, isFetching } = useQuery({\n queryKey: ['webhook-logs', eventId, subscriptionId, selectedLevel, page],\n queryFn: async () => {\n const filter: Parameters<typeof webhookService.getLogs>[0] = {\n limit: pageSize,\n eventId,\n subscriptionId\n };\n\n if (selectedLevel !== 'all') {\n filter.level = selectedLevel;\n }\n\n const allLogs = await webhookService.getLogs(filter);\n return allLogs.slice(0, maxLogs);\n },\n refetchInterval: isAutoRefresh ? refreshInterval : false,\n refetchIntervalInBackground: false\n });\n\n useEffect(() => {\n if (autoScroll && logs && logs.length > 0 && scrollAreaRef.current) {\n const scrollContainer = scrollAreaRef.current.querySelector('[data-radix-scroll-area-viewport]');\n if (scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n }\n }, [logs, autoScroll]);\n\n const getLevelIcon = (level: WebhookLogEntry['level']) => {\n switch (level) {\n case 'info':\n return <Info className=\"icon-size text-blue-500\" />;\n case 'warning':\n return <AlertTriangle className=\"icon-size text-yellow-500\" />;\n case 'error':\n return <AlertCircle className=\"icon-size text-red-500\" />;\n case 'debug':\n return <Bug className=\"icon-size text-gray-500\" />;\n default:\n return <Terminal className=\"icon-size text-muted-foreground\" />;\n }\n };\n\n const getLevelBadge = (level: WebhookLogEntry['level']) => {\n const variants: Record<WebhookLogEntry['level'], 'default' | 'secondary' | 'destructive' | 'outline'> = {\n info: 'default',\n warning: 'secondary',\n error: 'destructive',\n debug: 'outline'\n };\n\n return (\n <Badge variant={variants[level]} className=\"gap-1 text-xs\">\n {getLevelIcon(level)}\n {level.toUpperCase()}\n </Badge>\n );\n };\n\n const filteredLogs = logs?.filter(log => {\n if (searchTerm) {\n const searchLower = searchTerm.toLowerCase();\n return (\n log.message.toLowerCase().includes(searchLower) ||\n log.id.toLowerCase().includes(searchLower) ||\n (log.eventId && log.eventId.toLowerCase().includes(searchLower)) ||\n (log.subscriptionId && log.subscriptionId.toLowerCase().includes(searchLower))\n );\n }\n return true;\n });\n\n const handleExport = (format: 'json' | 'csv') => {\n if (!filteredLogs || filteredLogs.length === 0) {\n toast({\n title: 'Nenhum log para exportar',\n description: 'Não há logs disponíveis para exportação',\n variant: 'destructive'\n });\n return;\n }\n\n const selectedToExport = selectedLogs.size > 0\n ? filteredLogs.filter(log => selectedLogs.has(log.id))\n : filteredLogs;\n\n if (format === 'json') {\n const dataStr = JSON.stringify(selectedToExport, null, 2);\n const dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr);\n const exportFileDefaultName = `webhook-logs-${Date.now()}.json`;\n \n const linkElement = document.createElement('a');\n linkElement.setAttribute('href', dataUri);\n linkElement.setAttribute('download', exportFileDefaultName);\n linkElement.click();\n } else {\n const headers = ['ID', 'Timestamp', 'Level', 'Message', 'Event ID', 'Subscription ID'];\n const csvContent = [\n headers.join(','),\n ...selectedToExport.map(log => [\n log.id,\n log.timestamp.toISOString(),\n log.level,\n `\"${log.message.replace(/\"/g, '\"\"')}\"`,\n log.eventId || '',\n log.subscriptionId || ''\n ].join(','))\n ].join('\\n');\n\n const dataUri = 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvContent);\n const exportFileDefaultName = `webhook-logs-${Date.now()}.csv`;\n \n const linkElement = document.createElement('a');\n linkElement.setAttribute('href', dataUri);\n linkElement.setAttribute('download', exportFileDefaultName);\n linkElement.click();\n }\n\n toast({\n title: 'Logs exportados',\n description: `${selectedToExport.length} logs exportados com sucesso`,\n });\n };\n\n const handleSelectAll = () => {\n if (filteredLogs) {\n if (selectedLogs.size === filteredLogs.length) {\n setSelectedLogs(new Set());\n } else {\n setSelectedLogs(new Set(filteredLogs.map(log => log.id)));\n }\n }\n };\n\n const handleSelectLog = (logId: string) => {\n const newSelected = new Set(selectedLogs);\n if (newSelected.has(logId)) {\n newSelected.delete(logId);\n } else {\n newSelected.add(logId);\n }\n setSelectedLogs(newSelected);\n };\n\n const copyLogToClipboard = (log: WebhookLogEntry) => {\n const logText = `[${format(log.timestamp, 'yyyy-MM-dd HH:mm:ss.SSS')}] [${log.level.toUpperCase()}] ${log.message}`;\n navigator.clipboard.writeText(logText);\n toast({\n title: 'Log copiado',\n description: 'Conteúdo do log copiado para a área de transferência',\n });\n };\n\n const clearSelection = () => {\n setSelectedLogs(new Set());\n };\n\n const formatMetadata = (metadata?: Record<string, string | number | boolean>) => {\n if (!metadata || Object.keys(metadata).length === 0) return null;\n \n return Object.entries(metadata).map(([key, value]) => (\n <span key={key} className=\"text-xs text-muted-foreground\">\n {key}: {String(value)}\n </span>\n ));\n };\n\n if (error) {\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardContent className=\"pt-6\">\n <div className=\"flex flex-col items-center justify-center py-8\">\n <AlertCircle className=\"h-8 w-8 text-destructive mb-2\" />\n <p className=\"text-sm text-muted-foreground\">Erro ao carregar logs</p>\n </div>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle className=\"flex items-center gap-2\">\n <Terminal className=\"h-5 w-5\" />\n Logs do Webhook\n </CardTitle>\n <CardDescription>\n {filteredLogs?.length || 0} logs encontrados\n {selectedLogs.size > 0 && ` (${selectedLogs.size} selecionados)`}\n </CardDescription>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => refetch()}\n disabled={isFetching}\n >\n {isFetching ? (\n <Loader2 className=\"icon-size animate-spin\" />\n ) : (\n <RefreshCw className=\"icon-size\" />\n )}\n </Button>\n <Button\n variant={isAutoRefresh ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => setIsAutoRefresh(!isAutoRefresh)}\n >\n {isAutoRefresh ? (\n <Pause className=\"icon-size\" />\n ) : (\n <Play className=\"icon-size\" />\n )}\n </Button>\n </div>\n </div>\n </CardHeader>\n\n <CardContent className=\"space-y-4\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex gap-2\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-2 top-2.5 icon-size text-muted-foreground\" />\n <Input\n placeholder=\"Buscar nos logs...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n className=\"pl-8\"\n />\n </div>\n <Select\n value={selectedLevel}\n onValueChange={(value) => setSelectedLevel(value as LogLevel)}\n >\n <SelectTrigger className=\"w-[150px]\">\n <Filter className=\"icon-size mr-2\" />\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">Todos</SelectItem>\n <SelectItem value=\"info\">Info</SelectItem>\n <SelectItem value=\"warning\">Warning</SelectItem>\n <SelectItem value=\"error\">Error</SelectItem>\n <SelectItem value=\"debug\">Debug</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Checkbox\n checked={filteredLogs?.length > 0 && selectedLogs.size === filteredLogs?.length}\n onCheckedChange={handleSelectAll}\n />\n <span className=\"text-sm text-muted-foreground\">Selecionar todos</span>\n {selectedLogs.size > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={clearSelection}\n >\n <Trash2 className=\"icon-size mr-1\" />\n Limpar seleção\n </Button>\n )}\n </div>\n \n <div className=\"flex items-center gap-2\">\n <div className=\"flex items-center gap-1\">\n <Checkbox\n checked={autoScroll}\n onCheckedChange={(checked) => setAutoScroll(checked as boolean)}\n />\n <label className=\"text-sm text-muted-foreground\">Auto-scroll</label>\n </div>\n \n <Separator orientation=\"vertical\" className=\"h-6\" />\n \n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleExport('json')}\n disabled={!filteredLogs || filteredLogs.length === 0}\n >\n <Download className=\"icon-size mr-1\" />\n JSON\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleExport('csv')}\n disabled={!filteredLogs || filteredLogs.length === 0}\n >\n <FileText className=\"icon-size mr-1\" />\n CSV\n </Button>\n </div>\n </div>\n </div>\n\n <ScrollArea ref={scrollAreaRef} className=\"h-[500px] w-full rounded border\">\n {isLoading ? (\n <div className=\"flex items-center justify-center py-8\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n ) : filteredLogs && filteredLogs.length > 0 ? (\n <div className=\"p-2 space-y-1\">\n {filteredLogs.map((log) => (\n <div\n key={log.id}\n className={cn(\n \"flex items-start gap-2 p-2 rounded hover:bg-muted/50 group\",\n selectedLogs.has(log.id) && \"bg-muted/50\",\n log.level === 'error' && \"border-l-2 border-red-500\",\n log.level === 'warning' && \"border-l-2 border-yellow-500\"\n )}\n >\n <Checkbox\n checked={selectedLogs.has(log.id)}\n onCheckedChange={() => handleSelectLog(log.id)}\n className=\"mt-0.5\"\n />\n \n <div className=\"flex-1 space-y-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-muted-foreground font-mono\">\n {format(log.timestamp, 'HH:mm:ss.SSS')}\n </span>\n {getLevelBadge(log.level)}\n {log.eventId && (\n <Badge variant=\"outline\" className=\"text-xs\">\n Event: {log.eventId.slice(0, 8)}...\n </Badge>\n )}\n </div>\n \n <div className=\"text-sm break-all font-mono\">\n {log.message}\n </div>\n \n {log.metadata && (\n <div className=\"flex flex-wrap gap-2 mt-1\">\n {formatMetadata(log.metadata)}\n </div>\n )}\n </div>\n \n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"opacity-0 group-hover:opacity-100 transition-opacity\"\n onClick={() => copyLogToClipboard(log)}\n >\n <Copy className=\"h-3 w-3\" />\n </Button>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"flex flex-col items-center justify-center py-8\">\n <Terminal className=\"h-8 w-8 text-muted-foreground mb-2\" />\n <p className=\"text-sm text-muted-foreground\">Nenhum log encontrado</p>\n </div>\n )}\n </ScrollArea>\n\n {filteredLogs && filteredLogs.length > pageSize && (\n <div className=\"flex items-center justify-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setPage(p => Math.max(1, p - 1))}\n disabled={page === 1}\n >\n <ChevronLeft className=\"icon-size\" />\n Anterior\n </Button>\n <span className=\"text-sm text-muted-foreground\">\n Página {page}\n </span>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setPage(p => p + 1)}\n disabled={filteredLogs.length < pageSize}\n >\n Próxima\n <ChevronRight className=\"icon-size\" />\n </Button>\n </div>\n )}\n </CardContent>\n </Card>\n );\n}","import React, { useMemo } from 'react';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { WebhookEventMetrics } from '@/domain/entities/WebhookEvent';\nimport { \n LineChart, \n Line, \n BarChart, \n Bar, \n PieChart, \n Pie, \n Cell,\n XAxis, \n YAxis, \n CartesianGrid, \n Tooltip, \n Legend, \n ResponsiveContainer,\n Area,\n AreaChart\n} from 'recharts';\n\ninterface WebhookMetricsChartProps {\n metrics: WebhookEventMetrics;\n timeRange?: '1h' | '6h' | '24h' | '7d' | '30d';\n onTimeRangeChange?: (range: string) => void;\n}\n\nconst COLORS = {\n success: '#10b981',\n failed: '#ef4444',\n pending: '#f59e0b',\n processing: '#3b82f6',\n retrying: '#8b5cf6'\n};\n\nconst EVENT_TYPE_COLORS = [\n '#3b82f6',\n '#10b981',\n '#f59e0b',\n '#ef4444',\n '#8b5cf6',\n '#ec4899',\n '#14b8a6',\n '#f97316'\n];\n\nexport const WebhookMetricsChart: React.FC<WebhookMetricsChartProps> = ({\n metrics,\n timeRange = '24h',\n onTimeRangeChange\n}) => {\n const statusData = useMemo(() => [\n { name: 'Sucesso', value: metrics.success, color: COLORS.success },\n { name: 'Falha', value: metrics.failed, color: COLORS.failed },\n { name: 'Pendente', value: metrics.pending, color: COLORS.pending },\n { name: 'Processando', value: metrics.processing, color: COLORS.processing },\n { name: 'Tentando', value: metrics.retrying, color: COLORS.retrying }\n ].filter(item => item.value > 0), [metrics]);\n\n const eventTypeData = useMemo(() => {\n return Object.entries(metrics.byType || {})\n .map(([type, count]) => ({\n name: formatEventType(type),\n value: count\n }))\n .sort((a, b) => b.value - a.value)\n .slice(0, 8);\n }, [metrics.byType]);\n\n const timeSeriesData = useMemo(() => {\n return metrics.byHour?.map(item => ({\n time: item.hour,\n total: item.count,\n success: item.success,\n failed: item.failed,\n successRate: item.success > 0 ? ((item.success / item.count) * 100).toFixed(1) : 0\n })) || [];\n }, [metrics.byHour]);\n\n const formatEventType = (type: string) => {\n return type\n .replace(/[._]/g, ' ')\n .replace(/\\b\\w/g, l => l.toUpperCase())\n .replace('Message ', 'Msg ')\n .replace('Connection ', 'Conn ')\n .replace('Instance ', 'Inst ');\n };\n\n interface TooltipPayload {\n name: string;\n value: number;\n color: string;\n }\n\n interface CustomTooltipProps {\n active?: boolean;\n payload?: TooltipPayload[];\n label?: string;\n }\n\n const CustomTooltip = ({ active, payload, label }: CustomTooltipProps) => {\n if (active && payload && payload.length) {\n return (\n <div className=\"bg-white p-3 border rounded-lg shadow-lg\">\n <p className=\"font-semibold text-sm\">{label}</p>\n {payload.map((entry, index) => (\n <p key={index} className=\"text-xs\" style={{ color: entry.color }}>\n {entry.name}: {entry.value}\n </p>\n ))}\n </div>\n );\n }\n return null;\n };\n\n const formatPercentage = (value: number) => `${value.toFixed(1)}%`;\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-lg font-semibold\">Métricas de Desempenho</h3>\n <Select value={timeRange} onValueChange={onTimeRangeChange}>\n <SelectTrigger className=\"w-[180px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"1h\">Última hora</SelectItem>\n <SelectItem value=\"6h\">Últimas 6 horas</SelectItem>\n <SelectItem value=\"24h\">Últimas 24 horas</SelectItem>\n <SelectItem value=\"7d\">Últimos 7 dias</SelectItem>\n <SelectItem value=\"30d\">Últimos 30 dias</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <Tabs defaultValue=\"overview\" className=\"space-y-4\">\n <TabsList className=\"grid w-full grid-cols-4\">\n <TabsTrigger value=\"overview\">Visão Geral</TabsTrigger>\n <TabsTrigger value=\"timeline\">Linha do Tempo</TabsTrigger>\n <TabsTrigger value=\"distribution\">Distribuição</TabsTrigger>\n <TabsTrigger value=\"performance\">Performance</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"overview\" className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Status dos Eventos</CardTitle>\n <CardDescription>Distribuição por status</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveContainer width=\"100%\" height={250}>\n <PieChart>\n <Pie\n data={statusData}\n cx=\"50%\"\n cy=\"50%\"\n labelLine={false}\n label={({ name, percent }) => `${name} ${(percent * 100).toFixed(0)}%`}\n outerRadius={80}\n fill=\"#8884d8\"\n dataKey=\"value\"\n >\n {statusData.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={entry.color} />\n ))}\n </Pie>\n <Tooltip content={<CustomTooltip />} />\n </PieChart>\n </ResponsiveContainer>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Tipos de Evento</CardTitle>\n <CardDescription>Top 8 tipos mais frequentes</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveContainer width=\"100%\" height={250}>\n <BarChart data={eventTypeData} layout=\"vertical\">\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis type=\"number\" />\n <YAxis dataKey=\"name\" type=\"category\" width={100} />\n <Tooltip content={<CustomTooltip />} />\n <Bar dataKey=\"value\" fill=\"#3b82f6\">\n {eventTypeData.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={EVENT_TYPE_COLORS[index % EVENT_TYPE_COLORS.length]} />\n ))}\n </Bar>\n </BarChart>\n </ResponsiveContainer>\n </CardContent>\n </Card>\n </div>\n </TabsContent>\n\n <TabsContent value=\"timeline\" className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Volume de Eventos</CardTitle>\n <CardDescription>Eventos processados ao longo do tempo</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveContainer width=\"100%\" height={300}>\n <AreaChart data={timeSeriesData}>\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis \n dataKey=\"time\" \n tick={{ fontSize: 12 }}\n tickFormatter={(value) => {\n const hour = value.split('T')[1]?.split(':')[0];\n return hour ? `${hour}h` : value;\n }}\n />\n <YAxis tick={{ fontSize: 12 }} />\n <Tooltip content={<CustomTooltip />} />\n <Legend />\n <Area \n type=\"monotone\" \n dataKey=\"total\" \n stackId=\"1\"\n stroke=\"#3b82f6\" \n fill=\"#3b82f6\"\n fillOpacity={0.6}\n name=\"Total\"\n />\n <Area \n type=\"monotone\" \n dataKey=\"success\" \n stackId=\"2\"\n stroke=\"#10b981\" \n fill=\"#10b981\"\n fillOpacity={0.6}\n name=\"Sucesso\"\n />\n <Area \n type=\"monotone\" \n dataKey=\"failed\" \n stackId=\"2\"\n stroke=\"#ef4444\" \n fill=\"#ef4444\"\n fillOpacity={0.6}\n name=\"Falha\"\n />\n </AreaChart>\n </ResponsiveContainer>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"distribution\" className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Taxa de Sucesso por Hora</CardTitle>\n <CardDescription>Percentual de eventos bem-sucedidos</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveContainer width=\"100%\" height={250}>\n <LineChart data={timeSeriesData}>\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis \n dataKey=\"time\"\n tick={{ fontSize: 12 }}\n tickFormatter={(value) => {\n const hour = value.split('T')[1]?.split(':')[0];\n return hour ? `${hour}h` : value;\n }}\n />\n <YAxis \n tick={{ fontSize: 12 }}\n tickFormatter={formatPercentage}\n domain={[0, 100]}\n />\n <Tooltip \n content={<CustomTooltip />}\n formatter={(value: any) => `${value}%`}\n />\n <Legend />\n <Line \n type=\"monotone\" \n dataKey=\"successRate\" \n stroke=\"#10b981\" \n strokeWidth={2}\n dot={{ fill: '#10b981', r: 4 }}\n name=\"Taxa de Sucesso\"\n />\n </LineChart>\n </ResponsiveContainer>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Comparativo Sucesso vs Falha</CardTitle>\n <CardDescription>Evolução ao longo do tempo</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveContainer width=\"100%\" height={250}>\n <BarChart data={timeSeriesData}>\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis \n dataKey=\"time\"\n tick={{ fontSize: 12 }}\n tickFormatter={(value) => {\n const hour = value.split('T')[1]?.split(':')[0];\n return hour ? `${hour}h` : value;\n }}\n />\n <YAxis tick={{ fontSize: 12 }} />\n <Tooltip content={<CustomTooltip />} />\n <Legend />\n <Bar dataKey=\"success\" fill={COLORS.success} name=\"Sucesso\" />\n <Bar dataKey=\"failed\" fill={COLORS.failed} name=\"Falha\" />\n </BarChart>\n </ResponsiveContainer>\n </CardContent>\n </Card>\n </div>\n </TabsContent>\n\n <TabsContent value=\"performance\" className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Métricas de Performance</CardTitle>\n <CardDescription>Indicadores chave de desempenho</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between p-4 border rounded-lg\">\n <div>\n <p className=\"text-sm font-medium\">Tempo Médio de Processamento</p>\n <p className=\"text-2xl font-bold text-blue-600\">\n {metrics.averageProcessingTime.toFixed(2)}ms\n </p>\n </div>\n <div className=\"text-right\">\n <p className=\"text-sm font-medium\">Taxa de Sucesso</p>\n <p className=\"text-2xl font-bold text-green-600\">\n {metrics.successRate.toFixed(1)}%\n </p>\n </div>\n <div className=\"text-right\">\n <p className=\"text-sm font-medium\">Taxa de Falha</p>\n <p className=\"text-2xl font-bold text-red-600\">\n {metrics.failureRate.toFixed(1)}%\n </p>\n </div>\n </div>\n\n <div className=\"grid grid-cols-3 gap-4\">\n <div className=\"p-3 border rounded-lg\">\n <p className=\"text-xs text-gray-500\">Total Processado</p>\n <p className=\"text-lg font-semibold\">{metrics.total.toLocaleString('pt-BR')}</p>\n </div>\n <div className=\"p-3 border rounded-lg\">\n <p className=\"text-xs text-gray-500\">Em Processamento</p>\n <p className=\"text-lg font-semibold\">{metrics.processing.toLocaleString('pt-BR')}</p>\n </div>\n <div className=\"p-3 border rounded-lg\">\n <p className=\"text-xs text-gray-500\">Tentativas de Retry</p>\n <p className=\"text-lg font-semibold\">{metrics.retrying.toLocaleString('pt-BR')}</p>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n </Tabs>\n </div>\n );\n};","import React, { useState, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport * as z from 'zod';\nimport { useMutation } from '@tanstack/react-query';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Textarea } from '@/components/ui/textarea';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { Badge } from '@/components/ui/badge';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport {\n Loader2,\n Send,\n History,\n Code,\n AlertCircle,\n CheckCircle,\n XCircle,\n Clock,\n Copy,\n Download\n} from 'lucide-react';\nimport { useToast } from '../ui/use-toast';\nimport { webhookService } from '@/services/api/webhook.service';\nimport { WebhookEventType } from '@/domain/entities/WebhookEvent';\nimport { WebhookTestRequest, WebhookTestResponse } from '@/types/webhook.types';\nimport { cn } from '@/utils/styles';\n\nconst EVENT_TEMPLATES: Record<WebhookEventType, Record<string, unknown>> = {\n [WebhookEventType.MESSAGE_RECEIVED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n key: {\n remoteJid: '5511999999999@s.whatsapp.net',\n fromMe: false,\n id: 'message-123'\n },\n pushName: 'João Silva',\n message: {\n conversation: 'Olá, preciso de ajuda!',\n messageTimestamp: Date.now() / 1000\n }\n }\n },\n [WebhookEventType.MESSAGE_SENT]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n key: {\n remoteJid: '5511999999999@s.whatsapp.net',\n fromMe: true,\n id: 'message-456'\n },\n message: {\n conversation: 'Olá! Como posso ajudar?',\n messageTimestamp: Date.now() / 1000\n },\n status: 'sent'\n }\n },\n [WebhookEventType.MESSAGE_DELIVERED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n key: {\n remoteJid: '5511999999999@s.whatsapp.net',\n fromMe: true,\n id: 'message-456'\n },\n status: 'delivered',\n deliveredAt: new Date().toISOString()\n }\n },\n [WebhookEventType.MESSAGE_READ]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n key: {\n remoteJid: '5511999999999@s.whatsapp.net',\n fromMe: true,\n id: 'message-456'\n },\n status: 'read',\n readAt: new Date().toISOString()\n }\n },\n [WebhookEventType.MESSAGE_FAILED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n key: {\n remoteJid: '5511999999999@s.whatsapp.net',\n fromMe: true,\n id: 'message-789'\n },\n error: {\n code: 'DELIVERY_FAILED',\n message: 'Failed to deliver message'\n }\n }\n },\n [WebhookEventType.CONNECTION_UPDATE]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n state: 'open',\n statusReason: 'Connected successfully',\n isNewLogin: false\n }\n },\n [WebhookEventType.QR_CODE_UPDATED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n qrcode: {\n code: '2@AhR...',\n base64: 'data:image/png;base64,iVBORw0...'\n }\n }\n },\n [WebhookEventType.INSTANCE_CREATED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n settings: {\n webhook: {\n url: 'https://example.com/webhook',\n enabled: true\n }\n }\n }\n },\n [WebhookEventType.INSTANCE_DELETED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n deletedAt: new Date().toISOString()\n }\n },\n [WebhookEventType.FLOW_TRIGGERED]: {\n flowId: 'flow-123',\n triggerId: 'trigger-456',\n sessionId: 'session-789',\n data: {\n trigger: {\n type: 'message',\n value: 'Olá'\n },\n context: {\n phoneNumber: '5511999999999',\n instanceId: 'instance-123'\n }\n }\n },\n [WebhookEventType.FLOW_COMPLETED]: {\n flowId: 'flow-123',\n sessionId: 'session-789',\n data: {\n status: 'success',\n duration: 1500,\n result: {\n messagesCount: 3,\n finalState: 'completed'\n }\n }\n }\n};\n\nconst testSchema = z.object({\n url: z.string().url('URL inválida'),\n event_type: z.nativeEnum(WebhookEventType),\n payload: z.string().refine((val) => {\n try {\n JSON.parse(val);\n return true;\n } catch {\n return false;\n }\n }, 'JSON inválido'),\n headers: z.string().optional().refine((val) => {\n if (!val) return true;\n try {\n const headers = JSON.parse(val);\n return typeof headers === 'object' && !Array.isArray(headers);\n } catch {\n return false;\n }\n }, 'Headers devem ser um objeto JSON válido')\n});\n\ntype TestFormData = z.infer<typeof testSchema>;\n\ninterface TestHistoryItem {\n id: string;\n timestamp: Date;\n url: string;\n eventType: WebhookEventType;\n response?: WebhookTestResponse;\n duration: number;\n}\n\ninterface WebhookTestModalProps {\n isOpen: boolean;\n onClose: () => void;\n defaultUrl?: string;\n defaultEventType?: WebhookEventType;\n}\n\nexport function WebhookTestModal({\n isOpen,\n onClose,\n defaultUrl = '',\n defaultEventType = WebhookEventType.MESSAGE_RECEIVED\n}: WebhookTestModalProps) {\n const { toast } = useToast();\n const [testHistory, setTestHistory] = useState<TestHistoryItem[]>([]);\n const [selectedTemplate, setSelectedTemplate] = useState<WebhookEventType>(defaultEventType);\n const [activeTab, setActiveTab] = useState<'test' | 'history'>('test');\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n setValue,\n watch\n } = useForm<TestFormData>({\n resolver: zodResolver(testSchema),\n defaultValues: {\n url: defaultUrl,\n event_type: defaultEventType,\n payload: JSON.stringify(EVENT_TEMPLATES[defaultEventType], null, 2),\n headers: JSON.stringify({ 'Content-Type': 'application/json' }, null, 2)\n }\n });\n\n const payloadValue = watch('payload');\n const headersValue = watch('headers');\n\n const testMutation = useMutation({\n mutationFn: async (data: TestFormData) => {\n const startTime = Date.now();\n const request: WebhookTestRequest = {\n url: data.url,\n event_type: data.event_type,\n payload: JSON.parse(data.payload),\n headers: data.headers ? JSON.parse(data.headers) : undefined\n };\n \n const response = await webhookService.testWebhook(request);\n const duration = Date.now() - startTime;\n \n return { response, duration, request };\n },\n onSuccess: ({ response, duration, request }) => {\n const historyItem: TestHistoryItem = {\n id: `test-${Date.now()}`,\n timestamp: new Date(),\n url: request.url,\n eventType: request.event_type as WebhookEventType,\n response,\n duration\n };\n \n setTestHistory(prev => [historyItem, ...prev].slice(0, 10));\n \n if (response.success) {\n toast({\n title: 'Teste bem-sucedido',\n description: `Webhook respondeu com status ${response.status_code} em ${duration}ms`,\n });\n } else {\n toast({\n title: 'Teste falhou',\n description: response.error || `Status: ${response.status_code}`,\n variant: 'destructive',\n });\n }\n },\n onError: (error: Error) => {\n toast({\n title: 'Erro ao testar webhook',\n description: error.message,\n variant: 'destructive',\n });\n }\n });\n\n useEffect(() => {\n if (selectedTemplate) {\n setValue('event_type', selectedTemplate);\n setValue('payload', JSON.stringify(EVENT_TEMPLATES[selectedTemplate], null, 2));\n }\n }, [selectedTemplate, setValue]);\n\n const onSubmit = (data: TestFormData) => {\n testMutation.mutate(data);\n };\n\n const copyToClipboard = (text: string) => {\n navigator.clipboard.writeText(text);\n toast({\n title: 'Copiado!',\n description: 'Conteúdo copiado para a área de transferência',\n });\n };\n\n const downloadHistory = () => {\n const dataStr = JSON.stringify(testHistory, null, 2);\n const dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr);\n const exportFileDefaultName = `webhook-tests-${Date.now()}.json`;\n \n const linkElement = document.createElement('a');\n linkElement.setAttribute('href', dataUri);\n linkElement.setAttribute('download', exportFileDefaultName);\n linkElement.click();\n };\n\n const formatJson = (json: string): string => {\n try {\n return JSON.stringify(JSON.parse(json), null, 2);\n } catch {\n return json;\n }\n };\n\n const getStatusIcon = (status?: boolean) => {\n if (status === undefined) return <Clock className=\"icon-size text-muted-foreground\" />;\n return status ? \n <CheckCircle className=\"icon-size text-green-500\" /> : \n <XCircle className=\"icon-size text-red-500\" />;\n };\n\n const getStatusBadge = (response?: WebhookTestResponse) => {\n if (!response) return <Badge variant=\"secondary\">Pendente</Badge>;\n \n if (response.success) {\n return <Badge variant=\"default\" className=\"bg-green-500\">Sucesso</Badge>;\n }\n \n return <Badge variant=\"destructive\">Falhou</Badge>;\n };\n\n return (\n <Dialog open={isOpen} onOpenChange={onClose}>\n <DialogContent className=\"max-w-4xl max-h-[90vh] overflow-hidden flex flex-col\">\n <DialogHeader>\n <DialogTitle>Testar Webhook</DialogTitle>\n <DialogDescription>\n Envie eventos de teste para validar a configuração do webhook\n </DialogDescription>\n </DialogHeader>\n\n <Tabs value={activeTab} onValueChange={(v) => setActiveTab(v as 'test' | 'history')} className=\"flex-1 flex flex-col\">\n <TabsList className=\"grid w-full grid-cols-2\">\n <TabsTrigger value=\"test\">\n <Send className=\"icon-size mr-2\" />\n Enviar Teste\n </TabsTrigger>\n <TabsTrigger value=\"history\">\n <History className=\"icon-size mr-2\" />\n Histórico ({testHistory.length})\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"test\" className=\"flex-1 overflow-auto\">\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"url\">URL do Webhook</Label>\n <Input\n id=\"url\"\n placeholder=\"https://exemplo.com/webhook\"\n {...register('url')}\n />\n {errors.url && (\n <p className=\"text-sm text-red-500\">{errors.url.message}</p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"event_type\">Tipo de Evento</Label>\n <Select\n value={selectedTemplate}\n onValueChange={(value) => setSelectedTemplate(value as WebhookEventType)}\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={WebhookEventType.MESSAGE_RECEIVED}>\n Mensagem Recebida\n </SelectItem>\n <SelectItem value={WebhookEventType.MESSAGE_SENT}>\n Mensagem Enviada\n </SelectItem>\n <SelectItem value={WebhookEventType.MESSAGE_DELIVERED}>\n Mensagem Entregue\n </SelectItem>\n <SelectItem value={WebhookEventType.MESSAGE_READ}>\n Mensagem Lida\n </SelectItem>\n <SelectItem value={WebhookEventType.MESSAGE_FAILED}>\n Falha no Envio\n </SelectItem>\n <SelectItem value={WebhookEventType.CONNECTION_UPDATE}>\n Atualização de Conexão\n </SelectItem>\n <SelectItem value={WebhookEventType.QR_CODE_UPDATED}>\n QR Code Atualizado\n </SelectItem>\n <SelectItem value={WebhookEventType.INSTANCE_CREATED}>\n Instância Criada\n </SelectItem>\n <SelectItem value={WebhookEventType.INSTANCE_DELETED}>\n Instância Deletada\n </SelectItem>\n <SelectItem value={WebhookEventType.FLOW_TRIGGERED}>\n Fluxo Disparado\n </SelectItem>\n <SelectItem value={WebhookEventType.FLOW_COMPLETED}>\n Fluxo Concluído\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor=\"payload\">Payload (JSON)</Label>\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setValue('payload', formatJson(payloadValue))}\n >\n <Code className=\"icon-size mr-1\" />\n Formatar\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => copyToClipboard(payloadValue)}\n >\n <Copy className=\"icon-size mr-1\" />\n Copiar\n </Button>\n </div>\n </div>\n <Textarea\n id=\"payload\"\n className=\"font-mono text-sm min-h-[200px]\"\n {...register('payload')}\n />\n {errors.payload && (\n <p className=\"text-sm text-red-500\">{errors.payload.message}</p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor=\"headers\">Headers (JSON - Opcional)</Label>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => copyToClipboard(headersValue || '')}\n >\n <Copy className=\"icon-size mr-1\" />\n Copiar\n </Button>\n </div>\n <Textarea\n id=\"headers\"\n className=\"font-mono text-sm min-h-[100px]\"\n placeholder='{\"Content-Type\": \"application/json\"}'\n {...register('headers')}\n />\n {errors.headers && (\n <p className=\"text-sm text-red-500\">{errors.headers.message}</p>\n )}\n </div>\n\n {testMutation.data?.response && (\n <Alert className={cn(\n \"mt-4\",\n testMutation.data.response.success ? \"border-green-500\" : \"border-red-500\"\n )}>\n <AlertCircle className=\"icon-size\" />\n <AlertDescription className=\"space-y-2\">\n <div className=\"flex items-center gap-4\">\n <span>Status: {testMutation.data.response.status_code}</span>\n <span>Tempo: {testMutation.data.duration}ms</span>\n </div>\n {testMutation.data.response.response_body && (\n <pre className=\"text-xs bg-muted p-2 rounded mt-2 overflow-auto max-h-[100px]\">\n {typeof testMutation.data.response.response_body === 'string' \n ? testMutation.data.response.response_body\n : JSON.stringify(testMutation.data.response.response_body, null, 2)}\n </pre>\n )}\n {testMutation.data.response.error && (\n <p className=\"text-sm text-red-500\">{testMutation.data.response.error}</p>\n )}\n </AlertDescription>\n </Alert>\n )}\n </form>\n </TabsContent>\n\n <TabsContent value=\"history\" className=\"flex-1 overflow-hidden flex flex-col\">\n <div className=\"flex justify-end mb-4\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={downloadHistory}\n disabled={testHistory.length === 0}\n >\n <Download className=\"icon-size mr-2\" />\n Exportar Histórico\n </Button>\n </div>\n \n <ScrollArea className=\"flex-1\">\n <div className=\"space-y-3\">\n {testHistory.length === 0 ? (\n <div className=\"text-center text-muted-foreground py-8\">\n Nenhum teste realizado ainda\n </div>\n ) : (\n testHistory.map((item) => (\n <div\n key={item.id}\n className=\"border rounded-lg p-4 space-y-2\"\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {getStatusIcon(item.response?.success)}\n <span className=\"font-medium\">{item.eventType}</span>\n {getStatusBadge(item.response)}\n </div>\n <span className=\"text-sm text-muted-foreground\">\n {item.timestamp.toLocaleTimeString()}\n </span>\n </div>\n \n <div className=\"text-sm space-y-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">URL:</span>\n <code className=\"text-xs bg-muted px-1 py-0.5 rounded\">\n {item.url}\n </code>\n </div>\n \n {item.response && (\n <>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">Status:</span>\n <span>{item.response.status_code}</span>\n </div>\n \n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">Tempo:</span>\n <span>{item.duration}ms</span>\n </div>\n \n {item.response.error && (\n <div className=\"text-red-500 text-sm mt-2\">\n {item.response.error}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n ))\n )}\n </div>\n </ScrollArea>\n </TabsContent>\n </Tabs>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={onClose}>\n Fechar\n </Button>\n {activeTab === 'test' && (\n <Button\n type=\"submit\"\n onClick={handleSubmit(onSubmit)}\n disabled={testMutation.isPending}\n >\n {testMutation.isPending ? (\n <>\n <Loader2 className=\"mr-2 icon-size animate-spin\" />\n Enviando...\n </>\n ) : (\n <>\n <Send className=\"mr-2 icon-size\" />\n Enviar Teste\n </>\n )}\n </Button>\n )}\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}","import React from 'react';\nimport { WebhookEvent, WebhookEventStatus } from '@/domain/entities/WebhookEvent';\nimport { cn } from '@/utils/styles';\nimport {\n formatEventType,\n formatStatus,\n formatDate,\n formatTime,\n calculateProcessingTime,\n getTimelineColor\n} from '@/utils/webhook.utils';\nimport {\n CheckCircle2,\n XCircle,\n AlertCircle,\n Clock,\n Loader2,\n RefreshCw,\n MessageSquare,\n Phone,\n Wifi,\n QrCode,\n Workflow,\n ChevronRight\n} from 'lucide-react';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\n\ninterface WebhookTimelineProps {\n events: WebhookEvent[];\n onEventClick?: (event: WebhookEvent) => void;\n groupByDate?: boolean;\n className?: string;\n}\n\nexport const WebhookTimeline: React.FC<WebhookTimelineProps> = ({\n events,\n onEventClick,\n groupByDate = true,\n className\n}) => {\n const getStatusIcon = (status: WebhookEventStatus) => {\n switch (status) {\n case WebhookEventStatus.SUCCESS:\n return <CheckCircle2 className=\"h-5 w-5 text-green-500\" />;\n case WebhookEventStatus.FAILED:\n return <XCircle className=\"h-5 w-5 text-red-500\" />;\n case WebhookEventStatus.PROCESSING:\n return <Loader2 className=\"h-5 w-5 text-blue-500 animate-spin\" />;\n case WebhookEventStatus.RETRYING:\n return <RefreshCw className=\"h-5 w-5 text-orange-500 animate-spin\" />;\n case WebhookEventStatus.PENDING:\n return <Clock className=\"h-5 w-5 text-gray-500\" />;\n default:\n return <AlertCircle className=\"h-5 w-5 text-gray-400\" />;\n }\n };\n\n const getEventIcon = (type: string) => {\n if (type.includes('message')) return <MessageSquare className=\"icon-size\" />;\n if (type.includes('connection')) return <Wifi className=\"icon-size\" />;\n if (type.includes('qr')) return <QrCode className=\"icon-size\" />;\n if (type.includes('instance')) return <Phone className=\"icon-size\" />;\n if (type.includes('flow')) return <Workflow className=\"icon-size\" />;\n return <AlertCircle className=\"icon-size\" />;\n };\n\n\n\n const groupEventsByDate = () => {\n if (!groupByDate) return { '': events };\n\n const grouped: Record<string, WebhookEvent[]> = {};\n events.forEach(event => {\n const dateKey = formatDate(event.createdAt);\n if (!grouped[dateKey]) {\n grouped[dateKey] = [];\n }\n grouped[dateKey].push(event);\n });\n return grouped;\n };\n\n const groupedEvents = groupEventsByDate();\n\n return (\n <div className={cn(\"space-y-6\", className)}>\n {Object.entries(groupedEvents).map(([date, dateEvents]) => (\n <div key={date} className=\"space-y-4\">\n {groupByDate && date && (\n <div className=\"flex items-center space-x-2\">\n <div className=\"h-px flex-1 bg-gray-200\" />\n <span className=\"text-sm font-medium text-gray-500 px-2\">\n {date}\n </span>\n <div className=\"h-px flex-1 bg-gray-200\" />\n </div>\n )}\n \n <div className=\"relative\">\n {dateEvents.map((event, index) => (\n <div key={event.id} className=\"flex items-start pb-8 last:pb-0\">\n <div className=\"relative flex items-center justify-center flex-shrink-0\">\n <div className={cn(\n \"absolute top-5 left-1/2 -translate-x-1/2 w-0.5 h-full\",\n index === dateEvents.length - 1 ? \"hidden\" : \"bg-gray-200\"\n )} />\n <div className={cn(\n \"relative z-10 flex items-center justify-center w-10 h-10 rounded-full border-4 border-white shadow-sm\",\n getTimelineColor(event.status)\n )}>\n {getStatusIcon(event.status)}\n </div>\n </div>\n\n <div className=\"ml-4 flex-1\">\n <Button\n variant=\"ghost\"\n className=\"w-full justify-start p-3 h-auto hover:bg-gray-50\"\n onClick={() => onEventClick?.(event)}\n >\n <div className=\"flex-1 text-left\">\n <div className=\"flex items-center justify-between mb-1\">\n <div className=\"flex items-center space-x-2\">\n <div className=\"flex items-center justify-center w-8 h-8 rounded bg-gray-100\">\n {getEventIcon(event.type)}\n </div>\n <span className=\"text-sm font-medium text-gray-900\">\n {formatEventType(event.type)}\n </span>\n <Badge variant=\"outline\" className=\"text-xs\">\n {formatStatus(event.status)}\n </Badge>\n </div>\n <ChevronRight className=\"icon-size text-gray-400 flex-shrink-0\" />\n </div>\n\n <div className=\"flex items-center space-x-4 text-xs text-gray-500\">\n <span>{formatTime(event.createdAt)}</span>\n {event.metadata.instanceName && (\n <>\n <span>•</span>\n <span>{event.metadata.instanceName}</span>\n </>\n )}\n {event.metadata.phoneNumber && (\n <>\n <span>•</span>\n <span>{event.metadata.phoneNumber}</span>\n </>\n )}\n {event.metadata.flowId && (\n <>\n <span>•</span>\n <span>{event.metadata.flowId}</span>\n </>\n )}\n {event.processedAt && (\n <>\n <span>•</span>\n <span>\n {calculateProcessingTime(event.createdAt, event.processedAt)}s\n </span>\n </>\n )}\n </div>\n\n {event.error && (\n <div className=\"mt-2 text-xs text-red-600\">\n {event.error.message}\n </div>\n )}\n\n {event.retryCount > 0 && (\n <div className=\"mt-1 text-xs text-orange-600\">\n Tentativa {event.retryCount} de {event.maxRetries}\n </div>\n )}\n </div>\n </Button>\n </div>\n </div>\n ))}\n </div>\n </div>\n ))}\n \n {events.length === 0 && (\n <div className=\"text-center py-12\">\n <AlertCircle className=\"mx-auto h-12 w-12 text-gray-400\" />\n <p className=\"mt-2 text-sm text-gray-600\">\n Nenhum evento encontrado\n </p>\n </div>\n )}\n </div>\n );\n};","import React, { useState, useMemo } from 'react';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport {\n Search,\n Filter,\n Download,\n Trash2,\n MessageCircle,\n Image,\n MapPin,\n User,\n FileText,\n CheckCheck,\n Check,\n Clock,\n XCircle,\n ChevronDown,\n ChevronUp\n} from 'lucide-react';\nimport { format } from 'date-fns';\nimport { ptBR } from 'date-fns/locale';\nimport { useWhatsAppStore } from '@/presentation/stores/whatsapp.store';\nimport { WhatsAppMessage } from '@/domain/entities/WhatsAppMessage';\nimport { cn } from '@/utils/styles';\n\ninterface MessageHistoryProps {\n configId?: number;\n className?: string;\n maxHeight?: string;\n}\n\nconst MessageItem: React.FC<{\n message: WhatsAppMessage;\n direction: 'sent' | 'received';\n timestamp: Date;\n instanceName: string;\n}> = ({ message, direction, timestamp, instanceName }) => {\n const [expanded, setExpanded] = useState(false);\n\n const isOutgoing = direction === 'sent';\n const bubbleVariant = isOutgoing ? 'primary-acorde' : 'outlined';\n const alignment = isOutgoing ? 'justify-end' : 'justify-start';\n\n const getMessageIcon = () => {\n switch (message.type) {\n case 'text':\n return <MessageCircle className=\"icon-size\" />;\n case 'media':\n return <Image className=\"icon-size\" />;\n case 'location':\n return <MapPin className=\"icon-size\" />;\n case 'contact':\n return <User className=\"icon-size\" />;\n case 'template':\n return <FileText className=\"icon-size\" />;\n default:\n return <MessageCircle className=\"icon-size\" />;\n }\n };\n\n const getStatusIcon = () => {\n switch (message.status) {\n case 'sent':\n return <Check className=\"h-3 w-3 text-gray-400\" />;\n case 'delivered':\n return <CheckCheck className=\"h-3 w-3 text-gray-400\" />;\n case 'read':\n return <CheckCheck className=\"h-3 w-3 text-blue-500\" />;\n case 'failed':\n return <XCircle className=\"h-3 w-3 text-red-500\" />;\n case 'pending':\n return <Clock className=\"h-3 w-3 text-yellow-500\" />;\n default:\n return null;\n }\n };\n\n const getMessageContent = () => {\n switch (message.type) {\n case 'text':\n return message.text || '';\n case 'media':\n return (\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"secondary\" className=\"text-xs\">\n {message.mediaType?.toUpperCase()}\n </Badge>\n {message.filename && (\n <span className=\"text-xs text-muted-foreground\">{message.filename}</span>\n )}\n </div>\n {message.caption && <p className=\"text-sm\">{message.caption}</p>}\n </div>\n );\n case 'location':\n return (\n <div className=\"space-y-1\">\n <p className=\"font-medium text-sm\">{message.location?.name || 'Localização'}</p>\n {message.location?.address && (\n <p className=\"text-xs text-muted-foreground\">{message.location.address}</p>\n )}\n <p className=\"text-xs text-muted-foreground\">\n {message.location?.latitude}, {message.location?.longitude}\n </p>\n </div>\n );\n case 'contact':\n return (\n <div className=\"space-y-1\">\n <p className=\"font-medium text-sm\">{message.contact?.name}</p>\n <p className=\"text-xs text-muted-foreground\">{message.contact?.phone}</p>\n </div>\n );\n case 'template':\n return (\n <div className=\"space-y-1\">\n <Badge variant=\"secondary\" className=\"text-xs\">Template</Badge>\n <p className=\"text-sm\">{message.template?.name}</p>\n </div>\n );\n default:\n return message.getSummary();\n }\n };\n\n return (\n <div className={cn(\"flex mb-3\", alignment)}>\n <Card\n variant={bubbleVariant}\n size=\"sm\"\n className={cn(\n \"max-w-[80%] transition-all duration-200\",\n isOutgoing && \"bg-acorde-primary text-white\"\n )}\n >\n <CardContent className=\"p-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <div className={cn(\n \"flex items-center gap-1\",\n isOutgoing ? \"text-white\" : \"text-foreground\"\n )}>\n {getMessageIcon()}\n <span className=\"text-sm font-medium\">\n {direction === 'sent' ? message.getFormattedToNumber() : message.getFormattedFromNumber() || 'Desconhecido'}\n </span>\n </div>\n <div className=\"flex items-center gap-1\">\n <Badge\n variant={isOutgoing ? 'secondary' : 'outline'}\n size=\"sm\"\n className={cn(\n \"text-xs\",\n isOutgoing && \"bg-white/20 text-white border-white/30\"\n )}\n >\n {direction === 'sent' ? 'Enviada' : 'Recebida'}\n </Badge>\n <Badge\n variant=\"outline\"\n size=\"sm\"\n className={cn(\n \"text-xs\",\n isOutgoing && \"bg-white/20 text-white border-white/30\"\n )}\n >\n {instanceName}\n </Badge>\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n {direction === 'sent' && getStatusIcon()}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"h-6 w-6 p-0\",\n isOutgoing && \"text-white hover:bg-white/20\"\n )}\n onClick={() => setExpanded(!expanded)}\n >\n {expanded ? (\n <ChevronUp className=\"h-3 w-3\" />\n ) : (\n <ChevronDown className=\"h-3 w-3\" />\n )}\n </Button>\n </div>\n </div>\n\n <div>\n {typeof getMessageContent() === 'string' ? (\n <p className={cn(\n \"text-sm leading-relaxed\",\n isOutgoing ? \"text-white\" : \"text-foreground\",\n !expanded && \"line-clamp-2\"\n )}>\n {getMessageContent()}\n </p>\n ) : (\n <div className={cn(isOutgoing && \"text-white\")}>\n {getMessageContent()}\n </div>\n )}\n </div>\n\n <div className={cn(\n \"flex items-center justify-between mt-2 pt-2 border-t text-xs\",\n isOutgoing\n ? \"border-white/20 text-white/70\"\n : \"border-border text-muted-foreground\"\n )}>\n <span>\n {format(timestamp, 'dd/MM/yyyy HH:mm:ss', { locale: ptBR })}\n </span>\n\n <div className=\"flex items-center gap-2\">\n {message.errorMessage && (\n <span className=\"text-red-400\">\n Erro: {message.errorMessage}\n </span>\n )}\n\n {direction === 'sent' && message.getDeliveryTime() && (\n <span>\n Entregue em {(message.getDeliveryTime()! / 1000).toFixed(1)}s\n </span>\n )}\n\n {direction === 'sent' && getStatusIcon()}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n};\n\nexport const MessageHistory: React.FC<MessageHistoryProps> = ({\n configId,\n className,\n maxHeight = '600px'\n}) => {\n const { messageHistory, clearHistory, getHistoryByConfig } = useWhatsAppStore();\n const [searchTerm, setSearchTerm] = useState('');\n const [filterType, setFilterType] = useState<'all' | 'sent' | 'received'>('all');\n const [filterInstance, setFilterInstance] = useState<string>('all');\n\n const filteredMessages = useMemo(() => {\n let messages = configId ? getHistoryByConfig(configId) : messageHistory;\n\n // Filter by direction\n if (filterType !== 'all') {\n messages = messages.filter(m => m.direction === filterType);\n }\n\n // Filter by instance\n if (filterInstance !== 'all') {\n messages = messages.filter(m => m.instanceName === filterInstance);\n }\n\n // Filter by search term\n if (searchTerm) {\n const term = searchTerm.toLowerCase();\n messages = messages.filter(m => {\n const summary = m.message.getSummary().toLowerCase();\n const toNumber = m.message.toNumber.toLowerCase();\n const fromNumber = (m.message.fromNumber || '').toLowerCase();\n return summary.includes(term) || toNumber.includes(term) || fromNumber.includes(term);\n });\n }\n\n return messages;\n }, [messageHistory, configId, searchTerm, filterType, filterInstance, getHistoryByConfig]);\n\n const uniqueInstances = useMemo(() => {\n const instances = new Set(messageHistory.map(m => m.instanceName));\n return Array.from(instances);\n }, [messageHistory]);\n\n const stats = useMemo(() => {\n return {\n total: filteredMessages.length,\n sent: filteredMessages.filter(m => m.direction === 'sent').length,\n received: filteredMessages.filter(m => m.direction === 'received').length,\n failed: filteredMessages.filter(m => m.message.status === 'failed').length\n };\n }, [filteredMessages]);\n\n const handleExport = () => {\n const data = filteredMessages.map(m => ({\n timestamp: m.timestamp.toISOString(),\n direction: m.direction,\n instance: m.instanceName,\n type: m.message.type,\n to: m.message.toNumber,\n from: m.message.fromNumber || '',\n status: m.message.status,\n content: m.message.getSummary()\n }));\n\n const csv = [\n 'Timestamp,Direction,Instance,Type,To,From,Status,Content',\n ...data.map(row => \n `\"${row.timestamp}\",\"${row.direction}\",\"${row.instance}\",\"${row.type}\",\"${row.to}\",\"${row.from}\",\"${row.status}\",\"${row.content.replace(/\"/g, '\"\"')}\"`\n )\n ].join('\\n');\n\n const blob = new Blob([csv], { type: 'text/csv' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `whatsapp-history-${format(new Date(), 'yyyy-MM-dd-HH-mm')}.csv`;\n a.click();\n URL.revokeObjectURL(url);\n };\n\n const handleClear = () => {\n if (confirm('Tem certeza que deseja limpar o histórico de mensagens?')) {\n clearHistory(configId);\n }\n };\n\n return (\n <Card variant=\"elevated\" className={className}>\n <CardHeader variant=\"accent\">\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle className=\"flex items-center gap-2\">\n <MessageCircle className=\"h-5 w-5 text-acorde-primary\" />\n Histórico de Mensagens\n </CardTitle>\n <CardDescription>\n <div className=\"flex items-center gap-4 mt-1\">\n <span>{stats.total} mensagens</span>\n <Badge variant=\"outline-success\" size=\"sm\">{stats.sent} enviadas</Badge>\n <Badge variant=\"outline\" size=\"sm\">{stats.received} recebidas</Badge>\n {stats.failed > 0 && (\n <Badge variant=\"destructive\" size=\"sm\">{stats.failed} falharam</Badge>\n )}\n </div>\n </CardDescription>\n </div>\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handleExport}\n disabled={filteredMessages.length === 0}\n >\n <Download className=\"mr-2 icon-size\" />\n Exportar\n </Button>\n <Button\n variant=\"destructive\"\n size=\"sm\"\n onClick={handleClear}\n disabled={filteredMessages.length === 0}\n >\n <Trash2 className=\"mr-2 icon-size\" />\n Limpar\n </Button>\n </div>\n </div>\n </CardHeader>\n \n <CardContent className=\"space-y-4\">\n {/* Filters */}\n <div className=\"flex gap-2\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-2 top-1/2 -translate-y-1/2 icon-size text-muted-foreground\" />\n <Input\n variant=\"acorde\"\n type=\"text\"\n placeholder=\"Buscar mensagens...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n className=\"pl-8\"\n />\n </div>\n \n <Select value={filterType} onValueChange={(value: any) => setFilterType(value)}>\n <SelectTrigger className=\"w-[140px]\">\n <Filter className=\"mr-2 icon-size\" />\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">Todas</SelectItem>\n <SelectItem value=\"sent\">Enviadas</SelectItem>\n <SelectItem value=\"received\">Recebidas</SelectItem>\n </SelectContent>\n </Select>\n \n {uniqueInstances.length > 1 && (\n <Select value={filterInstance} onValueChange={setFilterInstance}>\n <SelectTrigger className=\"w-[160px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">Todas Instâncias</SelectItem>\n {uniqueInstances.map(instance => (\n <SelectItem key={instance} value={instance}>\n {instance}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n </div>\n\n {/* Messages List */}\n <ScrollArea className=\"w-full\" style={{ maxHeight }}>\n <div className=\"p-4\">\n {filteredMessages.length === 0 ? (\n <Card variant=\"outlined\" className=\"text-center py-8\">\n <CardContent>\n <MessageCircle className=\"h-12 w-12 mx-auto mb-4 text-muted-foreground/50\" />\n <p className=\"text-muted-foreground\">\n {searchTerm || filterType !== 'all' || filterInstance !== 'all' ? (\n 'Nenhuma mensagem encontrada com os filtros aplicados'\n ) : (\n 'Nenhuma mensagem no histórico'\n )}\n </p>\n </CardContent>\n </Card>\n ) : (\n <div className=\"space-y-1\">\n {filteredMessages.map((item) => (\n <MessageItem\n key={item.id}\n message={item.message}\n direction={item.direction}\n timestamp={item.timestamp}\n instanceName={item.instanceName}\n />\n ))}\n </div>\n )}\n </div>\n </ScrollArea>\n </CardContent>\n </Card>\n );\n};","import React, { useEffect, useState, useCallback } from 'react';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport { QrCode, CheckCircle, AlertCircle, Clock, Loader2 } from 'lucide-react';\nimport { WhatsAppConnectResponse, whatsappService } from '@/services/api/whatsapp.service';\nimport { useToast } from '../ui/use-toast';\nimport QRCode from 'qrcode';\n\ninterface QRCodeModalProps {\n open: boolean;\n onClose: () => void;\n connectResponse: WhatsAppConnectResponse | null;\n instanceName: string;\n configId?: number;\n onConnectionSuccess?: () => void;\n}\n\nexport const QRCodeModal: React.FC<QRCodeModalProps> = ({\n open,\n onClose,\n connectResponse,\n instanceName,\n configId,\n onConnectionSuccess\n}) => {\n const { toast } = useToast();\n const [qrCodeUrl, setQrCodeUrl] = useState<string>('');\n const [timeRemaining, setTimeRemaining] = useState<number>(180);\n const [isExpired, setIsExpired] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isGenerating, setIsGenerating] = useState(false);\n const [isConnected, setIsConnected] = useState(false);\n const [checkingStatus, setCheckingStatus] = useState(false);\n const [currentStatus, setCurrentStatus] = useState(connectResponse?.status || 'waiting_qr');\n\n useEffect(() => {\n if (connectResponse?.qr_code) {\n const qrCode = connectResponse.qr_code;\n\n // Verificar se o QR code já é uma imagem pronta (data URL ou URL)\n if (qrCode.startsWith('data:image/') || qrCode.startsWith('http://') || qrCode.startsWith('https://')) {\n // É uma imagem pronta - usar diretamente\n setQrCodeUrl(qrCode);\n setIsGenerating(false);\n setError(null);\n } else if (qrCode.length > 0) {\n // É texto - gerar QR Code visual\n generateQRCode(qrCode);\n }\n\n // Se tem tempo de expiração, calcular o tempo restante\n if (connectResponse.expires_at) {\n const expiresAt = new Date(connectResponse.expires_at);\n const now = new Date();\n const remainingMs = expiresAt.getTime() - now.getTime();\n setTimeRemaining(Math.max(0, Math.floor(remainingMs / 1000)));\n }\n } else if (connectResponse && !connectResponse.qr_code) {\n // Se não tem QR Code mas tem resposta, pode estar conectado\n if (connectResponse.status === 'connected') {\n setError(null);\n } else {\n setError('QR Code não foi gerado. Verifique a configuração da instância.');\n }\n }\n }, [connectResponse]);\n\n useEffect(() => {\n if (timeRemaining > 0 && !isExpired) {\n const timer = setTimeout(() => {\n setTimeRemaining(prev => {\n if (prev <= 1) {\n setIsExpired(true);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n return () => clearTimeout(timer);\n }\n }, [timeRemaining, isExpired]);\n\n const generateQRCode = async (text: string) => {\n try {\n setIsGenerating(true);\n setError(null);\n \n // Tentar gerar o QR Code\n const url = await QRCode.toDataURL(text, {\n width: 300,\n margin: 2,\n color: {\n dark: '#000000',\n light: '#FFFFFF'\n }\n });\n \n setQrCodeUrl(url);\n setIsGenerating(false);\n } catch (err) {\n console.error('Erro ao gerar QR Code:', err);\n setError('Erro ao gerar QR Code visual');\n setIsGenerating(false);\n }\n };\n\n const formatTime = (seconds: number): string => {\n const mins = Math.floor(seconds / 60);\n const secs = seconds % 60;\n return `${mins}:${secs.toString().padStart(2, '0')}`;\n };\n\n // Função para verificar o status da conexão\n const checkConnectionStatus = useCallback(async () => {\n if (!configId || checkingStatus || isConnected || isExpired) return;\n \n try {\n setCheckingStatus(true);\n const health = await whatsappService.checkHealth(configId);\n \n console.log('Status da conexão:', health);\n \n if (health.connected || health.status === 'connected') {\n setIsConnected(true);\n setCurrentStatus('connected');\n \n toast({\n title: 'WhatsApp Conectado!',\n description: `A instância ${instanceName} foi conectada com sucesso.`,\n variant: 'default'\n });\n \n // Aguarda um pouco para mostrar o status de sucesso antes de fechar\n setTimeout(() => {\n if (onConnectionSuccess) {\n onConnectionSuccess();\n }\n onClose();\n }, 2000);\n } else {\n setCurrentStatus(health.status);\n }\n } catch (error: any) {\n console.error('Erro ao verificar status:', error);\n // Não exibe erro, apenas continua tentando\n } finally {\n setCheckingStatus(false);\n }\n }, [configId, checkingStatus, isConnected, isExpired, instanceName, onConnectionSuccess, onClose, toast]);\n\n // Polling para verificar status da conexão\n useEffect(() => {\n if (!open || !configId || isConnected || isExpired) return;\n \n // Verifica status a cada 3 segundos\n const interval = setInterval(() => {\n checkConnectionStatus();\n }, 3000);\n \n // Verifica imediatamente também\n checkConnectionStatus();\n \n return () => clearInterval(interval);\n }, [open, configId, isConnected, isExpired, checkConnectionStatus]);\n\n const getStatusBadge = () => {\n switch (currentStatus) {\n case 'connected':\n return (\n <Badge className=\"bg-green-500 text-white\">\n <CheckCircle className=\"mr-1 h-3 w-3\" />\n Conectado\n </Badge>\n );\n case 'waiting_qr':\n return (\n <Badge className=\"bg-yellow-500 text-white\">\n <QrCode className=\"mr-1 h-3 w-3\" />\n Aguardando QR\n </Badge>\n );\n case 'connecting':\n return (\n <Badge className=\"bg-blue-500 text-white\">\n <Loader2 className=\"mr-1 h-3 w-3 animate-spin\" />\n Conectando\n </Badge>\n );\n default:\n return (\n <Badge variant=\"secondary\">\n {connectResponse?.status || currentStatus || 'Desconhecido'}\n </Badge>\n );\n }\n };\n\n return (\n <Dialog open={open} onOpenChange={onClose}>\n <DialogContent className=\"max-w-md\">\n <DialogHeader>\n <DialogTitle className=\"flex items-center justify-between\">\n <span>Conectar WhatsApp</span>\n {getStatusBadge()}\n </DialogTitle>\n <DialogDescription>\n Instância: {instanceName}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"space-y-4\">\n {/* Mensagem da resposta */}\n {connectResponse?.message && (\n <Alert>\n <AlertCircle className=\"icon-size\" />\n <AlertDescription>{connectResponse.message}</AlertDescription>\n </Alert>\n )}\n\n {/* QR Code ou Status */}\n {isConnected || currentStatus === 'connected' ? (\n <div className=\"flex flex-col items-center py-8\">\n <CheckCircle className=\"h-16 w-16 text-green-500 mb-4\" />\n <p className=\"text-lg font-semibold\">WhatsApp Conectado!</p>\n <p className=\"text-sm text-muted-foreground mt-2\">\n A instância está pronta para enviar mensagens\n </p>\n </div>\n ) : (\n <>\n {/* QR Code */}\n {qrCodeUrl && !isExpired ? (\n <div className=\"flex flex-col items-center space-y-4\">\n <div className=\"p-4 bg-white rounded-lg border\">\n {isGenerating ? (\n <div className=\"w-[300px] h-[300px] flex items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-gray-400\" />\n </div>\n ) : (\n <img src={qrCodeUrl} alt=\"QR Code\" className=\"w-[300px] h-[300px]\" />\n )}\n </div>\n \n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"flex items-center gap-2\">\n <Clock className=\"icon-size text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">\n Expira em {formatTime(timeRemaining)}\n </span>\n </div>\n {checkingStatus && (\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <Loader2 className=\"h-3 w-3 animate-spin\" />\n <span>Verificando conexão...</span>\n </div>\n )}\n </div>\n \n <Alert>\n <QrCode className=\"icon-size\" />\n <AlertDescription>\n Escaneie este QR Code com o WhatsApp no seu celular para conectar\n </AlertDescription>\n </Alert>\n </div>\n ) : (\n <>\n {/* Erro ou QR Code expirado */}\n {error ? (\n <Alert variant=\"destructive\">\n <AlertCircle className=\"icon-size\" />\n <AlertDescription>{error}</AlertDescription>\n </Alert>\n ) : isExpired ? (\n <div className=\"flex flex-col items-center py-8\">\n <Clock className=\"h-16 w-16 text-yellow-500 mb-4\" />\n <p className=\"text-lg font-semibold\">QR Code Expirado</p>\n <p className=\"text-sm text-muted-foreground mt-2\">\n Feche esta janela e tente conectar novamente\n </p>\n </div>\n ) : (\n <div className=\"flex flex-col items-center py-8\">\n <Loader2 className=\"h-16 w-16 animate-spin text-gray-400 mb-4\" />\n <p className=\"text-lg font-semibold\">Gerando QR Code...</p>\n <p className=\"text-sm text-muted-foreground mt-2\">\n Aguarde enquanto geramos o código de conexão\n </p>\n </div>\n )}\n </>\n )}\n </>\n )}\n\n {/* Debug info em desenvolvimento */}\n {process.env.NODE_ENV === 'development' && connectResponse && (\n <details className=\"text-xs\">\n <summary className=\"cursor-pointer text-muted-foreground\">Debug Info</summary>\n <pre className=\"mt-2 p-2 bg-gray-100 rounded text-xs overflow-auto\">\n {JSON.stringify(connectResponse, null, 2)}\n </pre>\n </details>\n )}\n </div>\n\n <div className=\"flex justify-end gap-2 mt-4\">\n <Button variant=\"outline\" onClick={onClose}>\n Fechar\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n );\n};","import React, { useState, useEffect } from 'react';\nimport { Send, X, MessageCircle, User } from 'lucide-react';\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Textarea } from '@/components/ui/textarea';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Badge } from '@/components/ui/badge';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Avatar, AvatarFallback } from '@/components/ui/avatar';\nimport { cn } from '@/utils/styles';\nimport { WhatsAppConfig } from '@/domain/entities/WhatsAppConfig';\nimport { SendMessageDTO } from '@/application/use-cases/whatsapp/send-whatsapp-message.use-case';\nimport { WhatsAppMediaType } from '@/domain/entities/WhatsAppMessage';\n\ninterface SendMessageModalProps {\n open: boolean;\n onClose: () => void;\n config?: WhatsAppConfig;\n configs?: WhatsAppConfig[];\n defaultPhone?: string;\n appName?: string;\n}\n\nexport const SendMessageModal: React.FC<SendMessageModalProps> = ({\n open,\n onClose,\n config: initialConfig,\n configs = [],\n defaultPhone = '',\n appName = 'Sistema'\n}) => {\n const { sendMessage, isSending, validatePhoneNumber } = useWhatsApp();\n \n const [selectedConfig, setSelectedConfig] = useState<WhatsAppConfig | null>(initialConfig || null);\n const [messageType, setMessageType] = useState<'text' | 'media' | 'location' | 'contact' | 'template'>('text');\n const [phoneNumber, setPhoneNumber] = useState(defaultPhone);\n const [phoneError, setPhoneError] = useState<string>('');\n \n // Text message state\n const [textMessage, setTextMessage] = useState('');\n const [linkPreview, setLinkPreview] = useState(true);\n \n // Media message state\n const [mediaType, setMediaType] = useState<WhatsAppMediaType>('image');\n const [mediaUrl, setMediaUrl] = useState('');\n const [mediaFile, setMediaFile] = useState<string>('');\n const [caption, setCaption] = useState('');\n const [filename, setFilename] = useState('');\n \n // Location state\n const [latitude, setLatitude] = useState('');\n const [longitude, setLongitude] = useState('');\n const [locationName, setLocationName] = useState('');\n const [address, setAddress] = useState('');\n \n // Contact state\n const [contactName, setContactName] = useState('');\n const [contactPhone, setContactPhone] = useState('');\n \n // Template state\n const [templateName, setTemplateName] = useState('');\n const [templateLanguage, setTemplateLanguage] = useState('pt_BR');\n const [templateParams, setTemplateParams] = useState<string[]>(['']);\n\n useEffect(() => {\n if (initialConfig) {\n setSelectedConfig(initialConfig);\n } else if (configs.length > 0 && !selectedConfig) {\n // Preferir uma configuração conectada\n const connected = configs.find(c => c.isConnected());\n setSelectedConfig(connected || configs[0]);\n }\n }, [initialConfig, configs, selectedConfig]);\n\n const handlePhoneChange = (value: string) => {\n setPhoneNumber(value);\n \n // Aplicar máscara brasileira\n let masked = value.replace(/\\D/g, '');\n if (masked.length > 0) {\n if (masked.length <= 2) {\n masked = `(${masked}`;\n } else if (masked.length <= 7) {\n masked = `(${masked.slice(0, 2)}) ${masked.slice(2)}`;\n } else if (masked.length <= 11) {\n masked = `(${masked.slice(0, 2)}) ${masked.slice(2, 7)}-${masked.slice(7)}`;\n } else {\n masked = `(${masked.slice(0, 2)}) ${masked.slice(2, 7)}-${masked.slice(7, 11)}`;\n }\n }\n \n setPhoneNumber(masked);\n \n // Validar número\n if (value.length > 10) {\n const validation = validatePhoneNumber(value);\n if (!validation.valid) {\n setPhoneError(validation.errors[0] || 'Número inválido');\n } else {\n setPhoneError('');\n }\n }\n };\n\n const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0];\n if (!file) return;\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const base64 = e.target?.result as string;\n setMediaFile(base64);\n setFilename(file.name);\n };\n reader.readAsDataURL(file);\n };\n\n const handleSend = () => {\n if (!selectedConfig) {\n alert('Selecione uma configuração');\n return;\n }\n\n if (!phoneNumber || phoneError) {\n alert('Número de telefone inválido');\n return;\n }\n\n let messageData: SendMessageDTO;\n\n switch (messageType) {\n case 'text':\n if (!textMessage) {\n alert('Digite uma mensagem');\n return;\n }\n messageData = {\n type: 'text',\n instanceName: selectedConfig.instanceName,\n toNumber: phoneNumber,\n text: textMessage,\n options: { linkPreview }\n };\n break;\n\n case 'media':\n if (!mediaUrl && !mediaFile) {\n alert('Forneça uma URL ou arquivo de mídia');\n return;\n }\n messageData = {\n type: 'media',\n instanceName: selectedConfig.instanceName,\n toNumber: phoneNumber,\n mediaUrl: mediaUrl || undefined,\n mediaFile: mediaFile || undefined,\n mediaType,\n caption: caption || undefined,\n filename: filename || undefined\n };\n break;\n\n case 'location':\n if (!latitude || !longitude) {\n alert('Forneça latitude e longitude');\n return;\n }\n messageData = {\n type: 'location',\n instanceName: selectedConfig.instanceName,\n toNumber: phoneNumber,\n latitude: parseFloat(latitude),\n longitude: parseFloat(longitude),\n name: locationName || undefined,\n address: address || undefined\n };\n break;\n\n case 'contact':\n if (!contactName || !contactPhone) {\n alert('Forneça nome e telefone do contato');\n return;\n }\n messageData = {\n type: 'contact',\n instanceName: selectedConfig.instanceName,\n toNumber: phoneNumber,\n contactName,\n contactPhone\n };\n break;\n\n case 'template':\n if (!templateName) {\n alert('Forneça o nome do template');\n return;\n }\n messageData = {\n type: 'template',\n instanceName: selectedConfig.instanceName,\n toNumber: phoneNumber,\n templateName,\n languageCode: templateLanguage,\n parameters: templateParams.filter(p => p.trim() !== '')\n };\n break;\n\n default:\n return;\n }\n\n sendMessage(messageData, {\n onSuccess: () => {\n onClose();\n // Reset form\n setTextMessage('');\n setMediaUrl('');\n setMediaFile('');\n setCaption('');\n setFilename('');\n setLatitude('');\n setLongitude('');\n setLocationName('');\n setAddress('');\n setContactName('');\n setContactPhone('');\n setTemplateName('');\n setTemplateParams(['']);\n }\n });\n };\n\n const addTemplateParam = () => {\n setTemplateParams([...templateParams, '']);\n };\n\n const updateTemplateParam = (index: number, value: string) => {\n const newParams = [...templateParams];\n newParams[index] = value;\n setTemplateParams(newParams);\n };\n\n const removeTemplateParam = (index: number) => {\n setTemplateParams(templateParams.filter((_, i) => i !== index));\n };\n\n return (\n <Dialog open={open} onOpenChange={onClose}>\n <DialogContent className=\"sm:max-w-[600px] max-h-[80vh] overflow-y-auto\">\n <DialogHeader className=\"space-y-3\">\n <DialogTitle className=\"flex items-center gap-2\">\n <Badge variant=\"outline-success\" className=\"flex items-center gap-1\">\n <MessageCircle className=\"h-3 w-3\" />\n WhatsApp\n </Badge>\n Enviar Mensagem\n </DialogTitle>\n <DialogDescription>\n Escolha o tipo de mensagem e preencha os dados necessários\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"space-y-4 py-4\">\n {/* Seleção de configuração */}\n {!initialConfig && configs.length > 1 && (\n <Card variant=\"outlined\" size=\"sm\">\n <CardHeader>\n <CardTitle size=\"sm\">Instância WhatsApp</CardTitle>\n </CardHeader>\n <CardContent>\n <Select\n value={selectedConfig?.id.toString()}\n onValueChange={(value) => {\n const config = configs.find(c => c.id.toString() === value);\n setSelectedConfig(config || null);\n }}\n >\n <SelectTrigger>\n <SelectValue placeholder=\"Selecione uma instância\" />\n </SelectTrigger>\n <SelectContent>\n {configs.map((config) => (\n <SelectItem key={config.id} value={config.id.toString()}>\n <div className=\"flex items-center gap-2\">\n <span>{config.instanceName}</span>\n {config.isConnected() && (\n <Badge variant=\"success\" size=\"sm\">Conectado</Badge>\n )}\n </div>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </CardContent>\n </Card>\n )}\n\n {/* Contato de destino */}\n <Card variant=\"outlined\" size=\"sm\">\n <CardContent className=\"space-y-3\">\n <div className=\"flex items-center gap-3 p-3 bg-muted/50 rounded-md\">\n <Avatar size=\"sm\">\n <AvatarFallback>\n <User className=\"icon-size\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"flex-1\">\n <Label htmlFor=\"phone\" className=\"text-sm font-medium\">Número do Destinatário</Label>\n <Input\n id=\"phone\"\n type=\"tel\"\n variant=\"acorde\"\n value={phoneNumber}\n onChange={(e) => handlePhoneChange(e.target.value)}\n placeholder=\"(11) 99999-9999\"\n className={cn(\n \"mt-1\",\n phoneError && \"border-destructive focus:border-destructive\"\n )}\n />\n {phoneError && (\n <p className=\"text-sm text-destructive mt-1\">{phoneError}</p>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n\n {/* Seleção do tipo de mensagem */}\n <Card variant=\"outlined\">\n <CardHeader>\n <CardTitle size=\"sm\">Tipo de Mensagem</CardTitle>\n </CardHeader>\n <CardContent>\n <Tabs value={messageType} onValueChange={(value: any) => setMessageType(value)}>\n <TabsList className=\"grid w-full grid-cols-5\">\n <TabsTrigger value=\"text\">Texto</TabsTrigger>\n <TabsTrigger value=\"media\">Mídia</TabsTrigger>\n <TabsTrigger value=\"location\">Local</TabsTrigger>\n <TabsTrigger value=\"contact\">Contato</TabsTrigger>\n <TabsTrigger value=\"template\">Template</TabsTrigger>\n </TabsList>\n\n {/* Mensagem de Texto */}\n <TabsContent value=\"text\" className=\"space-y-4 mt-4\">\n <div className=\"space-y-3\">\n <Label htmlFor=\"message\" className=\"text-sm font-medium\">Mensagem</Label>\n <Textarea\n id=\"message\"\n variant=\"acorde\"\n value={textMessage}\n onChange={(e) => setTextMessage(e.target.value)}\n placeholder=\"Digite sua mensagem...\"\n rows={4}\n maxLength={4096}\n className=\"resize-none\"\n />\n <div className=\"flex items-center justify-between text-sm text-muted-foreground\">\n <span className={cn(\n textMessage.length > 3900 && \"text-warning\",\n textMessage.length === 4096 && \"text-destructive\"\n )}>\n {textMessage.length}/4096\n </span>\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={linkPreview}\n onChange={(e) => setLinkPreview(e.target.checked)}\n className=\"rounded border-border\"\n />\n <span className=\"text-sm\">Preview de links</span>\n </label>\n </div>\n </div>\n </TabsContent>\n\n {/* Mensagem de Mídia */}\n <TabsContent value=\"media\" className=\"space-y-4 mt-4\">\n <div className=\"space-y-3\">\n <div>\n <Label className=\"text-sm font-medium\">Tipo de Mídia</Label>\n <Select value={mediaType} onValueChange={(value: WhatsAppMediaType) => setMediaType(value)}>\n <SelectTrigger className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"image\">📷 Imagem</SelectItem>\n <SelectItem value=\"video\">🎥 Vídeo</SelectItem>\n <SelectItem value=\"audio\">🎵 Áudio</SelectItem>\n <SelectItem value=\"document\">📄 Documento</SelectItem>\n <SelectItem value=\"sticker\">😀 Sticker</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div>\n <Label className=\"text-sm font-medium\">URL da Mídia (ou faça upload)</Label>\n <Input\n variant=\"acorde\"\n value={mediaUrl}\n onChange={(e) => setMediaUrl(e.target.value)}\n placeholder=\"https://exemplo.com/imagem.jpg\"\n disabled={!!mediaFile}\n className=\"mt-1\"\n />\n </div>\n\n <div>\n <Label className=\"text-sm font-medium\">Ou faça upload de um arquivo</Label>\n <Input\n type=\"file\"\n onChange={handleFileUpload}\n disabled={!!mediaUrl}\n className=\"mt-1\"\n accept={\n mediaType === 'image' ? 'image/*' :\n mediaType === 'video' ? 'video/*' :\n mediaType === 'audio' ? 'audio/*' :\n '*'\n }\n />\n {filename && (\n <Badge variant=\"outline\" size=\"sm\" className=\"mt-2\">\n 📎 {filename}\n </Badge>\n )}\n </div>\n\n <div>\n <Label htmlFor=\"caption\" className=\"text-sm font-medium\">Legenda (opcional)</Label>\n <Textarea\n id=\"caption\"\n variant=\"acorde\"\n value={caption}\n onChange={(e) => setCaption(e.target.value)}\n placeholder=\"Adicione uma legenda...\"\n rows={2}\n maxLength={1024}\n className=\"mt-1 resize-none\"\n />\n </div>\n </div>\n </TabsContent>\n\n {/* Mensagem de Localização */}\n <TabsContent value=\"location\" className=\"space-y-4 mt-4\">\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <Label htmlFor=\"latitude\" className=\"text-sm font-medium\">📍 Latitude</Label>\n <Input\n id=\"latitude\"\n type=\"number\"\n step=\"0.000001\"\n variant=\"acorde\"\n value={latitude}\n onChange={(e) => setLatitude(e.target.value)}\n placeholder=\"-23.550520\"\n className=\"mt-1\"\n />\n </div>\n <div>\n <Label htmlFor=\"longitude\" className=\"text-sm font-medium\">📍 Longitude</Label>\n <Input\n id=\"longitude\"\n type=\"number\"\n step=\"0.000001\"\n variant=\"acorde\"\n value={longitude}\n onChange={(e) => setLongitude(e.target.value)}\n placeholder=\"-46.633308\"\n className=\"mt-1\"\n />\n </div>\n </div>\n\n <div>\n <Label htmlFor=\"locationName\" className=\"text-sm font-medium\">🏢 Nome do Local (opcional)</Label>\n <Input\n id=\"locationName\"\n variant=\"acorde\"\n value={locationName}\n onChange={(e) => setLocationName(e.target.value)}\n placeholder={appName}\n className=\"mt-1\"\n />\n </div>\n\n <div>\n <Label htmlFor=\"address\" className=\"text-sm font-medium\">📍 Endereço (opcional)</Label>\n <Input\n id=\"address\"\n variant=\"acorde\"\n value={address}\n onChange={(e) => setAddress(e.target.value)}\n placeholder=\"Av. Paulista, 1000 - São Paulo, SP\"\n className=\"mt-1\"\n />\n </div>\n </div>\n </TabsContent>\n\n {/* Mensagem de Contato */}\n <TabsContent value=\"contact\" className=\"space-y-4 mt-4\">\n <div className=\"space-y-3\">\n <div>\n <Label htmlFor=\"contactName\" className=\"text-sm font-medium\">👤 Nome do Contato</Label>\n <Input\n id=\"contactName\"\n variant=\"acorde\"\n value={contactName}\n onChange={(e) => setContactName(e.target.value)}\n placeholder=\"João Silva\"\n className=\"mt-1\"\n />\n </div>\n\n <div>\n <Label htmlFor=\"contactPhone\" className=\"text-sm font-medium\">📞 Telefone do Contato</Label>\n <Input\n id=\"contactPhone\"\n type=\"tel\"\n variant=\"acorde\"\n value={contactPhone}\n onChange={(e) => setContactPhone(e.target.value)}\n placeholder=\"(11) 88888-8888\"\n className=\"mt-1\"\n />\n </div>\n </div>\n </TabsContent>\n\n {/* Mensagem de Template */}\n <TabsContent value=\"template\" className=\"space-y-4 mt-4\">\n <Alert variant=\"info\">\n <AlertDescription>\n ⚠️ Templates precisam ser pré-aprovados pelo WhatsApp Business\n </AlertDescription>\n </Alert>\n\n <div className=\"space-y-3\">\n <div>\n <Label htmlFor=\"templateName\" className=\"text-sm font-medium\">📋 Nome do Template</Label>\n <Input\n id=\"templateName\"\n variant=\"acorde\"\n value={templateName}\n onChange={(e) => setTemplateName(e.target.value)}\n placeholder=\"order_confirmation\"\n className=\"mt-1\"\n />\n </div>\n\n <div>\n <Label className=\"text-sm font-medium\">🌐 Idioma</Label>\n <Select value={templateLanguage} onValueChange={setTemplateLanguage}>\n <SelectTrigger className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"pt_BR\">🇧🇷 Português (Brasil)</SelectItem>\n <SelectItem value=\"en_US\">🇺🇸 English (US)</SelectItem>\n <SelectItem value=\"es_ES\">🇪🇸 Español (España)</SelectItem>\n <SelectItem value=\"es_MX\">🇲🇽 Español (México)</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div>\n <Label className=\"text-sm font-medium\">🔧 Parâmetros do Template</Label>\n <div className=\"space-y-2 mt-2\">\n {templateParams.map((param, index) => (\n <div key={index} className=\"flex gap-2\">\n <Input\n variant=\"acorde\"\n value={param}\n onChange={(e) => updateTemplateParam(index, e.target.value)}\n placeholder={`Parâmetro ${index + 1}`}\n className=\"flex-1\"\n />\n {templateParams.length > 1 && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => removeTemplateParam(index)}\n className=\"flex-shrink-0\"\n >\n <X className=\"icon-size\" />\n </Button>\n )}\n </div>\n ))}\n {templateParams.length < 10 && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={addTemplateParam}\n className=\"w-full\"\n >\n ➕ Adicionar Parâmetro\n </Button>\n )}\n </div>\n </div>\n </div>\n </TabsContent>\n\n </Tabs>\n </CardContent>\n </Card>\n\n {/* Aviso sobre configuração não conectada */}\n {selectedConfig && !selectedConfig.isConnected() && (\n <Alert variant=\"destructive\">\n <AlertDescription>\n A instância selecionada não está conectada. Conecte-a antes de enviar mensagens.\n </AlertDescription>\n </Alert>\n )}\n </div>\n\n <DialogFooter className=\"flex gap-2\">\n <Button variant=\"outline\" onClick={onClose} disabled={isSending}>\n Cancelar\n </Button>\n <Button\n variant=\"success\"\n onClick={handleSend}\n disabled={isSending || !selectedConfig || !selectedConfig.isConnected()}\n className=\"flex items-center gap-2\"\n >\n {isSending ? (\n <>\n <div className=\"icon-size animate-spin rounded-full border-2 border-current border-t-transparent\" />\n Enviando...\n </>\n ) : (\n <>\n <Send className=\"icon-size\" />\n Enviar Mensagem\n </>\n )}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n};","import React, { useState, useEffect } from 'react';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Progress } from '@/components/ui/progress';\nimport { Badge } from '@/components/ui/badge';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Button } from '@/components/ui/button';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { \n Activity, \n AlertTriangle, \n CheckCircle, \n Clock, \n MessageCircle, \n RefreshCw,\n TrendingUp,\n TrendingDown,\n XCircle,\n Wifi,\n WifiOff,\n BarChart3\n} from 'lucide-react';\nimport { WhatsAppConfig } from '@/domain/entities/WhatsAppConfig';\nimport { format } from 'date-fns';\nimport { ptBR } from 'date-fns/locale';\n\ninterface HealthMetrics {\n uptime: number;\n messagesPerHour: number;\n successRate: number;\n avgResponseTime: number;\n lastError?: string;\n lastErrorTime?: Date;\n}\n\ninterface WhatsAppHealthMonitorProps {\n configs?: WhatsAppConfig[];\n autoRefresh?: boolean;\n refreshInterval?: number;\n}\n\nconst InstanceHealthCard: React.FC<{ \n config: WhatsAppConfig; \n onRefresh: () => void;\n}> = ({ config, onRefresh }) => {\n const health = useWhatsAppHealthMonitor(config.id, 30000); // Check every 30 seconds\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const handleRefresh = async () => {\n setIsRefreshing(true);\n await onRefresh();\n setTimeout(() => setIsRefreshing(false), 1000);\n };\n\n const getHealthIcon = () => {\n if (!health) return <Clock className=\"h-5 w-5 text-gray-400\" />;\n \n if (health.healthy && health.connected) {\n return <CheckCircle className=\"h-5 w-5 text-green-500\" />;\n } else if (health.connected) {\n return <AlertTriangle className=\"h-5 w-5 text-yellow-500\" />;\n } else {\n return <XCircle className=\"h-5 w-5 text-red-500\" />;\n }\n };\n\n const getConnectionIcon = () => {\n if (!health) return <WifiOff className=\"icon-size text-gray-400\" />;\n return health.connected ? \n <Wifi className=\"icon-size text-green-500\" /> : \n <WifiOff className=\"icon-size text-red-500\" />;\n };\n\n const getUptimePercentage = () => {\n if (!config.connectedAt) return 0;\n const now = new Date();\n const connectedTime = config.connectedAt.getTime();\n const totalTime = now.getTime() - connectedTime;\n const uptimeHours = totalTime / (1000 * 60 * 60);\n return Math.min(100, (uptimeHours / 24) * 100); // Percentage of 24 hours\n };\n\n return (\n <Card>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {getHealthIcon()}\n <div>\n <CardTitle className=\"text-base\">{config.instanceName}</CardTitle>\n <CardDescription className=\"text-xs\">\n {config.providerType.toUpperCase()} • {config.phoneNumber || 'Não conectado'}\n </CardDescription>\n </div>\n </div>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={handleRefresh}\n disabled={isRefreshing}\n className=\"h-8 w-8 p-0\"\n >\n <RefreshCw className={`icon-size ${isRefreshing ? 'animate-spin' : ''}`} />\n </Button>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {/* Connection Status */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Conexão</span>\n <div className=\"flex items-center gap-2\">\n {getConnectionIcon()}\n <Badge variant={health?.connected ? 'default' : 'destructive'}>\n {health?.connected ? 'Conectado' : 'Desconectado'}\n </Badge>\n </div>\n </div>\n\n {/* Health Status */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Saúde</span>\n <Badge variant={\n health?.healthy ? 'default' : \n health?.error ? 'destructive' : \n 'secondary'\n }>\n {health?.healthy ? 'Saudável' : \n health?.error ? 'Com Erro' : \n 'Verificando...'}\n </Badge>\n </div>\n\n {/* Uptime */}\n {config.isConnected() && (\n <div className=\"space-y-1\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Uptime</span>\n <span className=\"text-sm font-medium\">{getUptimePercentage().toFixed(1)}%</span>\n </div>\n <Progress value={getUptimePercentage()} className=\"h-1\" />\n </div>\n )}\n\n {/* Rate Limits */}\n <div className=\"space-y-1\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Limites</span>\n <span className=\"text-xs text-muted-foreground\">\n {config.rateLimitPerMinute}/min • {config.rateLimitPerHour}/h\n </span>\n </div>\n </div>\n\n {/* Last Check */}\n {health && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Última verificação</span>\n <span className=\"text-xs text-muted-foreground\">\n {format(health.lastCheck, 'HH:mm:ss', { locale: ptBR })}\n </span>\n </div>\n )}\n\n {/* Error Message */}\n {health?.error && (\n <Alert variant=\"destructive\" className=\"py-2\">\n <AlertTriangle className=\"h-3 w-3\" />\n <AlertDescription className=\"text-xs\">\n {health.error}\n </AlertDescription>\n </Alert>\n )}\n </CardContent>\n </Card>\n );\n};\n\nexport const WhatsAppHealthMonitor: React.FC<WhatsAppHealthMonitorProps> = ({\n configs = [],\n autoRefresh = true,\n refreshInterval = 60000\n}) => {\n const { configs: allConfigs, checkHealth, stats } = useWhatsApp({ \n autoRefresh, \n refreshInterval \n });\n \n const [selectedPeriod, setSelectedPeriod] = useState<'1h' | '24h' | '7d'>('24h');\n const [metrics, setMetrics] = useState<HealthMetrics>({\n uptime: 0,\n messagesPerHour: 0,\n successRate: 0,\n avgResponseTime: 0\n });\n\n const configsToMonitor = configs.length > 0 ? configs : allConfigs;\n\n useEffect(() => {\n // Simulated metrics calculation\n // In a real app, these would come from the backend\n const connectedConfigs = configsToMonitor.filter(c => c.isConnected());\n const uptime = connectedConfigs.length > 0 ? \n (connectedConfigs.length / configsToMonitor.length) * 100 : 0;\n\n setMetrics({\n uptime,\n messagesPerHour: Math.floor(Math.random() * 100),\n successRate: 95 + Math.random() * 5,\n avgResponseTime: 200 + Math.random() * 300\n });\n }, [configsToMonitor]);\n\n const handleRefreshHealth = async (config: WhatsAppConfig) => {\n await checkHealth(config.id);\n };\n\n return (\n <div className=\"space-y-6\">\n {/* Overview Stats */}\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Instâncias</CardTitle>\n <MessageCircle className=\"icon-size text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{configsToMonitor.length}</div>\n <p className=\"text-xs text-muted-foreground\">\n {stats.connected} conectadas\n </p>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Uptime Geral</CardTitle>\n <Activity className=\"icon-size text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{metrics.uptime.toFixed(1)}%</div>\n <div className=\"flex items-center text-xs text-muted-foreground\">\n {metrics.uptime > 95 ? (\n <>\n <TrendingUp className=\"mr-1 h-3 w-3 text-green-500\" />\n Estável\n </>\n ) : (\n <>\n <TrendingDown className=\"mr-1 h-3 w-3 text-red-500\" />\n Instável\n </>\n )}\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Taxa de Sucesso</CardTitle>\n <CheckCircle className=\"icon-size text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{metrics.successRate.toFixed(1)}%</div>\n <p className=\"text-xs text-muted-foreground\">\n Últimas {selectedPeriod === '1h' ? 'hora' : selectedPeriod === '24h' ? '24 horas' : '7 dias'}\n </p>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Tempo de Resposta</CardTitle>\n <Clock className=\"icon-size text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{metrics.avgResponseTime.toFixed(0)}ms</div>\n <p className=\"text-xs text-muted-foreground\">\n Média de resposta\n </p>\n </CardContent>\n </Card>\n </div>\n\n {/* Period Selector */}\n <Tabs value={selectedPeriod} onValueChange={(v) => setSelectedPeriod(v as any)}>\n <TabsList>\n <TabsTrigger value=\"1h\">Última Hora</TabsTrigger>\n <TabsTrigger value=\"24h\">24 Horas</TabsTrigger>\n <TabsTrigger value=\"7d\">7 Dias</TabsTrigger>\n </TabsList>\n\n <TabsContent value={selectedPeriod} className=\"space-y-4 mt-4\">\n {/* Instance Health Cards */}\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {configsToMonitor.map(config => (\n <InstanceHealthCard\n key={config.id}\n config={config}\n onRefresh={() => handleRefreshHealth(config)}\n />\n ))}\n </div>\n\n {configsToMonitor.length === 0 && (\n <Card>\n <CardContent className=\"flex flex-col items-center justify-center py-10\">\n <MessageCircle className=\"h-10 w-10 text-muted-foreground mb-4\" />\n <p className=\"text-muted-foreground text-center\">\n Nenhuma instância WhatsApp configurada.\n </p>\n <p className=\"text-sm text-muted-foreground text-center mt-2\">\n Configure uma instância para começar o monitoramento.\n </p>\n </CardContent>\n </Card>\n )}\n\n {/* Activity Chart Placeholder */}\n {configsToMonitor.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base flex items-center gap-2\">\n <BarChart3 className=\"icon-size\" />\n Atividade de Mensagens\n </CardTitle>\n <CardDescription>\n Volume de mensagens nas últimas {selectedPeriod === '1h' ? 'hora' : selectedPeriod === '24h' ? '24 horas' : '7 dias'}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"h-[200px] flex items-center justify-center border-2 border-dashed rounded-lg\">\n <p className=\"text-sm text-muted-foreground\">\n Gráfico de atividade (em desenvolvimento)\n </p>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n </Tabs>\n </div>\n );\n};","import { formatInTimeZone } from 'date-fns-tz';\nimport { ptBR } from 'date-fns/locale';\n\nconst BRAZIL_TIMEZONE = 'America/Sao_Paulo';\n\n/**\n * Formata uma data para o horário local do Brasil (GMT-3)\n * @param date - Data a ser formatada (string ou Date)\n * @param formatStr - String de formato (padrão: 'dd/MM/yyyy HH:mm:ss')\n * @returns String formatada no horário local\n */\nexport function formatLocalDateTime(\n date: string | Date, \n formatStr: string = 'dd/MM/yyyy HH:mm:ss'\n): string {\n const dateObj = typeof date === 'string' ? new Date(date) : date;\n \n // Formata diretamente no timezone do Brasil\n return formatInTimeZone(dateObj, BRAZIL_TIMEZONE, formatStr, { locale: ptBR });\n}\n\n/**\n * Formata apenas a hora no horário local\n * @param date - Data a ser formatada\n * @returns String com hora formatada (HH:mm:ss)\n */\nexport function formatLocalTime(date: string | Date): string {\n return formatLocalDateTime(date, 'HH:mm:ss');\n}\n\n/**\n * Formata apenas a data no formato brasileiro\n * @param date - Data a ser formatada\n * @returns String com data formatada (dd/MM/yyyy)\n */\nexport function formatLocalDate(date: string | Date): string {\n return formatLocalDateTime(date, 'dd/MM/yyyy');\n}","import { NodeExecutionStatus, TimelineStatus } from '@/domain/types/flow-execution.types';\n\ninterface NodeStylingParams {\n status: NodeExecutionStatus;\n isCurrentDebugNode?: boolean;\n timelineStatus?: TimelineStatus;\n isSelected?: boolean;\n}\n\nexport function getNodeBorderStyles({\n status,\n isCurrentDebugNode,\n timelineStatus,\n isSelected = false\n}: NodeStylingParams): string {\n if (isCurrentDebugNode) {\n return \"border-orange-500 bg-orange-50 shadow-2xl shadow-orange-500/50 animate-pulse\";\n }\n\n if (timelineStatus) {\n switch (timelineStatus) {\n case 'before':\n return \"border-gray-300 bg-gray-100 opacity-40\";\n case 'during':\n return \"border-blue-500 bg-blue-50 shadow-2xl shadow-blue-500/50 animate-pulse\";\n case 'after':\n return status === 'error' \n ? \"border-red-500 bg-red-50\" \n : \"border-green-500 bg-green-50\";\n }\n }\n\n const statusStyles: Record<NodeExecutionStatus, string> = {\n executing: \"border-blue-500 bg-blue-50 shadow-lg shadow-blue-500/20\",\n completed: \"border-green-500 bg-green-50\",\n error: \"border-red-500 bg-red-50\",\n paused: \"border-yellow-500 bg-yellow-50\",\n not_executed: \"border-gray-400 bg-gray-100 text-gray-500 opacity-60\",\n idle: isSelected ? \"border-purple-500 shadow-xl ring-2 ring-purple-500 ring-opacity-50\" : \"border-purple-300\"\n };\n\n return statusStyles[status] || (isSelected ? \"border-purple-500 shadow-xl ring-2 ring-purple-500 ring-opacity-50\" : \"border-purple-300\");\n}\n\nexport function getNodeIconColor({\n status,\n isCurrentDebugNode\n}: NodeStylingParams): string {\n if (isCurrentDebugNode) {\n return \"bg-orange-200\";\n }\n\n const colorMap: Record<NodeExecutionStatus, string> = {\n completed: \"bg-green-200\",\n executing: \"bg-blue-200\",\n error: \"bg-red-200\",\n paused: \"bg-yellow-200\",\n idle: \"bg-purple-100\",\n not_executed: \"bg-gray-200\"\n };\n\n return colorMap[status] || \"bg-purple-100\";\n}\n\nexport function getNodeIconTextColor({\n status,\n isCurrentDebugNode\n}: NodeStylingParams): string {\n if (isCurrentDebugNode) {\n return \"text-orange-600\";\n }\n\n const colorMap: Record<NodeExecutionStatus, string> = {\n completed: \"text-green-600\",\n executing: \"text-blue-600\",\n error: \"text-red-600\",\n paused: \"text-yellow-600\",\n idle: \"text-purple-600\",\n not_executed: \"text-gray-600\"\n };\n\n return colorMap[status] || \"text-purple-600\";\n}","export function beautifyString(str: string): string {\n if (!str) return '';\n\n return str\n .replace(/_/g, ' ')\n .toLowerCase()\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nexport function capitalizeFirst(str: string): string {\n if (!str) return '';\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\n}\n\nexport function toSnakeCase(str: string): string {\n if (!str) return '';\n return str\n .replace(/\\s+/g, '_')\n .toLowerCase();\n}\n\nexport function toCamelCase(str: string): string {\n if (!str) return '';\n return str\n .toLowerCase()\n .replace(/[_\\s]+(.)?/g, (_, char) => char ? char.toUpperCase() : '');\n}\n","// MCP (Model Context Protocol) Types\n\nimport { JsonValue, JsonObject } from './flow.types';\n\nexport interface MCPToolParameter {\n name: string;\n type: string;\n description?: string;\n required?: boolean;\n default?: JsonValue;\n enum?: string[];\n min?: number;\n max?: number;\n}\n\nexport interface MCPToolInfo {\n name: string;\n description: string;\n category: string;\n source: string;\n node_subtype?: string;\n parameters: {\n type: string;\n properties?: JsonObject;\n } | MCPToolParameter[];\n metadata?: JsonObject;\n}\n\nexport interface MCPToolsResponse {\n tools: MCPToolInfo[];\n categories?: string[];\n total: number;\n skip: number;\n limit: number;\n by_category: Record<string, number>;\n}\n\nexport interface ExecuteMCPToolRequest {\n tool_name: string;\n parameters?: Record<string, JsonValue>;\n context?: JsonObject;\n}\n\nexport interface ExecuteMCPToolResponse {\n success: boolean;\n result?: JsonValue;\n error?: string;\n execution_time?: number;\n metadata?: JsonObject;\n}\n\nexport interface MCPNodeValidationRequest {\n node_type: string;\n node_subtype: string;\n parameters: Record<string, JsonValue>;\n connections?: {\n inputs: string[];\n outputs: string[];\n };\n}\n\nexport interface MCPNodeValidationResponse {\n valid: boolean;\n errors?: string[];\n warnings?: string[];\n suggestions?: string[];\n}\n\nexport interface MCPExportResponse {\n version: string;\n tools: MCPToolInfo[];\n metadata: {\n exported_at: string;\n total_tools: number;\n categories: string[];\n };\n}\n\n// Mapping de categorias MCP para tipos de nós existentes\nexport const MCPCategoryToNodeType: Record<string, string> = {\n 'Communication': 'action',\n 'Data': 'action',\n 'AI': 'ai_agent',\n 'Logic': 'condition',\n 'Integration': 'action',\n 'Automation': 'action',\n 'Trigger': 'trigger',\n};\n\n// Mapping de subtipos MCP para ícones\nexport const MCPSubtypeToIcon: Record<string, string> = {\n 'send_email': 'Mail',\n 'send_sms': 'MessageSquare',\n 'send_whatsapp': 'MessageSquare',\n 'database_query': 'Database',\n 'api_request': 'Globe',\n 'file_operation': 'File',\n 'ai_completion': 'Brain',\n 'ai_analysis': 'Brain',\n 'conditional': 'GitBranch',\n 'loop': 'RefreshCw',\n 'webhook': 'Globe',\n 'schedule': 'Clock',\n 'manual': 'Zap',\n};","import { \n WebhookEvent, \n WebhookEventMetrics, \n WebhookSubscription, \n WebhookEventType, \n WebhookEventStatus,\n WebhookEventMetadata,\n WebhookEventErrorDetails\n} from '@/domain/entities/WebhookEvent';\n\nexport interface WebhookEventResponse {\n id: string;\n event_id: string;\n type: string;\n status: string;\n source: string;\n payload: Record<string, unknown>;\n metadata: Record<string, string | undefined>;\n retry_count: number;\n max_retries: number;\n error?: {\n code: string;\n message: string;\n details?: WebhookEventErrorDetails;\n timestamp: string;\n };\n processed_at?: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface WebhookEventListResponse {\n items?: WebhookEventResponse[];\n events?: WebhookEventResponse[];\n total: number;\n page?: number;\n pageSize?: number;\n hasMore?: boolean;\n}\n\nexport interface WebhookMetricsResponse {\n total: number;\n success: number;\n failed: number;\n pending: number;\n processing: number;\n retrying: number;\n average_processing_time: number;\n success_rate: number;\n failure_rate: number;\n by_type: Record<string, number>;\n by_hour: Array<{\n hour: string;\n count: number;\n success: number;\n failed: number;\n }>;\n}\n\nexport interface WebhookSubscriptionResponse {\n id: string;\n url: string;\n events: string[];\n active: boolean;\n secret?: string;\n headers?: Record<string, string>;\n retry_policy: {\n max_retries: number;\n retry_delay: number;\n backoff_multiplier: number;\n max_retry_delay: number;\n };\n created_at: string;\n updated_at: string;\n}\n\nexport interface WebhookTokenResponse {\n token: string;\n expires_at: string;\n created_at: string;\n}\n\nexport interface WebhookTestRequest {\n url: string;\n event_type: string;\n payload?: Record<string, unknown>;\n headers?: Record<string, string>;\n}\n\nexport interface WebhookTestResponse {\n success: boolean;\n status_code: number;\n response_time: number;\n response_body?: string | Record<string, unknown> | unknown[];\n error?: string;\n}\n\nexport interface WebhookHealthStatus {\n status: 'healthy' | 'degraded' | 'unhealthy';\n uptime: number;\n lastCheck: Date;\n successRate: number;\n averageResponseTime: number;\n activeSubscriptions: number;\n queueSize: number;\n errors: Array<{\n type: string;\n count: number;\n lastOccurrence: Date;\n }>;\n}\n\nexport interface WebhookLogEntry {\n id: string;\n timestamp: Date;\n level: 'info' | 'warning' | 'error' | 'debug';\n message: string;\n eventId?: string;\n subscriptionId?: string;\n metadata?: Record<string, string | number | boolean>;\n}\n\nexport interface WebhookConfiguration {\n enabled: boolean;\n maxRetries: number;\n retryDelay: number;\n timeout: number;\n maxQueueSize: number;\n rateLimitPerMinute: number;\n allowedOrigins: string[];\n signatureHeader: string;\n signatureAlgorithm: 'sha256' | 'sha512';\n}\n\nexport class WebhookEventMapper {\n static toDomain(response: WebhookEventResponse): WebhookEvent {\n if (!response) {\n return WebhookEventMapper.createEmptyEvent();\n }\n \n return {\n id: response.id || '',\n eventId: response.event_id || '',\n type: (response.type as WebhookEventType) || WebhookEventType.MESSAGE_RECEIVED,\n status: (response.status as WebhookEventStatus) || WebhookEventStatus.PENDING,\n source: response.source || 'unknown',\n payload: response.payload || {},\n metadata: (response.metadata as WebhookEventMetadata) || {},\n retryCount: response.retry_count || 0,\n maxRetries: response.max_retries || 3,\n error: response.error ? {\n code: response.error.code,\n message: response.error.message,\n details: response.error.details,\n timestamp: new Date(response.error.timestamp)\n } : undefined,\n processedAt: response.processed_at ? new Date(response.processed_at) : undefined,\n createdAt: response.created_at ? new Date(response.created_at) : new Date(),\n updatedAt: response.updated_at ? new Date(response.updated_at) : new Date()\n };\n }\n\n static createEmptyEvent(): WebhookEvent {\n return {\n id: '',\n eventId: '',\n type: WebhookEventType.MESSAGE_RECEIVED,\n status: WebhookEventStatus.PENDING,\n source: 'unknown',\n payload: {},\n metadata: {},\n retryCount: 0,\n maxRetries: 3,\n error: undefined,\n processedAt: undefined,\n createdAt: new Date(),\n updatedAt: new Date()\n };\n }\n\n static toResponse(event: WebhookEvent): WebhookEventResponse {\n return {\n id: event.id,\n event_id: event.eventId,\n type: event.type,\n status: event.status,\n source: event.source,\n payload: event.payload,\n metadata: event.metadata,\n retry_count: event.retryCount,\n max_retries: event.maxRetries,\n error: event.error ? {\n code: event.error.code,\n message: event.error.message,\n details: event.error.details,\n timestamp: event.error.timestamp.toISOString()\n } : undefined,\n processed_at: event.processedAt?.toISOString(),\n created_at: event.createdAt.toISOString(),\n updated_at: event.updatedAt.toISOString()\n };\n }\n}\n\nexport class WebhookSubscriptionMapper {\n static toDomain(response: WebhookSubscriptionResponse): WebhookSubscription {\n return {\n id: response.id,\n url: response.url,\n events: response.events as WebhookEventType[],\n active: response.active,\n secret: response.secret,\n headers: response.headers,\n retryPolicy: {\n maxRetries: response.retry_policy.max_retries,\n retryDelay: response.retry_policy.retry_delay,\n backoffMultiplier: response.retry_policy.backoff_multiplier,\n maxRetryDelay: response.retry_policy.max_retry_delay\n },\n createdAt: new Date(response.created_at),\n updatedAt: new Date(response.updated_at)\n };\n }\n\n static toResponse(subscription: WebhookSubscription): WebhookSubscriptionResponse {\n return {\n id: subscription.id,\n url: subscription.url,\n events: subscription.events,\n active: subscription.active,\n secret: subscription.secret,\n headers: subscription.headers,\n retry_policy: {\n max_retries: subscription.retryPolicy.maxRetries,\n retry_delay: subscription.retryPolicy.retryDelay,\n backoff_multiplier: subscription.retryPolicy.backoffMultiplier,\n max_retry_delay: subscription.retryPolicy.maxRetryDelay\n },\n created_at: subscription.createdAt.toISOString(),\n updated_at: subscription.updatedAt.toISOString()\n };\n }\n}\n\nexport class WebhookMetricsMapper {\n static toDomain(response: WebhookMetricsResponse): WebhookEventMetrics {\n return {\n total: response.total,\n success: response.success,\n failed: response.failed,\n pending: response.pending,\n processing: response.processing,\n retrying: response.retrying,\n averageProcessingTime: response.average_processing_time,\n successRate: response.success_rate,\n failureRate: response.failure_rate,\n byType: response.by_type,\n byHour: response.by_hour\n };\n }\n}","import * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n\n // Variantes semânticas Acorde\n success: \"border-acorde-success/20 bg-acorde-success/5 text-acorde-success\",\n warning: \"border-acorde-warning/20 bg-acorde-warning/5 text-acorde-warning\",\n error: \"border-acorde-error/20 bg-acorde-error/5 text-acorde-error\",\n info: \"border-acorde-info/20 bg-acorde-info/5 text-acorde-info\",\n acorde: \"border-acorde-primary/20 bg-acorde-primary/5 text-acorde-primary\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst AlertIcons = {\n success: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 12l2 2 4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n ),\n warning: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ),\n error: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n ),\n info: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <path d=\"M12 16v-4M12 8h.01\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ),\n}\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants> & {\n icon?: React.ReactNode\n }\n>(({ className, variant, icon, children, ...props }, ref) => {\n // Auto-detect icon based on variant\n const defaultIcon = variant && AlertIcons[variant as keyof typeof AlertIcons]\n const displayIcon = icon !== undefined ? icon : defaultIcon\n\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n >\n <div className=\"flex gap-3 items-start\">\n {displayIcon && (\n <div className=\"flex-shrink-0 mt-0.5\">\n {displayIcon}\n </div>\n )}\n <div className=\"flex-1\">\n {children}\n </div>\n </div>\n </ToastPrimitives.Root>\n )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"icon-size\" />\n </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n}\n","import { useToast } from \"./use-toast\"\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"./toast\"\n\nexport function Toaster() {\n const { toasts } = useToast()\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription className=\"whitespace-pre-line\">{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n )\n })}\n <ToastViewport />\n </ToastProvider>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/utils/styles.ts","../src/components/ui/accordion.tsx","../src/components/ui/alert.tsx","../src/components/ui/button.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/calendar.tsx","../src/components/ui/card.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/chat-layout.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/dialog.tsx","../src/components/ui/command.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/dialog-maximizable.tsx","../src/components/ui/drawer.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/label.tsx","../src/components/ui/form.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/input.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/menubar.tsx","../src/components/ui/message-bubble.tsx","../src/components/ui/message-input.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/popover.tsx","../src/components/ui/progress.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/select.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/use-mobile.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/sidebar-custom.tsx","../src/components/ui/slider.tsx","../src/components/ui/switch.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/components/ui/textarea.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/tooltip-button.tsx","../src/components/ui/use-toast.ts","../src/components/EnsureTenant.tsx","../src/components/auth/SSOLoadingOverlay.tsx","../src/hooks/useSidebarState.ts","../src/components/ControlSidebar.tsx","../src/components/MainLayout.tsx","../src/components/ProtectedRoute.tsx","../src/components/FilterBar.tsx","../src/components/GenericFilterBar.tsx","../src/components/PageHeader.tsx","../src/components/PaginationControls.tsx","../src/components/RichTextEditor.tsx","../src/components/RichTextRenderer.tsx","../src/components/StandardPageLayout.tsx","../src/components/StatusIndicator.tsx","../src/components/ViewToggle.tsx","../src/components/auth/SSOError.tsx","../src/components/auth/SSOLoginButton.tsx","../src/components/webhook/EventInspector.tsx","../src/utils/webhook.utils.ts","../src/components/whatsapp/WebhookConfigPanel.tsx","../src/components/webhook/WebhookConfigModal.tsx","../src/components/webhook/WebhookEventCard.tsx","../src/components/webhook/WebhookFlowLink.tsx","../src/components/webhook/WebhookLogsViewer.tsx","../src/components/webhook/WebhookMetricsChart.tsx","../src/components/webhook/WebhookTestModal.tsx","../src/components/webhook/WebhookTimeline.tsx","../src/components/whatsapp/MessageHistory.tsx","../src/components/whatsapp/QRCodeModal.tsx","../src/components/whatsapp/SendMessageModal.tsx","../src/components/whatsapp/WhatsAppHealthMonitor.tsx","../src/utils/date-formatter.ts","../src/utils/node-styling.utils.ts","../src/utils/string-formatter.ts","../src/types/mcp.types.ts","../src/types/webhook.types.ts","../src/components/ui/toast.tsx","../src/components/ui/toaster.tsx"],"names":["React","jsxs","jsx","React2","cva","React3","React4","React5","React6","count","React7","Slot","ChevronRight","React8","React9","api","React10","Fragment","React11","StatusBadge","React12","CollapsibleTrigger","CollapsibleContent","React13","React14","CommandPrimitive","React15","Check","React16","DialogPrimitive2","X","DrawerPrimitive","React17","React18","Circle","Label","React19","React20","React21","React22","React23","React24","Icon","formatTime","useState","useEffect","React26","ChevronDown","React27","ChevronLeft","MoreHorizontal","React28","React29","RadioGroup","React30","React31","Separator","React32","SheetPrimitive","React33","React34","Tooltip","React35","style","open","React38","React39","React40","React41","React42","React43","React44","toast","props","React46","error","useMemo","Clock","Link","Shield","Bot","useLocation","Loader2","Search","User","AlertCircle","Building2","UserCheck","ChevronUp","useRef","children","useCallback","scrollLeft","Image","editor","List","Link2","ImageIcon","memo","Key","Users","RefreshCw","CheckCircle","Info","Code","Database","AlertTriangle","WebhookEventStatus","format","ptBR","webhookService","useMutation","Plus","CheckCircle2","XCircle","MessageSquare","Phone","Workflow","MoreVertical","useQuery","formatDistanceToNow","Timer","Activity","FileJson","Zap","ExternalLink","ArrowRight","Filter","Trash2","Copy","formatEventType","ResponsiveContainer","Legend","WebhookEventType","Send","Download","Wifi","QrCode","MessageCircle","FileText","WifiOff","BarChart3","React63","AlertIcons"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"icon-size shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground border-border\",\n destructive: \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n\n // Variantes semânticas Acorde\n success: \"border-acorde-success/20 bg-acorde-success/5 text-acorde-success [&>svg]:text-acorde-success\",\n warning: \"border-acorde-warning/20 bg-acorde-warning/5 text-acorde-warning [&>svg]:text-acorde-warning\",\n error: \"border-acorde-error/20 bg-acorde-error/5 text-acorde-error [&>svg]:text-acorde-error\",\n info: \"border-acorde-info/20 bg-acorde-info/5 text-acorde-info [&>svg]:text-acorde-info\",\n acorde: \"border-acorde-primary/20 bg-acorde-primary/5 text-acorde-primary [&>svg]:text-acorde-primary\",\n },\n size: {\n sm: \"px-3 py-2 text-xs\",\n default: \"px-4 py-3 text-sm\",\n lg: \"px-6 py-4 text-base\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst AlertIcons = {\n success: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 12l2 2 4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n ),\n warning: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ),\n error: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n ),\n info: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <path d=\"M12 16v-4M12 8h.01\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ),\n}\n\nconst CloseIcon = () => (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n)\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n icon?: React.ReactNode\n closable?: boolean\n onClose?: () => void\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant, size, icon, closable, onClose, children, ...props }, ref) => {\n // Auto-detect icon based on variant\n const defaultIcon = variant && AlertIcons[variant as keyof typeof AlertIcons]\n const displayIcon = icon !== undefined ? icon : defaultIcon\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant, size }), className)}\n {...props}\n >\n <div className=\"flex gap-3\">\n {displayIcon && (\n <div className=\"flex-shrink-0 mt-0.5\">\n {displayIcon}\n </div>\n )}\n <div className=\"flex-1\">\n {children}\n </div>\n {closable && onClose && (\n <button\n onClick={onClose}\n className=\"flex-shrink-0 p-1 rounded-md hover:bg-black/10 dark:hover:bg-white/10 transition-colors\"\n aria-label=\"Close alert\"\n >\n <CloseIcon />\n </button>\n )}\n </div>\n </div>\n )\n }\n)\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\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/styles\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n primary:\n \"bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n\n \"primary-acorde\": \"bg-acorde-primary text-white hover:bg-acorde-primary/90 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-acorde-primary\",\n \"secondary-acorde\": \"bg-acorde-secondary text-white hover:bg-acorde-secondary/90 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-acorde-secondary\",\n \"success\": \"bg-green-500 text-white hover:bg-green-600 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-green-500\",\n \"warning\": \"bg-amber-500 text-white hover:bg-amber-600 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-amber-500\",\n \"error\": \"bg-red-500 text-white hover:bg-red-600 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-red-500\",\n \"info\": \"bg-blue-500 text-white hover:bg-blue-600 shadow-sm hover:shadow-md active:scale-[0.98] focus-visible:ring-blue-500\",\n\n \"outline-acorde\": \"border-2 border-acorde-primary text-acorde-primary bg-transparent hover:bg-acorde-primary hover:text-white focus-visible:ring-acorde-primary\",\n \"outline-success\": \"border-2 border-green-500 text-green-500 bg-transparent hover:bg-green-500 hover:text-white focus-visible:ring-green-500\",\n \"outline-warning\": \"border-2 border-amber-500 text-amber-500 bg-transparent hover:bg-amber-500 hover:text-white focus-visible:ring-amber-500\",\n \"outline-error\": \"border-2 border-red-500 text-red-500 bg-transparent hover:bg-red-500 hover:text-white focus-visible:ring-red-500\",\n },\n size: {\n xs: \"h-8 rounded px-2 text-xs\",\n sm: \"h-9 rounded-md px-3\",\n default: \"h-10 px-4 py-2\",\n lg: \"h-11 rounded-md px-8\",\n xl: \"h-12 rounded-lg px-10 text-base\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n loading?: boolean\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n}\n\nconst LoadingSpinner = () => (\n <svg className=\"icon-size animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n)\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props\n }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n const isDisabled = disabled || loading\n\n if (asChild) {\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {children}\n </Comp>\n )\n }\n\n return (\n <Comp\n className={`${cn(buttonVariants({ variant, size, className }))}`}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {loading && <LoadingSpinner />}\n {!loading && leftIcon && <span className=\"mr-1\">{leftIcon}</span>}\n {children}\n {!loading && rightIcon && <span className=\"ml-1\">{rightIcon}</span>}\n </Comp>\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"../../utils/styles\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className\n )}\n {...props}\n />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","import * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nconst AspectRatio = AspectRatioPrimitive.Root\n\nexport { AspectRatio }\n","import * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive: \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground border-border hover:bg-accent hover:text-accent-foreground\",\n\n // Variantes semânticas Acorde\n success: \"border-transparent bg-acorde-success text-white hover:bg-acorde-success/90 shadow-sm\",\n warning: \"border-transparent bg-acorde-warning text-white hover:bg-acorde-warning/90 shadow-sm\",\n error: \"border-transparent bg-acorde-error text-white hover:bg-acorde-error/90 shadow-sm\",\n info: \"border-transparent bg-acorde-info text-white hover:bg-acorde-info/90 shadow-sm\",\n\n // Variantes Acorde\n \"primary-acorde\": \"border-transparent bg-acorde-primary text-white hover:bg-acorde-primary/90 shadow-sm\",\n \"secondary-acorde\": \"border-transparent bg-acorde-secondary text-white hover:bg-acorde-secondary/90 shadow-sm\",\n\n // Variantes outline semânticas\n \"outline-success\": \"border-acorde-success text-acorde-success bg-acorde-success/10 hover:bg-acorde-success/20\",\n \"outline-warning\": \"border-acorde-warning text-acorde-warning bg-acorde-warning/10 hover:bg-acorde-warning/20\",\n \"outline-error\": \"border-acorde-error text-acorde-error bg-acorde-error/10 hover:bg-acorde-error/20\",\n \"outline-info\": \"border-acorde-info text-acorde-info bg-acorde-info/10 hover:bg-acorde-info/20\",\n \"outline-acorde\": \"border-acorde-primary text-acorde-primary bg-acorde-primary/10 hover:bg-acorde-primary/20\",\n\n // Variantes ghost\n \"ghost-success\": \"text-acorde-success hover:bg-acorde-success/10\",\n \"ghost-warning\": \"text-acorde-warning hover:bg-acorde-warning/10\",\n \"ghost-error\": \"text-acorde-error hover:bg-acorde-error/10\",\n \"ghost-info\": \"text-acorde-info hover:bg-acorde-info/10\",\n },\n size: {\n sm: \"px-2 py-0.5 text-[10px] rounded-md\",\n default: \"px-2.5 py-0.5 text-xs rounded-full\",\n lg: \"px-3 py-1 text-sm rounded-full\",\n xl: \"px-4 py-1.5 text-base rounded-full\",\n },\n interactive: {\n none: \"\",\n clickable: \"cursor-pointer hover:scale-105 active:scale-95\",\n removable: \"pr-1\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n interactive: \"none\",\n },\n }\n)\n\nconst RemoveIcon = ({ onClick }: { onClick: () => void }) => (\n <button\n onClick={onClick}\n className=\"ml-1 rounded-full p-0.5 hover:bg-black/20 dark:hover:bg-white/20 transition-colors\"\n aria-label=\"Remove badge\"\n >\n <svg className=\"h-3 w-3\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </button>\n)\n\nconst StatusDot = ({ variant }: { variant: string }) => {\n const dotColor = variant.includes(\"success\") ? \"bg-acorde-success\" :\n variant.includes(\"warning\") ? \"bg-acorde-warning\" :\n variant.includes(\"error\") ? \"bg-acorde-error\" :\n variant.includes(\"info\") ? \"bg-acorde-info\" :\n variant.includes(\"acorde\") ? \"bg-acorde-primary\" :\n \"bg-muted-foreground\"\n\n return <span className={`w-2 h-2 rounded-full ${dotColor} mr-1`} />\n}\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n asChild?: boolean\n icon?: React.ReactNode\n onRemove?: () => void\n removable?: boolean\n dot?: boolean\n}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n ({\n className,\n variant,\n size,\n interactive,\n asChild = false,\n icon,\n onRemove,\n removable,\n dot,\n children,\n onClick,\n ...props\n }, ref) => {\n const Comp = asChild ? \"span\" : \"div\"\n\n // Auto-detect interactive mode\n const resolvedInteractive =\n onRemove || removable ? \"removable\" :\n onClick ? \"clickable\" :\n interactive || \"none\"\n\n return (\n <Comp\n className={cn(badgeVariants({ variant, size, interactive: resolvedInteractive, className }))}\n ref={ref}\n onClick={onClick}\n {...props}\n >\n {dot && <StatusDot variant={variant || \"default\"} />}\n {icon && <span className=\"mr-1\">{icon}</span>}\n {children}\n {(onRemove || removable) && onRemove && <RemoveIcon onClick={onRemove} />}\n </Comp>\n )\n }\n)\nBadge.displayName = \"Badge\"\n\n// Badge com contador\nexport const CountBadge = React.forwardRef<HTMLDivElement, BadgeProps & {\n count: number\n max?: number\n showZero?: boolean\n}>(\n ({ count, max = 99, showZero = false, ...props }, ref) => {\n if (count === 0 && !showZero) return null\n\n const displayCount = count > max ? `${max}+` : count.toString()\n\n return (\n <Badge\n {...props}\n ref={ref}\n size=\"sm\"\n className=\"min-w-[20px] h-5 px-1.5 text-[10px] font-bold justify-center\"\n >\n {displayCount}\n </Badge>\n )\n }\n)\nCountBadge.displayName = \"CountBadge\"\n\n// Badge de status\nexport const StatusBadge = React.forwardRef<HTMLDivElement, BadgeProps & {\n status: \"online\" | \"offline\" | \"away\" | \"busy\" | \"idle\"\n}>(\n ({ status, ...props }, ref) => {\n const statusConfig = {\n online: { variant: \"success\" as const, text: \"Online\" },\n offline: { variant: \"outline\" as const, text: \"Offline\" },\n away: { variant: \"warning\" as const, text: \"Away\" },\n busy: { variant: \"error\" as const, text: \"Busy\" },\n idle: { variant: \"outline-warning\" as const, text: \"Idle\" },\n }\n\n const config = statusConfig[status]\n\n return (\n <Badge\n {...props}\n ref={ref}\n variant={config.variant}\n dot\n >\n {config.text}\n </Badge>\n )\n }\n)\nStatusBadge.displayName = \"StatusBadge\"\n\n// Badge notification\nexport const NotificationBadge = React.forwardRef<HTMLDivElement, BadgeProps & {\n position?: \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\"\n}>(\n ({ position = \"top-right\", className, ...props }, ref) => {\n const positionClasses = {\n \"top-right\": \"-top-1 -right-1\",\n \"top-left\": \"-top-1 -left-1\",\n \"bottom-right\": \"-bottom-1 -right-1\",\n \"bottom-left\": \"-bottom-1 -left-1\",\n }\n\n return (\n <Badge\n {...props}\n ref={ref}\n size=\"sm\"\n className={cn(\n \"absolute rounded-full min-w-[18px] h-[18px] px-1.5 text-[10px] font-bold justify-center\",\n positionClasses[position],\n className\n )}\n />\n )\n }\n)\nNotificationBadge.displayName = \"NotificationBadge\"\n\n// Badge Group\nexport const BadgeGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement> & {\n spacing?: \"sm\" | \"md\" | \"lg\"\n}>(\n ({ className, spacing = \"md\", ...props }, ref) => {\n const spacingClasses = {\n sm: \"gap-1\",\n md: \"gap-2\",\n lg: \"gap-3\",\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-wrap items-center\", spacingClasses[spacing], className)}\n {...props}\n />\n )\n }\n)\nBadgeGroup.displayName = \"BadgeGroup\"\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumb.displayName = \"Breadcrumb\"\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\n className\n )}\n {...props}\n />\n))\nBreadcrumbList.displayName = \"BreadcrumbList\"\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n))\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n )\n})\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n))\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"icon-size\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\"\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { cn } from \"../../utils/styles\";\nimport { buttonVariants } from \"@/components/ui/button\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\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: cn(\n buttonVariants({ variant: \"outline\" }),\n \"h-7 w-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-y-1\",\n head_row: \"flex\",\n head_cell:\n \"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-range-end)]:rounded-r-md [&: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\",\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\"\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\",\n day_today: \"bg-accent text-accent-foreground\",\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=\"icon-size\" />,\n IconRight: () => <ChevronRight className=\"icon-size\" />,\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\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/styles\"\n\nconst cardVariants = cva(\n \"rounded-lg border bg-card transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border-border shadow-sm\",\n elevated: \"border-border shadow-md hover:shadow-lg\",\n outlined: \"border-2 border-border shadow-none\",\n ghost: \"border-transparent shadow-none bg-transparent\",\n success: \"border-green-200 bg-green-50 dark:border-green-800 dark:bg-green-950/20 shadow-sm\",\n warning: \"border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950/20 shadow-sm\",\n error: \"border-red-200 bg-red-50 dark:border-red-800 dark:bg-red-950/20 shadow-sm\",\n info: \"border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950/20 shadow-sm\",\n acorde: \"border-acorde-primary/20 bg-gradient-to-br from-background to-acorde-primary/5 shadow-md\",\n },\n size: {\n sm: \"p-4\",\n default: \"p-6\",\n lg: \"p-8\",\n xl: \"p-10\",\n },\n elevation: {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n \"2xl\": \"shadow-2xl\",\n },\n interactive: {\n none: \"\",\n hover: \"hover:shadow-lg hover:-translate-y-1 cursor-pointer\",\n clickable: \"hover:shadow-lg hover:-translate-y-1 cursor-pointer active:scale-[0.98]\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n elevation: \"sm\",\n interactive: \"none\",\n },\n }\n)\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n asChild?: boolean\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, size, elevation, interactive, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n return (\n <Comp\n ref={ref}\n className={cn(cardVariants({ variant, size, elevation, interactive, className }))}\n {...props}\n />\n )\n }\n)\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement> & {\n variant?: \"default\" | \"accent\" | \"minimal\"\n}>(\n ({ className, variant = \"default\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col space-y-1.5\",\n {\n \"p-6\": variant === \"default\",\n \"p-6 border-b bg-muted/50\": variant === \"accent\",\n \"p-4\": variant === \"minimal\",\n },\n className\n )}\n {...props}\n />\n )\n)\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement> & {\n level?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\"\n size?: \"sm\" | \"default\" | \"lg\" | \"xl\"\n}>(\n ({ className, level = \"h3\", size = \"default\", ...props }, ref) => {\n const Comp = level\n return (\n <Comp\n ref={ref}\n className={cn(\n \"font-semibold leading-none tracking-tight\",\n {\n \"text-lg\": size === \"sm\",\n \"text-2xl\": size === \"default\",\n \"text-3xl\": size === \"lg\",\n \"text-4xl\": size === \"xl\",\n },\n className\n )}\n {...props}\n />\n )\n }\n)\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement> & {\n size?: \"sm\" | \"default\" | \"lg\"\n}>(\n ({ className, size = \"default\", ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\n \"text-muted-foreground\",\n {\n \"text-xs\": size === \"sm\",\n \"text-sm\": size === \"default\",\n \"text-base\": size === \"lg\",\n },\n className\n )}\n {...props}\n />\n )\n)\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement> & {\n noPadding?: boolean\n}>(\n ({ className, noPadding = false, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"\" : \"p-6 pt-0\",\n className\n )}\n {...props}\n />\n )\n)\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement> & {\n variant?: \"default\" | \"accent\" | \"minimal\"\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\"\n}>(\n ({ className, variant = \"default\", justify = \"start\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center\",\n {\n \"p-6 pt-0\": variant === \"default\",\n \"p-6 pt-0 border-t bg-muted/50\": variant === \"accent\",\n \"p-4 pt-0\": variant === \"minimal\",\n },\n {\n \"justify-start\": justify === \"start\",\n \"justify-center\": justify === \"center\",\n \"justify-end\": justify === \"end\",\n \"justify-between\": justify === \"between\",\n \"justify-around\": justify === \"around\",\n },\n className\n )}\n {...props}\n />\n )\n)\nCardFooter.displayName = \"CardFooter\"\n\nexport const CardWithIcon = React.forwardRef<HTMLDivElement, CardProps & {\n icon?: React.ReactNode\n iconPosition?: \"top\" | \"side\"\n}>(\n ({ icon, iconPosition = \"top\", children, ...props }, ref) => (\n <Card {...props} ref={ref}>\n {icon && iconPosition === \"top\" && (\n <>\n <div className=\"flex justify-center mb-4\">\n <div className=\"p-3 rounded-full bg-primary/10 text-primary\">\n {icon}\n </div>\n </div>\n {children}\n </>\n )}\n {icon && iconPosition === \"side\" && (\n <div className=\"flex items-start gap-4\">\n <div className=\"p-2 rounded-lg bg-primary/10 text-primary flex-shrink-0\">\n {icon}\n </div>\n <div className=\"flex-1\">{children}</div>\n </div>\n )}\n {!icon && children}\n </Card>\n )\n)\nCardWithIcon.displayName = \"CardWithIcon\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * 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/styles\"\nimport { Button } from \"@/components/ui/button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nconst Carousel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) {\n return\n }\n\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) {\n return\n }\n\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) {\n return\n }\n\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 ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n }\n)\nCarousel.displayName = \"Carousel\"\n\nconst CarouselContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n})\nCarouselContent.displayName = \"CarouselContent\"\n\nconst CarouselItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n})\nCarouselItem.displayName = \"CarouselItem\"\n\nconst CarouselPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-left-12 top-1/2 -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 className=\"icon-size\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n})\nCarouselPrevious.displayName = \"CarouselPrevious\"\n\nconst CarouselNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight className=\"icon-size\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n})\nCarouselNext.displayName = \"CarouselNext\"\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","import * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"../../utils/styles\";\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\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\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});\nChartContainer.displayName = \"Chart\";\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, itemConfig]) => itemConfig.theme || itemConfig.color\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n 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\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [\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 ref={ref}\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background 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, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\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=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n);\nChartTooltipContent.displayName = \"ChartTooltip\";\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean;\n nameKey?: string;\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\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);\nChartLegendContent.displayName = \"ChartLegend\";\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","import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n","import React from 'react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/utils/styles';\nimport { MoreVertical, Phone, Video, Info } from 'lucide-react';\n\ninterface ChatUser {\n id: string;\n name: string;\n avatar?: string;\n status: 'online' | 'offline' | 'away' | 'busy';\n lastSeen?: Date;\n}\n\ninterface ChatHeaderProps {\n user: ChatUser;\n title?: string;\n subtitle?: string;\n onCallClick?: () => void;\n onVideoClick?: () => void;\n onInfoClick?: () => void;\n onMenuClick?: () => void;\n className?: string;\n}\n\ninterface ChatContainerProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface StatusBadgeProps {\n status: ChatUser['status'];\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst StatusBadge: React.FC<StatusBadgeProps> = ({ status, size = 'sm' }) => {\n const statusConfig = {\n online: { color: 'bg-green-500', label: 'Online' },\n offline: { color: 'bg-gray-400', label: 'Offline' },\n away: { color: 'bg-yellow-500', label: 'Ausente' },\n busy: { color: 'bg-red-500', label: 'Ocupado' }\n };\n\n const config = statusConfig[status];\n const sizeClasses = {\n sm: 'w-2 h-2',\n md: 'w-3 h-3',\n lg: 'w-4 h-4'\n };\n\n return (\n <div className=\"relative\">\n <div\n className={cn(\n \"rounded-full border-2 border-background\",\n config.color,\n sizeClasses[size]\n )}\n title={config.label}\n />\n </div>\n );\n};\n\nexport const ChatHeader: React.FC<ChatHeaderProps> = ({\n user,\n title,\n subtitle,\n onCallClick,\n onVideoClick,\n onInfoClick,\n onMenuClick,\n className\n}) => {\n const formatLastSeen = (date?: Date) => {\n if (!date) return null;\n if (user.status === 'online') return 'Online';\n\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMins = Math.floor(diffMs / (1000 * 60));\n const diffHours = Math.floor(diffMins / 60);\n const diffDays = Math.floor(diffHours / 24);\n\n if (diffMins < 1) return 'Visto agora há pouco';\n if (diffMins < 60) return `Visto ${diffMins}m atrás`;\n if (diffHours < 24) return `Visto ${diffHours}h atrás`;\n if (diffDays < 7) return `Visto ${diffDays}d atrás`;\n\n return `Visto em ${date.toLocaleDateString('pt-BR')}`;\n };\n\n return (\n <CardHeader variant=\"accent\" className={cn(\"border-b\", className)}>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"relative\">\n <Avatar className=\"h-10 w-10\">\n <AvatarImage src={user.avatar} />\n <AvatarFallback>{user.name.slice(0, 2).toUpperCase()}</AvatarFallback>\n </Avatar>\n <div className=\"absolute -bottom-1 -right-1\">\n <StatusBadge status={user.status} />\n </div>\n </div>\n <div className=\"flex-1 min-w-0\">\n <CardTitle className=\"truncate text-base\">\n {title || user.name}\n </CardTitle>\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <span className=\"truncate\">\n {subtitle || formatLastSeen(user.lastSeen)}\n </span>\n </div>\n </div>\n </div>\n\n {/* Action buttons */}\n <div className=\"flex items-center gap-1\">\n {onCallClick && (\n <Button variant=\"ghost\" size=\"icon\" onClick={onCallClick}>\n <Phone className=\"icon-size\" />\n </Button>\n )}\n {onVideoClick && (\n <Button variant=\"ghost\" size=\"icon\" onClick={onVideoClick}>\n <Video className=\"icon-size\" />\n </Button>\n )}\n {onInfoClick && (\n <Button variant=\"ghost\" size=\"icon\" onClick={onInfoClick}>\n <Info className=\"icon-size\" />\n </Button>\n )}\n {onMenuClick && (\n <Button variant=\"ghost\" size=\"icon\" onClick={onMenuClick}>\n <MoreVertical className=\"icon-size\" />\n </Button>\n )}\n </div>\n </div>\n </CardHeader>\n );\n};\n\nexport const ChatContainer: React.FC<ChatContainerProps> = ({\n children,\n className\n}) => {\n return (\n <Card variant=\"elevated\" className={cn(\"flex flex-col h-full\", className)}>\n {children}\n </Card>\n );\n};\n\nexport const ChatMessages: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <CardContent className={cn(\"flex-1 overflow-hidden p-0\", className)}>\n <ScrollArea className=\"h-full\">\n <div className=\"p-4\">\n {children}\n </div>\n </ScrollArea>\n </CardContent>\n );\n};\n\nexport const ChatInput: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <div className={cn(\"border-t p-4 bg-background\", className)}>\n {children}\n </div>\n );\n};\n\n// Componente completo de layout\ninterface ChatLayoutProps {\n user: ChatUser;\n title?: string;\n subtitle?: string;\n messages: React.ReactNode;\n input: React.ReactNode;\n onCallClick?: () => void;\n onVideoClick?: () => void;\n onInfoClick?: () => void;\n onMenuClick?: () => void;\n className?: string;\n}\n\nexport const ChatLayout: React.FC<ChatLayoutProps> = ({\n user,\n title,\n subtitle,\n messages,\n input,\n onCallClick,\n onVideoClick,\n onInfoClick,\n onMenuClick,\n className\n}) => {\n return (\n <ChatContainer className={className}>\n <ChatHeader\n user={user}\n title={title}\n subtitle={subtitle}\n onCallClick={onCallClick}\n onVideoClick={onVideoClick}\n onInfoClick={onInfoClick}\n onMenuClick={onMenuClick}\n />\n <ChatMessages>\n {messages}\n </ChatMessages>\n <ChatInput>\n {input}\n </ChatInput>\n </ChatContainer>\n );\n};","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport {Check} from \"lucide-react\"\n\nimport {cn} from \"../../utils/styles\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer w-4 h-4 icon-size shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"icon-size w-4 h-4 \"/>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"icon-size\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","import * as React from \"react\"\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { Search } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\nimport { Dialog, DialogContent } from \"@/components/ui/dialog\"\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\ntype CommandDialogProps = DialogProps;\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 icon-size shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","import * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst ContextMenu = ContextMenuPrimitive.Root\n\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger\n\nconst ContextMenuGroup = ContextMenuPrimitive.Group\n\nconst ContextMenuPortal = ContextMenuPrimitive.Portal\n\nconst ContextMenuSub = ContextMenuPrimitive.Sub\n\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto icon-size\" />\n </ContextMenuPrimitive.SubTrigger>\n))\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n))\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Check className=\"icon-size\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n))\nContextMenuCheckboxItem.displayName =\n ContextMenuPrimitive.CheckboxItem.displayName\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n))\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n))\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName\n\nconst ContextMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nContextMenuShortcut.displayName = \"ContextMenuShortcut\"\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","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X, Maximize2, Minimize2 } from \"lucide-react\"\nimport { cn } from \"../../utils/styles\"\nimport { Button } from \"./button\"\n\ninterface DialogMaximizableContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n onMaximizeChange?: (maximized: boolean) => void;\n isMaximized?: boolean;\n}\n\nconst DialogMaximizableContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogMaximizableContentProps\n>(({ className, children, onMaximizeChange, isMaximized = false, ...props }, ref) => (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay \n className=\"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\"\n />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 flex flex-col w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n isMaximized \n ? \"max-w-full max-h-full h-screen w-screen m-0 rounded-none\" \n : \"max-w-lg sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <div className=\"absolute right-4 top-4 flex items-center gap-1\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => onMaximizeChange?.(!isMaximized)}\n className=\"h-8 w-8 rounded-sm opacity-70 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n >\n {isMaximized ? (\n <Minimize2 className=\"icon-size\" />\n ) : (\n <Maximize2 className=\"icon-size\" />\n )}\n <span className=\"sr-only\">{isMaximized ? 'Minimizar' : 'Maximizar'}</span>\n </Button>\n <DialogPrimitive.Close className=\"h-8 w-8 rounded-sm opacity-70 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 inline-flex items-center justify-center\">\n <X className=\"icon-size\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n))\nDialogMaximizableContent.displayName = \"DialogMaximizableContent\"\n\nexport { DialogMaximizableContent }","import * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Drawer = ({\n shouldScaleBackground = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n {...props}\n />\n)\nDrawer.displayName = \"Drawer\"\n\nconst DrawerTrigger = DrawerPrimitive.Trigger\n\nconst DrawerPortal = DrawerPrimitive.Portal\n\nconst DrawerClose = DrawerPrimitive.Close\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\n {...props}\n />\n))\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\n className\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n))\nDrawerContent.displayName = \"DrawerContent\"\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n)\nDrawerHeader.displayName = \"DrawerHeader\"\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n)\nDrawerFooter.displayName = \"DrawerFooter\"\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","import * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto icon-size\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"icon-size\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\"\n\nimport { cn } from \"../../utils/styles\"\nimport { Label } from \"@/components/ui/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n const value = React.useMemo(() => ({ name: props.name }), [props.name]);\n \n return (\n <FormFieldContext.Provider value={value}>\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, formState } = useFormContext()\n\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\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId()\n const value = React.useMemo(() => ({ id }), [id])\n\n return (\n <FormItemContext.Provider value={value}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n )\n})\nFormItem.displayName = \"FormItem\"\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n})\nFormLabel.displayName = \"FormLabel\"\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n})\nFormControl.displayName = \"FormControl\"\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n})\nFormDescription.displayName = \"FormDescription\"\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message) : children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-sm font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n )\n})\nFormMessage.displayName = \"FormMessage\"\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","import * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst HoverCard = HoverCardPrimitive.Root\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst inputVariants = cva(\n \"flex h-10 w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border-input focus-visible:ring-ring\",\n success: \"border-green-500 focus-visible:ring-green-500 bg-green-50 dark:bg-green-950/20\",\n error: \"border-red-500 focus-visible:ring-red-500 bg-red-50 dark:bg-red-950/20\",\n warning: \"border-amber-500 focus-visible:ring-amber-500 bg-amber-50 dark:bg-amber-950/20\",\n acorde: \"border-blue-500 focus-visible:ring-blue-500 hover:border-blue-400\",\n },\n size: {\n sm: \"h-8 px-2 text-xs\",\n default: \"h-10 px-3\",\n lg: \"h-12 px-4 text-base\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst ValidationIcon = ({ variant }: { variant: string }) => {\n switch (variant) {\n case \"success\":\n return (\n <svg className=\"icon-size text-green-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 12l2 2 4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n )\n case \"error\":\n return (\n <svg className=\"icon-size text-red-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n )\n case \"warning\":\n return (\n <svg className=\"icon-size text-amber-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n default:\n return null\n }\n}\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n error?: string\n success?: string\n helperText?: string\n showValidationIcon?: boolean\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({\n className,\n variant,\n size,\n type,\n leftIcon,\n rightIcon,\n error,\n success,\n helperText,\n showValidationIcon = true,\n ...props\n }, ref) => {\n const resolvedVariant = error ? \"error\" : success ? \"success\" : variant || \"default\"\n\n return (\n <div className=\"w-full space-y-1\">\n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground\">\n {leftIcon}\n </div>\n )}\n\n <input\n type={type}\n className={cn(\n inputVariants({ variant: resolvedVariant, size, className }),\n leftIcon && \"pl-10\",\n (rightIcon || (showValidationIcon && (error || success))) && \"pr-10\"\n )}\n ref={ref}\n aria-invalid={error ? \"true\" : \"false\"}\n aria-describedby={\n error\n ? `${props.id || 'input'}-error`\n : success\n ? `${props.id || 'input'}-success`\n : helperText\n ? `${props.id || 'input'}-helper`\n : undefined\n }\n {...props}\n />\n\n {(rightIcon || (showValidationIcon && (error || success))) && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2\">\n {rightIcon || (showValidationIcon && (error || success) && (\n <ValidationIcon variant={resolvedVariant} />\n ))}\n </div>\n )}\n </div>\n\n {(error || success || helperText) && (\n <p\n id={\n error\n ? `${props.id || 'input'}-error`\n : success\n ? `${props.id || 'input'}-success`\n : `${props.id || 'input'}-helper`\n }\n className={cn(\n \"text-xs\",\n error && \"text-red-500\",\n success && \"text-green-500\",\n !error && !success && \"text-muted-foreground\"\n )}\n >\n {error || success || helperText}\n </p>\n )}\n </div>\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport const InputWithLabel = React.forwardRef<HTMLInputElement, InputProps & { label?: string }>(\n ({ label, id, ...props }, ref) => {\n const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label\n htmlFor={inputId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n <Input {...props} id={inputId} ref={ref} />\n </div>\n )\n }\n)\nInputWithLabel.displayName = \"InputWithLabel\"\n\nexport { Input }\n","import * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { Dot } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput>\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n))\nInputOTP.displayName = \"InputOTP\"\n\nconst InputOTPGroup = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n))\nInputOTPGroup.displayName = \"InputOTPGroup\"\n\nconst InputOTPSlot = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\n>(({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\",\n isActive && \"z-10 ring-2 ring-ring ring-offset-background\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n )\n})\nInputOTPSlot.displayName = \"InputOTPSlot\"\n\nconst InputOTPSeparator = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Dot />\n </div>\n))\nInputOTPSeparator.displayName = \"InputOTPSeparator\"\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","import * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst MenubarMenu = MenubarPrimitive.Menu\n\nconst MenubarGroup = MenubarPrimitive.Group\n\nconst MenubarPortal = MenubarPrimitive.Portal\n\nconst MenubarSub = MenubarPrimitive.Sub\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup\n\nconst Menubar = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Root\n ref={ref}\n className={cn(\n \"flex h-10 items-center space-x-1 rounded-md border bg-background p-1\",\n className\n )}\n {...props}\n />\n))\nMenubar.displayName = MenubarPrimitive.Root.displayName\n\nconst MenubarTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n className\n )}\n {...props}\n />\n))\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <MenubarPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto icon-size\" />\n </MenubarPrimitive.SubTrigger>\n))\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName\n\nconst MenubarSubContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 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\",\n className\n )}\n {...props}\n />\n))\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName\n\nconst MenubarContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(\n (\n { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\n ref\n ) => (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </MenubarPrimitive.Portal>\n )\n)\nMenubarContent.displayName = MenubarPrimitive.Content.displayName\n\nconst MenubarItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nMenubarItem.displayName = MenubarPrimitive.Item.displayName\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <MenubarPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Check className=\"icon-size\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n))\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName\n\nconst MenubarRadioItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <MenubarPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n))\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName\n\nconst MenubarLabel = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName\n\nconst MenubarSeparator = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName\n\nconst MenubarShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nMenubarShortcut.displayname = \"MenubarShortcut\"\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarSeparator,\n MenubarLabel,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarPortal,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarGroup,\n MenubarSub,\n MenubarShortcut,\n}\n","import React from 'react';\nimport { Card, CardContent } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';\nimport { cn } from '@/utils/styles';\nimport { Clock, User, Bot } from 'lucide-react';\n\ninterface MessageBubbleProps {\n message: string;\n sender: string;\n timestamp: Date;\n isOwn?: boolean;\n senderType?: 'human' | 'ai' | 'system';\n avatar?: string;\n status?: 'sending' | 'sent' | 'delivered' | 'read' | 'error';\n attachments?: Array<{\n id: string;\n type: 'image' | 'file' | 'video' | 'audio';\n url: string;\n name?: string;\n }>;\n className?: string;\n}\n\nconst MessageStatus: React.FC<{ status: MessageBubbleProps['status'] }> = ({ status }) => {\n const statusConfig = {\n sending: { icon: Clock, color: \"text-blue-500\", label: \"Enviando\" },\n sent: { icon: Clock, color: \"text-gray-500\", label: \"Enviado\" },\n delivered: { icon: Clock, color: \"text-green-500\", label: \"Entregue\" },\n read: { icon: Clock, color: \"text-acorde-primary\", label: \"Lido\" },\n error: { icon: Clock, color: \"text-red-500\", label: \"Erro\" }\n };\n\n if (!status || !statusConfig[status]) return null;\n\n const config = statusConfig[status];\n const Icon = config.icon;\n\n return (\n <div className=\"flex items-center gap-1\">\n <Icon className={cn(\"h-3 w-3\", config.color)} />\n <span className=\"sr-only\">{config.label}</span>\n </div>\n );\n};\n\nconst MessageAttachment: React.FC<{ attachment: MessageBubbleProps['attachments'][0] }> = ({ attachment }) => {\n const getAttachmentIcon = () => {\n switch (attachment.type) {\n case 'image':\n return '🖼️';\n case 'video':\n return '🎥';\n case 'audio':\n return '🎵';\n case 'file':\n return '📄';\n default:\n return '📎';\n }\n };\n\n return (\n <div className=\"flex items-center gap-2 p-2 bg-background/10 rounded-md\">\n <span className=\"text-sm\">{getAttachmentIcon()}</span>\n <span className=\"text-sm truncate\">{attachment.name || 'Anexo'}</span>\n </div>\n );\n};\n\nexport const MessageBubble: React.FC<MessageBubbleProps> = ({\n message,\n sender,\n timestamp,\n isOwn = false,\n senderType = 'human',\n avatar,\n status,\n attachments = [],\n className\n}) => {\n const bubbleVariant = isOwn ? 'acorde' : 'outlined';\n const alignment = isOwn ? 'justify-end' : 'justify-start';\n\n const getSenderIcon = () => {\n if (senderType === 'ai') return <Bot className=\"h-3 w-3\" />;\n if (senderType === 'system') return <div className=\"h-3 w-3 bg-current rounded-full\" />;\n return <User className=\"h-3 w-3\" />;\n };\n\n const formatTime = (date: Date) => {\n return date.toLocaleTimeString('pt-BR', {\n hour: '2-digit',\n minute: '2-digit'\n });\n };\n\n return (\n <div className={cn(\"flex mb-3\", alignment, className)}>\n {!isOwn && (\n <Avatar className=\"h-8 w-8 mr-2 mt-1\">\n <AvatarImage src={avatar} />\n <AvatarFallback className=\"text-xs\">\n {sender.slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n )}\n\n <Card\n variant={bubbleVariant}\n size=\"sm\"\n className={cn(\n \"max-w-[70%] transition-all duration-200\",\n isOwn && \"bg-acorde-primary text-white\"\n )}\n >\n <CardContent className=\"p-3\">\n <div className=\"space-y-2\">\n {/* Header com sender e tipo */}\n {!isOwn && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">{sender}</span>\n <Badge\n variant={senderType === 'ai' ? 'primary-acorde' : senderType === 'system' ? 'secondary' : 'outline'}\n size=\"sm\"\n className=\"flex items-center gap-1\"\n >\n {getSenderIcon()}\n <span className=\"text-xs\">\n {senderType === 'ai' ? 'IA' : senderType === 'system' ? 'Sistema' : 'Humano'}\n </span>\n </Badge>\n </div>\n )}\n\n {/* Conteúdo da mensagem */}\n <div className=\"space-y-2\">\n {message && (\n <p className=\"text-sm leading-relaxed whitespace-pre-wrap\">\n {message}\n </p>\n )}\n\n {/* Anexos */}\n {attachments.length > 0 && (\n <div className=\"space-y-2\">\n {attachments.map(attachment => (\n <MessageAttachment key={attachment.id} attachment={attachment} />\n ))}\n </div>\n )}\n </div>\n\n {/* Footer com timestamp e status */}\n <div className={cn(\n \"flex items-center justify-between mt-2 pt-2 border-t text-xs\",\n isOwn\n ? \"border-white/20 text-white/70\"\n : \"border-border text-muted-foreground\"\n )}>\n <span>{formatTime(timestamp)}</span>\n {isOwn && status && <MessageStatus status={status} />}\n </div>\n </div>\n </CardContent>\n </Card>\n\n {isOwn && (\n <Avatar className=\"h-8 w-8 ml-2 mt-1\">\n <AvatarImage src={avatar} />\n <AvatarFallback className=\"text-xs bg-acorde-primary text-white\">\n {sender.slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n )}\n </div>\n );\n};","import React, { useState, useRef, useEffect } from 'react';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport { cn } from '@/utils/styles';\nimport { Send, Paperclip, Smile, Mic, X } from 'lucide-react';\n\ninterface MessageInputProps {\n onSendMessage: (message: string, attachments?: File[]) => void;\n placeholder?: string;\n disabled?: boolean;\n maxLength?: number;\n showAttachments?: boolean;\n showEmoji?: boolean;\n showVoice?: boolean;\n className?: string;\n}\n\ninterface TypingIndicatorProps {\n isTyping: boolean;\n className?: string;\n}\n\nexport const TypingIndicator: React.FC<TypingIndicatorProps> = ({\n isTyping,\n className\n}) => {\n if (!isTyping) return null;\n\n return (\n <div className={cn(\"flex items-center gap-2 text-xs text-muted-foreground\", className)}>\n <div className=\"flex gap-1\">\n <div className=\"w-1 h-1 bg-acorde-primary rounded-full animate-bounce\" />\n <div\n className=\"w-1 h-1 bg-acorde-primary rounded-full animate-bounce\"\n style={{ animationDelay: '0.1s' }}\n />\n <div\n className=\"w-1 h-1 bg-acorde-primary rounded-full animate-bounce\"\n style={{ animationDelay: '0.2s' }}\n />\n </div>\n <span>Digitando...</span>\n </div>\n );\n};\n\nexport const MessageInput: React.FC<MessageInputProps> = ({\n onSendMessage,\n placeholder = \"Digite sua mensagem...\",\n disabled = false,\n maxLength = 4096,\n showAttachments = true,\n showEmoji = false,\n showVoice = false,\n className\n}) => {\n const [message, setMessage] = useState('');\n const [isTyping, setIsTyping] = useState(false);\n const [attachments, setAttachments] = useState<File[]>([]);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n // Auto-resize textarea\n useEffect(() => {\n if (textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;\n }\n }, [message]);\n\n // Typing indicator logic\n useEffect(() => {\n if (message.length > 0) {\n setIsTyping(true);\n const timeout = setTimeout(() => setIsTyping(false), 1000);\n return () => clearTimeout(timeout);\n } else {\n setIsTyping(false);\n }\n }, [message]);\n\n const handleSend = () => {\n if (message.trim() || attachments.length > 0) {\n onSendMessage(message.trim(), attachments);\n setMessage('');\n setAttachments([]);\n setIsTyping(false);\n }\n };\n\n const handleKeyPress = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSend();\n }\n };\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || []);\n setAttachments(prev => [...prev, ...files]);\n };\n\n const removeAttachment = (index: number) => {\n setAttachments(prev => prev.filter((_, i) => i !== index));\n };\n\n const getFileIcon = (file: File) => {\n const type = file.type;\n if (type.startsWith('image/')) return '🖼️';\n if (type.startsWith('video/')) return '🎥';\n if (type.startsWith('audio/')) return '🎵';\n if (type.includes('pdf')) return '📄';\n return '📎';\n };\n\n return (\n <div className={cn(\"space-y-3\", className)}>\n {/* Typing indicator */}\n <TypingIndicator isTyping={isTyping} />\n\n {/* Attachments preview */}\n {attachments.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {attachments.map((file, index) => (\n <Badge\n key={index}\n variant=\"outline\"\n className=\"flex items-center gap-2 max-w-[200px]\"\n >\n <span>{getFileIcon(file)}</span>\n <span className=\"text-xs truncate\">{file.name}</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"icon-size p-0 hover:bg-destructive hover:text-destructive-foreground\"\n onClick={() => removeAttachment(index)}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </Badge>\n ))}\n </div>\n )}\n\n {/* Input area */}\n <div className=\"flex gap-2 items-end\">\n {/* Attachment button */}\n {showAttachments && (\n <>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => fileInputRef.current?.click()}\n disabled={disabled}\n className=\"flex-shrink-0\"\n >\n <Paperclip className=\"icon-size\" />\n </Button>\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n onChange={handleFileSelect}\n className=\"hidden\"\n />\n </>\n )}\n\n {/* Text input */}\n <div className=\"flex-1 relative\">\n <textarea\n ref={textareaRef}\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n onKeyDown={handleKeyPress}\n placeholder={placeholder}\n disabled={disabled}\n maxLength={maxLength}\n className={cn(\n \"w-full min-h-[40px] max-h-[120px] px-3 py-2 text-sm bg-background\",\n \"border border-input rounded-md resize-none\",\n \"placeholder:text-muted-foreground\",\n \"focus:outline-none focus:ring-2 focus:ring-acorde-primary focus:border-acorde-primary\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n )}\n rows={1}\n />\n\n {/* Character count */}\n {maxLength && (\n <div className={cn(\n \"absolute bottom-1 right-2 text-xs pointer-events-none\",\n message.length > maxLength * 0.9 ? \"text-warning\" : \"text-muted-foreground\",\n message.length === maxLength && \"text-destructive\"\n )}>\n {message.length}/{maxLength}\n </div>\n )}\n </div>\n\n {/* Action buttons */}\n <div className=\"flex gap-1\">\n {/* Emoji button */}\n {showEmoji && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled}\n className=\"flex-shrink-0\"\n >\n <Smile className=\"icon-size\" />\n </Button>\n )}\n\n {/* Voice button */}\n {showVoice && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled}\n className=\"flex-shrink-0\"\n >\n <Mic className=\"icon-size\" />\n </Button>\n )}\n\n {/* Send button */}\n <Button\n variant=\"primary-acorde\"\n size=\"icon\"\n onClick={handleSend}\n disabled={disabled || (!message.trim() && attachments.length === 0)}\n className=\"flex-shrink-0\"\n >\n <Send className=\"icon-size\" />\n </Button>\n </div>\n </div>\n </div>\n );\n};","import * as React from \"react\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n))\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"group flex flex-1 list-none items-center justify-center space-x-1\",\n className\n )}\n {...props}\n />\n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\"\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDown\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"left-0 top-0 w-full 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 md:absolute md:w-auto \",\n className\n )}\n {...props}\n />\n))\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n))\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n))\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n}\n","import * as React from \"react\"\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\nimport { ButtonProps, buttonVariants } from \"@/components/ui/button\"\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n)\nPagination.displayName = \"Pagination\"\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n))\nPaginationContent.displayName = \"PaginationContent\"\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n))\nPaginationItem.displayName = \"PaginationItem\"\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">\n\nconst PaginationLink = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )}\n {...props}\n />\n)\nPaginationLink.displayName = \"PaginationLink\"\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"icon-size\" />\n <span>Previous</span>\n </PaginationLink>\n)\nPaginationPrevious.displayName = \"PaginationPrevious\"\n\nconst PaginationNext = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"icon-size\" />\n </PaginationLink>\n)\nPaginationNext.displayName = \"PaginationNext\"\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"icon-size\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n)\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\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 <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n","import * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-4 w-full overflow-hidden rounded-full bg-secondary\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Circle } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square icon-size rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","import { GripVertical } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst ResizablePanelGroup = ({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\n <ResizablePrimitive.PanelGroup\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n)\n\nconst ResizablePanel = ResizablePrimitive.Panel\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) => (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 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=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n)\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"icon-size opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"icon-size\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"icon-size\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <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)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"icon-size\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> { }\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"icon-size\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet, SheetClose,\n SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger\n}\n\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","import { cn } from \"../../utils/styles\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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\",\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { VariantProps, cva } from \"class-variance-authority\"\nimport { PanelLeft } from \"lucide-react\"\n\nimport { useIsMobile } from \"./use-mobile\"\nimport { cn } from \"../../utils/styles\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Separator } from \"./separator\"\nimport { Sheet, SheetContent } 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 SidebarContext = {\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<SidebarContext | 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\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\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\n ? setOpenMobile((open) => !open)\n : 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<SidebarContext>(\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 style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\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-mobile=\"true\"\n className=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden md:block text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] 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)_+_theme(spacing.4))]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n )}\n />\n <div\n className={cn(\n \"duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] 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)_+_theme(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 className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeft />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"main\">\n>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex min-h-svh flex-1 flex-col bg-background\",\n \"peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\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})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n))\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n))\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n))\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\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-none 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\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ 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)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-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))\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\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 ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"rounded-md h-8 flex gap-2 px-2 items-center\", 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 flex-1 max-w-[--skeleton-width]\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring 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 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\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})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import React from 'react';\nimport { \n SidebarMenuSub as OriginalSidebarMenuSub, \n SidebarMenuSubItem as OriginalSidebarMenuSubItem,\n SidebarMenuSubButton as OriginalSidebarMenuSubButton\n} from './sidebar';\nimport { cn } from '../../utils/styles';\nimport './sidebar-custom.css';\n\n// Versão customizada de SidebarMenuSub para submenus aninhados\nexport const CustomSidebarMenuSub = React.forwardRef<\n React.ElementRef<typeof OriginalSidebarMenuSub>,\n React.ComponentPropsWithoutRef<typeof OriginalSidebarMenuSub> & {\n level?: number;\n }\n>(({ className, level = 1, ...props }, ref) => {\n // Aplicar classe específica de nível para tratamento diferenciado no CSS\n const customClass = `sidebar-menu-sub-level-${level}`;\n \n return (\n <OriginalSidebarMenuSub \n ref={ref}\n className={cn('submenu-custom', customClass, className)} \n data-level={level}\n {...props}\n />\n );\n});\nCustomSidebarMenuSub.displayName = 'CustomSidebarMenuSub';\n\n// Versão customizada de SidebarMenuSubItem para melhor layout\nexport const CustomSidebarMenuSubItem = React.forwardRef<\n React.ElementRef<typeof OriginalSidebarMenuSubItem>,\n React.ComponentPropsWithoutRef<typeof OriginalSidebarMenuSubItem>\n>(({ className, ...props }, ref) => {\n return (\n <OriginalSidebarMenuSubItem \n ref={ref}\n className={cn('sidebar-menu-sub-item', className)} \n {...props}\n />\n );\n});\nCustomSidebarMenuSubItem.displayName = 'CustomSidebarMenuSubItem';\n\n// Versão customizada de SidebarMenuSubButton para melhor layout\nexport const CustomSidebarMenuSubButton = React.forwardRef<\n React.ElementRef<typeof OriginalSidebarMenuSubButton>,\n React.ComponentPropsWithoutRef<typeof OriginalSidebarMenuSubButton>\n>(({ className, ...props }, ref) => {\n return (\n <OriginalSidebarMenuSubButton \n ref={ref}\n className={cn('sidebar-menu-button-custom', className)} \n {...props}\n />\n );\n});\nCustomSidebarMenuSubButton.displayName = 'CustomSidebarMenuSubButton';\n","import * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n","import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"../../utils/styles\"\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> {\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizeVariants = {\n sm: {\n root: \"h-4 w-7\",\n thumb: \"h-3 w-3 data-[state=checked]:translate-x-3\"\n },\n md: {\n root: \"h-6 w-11\",\n thumb: \"h-5 w-5 data-[state=checked]:translate-x-5\"\n },\n lg: {\n root: \"h-8 w-14\",\n thumb: \"h-7 w-7 data-[state=checked]:translate-x-6\"\n }\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(({ className, size = 'md', ...props }, ref) => {\n const sizeClasses = sizeVariants[size]\n\n return (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 switch-color\",\n sizeClasses.root,\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-0\",\n sizeClasses.thumb\n )}\n />\n </SwitchPrimitives.Root>\n )\n})\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst tableVariants = cva(\n \"w-full caption-bottom text-sm transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border-collapse\",\n striped: \"border-collapse [&_tbody_tr:nth-child(even)]:bg-muted/50\",\n bordered: \"border border-border rounded-lg overflow-hidden\",\n compact: \"border-collapse text-xs\",\n acorde: \"border border-acorde-primary/20 rounded-lg overflow-hidden shadow-sm\",\n },\n size: {\n sm: \"[&_th]:py-2 [&_th]:px-2 [&_td]:py-2 [&_td]:px-2\",\n default: \"[&_th]:py-3 [&_th]:px-4 [&_td]:py-3 [&_td]:px-4\",\n lg: \"[&_th]:py-4 [&_th]:px-6 [&_td]:py-4 [&_td]:px-6\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst tableHeaderVariants = cva(\n \"border-b text-left font-medium text-muted-foreground transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-border bg-muted/50\",\n acorde: \"border-acorde-primary/20 bg-acorde-primary/5 text-acorde-primary font-semibold\",\n minimal: \"border-border bg-transparent\",\n accent: \"border-border bg-primary/10 text-primary font-semibold\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst tableRowVariants = cva(\n \"border-b transition-colors\",\n {\n variants: {\n variant: {\n default: \"hover:bg-muted/50 data-[state=selected]:bg-muted\",\n interactive: \"hover:bg-muted/50 cursor-pointer active:bg-muted/70\",\n success: \"bg-acorde-success/5 border-acorde-success/20\",\n warning: \"bg-acorde-warning/5 border-acorde-warning/20\",\n error: \"bg-acorde-error/5 border-acorde-error/20\",\n acorde: \"hover:bg-acorde-primary/5 data-[state=selected]:bg-acorde-primary/10\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface TableProps\n extends React.HTMLAttributes<HTMLTableElement>,\n VariantProps<typeof tableVariants> {}\n\nexport interface TableHeaderProps\n extends React.HTMLAttributes<HTMLTableSectionElement>,\n VariantProps<typeof tableHeaderVariants> {}\n\nexport interface TableRowProps\n extends React.HTMLAttributes<HTMLTableRowElement>,\n VariantProps<typeof tableRowVariants> {\n selected?: boolean\n}\n\nexport interface TableCellProps\n extends React.TdHTMLAttributes<HTMLTableCellElement> {\n variant?: \"default\" | \"numeric\" | \"action\"\n}\n\nexport interface TableHeadProps\n extends React.ThHTMLAttributes<HTMLTableCellElement> {\n sortable?: boolean\n sorted?: \"asc\" | \"desc\" | false\n onSort?: () => void\n}\n\nconst SortIcon = ({ sorted }: { sorted: \"asc\" | \"desc\" | false }) => {\n if (!sorted) return (\n <svg className=\"ml-2 icon-size opacity-50\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M8 9l4-4 4 4M16 15l-4 4-4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n\n return sorted === \"asc\" ? (\n <svg className=\"ml-2 icon-size text-primary\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M8 15l4-4 4 4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ) : (\n <svg className=\"ml-2 icon-size text-primary\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M8 9l4-4 4 4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nconst Table = React.forwardRef<HTMLTableElement, TableProps>(\n ({ className, variant, size, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(tableVariants({ variant, size, className }))}\n {...props}\n />\n </div>\n )\n)\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ className, variant, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(tableHeaderVariants({ variant, className }))}\n {...props}\n />\n )\n)\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, variant, selected, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n tableRowVariants({ variant, className }),\n selected && \"data-[state=selected]:bg-muted\"\n )}\n data-state={selected ? \"selected\" : undefined}\n {...props}\n />\n )\n)\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, sortable, sorted = false, onSort, children, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n sortable && \"cursor-pointer select-none hover:text-foreground\",\n className\n )}\n onClick={sortable ? onSort : undefined}\n {...props}\n >\n <div className=\"flex items-center\">\n {children}\n {sortable && <SortIcon sorted={sorted} />}\n </div>\n </th>\n )\n)\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, variant = \"default\", ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"align-middle [&:has([role=checkbox])]:pr-0\",\n {\n \"text-left\": variant === \"default\",\n \"text-right font-mono\": variant === \"numeric\",\n \"text-center\": variant === \"action\",\n },\n className\n )}\n {...props}\n />\n )\n)\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","import * as React from \"react\"\n\nimport { cn } from \"../../utils/styles\"\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n","import * 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/styles\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\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-10 px-3\",\n sm: \"h-9 px-2.5\",\n lg: \"h-11 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, ...props }, ref) => (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }\n","import * 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/styles\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n})\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => {\n const contextValue = React.useMemo(() => ({ variant, size }), [variant, size]);\n \n return (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"flex items-center justify-center gap-1\", className)}\n {...props}\n >\n <ToggleGroupContext.Provider value={contextValue}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n})\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n})\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\n\nexport { ToggleGroup, ToggleGroupItem }\n","import React from 'react';\nimport { Button } from './button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from './tooltip';\nimport { type VariantProps } from 'class-variance-authority';\nimport { buttonVariants } from './button';\nimport { cn } from '@/utils/styles';\n\nexport interface TooltipButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n tooltip: string | React.ReactNode;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n showTextOnMobile?: boolean;\n}\n\nexport const TooltipButton = React.forwardRef<HTMLButtonElement, TooltipButtonProps>(\n ({ tooltip, icon, children, variant = 'outline', size, className, showTextOnMobile = true, ...props }, ref) => {\n return (\n <>\n {/* Desktop version with tooltip */}\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(showTextOnMobile ? 'hidden md:inline-flex' : '', className)}\n {...props}\n >\n {icon}\n {children}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n\n {/* Mobile version with text inside button */}\n {showTextOnMobile && (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn('md:hidden', className)}\n {...props}\n >\n {icon}\n {typeof tooltip === 'string' ? (\n <span className=\"ml-2\">{tooltip}</span>\n ) : (\n tooltip\n )}\n {children}\n </Button>\n )}\n </>\n );\n }\n);\n\nTooltipButton.displayName = 'TooltipButton';\n","import * as React from \"react\";\n\nimport {\n type ToastProps,\n type ToastActionElement,\n} from \"./toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype Action =\n | {\n type: \"ADD_TOAST\";\n toast: ToasterToast;\n }\n | {\n type: \"UPDATE_TOAST\";\n toast: Partial<ToasterToast>;\n }\n | {\n type: \"DISMISS_TOAST\";\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: \"REMOVE_TOAST\";\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nconst toastHelpers = {\n success: (title: string, description?: string, options?: Omit<Toast, \"variant\" | \"title\" | \"description\">) => {\n return toast({\n variant: \"success\",\n title,\n description,\n ...options\n });\n },\n error: (title: string, description?: string, options?: Omit<Toast, \"variant\" | \"title\" | \"description\">) => {\n return toast({\n variant: \"error\",\n title,\n description,\n ...options\n });\n },\n warning: (title: string, description?: string, options?: Omit<Toast, \"variant\" | \"title\" | \"description\">) => {\n return toast({\n variant: \"warning\",\n title,\n description,\n ...options\n });\n },\n info: (title: string, description?: string, options?: Omit<Toast, \"variant\" | \"title\" | \"description\">) => {\n return toast({\n variant: \"info\",\n title,\n description,\n ...options\n });\n },\n acorde: (title: string, description?: string, options?: Omit<Toast, \"variant\" | \"title\" | \"description\">) => {\n return toast({\n variant: \"acorde\",\n title,\n description,\n ...options\n });\n }\n};\n\nconst toastWithHelpers = Object.assign(toast, toastHelpers);\n\nexport { useToast, toast, toastWithHelpers };\n","import React, { useEffect, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { Loader2 } from 'lucide-react';\n\ninterface Tenant {\n id: string;\n tenant_id?: string;\n tenant_code?: string;\n nome?: string;\n razao_social?: string;\n cnpj?: string;\n is_active?: boolean;\n status?: string;\n created_at?: string;\n updated_at?: string;\n}\n\ninterface UseTenantReturn {\n currentTenant: Tenant | null;\n tenantList: Tenant[];\n setCurrentTenant: (tenant: Tenant | null) => void;\n setTenantList: (list: Tenant[]) => void;\n switchTenant: (tenant: Tenant) => void;\n clearTenant: () => void;\n}\n\ninterface TenantService {\n getUserTenants: () => Promise<Tenant[]>;\n}\n\ninterface EnsureTenantProps {\n readonly children: React.ReactNode;\n readonly useTenant: () => UseTenantReturn;\n readonly tenantService: TenantService;\n}\n\nexport function EnsureTenant({ children, useTenant, tenantService }: EnsureTenantProps) {\n const { currentTenant, setCurrentTenant } = useTenant();\n const navigate = useNavigate();\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n const checkAndSetTenant = async () => {\n // Se já tem tenant no contexto, não precisa fazer nada\n if (currentTenant) {\n setIsLoading(false);\n return;\n }\n\n // Verifica se há tenant salvo (do SSO ou login normal)\n const savedTenant = localStorage.getItem('current_tenant');\n if (savedTenant) {\n try {\n const tenant = JSON.parse(savedTenant);\n setCurrentTenant(tenant);\n setIsLoading(false);\n return;\n } catch (error) {\n console.error('Erro ao parsear tenant salvo:', error);\n }\n }\n\n // Para SSO, verifica se tem tenant_id simples\n const tenantId = localStorage.getItem('tenant_id');\n if (tenantId) {\n // Cria objeto tenant mínimo para SSO\n const ssoTenant = {\n id: tenantId,\n tenant_id: tenantId,\n tenant_code: tenantId,\n status: 'active' as const,\n created_at: new Date().toISOString(),\n updated_at: new Date().toISOString()\n };\n setCurrentTenant(ssoTenant);\n localStorage.setItem('current_tenant', JSON.stringify(ssoTenant));\n setIsLoading(false);\n return;\n }\n\n // Só tenta buscar da API se realmente não tem nenhum tenant\n // E se não estiver em contexto SSO\n const isSSO = window.location.hostname.includes('.');\n if (!isSSO) {\n try {\n // Busca os tenants disponíveis\n const tenants = await tenantService.getUserTenants();\n\n if (tenants.length === 0) {\n setError('Nenhum tenant disponível');\n setIsLoading(false);\n return;\n }\n\n // Se só tem um tenant, seleciona automaticamente\n if (tenants.length === 1) {\n const tenant = tenants[0];\n setCurrentTenant(tenant);\n localStorage.setItem('current_tenant', JSON.stringify(tenant));\n } else {\n // Se tem múltiplos tenants, redireciona para a seleção\n navigate('/tenant-selection');\n }\n } catch {\n console.log('Endpoints de tenant não disponíveis, usando tenant do subdomínio');\n setIsLoading(false);\n return;\n }\n }\n\n setIsLoading(false);\n };\n\n checkAndSetTenant();\n }, [currentTenant, setCurrentTenant, navigate]);\n\n if (isLoading) {\n return (\n <div className=\"min-h-screen flex items-center justify-center\">\n <div className=\"text-center\">\n <Loader2 className=\"w-8 h-8 animate-spin mx-auto mb-4\" />\n <p className=\"text-gray-600\">Verificando tenant...</p>\n </div>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"min-h-screen flex items-center justify-center\">\n <div className=\"text-center\">\n <p className=\"text-red-600 mb-4\">{error}</p>\n <button\n onClick={() => window.location.reload()}\n className=\"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700\"\n >\n Tentar novamente\n </button>\n </div>\n </div>\n );\n }\n\n // Se não tem tenant selecionado e não está carregando, ainda assim renderiza\n // Isso evita o problema de tela em branco após o login\n return <>{children}</>;\n}","import React, { memo, useMemo } from 'react';\nimport { Card, CardContent } from '@/components/ui/card';\nimport { Progress } from '@/components/ui/progress';\nimport { Shield, CheckCircle, AlertCircle, Clock } from 'lucide-react';\n\ninterface SSOLoadingOverlayProps {\n /** Current step in SSO process */\n step: 'redirecting' | 'authenticating' | 'processing' | 'completing' | 'error';\n /** Progress percentage (0-100) */\n progress: number;\n /** Optional message to display */\n message?: string;\n /** Tenant ID being processed */\n tenantId?: string;\n /** Error message if step is 'error' */\n error?: string;\n /** Whether to show the overlay */\n show?: boolean;\n /** Custom class name */\n className?: string;\n /** SSO Provider name */\n ssoProviderName?: string;\n /** Application name */\n appName?: string;\n}\n\nconst SSOLoadingOverlay: React.FC<SSOLoadingOverlayProps> = memo(({\n step,\n progress,\n message,\n tenantId,\n error,\n show = true,\n className = '',\n ssoProviderName = 'SSO',\n appName = 'o sistema'\n}) => {\n // Performance: Memoized step icon calculation\n const getStepIcon = useMemo(() => {\n switch (step) {\n case 'redirecting':\n return <Shield className=\"h-8 w-8 animate-pulse text-blue-500\" />;\n case 'authenticating':\n return (\n <div className=\"relative\">\n <Shield className=\"h-8 w-8 text-blue-500\" />\n <div className=\"absolute inset-0 h-8 w-8 animate-spin rounded-full border-2 border-blue-500 border-t-transparent\" />\n </div>\n );\n case 'processing':\n return (\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-green-500 border-t-transparent\" />\n );\n case 'completing':\n return <CheckCircle className=\"h-8 w-8 text-green-500\" />;\n case 'error':\n return <AlertCircle className=\"h-8 w-8 text-red-500\" />;\n default:\n return <Clock className=\"h-8 w-8 text-muted-foreground\" />;\n }\n }, [step]);\n\n // Performance: Memoized step title calculation\n const getStepTitle = useMemo(() => {\n switch (step) {\n case 'redirecting':\n return 'Redirecionando para SSO';\n case 'authenticating':\n return `Autenticando com ${ssoProviderName}`;\n case 'processing':\n return 'Processando credenciais';\n case 'completing':\n return 'Finalizando login';\n case 'error':\n return 'Erro na autenticação';\n default:\n return 'Carregando...';\n }\n }, [step, ssoProviderName]);\n\n // Performance: Memoized step description calculation\n const getStepDescription = useMemo(() => {\n if (message) return message;\n\n switch (step) {\n case 'redirecting':\n return `Preparando conexão segura com ${ssoProviderName}...`;\n case 'authenticating':\n return `Verificando suas credenciais no sistema ${ssoProviderName}...`;\n case 'processing':\n return 'Criando sua sessão e configurando acesso...';\n case 'completing':\n return `Redirecionando para ${appName}...`;\n case 'error':\n return error || 'Ocorreu um erro durante a autenticação SSO';\n default:\n return 'Aguarde...';\n }\n }, [message, step, error, ssoProviderName, appName]);\n\n // Performance: Memoized background color calculation\n const getBgColor = useMemo(() => {\n switch (step) {\n case 'error':\n return 'bg-red-50 dark:bg-red-950/20';\n case 'completing':\n return 'bg-green-50 dark:bg-green-950/20';\n default:\n return 'bg-background';\n }\n }, [step]);\n\n // Performance: Memoized progress color calculation\n const getProgressColor = useMemo(() => {\n switch (step) {\n case 'error':\n return 'bg-red-500';\n case 'completing':\n return 'bg-green-500';\n default:\n return 'bg-blue-500';\n }\n }, [step]);\n\n // Early return after all hooks\n if (!show) return null;\n\n return (\n <div className={`\n fixed inset-0 z-50 flex items-center justify-center\n bg-background/80 backdrop-blur-sm\n ${className}\n `}>\n <Card className={`w-full max-w-md mx-4 shadow-2xl ${getBgColor}`}>\n <CardContent className=\"p-8\">\n {/* Header */}\n <div className=\"text-center mb-6\">\n <div className=\"flex justify-center mb-4\">\n {getStepIcon}\n </div>\n\n <h2 className=\"text-xl font-semibold mb-2\">\n {getStepTitle}\n </h2>\n\n <p className=\"text-sm text-muted-foreground\">\n {getStepDescription}\n </p>\n </div>\n\n {/* Progress Bar */}\n <div className=\"mb-6\">\n <div className=\"flex justify-between text-xs text-muted-foreground mb-2\">\n <span>Progresso</span>\n <span>{Math.round(progress)}%</span>\n </div>\n\n <Progress\n value={progress}\n className=\"h-2\"\n style={{\n '--progress-background': getProgressColor\n } as React.CSSProperties}\n />\n </div>\n\n {/* Tenant Info */}\n {tenantId && (\n <div className=\"text-center\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-muted text-xs\">\n <Shield className=\"h-3 w-3\" />\n <span>Tenant: {tenantId}</span>\n </div>\n </div>\n )}\n\n {/* Step Progress Indicators */}\n <div className=\"flex justify-center gap-2 mt-6\">\n {['redirecting', 'authenticating', 'processing', 'completing'].map((stepName, index) => {\n const currentStepIndex = ['redirecting', 'authenticating', 'processing', 'completing'].indexOf(step);\n const stepIndex = index;\n\n let stepState: 'completed' | 'active' | 'pending' | 'error' = 'pending';\n\n if (step === 'error') {\n stepState = stepIndex <= currentStepIndex ? 'error' : 'pending';\n } else if (stepIndex < currentStepIndex) {\n stepState = 'completed';\n } else if (stepIndex === currentStepIndex) {\n stepState = 'active';\n }\n\n return (\n <div\n key={stepName}\n className={`\n h-2 w-8 rounded-full transition-colors duration-300\n ${stepState === 'completed' ? 'bg-green-500' : ''}\n ${stepState === 'active' ? 'bg-blue-500' : ''}\n ${stepState === 'error' ? 'bg-red-500' : ''}\n ${stepState === 'pending' ? 'bg-muted' : ''}\n `}\n />\n );\n })}\n </div>\n\n {/* Error Actions */}\n {step === 'error' && (\n <div className=\"flex gap-2 mt-6\">\n <button\n onClick={() => window.location.reload()}\n className=\"flex-1 px-4 py-2 text-sm bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors\"\n >\n Tentar Novamente\n </button>\n <button\n onClick={() => window.location.href = '/login'}\n className=\"flex-1 px-4 py-2 text-sm border border-border rounded-md hover:bg-muted transition-colors\"\n >\n Voltar ao Login\n </button>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n );\n});\n\nexport default SSOLoadingOverlay;\n\n// Display name for debugging\nSSOLoadingOverlay.displayName = 'SSOLoadingOverlay';","import { useState, useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst STORAGE_KEY = 'sidebar-expanded-menus';\n\nexport function useSidebarState(routePaths: Record<string, string>) {\n const location = useLocation();\n\n const [expandedMenus, setExpandedMenus] = useState<string[]>(() => {\n try {\n const saved = localStorage.getItem(STORAGE_KEY);\n return saved ? JSON.parse(saved) : [];\n } catch {\n return [];\n }\n });\n\n useEffect(() => {\n const userManagementPaths = [\n routePaths.USER_MANAGEMENT,\n routePaths.USER_PROFILES,\n routePaths.PERMISSIONS_MANAGEMENT,\n ].filter(Boolean);\n\n const whatsAppPaths = [\n routePaths.WHATSAPP,\n routePaths.WHATSAPP_CONFIG,\n routePaths.WHATSAPP_MONITORING,\n routePaths.WHATSAPP_MESSAGES,\n routePaths.WHATSAPP_TEMPLATES,\n routePaths.WHATSAPP_TRIGGERS,\n ].filter(Boolean);\n\n const configurationsPaths = [\n routePaths.SETTINGS,\n routePaths.UNIDADES_NEGOCIO,\n routePaths.TENANT_MANAGEMENT,\n routePaths.MOTORISTAS,\n routePaths.CREDENTIALS,\n ].filter(Boolean);\n\n const automationPaths = [\n routePaths.FLOWS,\n routePaths.CREDENTIALS,\n ].filter(Boolean);\n\n const isInUsersPage = userManagementPaths.some(path =>\n location.pathname.includes(path)\n );\n\n const isInWhatsAppPage = whatsAppPaths.some(path =>\n location.pathname.includes(path)\n );\n\n const isInAutomationPage = automationPaths.some(path =>\n location.pathname.includes(path)\n );\n\n const isInConfigurationsPage = configurationsPaths.some(path =>\n location.pathname.includes(path)\n ) || isInUsersPage || isInWhatsAppPage;\n\n setExpandedMenus(prev => {\n const newExpanded = [...prev];\n let changed = false;\n\n if (isInUsersPage && !prev.includes('Usuários')) {\n newExpanded.push('Usuários');\n changed = true;\n }\n\n if (isInWhatsAppPage && !prev.includes('WhatsApp')) {\n newExpanded.push('WhatsApp');\n changed = true;\n }\n\n if (isInConfigurationsPage && !prev.includes('Configurações')) {\n newExpanded.push('Configurações');\n changed = true;\n }\n\n if (isInAutomationPage && !prev.includes('Automação')) {\n newExpanded.push('Automação');\n changed = true;\n }\n\n if (changed) {\n saveToStorage(newExpanded);\n return newExpanded;\n }\n\n return prev;\n });\n }, [location.pathname, routePaths]);\n\n const saveToStorage = (menus: string[]) => {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(menus));\n } catch (error) {\n console.warn('Erro ao salvar estado do menu no localStorage:', error);\n }\n };\n\n const toggleSubmenu = (menuTitle: string) => {\n setExpandedMenus(prev => {\n const newExpanded = prev.includes(menuTitle)\n ? prev.filter(title => title !== menuTitle)\n : [...prev, menuTitle];\n\n saveToStorage(newExpanded);\n return newExpanded;\n });\n };\n\n const isMenuExpanded = (menuTitle: string) => {\n return expandedMenus.includes(menuTitle);\n };\n\n const isMenuItemActive = (url: string) => {\n return location.pathname.includes(url);\n };\n\n const isExactMenuItemActive = (url: string) => {\n return location.pathname === url;\n };\n\n return {\n expandedMenus,\n toggleSubmenu,\n isMenuExpanded,\n isMenuItemActive,\n isExactMenuItemActive,\n };\n}\n","import React from \"react\";\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarTrigger,\n useSidebar,\n} from \"@/components/ui/sidebar\";\nimport {\n CustomSidebarMenuSub as SidebarMenuSub,\n CustomSidebarMenuSubButton as SidebarMenuSubButton,\n CustomSidebarMenuSubItem as SidebarMenuSubItem,\n} from \"@/components/ui/sidebar-custom\";\nimport {\n BarChart3,\n Bell,\n Bot,\n Building2,\n Car,\n ChevronRight,\n Clock,\n Database,\n Key,\n LogOut,\n type LucideIcon,\n MessageCircle,\n Monitor,\n Navigation,\n Settings,\n Shield,\n UserCheck,\n UserCog,\n Users,\n Workflow,\n} from \"lucide-react\";\nimport {Link} from \"react-router-dom\";\nimport {Button} from \"./ui/button\";\nimport {Tooltip, TooltipContent, TooltipTrigger} from \"./ui/tooltip\";\nimport \"./ui/sidebar-custom.css\";\nimport {canAccessMenu, MenuPermissionLevel} from \"@/lib/menu-permissions\";\nimport type {UserResponse} from \"@/services/types/api.types\";\nimport {useSidebarState} from \"../hooks/useSidebarState\";\n\ninterface ControlTowerSidebarProps {\n currentTime?: Date;\n routePaths: Record<string, string>;\n user: UserResponse | null;\n onLogout: () => void;\n getCurrentTenantId: () => string | null;\n logoUrl?: string;\n appName?: string;\n appSubtitle?: string;\n}\n\ninterface MenuItem {\n title: string;\n url?: string;\n icon: LucideIcon;\n permission?: MenuPermissionLevel;\n subItems?: Array<{\n title: string;\n url?: string;\n icon?: LucideIcon;\n permission?: MenuPermissionLevel;\n subItems?: Array<{\n title: string;\n url: string;\n icon?: LucideIcon;\n permission?: MenuPermissionLevel;\n }>;\n }>;\n}\n\ninterface RenderSubmenuProps {\n items: MenuItem[\"subItems\"];\n level: number;\n isMenuExpanded: (title: string) => boolean;\n isMenuItemActive: (url: string) => boolean;\n toggleSubmenu: (title: string) => void;\n}\n\nfunction filterMenuItems(\n items: MenuItem[],\n user: UserResponse | null\n): MenuItem[] {\n return items\n .filter((item) => canAccessMenu(user, item.permission))\n .map((item) => {\n if (item.subItems) {\n const filteredSubItems = filterMenuItems(\n item.subItems as unknown as MenuItem[],\n user\n );\n if (filteredSubItems.length === 0) {\n return null;\n }\n return {\n ...item,\n subItems: filteredSubItems,\n };\n }\n return item;\n })\n .filter((item): item is MenuItem => item !== null);\n}\n\nfunction RenderSubmenu({\n items,\n level,\n isMenuExpanded,\n isMenuItemActive,\n toggleSubmenu,\n}: Readonly<RenderSubmenuProps>) {\n const { state } = useSidebar();\n const isCollapsed = state === \"collapsed\";\n\n if (!items) return null;\n\n return (\n <SidebarMenuSub level={level}>\n {items.map((subItem) => {\n const hasSubItems = subItem.subItems && subItem.subItems.length > 0;\n const paddingLeft = isCollapsed ? 8 : Math.min(level * 8 + 4, 28);\n\n return (\n <SidebarMenuSubItem key={subItem.title}>\n {hasSubItems ? (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <SidebarMenuSubButton\n onClick={() => toggleSubmenu(subItem.title)}\n className=\"w-full justify-start pr-2\"\n style={{ paddingLeft: `${paddingLeft}px` }}\n >\n {subItem.icon && (\n <subItem.icon className=\"w-4 h-4 shrink-0 mr-2\" />\n )}\n {!isCollapsed && (\n <>\n <span className=\"truncate flex-1\">\n {subItem.title}\n </span>\n <ChevronRight\n className={`w-4 h-4 shrink-0 transition-transform ${\n isMenuExpanded(subItem.title) ? \"rotate-90\" : \"\"\n }`}\n />\n </>\n )}\n </SidebarMenuSubButton>\n </TooltipTrigger>\n {isCollapsed && (\n <TooltipContent side=\"right\" className=\"font-medium\">\n {subItem.title}\n </TooltipContent>\n )}\n </Tooltip>\n {isMenuExpanded(subItem.title) && (\n <RenderSubmenu\n items={subItem.subItems}\n level={level + 1}\n isMenuExpanded={isMenuExpanded}\n isMenuItemActive={isMenuItemActive}\n toggleSubmenu={toggleSubmenu}\n />\n )}\n </>\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>\n <SidebarMenuSubButton asChild>\n <Link\n to={subItem.url || \"#\"}\n className={`justify-start pr-2 ${\n isMenuItemActive(subItem.url || \"\")\n ? \"bg-accent text-accent-foreground\"\n : \"\"\n }`}\n style={{ paddingLeft: `${paddingLeft}px` }}\n >\n {subItem.icon && (\n <subItem.icon className=\"w-4 h-4 shrink-0 mr-2\" />\n )}\n {!isCollapsed && (\n <span className=\"truncate flex-1\">{subItem.title}</span>\n )}\n </Link>\n </SidebarMenuSubButton>\n </TooltipTrigger>\n {isCollapsed && (\n <TooltipContent side=\"right\" className=\"font-medium\">\n {subItem.title}\n </TooltipContent>\n )}\n </Tooltip>\n )}\n </SidebarMenuSubItem>\n );\n })}\n </SidebarMenuSub>\n );\n}\n\nexport function ControlSidebar({\n currentTime,\n routePaths,\n user,\n onLogout,\n getCurrentTenantId,\n logoUrl = '/lovable-uploads/632ebc32-3ae3-4944-8e70-0e9c2539494a.png',\n appName = 'App',\n appSubtitle = 'Sistema'\n}: Readonly<ControlTowerSidebarProps>) {\n const {\n toggleSubmenu,\n isMenuExpanded,\n isMenuItemActive,\n isExactMenuItemActive,\n } = useSidebarState(routePaths);\n const { state } = useSidebar();\n const isCollapsed = state === \"collapsed\";\n const [internalTime, setInternalTime] = React.useState(new Date());\n\n const currentTenantId = getCurrentTenantId();\n console.log(currentTenantId)\n const isMasterTenant = currentTenantId === \"master\";\n\n const menuItems: MenuItem[] = [\n {\n title: \"Dashboard\",\n url: routePaths.DASHBOARD,\n icon: Monitor,\n permission: MenuPermissionLevel.ALL,\n },\n {\n title: \"Monitoramento de Rotas\",\n url: routePaths.ROUTE_MONITORING,\n icon: Navigation,\n permission: MenuPermissionLevel.MASTER_TENANT_ONLY,\n },\n {\n title: \"Monitoramento de Rotas\",\n url: routePaths.ROUTE_MONITORING,\n icon: Navigation,\n permission: MenuPermissionLevel.ADMIN_ONLY,\n },\n {\n title: \"Alertas\",\n url: routePaths.ALERTS,\n icon: Bell,\n permission: MenuPermissionLevel.ALL,\n },\n {\n title: \"Relatórios\",\n url: routePaths.REPORTS,\n icon: BarChart3,\n permission: MenuPermissionLevel.ALL,\n },\n {\n title: \"Configurações\",\n icon: Settings,\n permission: MenuPermissionLevel.ADMIN_ONLY,\n subItems: [\n {\n title: \"Configurações Gerais\",\n url: routePaths.SETTINGS,\n icon: Settings,\n permission: MenuPermissionLevel.ALL,\n },\n {\n title: \"Usuários\",\n icon: Users,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n subItems: [\n {\n title: \"Gestão de Usuários\",\n url: routePaths.USER_MANAGEMENT,\n icon: UserCheck,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"Perfis de Usuário\",\n url: routePaths.USER_PROFILES,\n icon: UserCog,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"Permissões\",\n url: routePaths.PERMISSIONS_MANAGEMENT,\n icon: Shield,\n permission: MenuPermissionLevel.ADMIN_ONLY,\n },\n ],\n },\n {\n title: \"Motoristas\",\n url: routePaths.MOTORISTAS,\n icon: Car,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"WhatsApp\",\n icon: MessageCircle,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n subItems: [\n {\n title: \"Configurações\",\n url: routePaths.WHATSAPP_CONFIG,\n icon: Settings,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"Triggers de Fluxo\",\n url: routePaths.WHATSAPP_TRIGGERS,\n icon: Workflow,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"Monitoramento\",\n url: routePaths.WHATSAPP_MONITORING,\n icon: Monitor,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n ],\n },\n ...(isMasterTenant ? [] : [{\n title: \"Unidades de Negócio\",\n url: routePaths.UNIDADES_NEGOCIO,\n icon: Building2,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n }]),\n ...(isMasterTenant\n ? [\n {\n title: \"Tenants\",\n url: routePaths.TENANT_MANAGEMENT,\n icon: Database,\n permission: MenuPermissionLevel.ADMIN_ONLY,\n },\n ]\n : []),\n ],\n },\n {\n title: \"Automação\",\n icon: Bot,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n subItems: [\n {\n title: \"Fluxos de Automação\",\n url: routePaths.FLOWS,\n icon: Workflow,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n {\n title: \"Credenciais\",\n url: routePaths.CREDENTIALS,\n icon: Key,\n permission: MenuPermissionLevel.MANAGER_OR_ADMIN,\n },\n ],\n },\n ];\n\n React.useEffect(() => {\n if (!currentTime) {\n const timer = setInterval(() => {\n setInternalTime(new Date());\n }, 1000);\n return () => clearInterval(timer);\n }\n }, [currentTime]);\n\n const displayTime = currentTime || internalTime;\n const filteredMenuItems = filterMenuItems(menuItems, user);\n return (\n <Sidebar className=\"border-r border-gray-200\" collapsible=\"icon\">\n <SidebarHeader className=\"border-b border-gray-200\">\n <div className=\"flex items-center justify-between px-2 py-2\">\n <SidebarTrigger className=\"ml-auto\" />\n </div>\n {!isCollapsed && (\n <div className=\"flex flex-col items-center gap-1 px-2 py-1\">\n <img\n src={logoUrl}\n alt={`${appName} Logo`}\n className=\"w-20 h-20 object-contain\"\n />\n <div className=\"text-center\">\n <h2 className=\"font-bold text-lg text-gray-800\">{appName}</h2>\n <p className=\"text-xs text-gray-500\">{appSubtitle}</p>\n </div>\n </div>\n )}\n {isCollapsed && (\n <div className=\"flex justify-center px-2 py-2\">\n <img\n src={logoUrl}\n alt={`${appName} Logo`}\n className=\"w-8 h-8 object-contain\"\n />\n </div>\n )}\n </SidebarHeader>\n\n <SidebarContent>\n <SidebarGroup>\n {!isCollapsed && (\n <SidebarGroupLabel>Menu Principal</SidebarGroupLabel>\n )}\n <SidebarGroupContent>\n <SidebarMenu>\n {filteredMenuItems.map((item) => (\n <SidebarMenuItem key={item.title}>\n {item.subItems ? (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <SidebarMenuButton\n onClick={() => toggleSubmenu(item.title)}\n className=\"w-full justify-start pr-2\"\n >\n <item.icon className=\"w-4 h-4 shrink-0\" />\n {!isCollapsed && (\n <>\n <span className=\"truncate flex-1\">\n {item.title}\n </span>\n <ChevronRight\n className={`w-4 h-4 shrink-0 transition-transform ${\n isMenuExpanded(item.title)\n ? \"rotate-90\"\n : \"\"\n }`}\n />\n </>\n )}\n </SidebarMenuButton>\n </TooltipTrigger>\n {isCollapsed && (\n <TooltipContent side=\"right\" className=\"font-medium\">\n {item.title}\n </TooltipContent>\n )}\n </Tooltip>\n {isMenuExpanded(item.title) && (\n <RenderSubmenu\n items={item.subItems}\n level={1}\n isMenuExpanded={isMenuExpanded}\n isMenuItemActive={isMenuItemActive}\n toggleSubmenu={toggleSubmenu}\n />\n )}\n </>\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>\n <SidebarMenuButton asChild>\n <Link\n to={item.url || \"#\"}\n className={`justify-start pr-2 ${\n isExactMenuItemActive(item.url || \"\")\n ? \"bg-accent text-accent-foreground\"\n : \"\"\n }`}\n >\n <item.icon className=\"w-4 h-4 shrink-0\" />\n {!isCollapsed && (\n <span className=\"truncate flex-1\">\n {item.title}\n </span>\n )}\n </Link>\n </SidebarMenuButton>\n </TooltipTrigger>\n {isCollapsed && (\n <TooltipContent side=\"right\" className=\"font-medium\">\n {item.title}\n </TooltipContent>\n )}\n </Tooltip>\n )}\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n </SidebarContent>\n\n <SidebarFooter className=\"border-t border-gray-200\">\n <div className={`p-2 space-y-2 ${isCollapsed ? \"px-1\" : \"\"}`}>\n {user && (\n <div className=\"flex items-center justify-between\">\n {!isCollapsed ? (\n <>\n <div className=\"flex flex-col min-w-0 flex-1\">\n <span className=\"text-sm font-medium text-gray-700 truncate\">\n {user.login}\n </span>\n <span className=\"text-xs text-gray-500 truncate\">\n {user.email}\n </span>\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onLogout()}\n className=\"h-8 w-8 p-0 shrink-0 ml-2\"\n title=\"Logout\"\n >\n <LogOut className=\"icon-size\" />\n </Button>\n </>\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onLogout()}\n className=\"h-8 w-8 p-0\"\n >\n <LogOut className=\"icon-size\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n Logout ({user.login})\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n )}\n {!isCollapsed && (\n <>\n <div className=\"flex items-center gap-2\">\n <div className=\"w-2 h-2 bg-green-500 rounded-full animate-pulse\"></div>\n <span className=\"text-xs text-gray-600 font-medium\">\n Sistema Online\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <Clock className=\"w-3 h-3 text-gray-400\" />\n <p className=\"text-xs text-gray-500\">\n {displayTime.toLocaleString(\"pt-BR\")}\n </p>\n </div>\n </>\n )}\n {isCollapsed && (\n <div className=\"flex flex-col items-center gap-2\">\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"w-2 h-2 bg-green-500 rounded-full animate-pulse\"></div>\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n Sistema Online\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Clock className=\"w-4 h-4 text-gray-400\" />\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n {displayTime.toLocaleString(\"pt-BR\")}\n </TooltipContent>\n </Tooltip>\n </div>\n )}\n </div>\n </SidebarFooter>\n </Sidebar>\n );\n}\n","import React from 'react';\nimport { SidebarProvider } from '@/components/ui/sidebar';\nimport { ControlSidebar } from '@/components/ControlSidebar.tsx';\nimport type { UserResponse } from '@/services/types/api.types';\n\ninterface MainLayoutProps {\n readonly children: React.ReactNode;\n readonly routePaths: Record<string, string>;\n readonly user: UserResponse | null;\n readonly onLogout: () => void;\n readonly getCurrentTenantId: () => string | null;\n readonly currentTime?: Date;\n readonly appName?: string;\n readonly appSubtitle?: string;\n readonly logoUrl?: string;\n}\n\nexport function MainLayout({\n children,\n routePaths,\n user,\n onLogout,\n getCurrentTenantId,\n currentTime,\n appName,\n appSubtitle,\n logoUrl\n}: MainLayoutProps) {\n return (\n <SidebarProvider>\n <div className=\"h-screen w-full flex\">\n <ControlSidebar\n routePaths={routePaths}\n user={user}\n onLogout={onLogout}\n getCurrentTenantId={getCurrentTenantId}\n currentTime={currentTime}\n appName={appName}\n appSubtitle={appSubtitle}\n logoUrl={logoUrl}\n />\n <main className=\"flex-1 overflow-hidden\">\n <div className=\"h-full overflow-y-auto\">\n {children}\n </div>\n </main>\n </div>\n </SidebarProvider>\n );\n}\n","import { ReactNode, useEffect } from 'react';\nimport { Navigate, useLocation } from 'react-router-dom';\nimport { Loader2 } from 'lucide-react';\nimport { EnsureTenant } from './EnsureTenant';\nimport SSOLoadingOverlay from './auth/SSOLoadingOverlay';\nimport {MainLayout} from \"./MainLayout.tsx\";\n\ninterface Tenant {\n id: string;\n tenant_id?: string;\n tenant_code?: string;\n nome?: string;\n razao_social?: string;\n cnpj?: string;\n is_active?: boolean;\n status?: string;\n created_at?: string;\n updated_at?: string;\n}\n\ninterface UseTenantReturn {\n currentTenant: Tenant | null;\n tenantList: Tenant[];\n setCurrentTenant: (tenant: Tenant | null) => void;\n setTenantList: (list: Tenant[]) => void;\n switchTenant: (tenant: Tenant) => void;\n clearTenant: () => void;\n}\n\ninterface TenantService {\n getUserTenants: () => Promise<Tenant[]>;\n}\n\ninterface ProtectedRouteProps {\n readonly children: ReactNode;\n readonly useAuthContext: () => {\n isAuthenticated: boolean;\n isLoading: boolean;\n logout: () => void;\n user: any;\n getCurrentTenantId: () => string;\n };\n readonly tenantId?: string;\n readonly useSSO: (tenantId?: string) => {\n state: {\n loading: boolean;\n callbackProcessing: boolean;\n isAuthenticated: boolean;\n user: any;\n currentStep: 'idle' | 'redirecting' | 'authenticating' | 'processing' | 'completing' | 'error';\n progress: number;\n };\n checkStatus: () => void;\n };\n readonly routePaths: any;\n readonly useTenant: () => UseTenantReturn;\n readonly tenantService: TenantService;\n readonly appName?: string;\n readonly appSubtitle?: string;\n readonly logoUrl?: string;\n}\n\nexport function ProtectedRoute({ children, useAuthContext, tenantId, useSSO, routePaths, useTenant, tenantService, appName, appSubtitle, logoUrl }: ProtectedRouteProps) {\n const { isAuthenticated, isLoading, logout, user, getCurrentTenantId } = useAuthContext();\n\n const location = useLocation();\n\n // Get tenant from subdomain for SSO check\n const sso = useSSO(tenantId || undefined);\n\n // Check SSO authentication status if we have a tenant\n useEffect(() => {\n if (tenantId && !isAuthenticated && !isLoading && !sso.state.loading && !sso.state.callbackProcessing && !sso.state.isAuthenticated) {\n console.log('[ProtectedRoute] Checking SSO status - not authenticated');\n sso.checkStatus();\n }\n }, [tenantId, isAuthenticated, isLoading, sso.state.loading, sso.state.callbackProcessing, sso.state.isAuthenticated, sso]);\n\n // Show SSO loading overlay if callback is being processed\n if (sso.state.callbackProcessing || sso.state.currentStep !== 'idle') {\n return (\n <SSOLoadingOverlay\n step={sso.state.currentStep}\n progress={sso.state.progress}\n tenantId={tenantId}\n show={true}\n />\n );\n }\n\n // If SSO user is authenticated, allow access\n if (sso.state.isAuthenticated && sso.state.user) {\n return <EnsureTenant useTenant={useTenant} tenantService={tenantService}>{children}</EnsureTenant>;\n }\n\n // Standard loading check\n if (isLoading || sso.state.loading) {\n return (\n <div className=\"min-h-screen flex items-center justify-center\">\n <div className=\"text-center\">\n <Loader2 className=\"mx-auto h-8 w-8 animate-spin text-blue-600\" />\n <p className=\"mt-2 text-sm text-gray-600\">Verificando autenticação...</p>\n </div>\n </div>\n );\n }\n\n // If neither traditional auth nor SSO is authenticated, redirect to login\n if (!isAuthenticated && !sso.state.isAuthenticated) {\n // Salva a rota atual para redirecionamento após login\n return <Navigate to=\"/login\" state={{ from: location }} replace />;\n }\n return (\n <MainLayout\n routePaths={routePaths}\n user={user}\n onLogout={logout}\n getCurrentTenantId={getCurrentTenantId}\n appName={appName}\n appSubtitle={appSubtitle}\n logoUrl={logoUrl}\n >\n <EnsureTenant useTenant={useTenant} tenantService={tenantService}>{children}</EnsureTenant>\n </MainLayout>)\n}\n","import React, {useState} from 'react';\nimport {AlertCircle, Bot, Building2, ClipboardList, Search, User, UserCheck, X} from 'lucide-react';\nimport {Button} from '@/components/ui/button';\nimport {Input} from '@/components/ui/input';\nimport {Badge} from '@/components/ui/badge';\nimport {Popover, PopoverContent, PopoverTrigger} from '@/components/ui/popover';\nimport {ToggleGroup, ToggleGroupItem} from '@/components/ui/toggle-group';\nimport {Checkbox} from '@/components/ui/checkbox';\nimport {Separator} from '@/components/ui/separator';\n\ninterface FilterBarProps {\n onFilterChange: (filters: FilterState) => void;\n filters: FilterState;\n operators: string[];\n taskTypes: string[];\n businessUnits: Array<{ codigo: string; descricao: string }>;\n}\n\nexport interface FilterState {\n vehicleId: string;\n operators: string[];\n taskTypes: string[];\n businessUnits: string[];\n operatorType: string;\n status: string[];\n startDate: string;\n endDate: string;\n}\n\nconst FilterBar: React.FC<FilterBarProps> = ({ onFilterChange, filters, operators, taskTypes, businessUnits }) => {\n const [openPopovers, setOpenPopovers] = useState({\n businessUnits: false,\n operators: false,\n taskTypes: false,\n status: false\n });\n\n const statusOptions = [\n { value: 'pending', label: 'Pendente' },\n {value: 'in-progress', label: 'Em Andamento (IA)'},\n {value: 'human-interaction', label: 'Em Andamento (Humano)'},\n { value: 'completed', label: 'Concluído' },\n {value: 'alert', label: 'Precisam de Interação'}\n ];\n\n const updateFilter = (key: keyof FilterState, value: string | string[] | number[]) => {\n const newFilters = { ...filters, [key]: value };\n onFilterChange(newFilters);\n };\n\n const clearFilter = (key: keyof FilterState) => {\n if (key === 'vehicleId' || key === 'operatorType') {\n updateFilter(key, '');\n } else if (key === 'status') {\n // Ao limpar status, voltar ao padrão (não concluídos)\n updateFilter(key, ['pending', 'in-progress', 'human-interaction']);\n } else {\n updateFilter(key, []);\n }\n };\n\n const clearAllFilters = () => {\n const emptyFilters = { \n vehicleId: '', \n operators: [], \n taskTypes: [], \n businessUnits: [], \n operatorType: '',\n status: ['pending', 'in-progress'], // Manter padrão ao limpar tudo\n startDate: '',\n endDate: ''\n };\n onFilterChange(emptyFilters);\n setOpenPopovers({ businessUnits: false, operators: false, taskTypes: false, status: false });\n };\n\n const toggleArrayFilter = (key: 'operators' | 'taskTypes' | 'businessUnits' | 'status', value: string) => {\n const currentArray = filters[key];\n const newArray = currentArray.includes(value)\n ? currentArray.filter(item => item !== value)\n : [...currentArray, value];\n updateFilter(key, newArray);\n };\n\n\n\n const activeFiltersCount = [\n filters.vehicleId,\n filters.operatorType,\n filters.startDate,\n filters.endDate,\n ...filters.operators,\n ...filters.taskTypes,\n ...filters.businessUnits,\n // Não contar status como filtro ativo se for o padrão\n ...(JSON.stringify([...filters.status].sort()) !== JSON.stringify(['human-interaction', 'in-progress', 'pending']) ? filters.status : [])\n ].filter(value => value !== '').length;\n\n return (\n <div className=\"bg-white border-b border-gray-200 p-4 space-y-4\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n {/* Search by Vehicle ID */}\n <div className=\"relative flex-shrink-0\">\n <Input\n placeholder=\"Buscar por placa...\"\n value={filters.vehicleId}\n onChange={(e) => updateFilter('vehicleId', e.target.value)}\n leftIcon={<Search className=\"w-4 h-4\" />}\n rightIcon={\n filters.vehicleId ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('vehicleId')}\n className=\"h-6 w-6 p-0 hover:bg-gray-100 -mr-2\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n ) : undefined\n }\n className=\"w-48\"\n showValidationIcon={false}\n />\n </div>\n\n {/* Date Range Filter */}\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n <Input\n type=\"date\"\n placeholder=\"Data inicial\"\n value={filters.startDate}\n onChange={(e) => updateFilter('startDate', e.target.value)}\n className=\"w-30 h-10 px-3\"\n />\n <span className=\"text-gray-400\">até</span>\n <Input\n type=\"date\"\n placeholder=\"Data final\"\n value={filters.endDate}\n onChange={(e) => updateFilter('endDate', e.target.value)}\n className=\"w-30 h-10 px-3\"\n />\n {(filters.startDate || filters.endDate) && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n clearFilter('startDate');\n clearFilter('endDate');\n }}\n className=\"h-6 w-6 p-0 hover:bg-gray-100 flex items-center justify-center ml-0\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n )}\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-8\" />\n\n {/* Operator Type Toggle */}\n <div className=\"flex items-center gap-1\">\n <span className=\"text-sm font-medium text-gray-700\">Tipo:</span>\n <ToggleGroup\n type=\"single\"\n value={filters.operatorType}\n onValueChange={(value) => updateFilter('operatorType', value || '')}\n className=\"border rounded-md p-0.5 h-10\"\n >\n <ToggleGroupItem value=\"ia\" className=\"flex items-center gap-1 text-xs h-9\">\n <Bot className=\"w-3 h-3\" />\n IA\n </ToggleGroupItem>\n <ToggleGroupItem value=\"humano\" className=\"flex items-center gap-1 text-xs h-9\">\n <User className=\"w-3 h-3\" />\n Humano\n </ToggleGroupItem>\n </ToggleGroup>\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-8\" />\n\n {/* Status Filter */}\n <Popover \n open={openPopovers.status} \n onOpenChange={(open) => setOpenPopovers(prev => ({ ...prev, status: open }))}\n >\n <PopoverTrigger asChild>\n <Button variant=\"outline\" className=\"relative h-10\">\n <AlertCircle className=\"w-4 h-4 mr-2\" />\n Status\n {filters.status.length > 0 && (\n <Badge variant=\"destructive\" className=\"ml-2 h-5 w-5 p-0 text-xs flex items-center justify-center\">\n {filters.status.length}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-4 bg-white border shadow-lg\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"font-semibold text-gray-800\">Status</h3>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('status')}\n className=\"text-gray-500 hover:text-gray-700\"\n >\n Padrão\n </Button>\n </div>\n <div className=\"max-h-60 overflow-y-auto space-y-2\">\n {statusOptions.map((status) => (\n <div key={status.value} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`status-${status.value}`}\n checked={filters.status.includes(status.value)}\n onCheckedChange={() => toggleArrayFilter('status', status.value)}\n />\n <label\n htmlFor={`status-${status.value}`}\n className=\"text-sm cursor-pointer flex-1\"\n >\n {status.label}\n </label>\n </div>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Business Units Filter */}\n <Popover \n open={openPopovers.businessUnits} \n onOpenChange={(open) => setOpenPopovers(prev => ({ ...prev, businessUnits: open }))}\n >\n <PopoverTrigger asChild>\n <Button variant=\"outline\" className=\"relative h-10\">\n <Building2 className=\"w-4 h-4 mr-2\" />\n Unidades\n {filters.businessUnits.length > 0 && (\n <Badge variant=\"destructive\" className=\"ml-2 h-5 w-5 p-0 text-xs flex items-center justify-center\">\n {filters.businessUnits.length}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-4 bg-white border shadow-lg\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"font-semibold text-gray-800\">Unidades de Negócio</h3>\n {filters.businessUnits.length > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('businessUnits')}\n className=\"text-gray-500 hover:text-gray-700\"\n >\n Limpar\n </Button>\n )}\n </div>\n <div className=\"max-h-60 overflow-y-auto space-y-2\">\n {businessUnits.map((unit) => (\n <div key={unit.codigo} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`unit-${unit.codigo}`}\n checked={filters.businessUnits.includes(unit.codigo)}\n onCheckedChange={() => toggleArrayFilter('businessUnits', unit.codigo)}\n />\n <label\n htmlFor={`unit-${unit.codigo}`}\n className=\"text-sm cursor-pointer flex-1\"\n >\n {unit.descricao}\n </label>\n </div>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Users Filter */}\n <Popover \n open={openPopovers.operators} \n onOpenChange={(open) => setOpenPopovers(prev => ({ ...prev, operators: open }))}\n >\n <PopoverTrigger asChild>\n <Button variant=\"outline\" className=\"relative h-10\">\n <UserCheck className=\"w-4 h-4 mr-2\" />\n Usuários\n {filters.operators.length > 0 && (\n <Badge variant=\"destructive\" className=\"ml-2 h-5 w-5 p-0 text-xs flex items-center justify-center\">\n {filters.operators.length}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-4 bg-white border shadow-lg\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"font-semibold text-gray-800\">Usuários</h3>\n {filters.operators.length > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('operators')}\n className=\"text-gray-500 hover:text-gray-700\"\n >\n Limpar\n </Button>\n )}\n </div>\n <div className=\"max-h-60 overflow-y-auto space-y-2\">\n {operators.map((operator) => (\n <div key={operator} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`operator-${operator}`}\n checked={filters.operators.includes(operator)}\n onCheckedChange={() => toggleArrayFilter('operators', operator)}\n />\n <label\n htmlFor={`operator-${operator}`}\n className=\"text-sm cursor-pointer flex-1\"\n >\n {operator}\n </label>\n </div>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Task Types Filter */}\n <Popover \n open={openPopovers.taskTypes} \n onOpenChange={(open) => setOpenPopovers(prev => ({ ...prev, taskTypes: open }))}\n >\n <PopoverTrigger asChild>\n <Button variant=\"outline\" className=\"relative h-10\">\n <ClipboardList className=\"w-4 h-4 mr-2\" />\n Tipos de Tarefa\n {filters.taskTypes.length > 0 && (\n <Badge variant=\"destructive\" className=\"ml-2 h-5 w-5 p-0 text-xs flex items-center justify-center\">\n {filters.taskTypes.length}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-4 bg-white border shadow-lg\" align=\"start\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"font-semibold text-gray-800\">Tipos de Tarefa</h3>\n {filters.taskTypes.length > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('taskTypes')}\n className=\"text-gray-500 hover:text-gray-700\"\n >\n Limpar\n </Button>\n )}\n </div>\n <div className=\"max-h-60 overflow-y-auto space-y-2\">\n {taskTypes.map((taskType) => (\n <div key={taskType} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`task-${taskType}`}\n checked={filters.taskTypes.includes(taskType)}\n onCheckedChange={() => toggleArrayFilter('taskTypes', taskType)}\n />\n <label\n htmlFor={`task-${taskType}`}\n className=\"text-sm cursor-pointer flex-1\"\n >\n {taskType}\n </label>\n </div>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Clear All Filters */}\n {activeFiltersCount > 0 && (\n <>\n <Separator orientation=\"vertical\" className=\"h-8\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={clearAllFilters}\n className=\"text-gray-500 hover:text-gray-700\"\n >\n <X className=\"w-4 h-4 mr-1\" />\n Limpar todos\n </Button>\n </>\n )}\n </div>\n\n {/* Active Filters Display */}\n {activeFiltersCount > 0 && (\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"text-sm text-gray-600\">Filtros ativos:</span>\n {filters.vehicleId && (\n <Badge variant=\"secondary\" className=\"flex items-center gap-1\">\n Placa: {filters.vehicleId}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('vehicleId')}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n )}\n {filters.operatorType && (\n <Badge variant=\"secondary\" className=\"flex items-center gap-1\">\n Tipo: {filters.operatorType === 'ia' ? 'IA' : 'Humano'}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => clearFilter('operatorType')}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n )}\n {filters.status.length > 0 &&\n filters.status.map((status) => {\n const statusLabel = statusOptions.find(s => s.value === status)?.label || status;\n return (\n <Badge key={status} variant=\"secondary\" className=\"flex items-center gap-1\">\n Status: {statusLabel}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => toggleArrayFilter('status', status)}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n );\n })\n }\n {filters.businessUnits.map((unitCodigo) => {\n const unit = businessUnits.find(u => u.codigo === unitCodigo);\n return (\n <Badge key={unitCodigo} variant=\"secondary\" className=\"flex items-center gap-1\">\n Unidade: {unit?.descricao}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => toggleArrayFilter('businessUnits', unitCodigo)}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n );\n })}\n {filters.operators.map((operator) => (\n <Badge key={operator} variant=\"secondary\" className=\"flex items-center gap-1\">\n Operador: {operator}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => toggleArrayFilter('operators', operator)}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n ))}\n {filters.taskTypes.map((taskType) => (\n <Badge key={taskType} variant=\"secondary\" className=\"flex items-center gap-1\">\n Tipo: {taskType}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => toggleArrayFilter('taskTypes', taskType)}\n className=\"icon-size p-0 hover:bg-gray-200 ml-1\"\n >\n <X className=\"w-3 h-3\" />\n </Button>\n </Badge>\n ))}\n </div>\n )}\n </div>\n );\n};\n\nexport default FilterBar;\n","import React, { useState } from \"react\";\nimport { Filter, X, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\n\nexport interface FilterField {\n key: string;\n label: string;\n type: \"text\" | \"select\" | \"formatted-text\" | \"multi-select\";\n placeholder?: string;\n options?: Array<{ value: string; label: string }>;\n formatter?: (value: string) => string;\n}\n\ntype FilterValue = string | number | boolean;\ntype FiltersRecord = Record<string, FilterValue>;\n\nexport interface GenericFilterBarProps {\n fields: FilterField[];\n filters: FiltersRecord;\n onFilterChange: (filters: FiltersRecord) => void;\n onClearFilters: () => void;\n totalResults?: number;\n isLoading?: boolean;\n isFiltersLoaded?: boolean; // Novo prop para indicar se os filtros foram carregados do localStorage\n}\n\nexport function GenericFilterBar({\n fields,\n filters,\n onFilterChange,\n onClearFilters,\n totalResults,\n isLoading = false,\n isFiltersLoaded = true,\n}: Readonly<GenericFilterBarProps>) {\n const [isExpanded, setIsExpanded] = useState(() => {\n // Expandir automaticamente se houver filtros ativos salvos\n return Object.keys(filters).some((key) => {\n const value = filters[key];\n return (\n value !== \"\" &&\n value !== null &&\n value !== undefined &&\n value !== \"todos\"\n );\n });\n });\n\n // Estado para controlar os popovers dos multi-selects\n const [openPopovers, setOpenPopovers] = useState<Record<string, boolean>>({});\n\n // Estado para controlar o termo de busca de cada multi-select\n const [searchTerms, setSearchTerms] = useState<Record<string, string>>({});\n\n const updateFilter = (key: string, value: string | number | boolean) => {\n const newFilters = { ...filters, [key]: value };\n onFilterChange(newFilters);\n };\n\n const removeFilter = (key: string) => {\n const newFilters = { ...filters };\n // Para filtros de texto, definir como string vazia ao invés de deletar\n const field = fields.find((f) => f.key === key);\n if (field?.type === \"text\" || field?.type === \"formatted-text\") {\n newFilters[key] = \"\";\n } else if (field?.type === \"select\") {\n // Para selects, usar o primeiro valor das opções (geralmente 'todos')\n newFilters[key] = field.options?.[0]?.value || \"\";\n } else if (field?.type === \"multi-select\") {\n // Para multi-selects, limpar seleção\n newFilters[key] = \"\";\n } else {\n delete newFilters[key];\n }\n onFilterChange(newFilters);\n };\n\n const hasActiveFilters = Object.keys(filters).some((key) => {\n const value = filters[key];\n return (\n value !== \"\" && value !== null && value !== undefined && value !== \"todos\"\n );\n });\n\n const getDisplayValueForField = (field: FilterField | undefined, value: FilterValue): string => {\n let displayValue = String(value);\n\n // Para selects, mostrar o label ao invés do value\n if (field?.type === \"select\" && field.options) {\n const option = field.options.find((opt) => opt.value === value);\n if (option) displayValue = option.label;\n }\n\n // Para multi-selects, mostrar labels dos valores selecionados\n if (field?.type === \"multi-select\" && field.options) {\n const selectedValues = String(value)\n .split(\",\")\n .filter((v) => v.trim() !== \"\");\n const selectedLabels = selectedValues.map((val) => {\n const option = field.options?.find((opt) => opt.value === val);\n return option?.label || val;\n });\n displayValue = selectedLabels.join(\", \");\n }\n\n return displayValue;\n };\n\n const getActiveFilterBadges = () => {\n return Object.entries(filters)\n .filter(\n ([, value]) =>\n value !== \"\" &&\n value !== null &&\n value !== undefined &&\n value !== \"todos\"\n )\n .map(([key, value]) => {\n const field = fields.find((f) => f.key === key);\n const label = field?.label || key;\n const displayValue = getDisplayValueForField(field, value);\n return { key, label, value: displayValue };\n });\n };\n\n const handleMultiSelectChange = (field: FilterField, optionValue: string, checked: boolean, selectedValues: string[]) => {\n let newSelectedValues;\n if (checked) {\n newSelectedValues = [...selectedValues, optionValue];\n } else {\n newSelectedValues = selectedValues.filter((v) => v !== optionValue);\n }\n updateFilter(field.key, newSelectedValues.join(\",\"));\n };\n\n const renderMultiSelectOption = (field: FilterField, option: { value: string; label: string }, selectedValues: string[]) => {\n if (!option?.value || !option?.label) {\n return null;\n }\n const isSelected = selectedValues.includes(option.value);\n return (\n <div key={option.value} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`${field.key}-${option.value}`}\n checked={isSelected}\n onCheckedChange={(checked) => handleMultiSelectChange(field, option.value, !!checked, selectedValues)}\n />\n <Label\n htmlFor={`${field.key}-${option.value}`}\n className=\"text-sm font-normal cursor-pointer\"\n >\n {option.label}\n </Label>\n </div>\n );\n };\n\n const renderField = (field: FilterField) => {\n const value = filters[field.key] || \"\";\n\n switch (field.type) {\n case \"text\":\n return (\n <Input\n placeholder={field.placeholder}\n value={String(value)}\n onChange={(e) => updateFilter(field.key, e.target.value)}\n className=\"w-full\"\n />\n );\n\n case \"formatted-text\":\n return (\n <Input\n placeholder={field.placeholder}\n value={String(value)}\n onChange={(e) => {\n const formattedValue = field.formatter\n ? field.formatter(e.target.value)\n : e.target.value;\n updateFilter(field.key, formattedValue);\n }}\n className=\"w-full\"\n />\n );\n\n case \"select\":\n return (\n <Select\n value={String(value)}\n onValueChange={(newValue) => updateFilter(field.key, newValue)}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder={field.placeholder} />\n </SelectTrigger>\n <SelectContent>\n {field.options?.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n\n case \"multi-select\": {\n const selectedValues = String(value)\n .split(\",\")\n .filter((v) => v.trim() !== \"\");\n const isOpen = openPopovers[field.key] || false;\n const searchTerm = searchTerms[field.key] || \"\";\n\n const filteredOptions = Array.isArray(field.options)\n ? field.options.filter(\n (option) =>\n option &&\n typeof option.label === \"string\" &&\n option.label.toLowerCase().includes(searchTerm.toLowerCase())\n )\n : [];\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={(open) => {\n setOpenPopovers((prev) => ({ ...prev, [field.key]: open }));\n if (!open) {\n // Clear search when closing\n setSearchTerms((prev) => ({ ...prev, [field.key]: \"\" }));\n }\n }}\n >\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-label={field.label}\n className=\"w-full justify-between\"\n >\n {(() => {\n if (selectedValues.length === 0) {\n return field.placeholder || \"Selecionar...\";\n }\n const plural = selectedValues.length > 1 ? \"s\" : \"\";\n return `${selectedValues.length} selecionado${plural}`;\n })()}\n <ChevronDown className=\"ml-2 icon-size shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-2\">\n <div className=\"space-y-2\">\n <Input\n placeholder=\"Buscar...\"\n value={searchTerm}\n onChange={(e) =>\n setSearchTerms((prev) => ({\n ...prev,\n [field.key]: e.target.value,\n }))\n }\n className=\"h-8\"\n />\n <div className=\"space-y-2 max-h-60 overflow-y-auto\">\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option) => renderMultiSelectOption(field, option, selectedValues))\n ) : (\n <div className=\"text-sm text-muted-foreground\">\n {searchTerm\n ? \"Nenhum item encontrado\"\n : \"Nenhuma opção disponível\"}\n </div>\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n }\n\n default:\n return null;\n }\n };\n\n return (\n <Card className=\"mb-6\">\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"flex items-center gap-4\">\n <Collapsible open={isExpanded} onOpenChange={setIsExpanded}>\n <CollapsibleTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <Filter className=\"w-4 h-4 mr-2\" />\n Filtros\n {isExpanded ? (\n <ChevronUp className=\"w-4 h-4 ml-2\" />\n ) : (\n <ChevronDown className=\"w-4 h-4 ml-2\" />\n )}\n </Button>\n </CollapsibleTrigger>\n </Collapsible>\n\n {hasActiveFilters && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClearFilters}\n className=\"text-muted-foreground\"\n >\n <X className=\"w-4 h-4 mr-1\" />\n Limpar Filtros\n </Button>\n )}\n </div>\n\n {totalResults !== undefined && (\n <div className=\"text-sm text-muted-foreground\">\n {(() => {\n if (!isFiltersLoaded) return \"Carregando filtros...\";\n if (isLoading) return \"Carregando...\";\n\n const suffix = totalResults === 1 ? \"\" : \"s\";\n return `${totalResults} resultado${suffix}`;\n })()}\n </div>\n )}\n </div>\n\n <Collapsible open={isExpanded} onOpenChange={setIsExpanded}>\n <CollapsibleContent className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {fields.map((field) => (\n <div key={field.key} className=\"space-y-2\">\n <Label htmlFor={field.key} className=\"text-sm font-medium\">\n {field.label}\n </Label>\n {renderField(field)}\n </div>\n ))}\n </div>\n </CollapsibleContent>\n </Collapsible>\n\n {hasActiveFilters && (\n <div className=\"mt-4 pt-4 border-t\">\n <div className=\"flex flex-wrap gap-2\">\n <span className=\"text-sm text-muted-foreground self-center\">\n Filtros ativos:\n </span>\n {getActiveFilterBadges().map(({ key, label, value }) => (\n <Badge\n key={key}\n variant=\"secondary\"\n className=\"cursor-pointer hover:bg-destructive hover:text-destructive-foreground\"\n onClick={() => removeFilter(key)}\n >\n {label}: {value}\n <X className=\"w-3 h-3 ml-1\" />\n </Badge>\n ))}\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n","import { LucideIcon, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { ReactNode, useRef, useState, useEffect, useCallback } from 'react';\nimport { Button } from './ui/button';\n\ninterface PageHeaderProps {\n icon?: LucideIcon;\n title: string;\n description?: string;\n children?: ReactNode;\n}\n\nexport function PageHeader({ icon: Icon, title, description, children }: PageHeaderProps) {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const headerContainerRef = useRef<HTMLDivElement>(null);\n const isDraggingRef = useRef(false);\n const startXRef = useRef(0);\n const scrollLeftRef = useRef(0);\n const [showLeftGradient, setShowLeftGradient] = useState(false);\n const [showRightGradient, setShowRightGradient] = useState(false);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n const checkHeaderOverflow = () => {\n const headerContainer = headerContainerRef.current;\n if (!headerContainer) return false;\n\n const children = Array.from(headerContainer.children);\n if (children.length < 2) return false;\n\n const titleContainer = children[0] as HTMLElement;\n const buttonsContainer = children[1] as HTMLElement;\n\n const totalWidth = titleContainer.offsetWidth + buttonsContainer.offsetWidth + 32;\n const availableWidth = headerContainer.offsetWidth;\n\n return totalWidth > availableWidth;\n };\n\n const updateGradients = useCallback(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const { scrollLeft, scrollWidth, clientWidth } = container;\n const overflowing = scrollWidth > clientWidth;\n\n setShowLeftGradient(overflowing && scrollLeft > 10);\n setShowRightGradient(overflowing && scrollLeft < scrollWidth - clientWidth - 10);\n }, []);\n\n const updateLayout = useCallback(() => {\n const headerOverflowing = checkHeaderOverflow();\n setIsOverflowing(headerOverflowing);\n if (headerOverflowing) {\n updateGradients();\n }\n }, [updateGradients]);\n\n useEffect(() => {\n const headerContainer = headerContainerRef.current;\n const scrollContainer = scrollContainerRef.current;\n if (!headerContainer) return;\n\n updateLayout();\n\n const resizeObserver = new ResizeObserver(updateLayout);\n resizeObserver.observe(headerContainer);\n\n if (scrollContainer) {\n scrollContainer.addEventListener('scroll', updateGradients);\n }\n\n return () => {\n resizeObserver.disconnect();\n if (scrollContainer) {\n scrollContainer.removeEventListener('scroll', updateGradients);\n }\n };\n }, [children, updateLayout, updateGradients]);\n\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!scrollContainerRef.current) return;\n isDraggingRef.current = true;\n startXRef.current = e.pageX - scrollContainerRef.current.offsetLeft;\n scrollLeftRef.current = scrollContainerRef.current.scrollLeft;\n };\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!isDraggingRef.current || !scrollContainerRef.current) return;\n e.preventDefault();\n const x = e.pageX - scrollContainerRef.current.offsetLeft;\n const walk = (x - startXRef.current) * 2;\n scrollContainerRef.current.scrollLeft = scrollLeftRef.current - walk;\n };\n\n const handleMouseUp = () => {\n isDraggingRef.current = false;\n };\n\n const handleMouseLeave = () => {\n isDraggingRef.current = false;\n };\n\n const scrollLeft = () => {\n if (!scrollContainerRef.current) return;\n scrollContainerRef.current.scrollBy({ left: -200, behavior: 'smooth' });\n };\n\n const scrollRight = () => {\n if (!scrollContainerRef.current) return;\n scrollContainerRef.current.scrollBy({ left: 200, behavior: 'smooth' });\n };\n\n return (\n <div className=\"sticky top-0 z-40 bg-sidebar border-b p-4\">\n <div\n ref={headerContainerRef}\n className={`flex items-center justify-between gap-2 ${isOverflowing ? 'flex-col md:flex-row' : 'flex-row'}`}\n >\n <div className=\"flex items-center gap-4 mr-auto \">\n <div>\n <h1 className=\"text-2xl font-bold text-sidebar-foreground flex items-center gap-2\">\n {Icon && <Icon className=\"h-6 w-6 text-primary\" />}\n {title}\n </h1>\n {description && (\n <p className=\"text-sm text-sidebar-foreground mt-1\">\n {description}\n </p>\n )}\n </div>\n </div>\n\n {children && (\n <>\n {!isOverflowing ? (\n <div className=\"flex items-center gap-4\">\n {children}\n </div>\n ) : (\n <div className={`${isOverflowing? \"w-full md:w-fit\": \"\"} relative`}>\n {showLeftGradient && (\n <>\n <div className=\"absolute left-0 top-0 bottom-0 w-8 bg-gradient-to-r from-sidebar to-transparent pointer-events-none z-10\" />\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute -left-4 top-1/2 -translate-y-1/2 z-20 h-8 w-8 bg-sidebar/80 hover:bg-sidebar\"\n onClick={scrollLeft}\n >\n <ChevronLeft className=\"icon-size\" />\n </Button>\n </>\n )}\n {showRightGradient && (\n <>\n <div className=\"absolute right-0 top-0 bottom-0 w-8 bg-gradient-to-l from-sidebar to-transparent pointer-events-none z-10\" />\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute -right-4 top-1/2 -translate-y-1/2 z-20 h-8 w-8 bg-sidebar/80 hover:bg-sidebar\"\n onClick={scrollRight}\n >\n <ChevronRight className=\"icon-size\" />\n </Button>\n </>\n )}\n <div\n ref={scrollContainerRef}\n className=\"w-full overflow-x-auto hide-scrollbar-x cursor-grab active:cursor-grabbing\"\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseUp={handleMouseUp}\n onMouseLeave={handleMouseLeave}\n >\n <div className=\"flex items-center gap-4 px-1 py-2\">\n {children}\n </div>\n </div>\n </div>\n )}\n </>\n )}\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { Button } from './ui/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './ui/select';\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react';\n\ninterface PaginationControlsProps {\n currentPage: number;\n totalPages: number;\n pageSize: number;\n totalItems: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n onPageChange: (page: number) => void;\n onPageSizeChange: (size: number) => void;\n pageSizeOptions?: number[];\n showPageSizeSelector?: boolean;\n showTotalItems?: boolean;\n}\n\nexport function PaginationControls({\n currentPage,\n totalPages,\n pageSize,\n totalItems,\n hasNextPage,\n hasPreviousPage,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 50, 100],\n showPageSizeSelector = true,\n showTotalItems = true,\n}: Readonly<PaginationControlsProps>) {\n const startItem = totalItems > 0 ? (currentPage - 1) * pageSize + 1 : 0;\n const endItem = Math.min(currentPage * pageSize, totalItems);\n\n const renderPageNumbers = () => {\n const pages = [];\n const maxVisiblePages = 5;\n \n let startPage = Math.max(1, currentPage - Math.floor(maxVisiblePages / 2));\n const endPage = Math.min(totalPages, startPage + maxVisiblePages - 1);\n \n // Adjust start page if we're near the end\n if (endPage - startPage + 1 < maxVisiblePages) {\n startPage = Math.max(1, endPage - maxVisiblePages + 1);\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pages.push(\n <Button\n key={i}\n variant={i === currentPage ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => onPageChange(i)}\n className=\"min-w-[40px]\"\n >\n {i}\n </Button>\n );\n }\n\n return pages;\n };\n\n if (totalPages <= 1 && !showTotalItems) {\n return null;\n }\n\n return (\n <div className=\"flex items-center justify-between gap-4 py-4\">\n <div className=\"flex items-center gap-4\">\n {showTotalItems && (\n <div className=\"text-sm text-muted-foreground\">\n Mostrando {startItem} a {endItem} de {totalItems} registro{totalItems !== 1 ? 's' : ''}\n </div>\n )}\n \n {showPageSizeSelector && totalPages > 1 && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Itens por página:</span>\n <Select value={pageSize.toString()} onValueChange={(value) => onPageSizeChange(Number(value))}>\n <SelectTrigger className=\"w-[80px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={size.toString()}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n </div>\n\n {totalPages > 1 && (\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(1)}\n disabled={!hasPreviousPage}\n className=\"h-8 w-8 p-0\"\n >\n <ChevronsLeft className=\"icon-size\" />\n </Button>\n \n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={!hasPreviousPage}\n className=\"h-8 w-8 p-0\"\n >\n <ChevronLeft className=\"icon-size\" />\n </Button>\n\n <div className=\"flex items-center gap-1\">\n {renderPageNumbers()}\n </div>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={!hasNextPage}\n className=\"h-8 w-8 p-0\"\n >\n <ChevronRight className=\"icon-size\" />\n </Button>\n \n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(totalPages)}\n disabled={!hasNextPage}\n className=\"h-8 w-8 p-0\"\n >\n <ChevronsRight className=\"icon-size\" />\n </Button>\n </div>\n )}\n </div>\n );\n}\n","import { useEditor, EditorContent } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport Image from '@tiptap/extension-image';\nimport Link from '@tiptap/extension-link';\nimport { Bold, Italic, List, ListOrdered, Quote, Code, Link2, Image as ImageIcon } from 'lucide-react';\nimport { Toggle } from '@/components/ui/toggle';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogFooter,\n} from '@/components/ui/dialog';\nimport { useState, useEffect } from 'react';\nimport { toast } from '@/components/ui/use-toast';\n\ninterface RichTextEditorProps {\n readonly content: string;\n readonly onChange: (html: string) => void;\n readonly placeholder?: string;\n}\n\nexport function RichTextEditor({ content, onChange, placeholder }: RichTextEditorProps) {\n const [linkUrl, setLinkUrl] = useState('');\n const [imageUrl, setImageUrl] = useState('');\n const [showLinkDialog, setShowLinkDialog] = useState(false);\n const [showImageDialog, setShowImageDialog] = useState(false);\n const [isDragging, setIsDragging] = useState(false);\n\n const editor = useEditor({\n extensions: [\n StarterKit.configure({\n // Disable the default link extension from StarterKit\n link: false,\n }),\n Image.configure({\n inline: true,\n allowBase64: true,\n HTMLAttributes: {\n class: 'max-w-full h-auto rounded-lg my-2',\n },\n }),\n Link.configure({\n openOnClick: false,\n HTMLAttributes: {\n class: 'text-primary underline',\n },\n }),\n ],\n content,\n onUpdate: ({ editor }) => {\n onChange(editor.getHTML());\n },\n editorProps: {\n attributes: {\n class: 'rich-text-editor focus:outline-none min-h-[400px] p-4',\n },\n handlePaste: (view, event) => {\n const items = event.clipboardData?.items;\n if (!items) return false;\n\n for (const item of items) {\n if (item.type.startsWith('image/')) {\n event.preventDefault();\n const file = item.getAsFile();\n if (!file) return false;\n\n // Check file size (5MB limit)\n const maxSize = 5 * 1024 * 1024; // 5MB\n if (file.size > maxSize) {\n toast({\n title: 'Imagem muito grande',\n description: 'Por favor, use uma imagem menor que 5MB.',\n variant: 'destructive',\n });\n return true;\n }\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result;\n if (typeof result === 'string') {\n editor?.chain().focus().setImage({ src: result }).run();\n }\n };\n reader.readAsDataURL(file);\n return true;\n }\n }\n return false;\n },\n handleDrop: (view, event, slice, moved) => {\n if (!moved && event.dataTransfer?.files.length) {\n event.preventDefault();\n const files = Array.from(event.dataTransfer.files);\n const imageFiles = files.filter(file => file.type.startsWith('image/'));\n \n imageFiles.forEach(file => {\n // Check file size (5MB limit)\n const maxSize = 5 * 1024 * 1024; // 5MB\n if (file.size > maxSize) {\n toast({\n title: 'Imagem muito grande',\n description: 'Por favor, use uma imagem menor que 5MB.',\n variant: 'destructive',\n });\n return;\n }\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result;\n if (typeof result === 'string') {\n const pos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (pos) {\n editor?.chain().focus().insertContentAt(pos.pos, {\n type: 'image',\n attrs: { src: result },\n }).run();\n }\n }\n };\n reader.readAsDataURL(file);\n });\n return true;\n }\n return false;\n },\n },\n });\n\n useEffect(() => {\n if (editor && content !== editor.getHTML()) {\n editor.commands.setContent(content || '');\n }\n }, [content, editor]);\n\n if (!editor) {\n return null;\n }\n\n const addLink = () => {\n if (linkUrl) {\n editor.chain().focus().setLink({ href: linkUrl }).run();\n setLinkUrl('');\n setShowLinkDialog(false);\n }\n };\n\n const addImage = () => {\n if (imageUrl) {\n editor.chain().focus().setImage({ src: imageUrl }).run();\n setImageUrl('');\n setShowImageDialog(false);\n }\n };\n\n return (\n <div className=\"border rounded-lg shadow-sm\">\n <div className=\"border-b bg-muted/30 p-3 flex items-center gap-2 flex-wrap\">\n <div className=\"flex items-center gap-1\">\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('bold')}\n onPressedChange={() => editor.chain().focus().toggleBold().run()}\n title=\"Negrito\"\n >\n <Bold className=\"icon-size\" />\n </Toggle>\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('italic')}\n onPressedChange={() => editor.chain().focus().toggleItalic().run()}\n title=\"Itálico\"\n >\n <Italic className=\"icon-size\" />\n </Toggle>\n </div>\n \n <div className=\"w-px h-6 bg-border\" />\n \n <div className=\"flex items-center gap-1\">\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('bulletList')}\n onPressedChange={() => editor.chain().focus().toggleBulletList().run()}\n title=\"Lista com marcadores\"\n >\n <List className=\"icon-size\" />\n </Toggle>\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('orderedList')}\n onPressedChange={() => editor.chain().focus().toggleOrderedList().run()}\n title=\"Lista numerada\"\n >\n <ListOrdered className=\"icon-size\" />\n </Toggle>\n </div>\n \n <div className=\"w-px h-6 bg-border\" />\n \n <div className=\"flex items-center gap-1\">\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('blockquote')}\n onPressedChange={() => editor.chain().focus().toggleBlockquote().run()}\n title=\"Citação\"\n >\n <Quote className=\"icon-size\" />\n </Toggle>\n <Toggle\n size=\"sm\"\n pressed={editor.isActive('code')}\n onPressedChange={() => editor.chain().focus().toggleCode().run()}\n title=\"Código\"\n >\n <Code className=\"icon-size\" />\n </Toggle>\n </div>\n \n <div className=\"w-px h-6 bg-border\" />\n \n <div className=\"flex items-center gap-1\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => setShowLinkDialog(true)}\n className=\"h-8 px-2\"\n title=\"Adicionar link\"\n >\n <Link2 className=\"icon-size\" />\n </Button>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => setShowImageDialog(true)}\n className=\"h-8 px-2\"\n title=\"Adicionar imagem\"\n >\n <ImageIcon className=\"icon-size\" />\n </Button>\n </div>\n </div>\n <section \n className={`relative ${isDragging ? 'ring-2 ring-primary ring-offset-2' : ''}`}\n aria-label=\"Rich text editor\"\n onDragEnter={(e) => {\n e.preventDefault();\n setIsDragging(true);\n }}\n onDragLeave={(e) => {\n e.preventDefault();\n if (e.currentTarget === e.target) {\n setIsDragging(false);\n }\n }}\n onDragOver={(e) => {\n e.preventDefault();\n }}\n onDrop={() => {\n setIsDragging(false);\n }}\n >\n <EditorContent editor={editor} />\n {placeholder && editor.isEmpty && (\n <div className=\"absolute top-4 left-4 text-muted-foreground pointer-events-none\">\n {placeholder}\n </div>\n )}\n {isDragging && (\n <div className=\"absolute inset-0 bg-primary/5 pointer-events-none flex items-center justify-center\">\n <div className=\"bg-background/90 rounded-lg p-4 shadow-lg\">\n <p className=\"text-lg font-medium\">Solte a imagem aqui</p>\n </div>\n </div>\n )}\n </section>\n\n <Dialog open={showLinkDialog} onOpenChange={setShowLinkDialog}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Adicionar Link</DialogTitle>\n </DialogHeader>\n <Input\n placeholder=\"https://exemplo.com\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && addLink()}\n />\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setShowLinkDialog(false)}>\n Cancelar\n </Button>\n <Button onClick={addLink}>Adicionar</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n\n <Dialog open={showImageDialog} onOpenChange={setShowImageDialog}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Adicionar Imagem</DialogTitle>\n </DialogHeader>\n <Input\n placeholder=\"https://exemplo.com/imagem.jpg\"\n value={imageUrl}\n onChange={(e) => setImageUrl(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && addImage()}\n />\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setShowImageDialog(false)}>\n Cancelar\n </Button>\n <Button onClick={addImage}>Adicionar</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\n// Add editor styles\nif (typeof document !== 'undefined') {\n const style = document.createElement('style');\n style.textContent = `\n .rich-text-editor {\n font-size: 0.875rem;\n line-height: 1.5;\n }\n \n .rich-text-editor p {\n margin-bottom: 0.5rem;\n }\n \n .rich-text-editor p:last-child {\n margin-bottom: 0;\n }\n \n .rich-text-editor h1,\n .rich-text-editor h2,\n .rich-text-editor h3,\n .rich-text-editor h4,\n .rich-text-editor h5,\n .rich-text-editor h6 {\n font-weight: 600;\n margin-top: 1rem;\n margin-bottom: 0.5rem;\n }\n \n .rich-text-editor ul,\n .rich-text-editor ol {\n margin-left: 1.5rem;\n margin-bottom: 0.5rem;\n }\n \n .rich-text-editor li {\n margin-bottom: 0.25rem;\n }\n \n .rich-text-editor a {\n color: hsl(var(--primary));\n text-decoration: underline;\n }\n \n .rich-text-editor img {\n max-width: 100%;\n height: auto;\n border-radius: 0.375rem;\n margin: 1rem 0;\n display: block;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n }\n \n .rich-text-editor blockquote {\n border-left: 3px solid hsl(var(--border));\n padding-left: 1rem;\n margin: 0.5rem 0;\n font-style: italic;\n }\n \n .rich-text-editor code {\n background-color: hsl(var(--muted));\n padding: 0.125rem 0.375rem;\n border-radius: 0.25rem;\n font-size: 0.875rem;\n font-family: monospace;\n }\n \n .ProseMirror:focus {\n outline: none;\n }\n `;\n document.head.appendChild(style);\n}","import DOMPurify from 'dompurify';\n\ninterface RichTextRendererProps {\n readonly content: string;\n readonly className?: string;\n readonly maxLength?: number;\n readonly blockImages?: boolean;\n}\n\nexport function RichTextRenderer({ content, className = '', maxLength, blockImages = false }: RichTextRendererProps) {\n const allowedTags = blockImages\n ? ['p', 'br', 'strong', 'b', 'em', 'i', 'u', 'a', 'ul', 'ol', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'code', 'pre']\n : ['p', 'br', 'strong', 'b', 'em', 'i', 'u', 'a', 'ul', 'ol', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'blockquote', 'code', 'pre'];\n\n const sanitizedContent = DOMPurify.sanitize(content, {\n ALLOWED_TAGS: allowedTags,\n ALLOWED_ATTR: ['href', 'target', 'rel', 'src', 'alt', 'width', 'height', 'class'],\n ALLOW_DATA_ATTR: false,\n });\n\n // Truncate content if maxLength is provided\n const displayContent = maxLength && sanitizedContent.length > maxLength\n ? sanitizedContent.substring(0, maxLength) + '...'\n : sanitizedContent;\n\n return (\n <div \n className={`rich-text-content ${className}`}\n dangerouslySetInnerHTML={{ __html: displayContent }}\n />\n );\n}\n\n// Add global styles for rich text content\nconst style = document.createElement('style');\nstyle.textContent = `\n .rich-text-content {\n font-size: 0.875rem;\n line-height: 1.5;\n color: var(--muted-foreground);\n }\n \n .rich-text-content p {\n margin-bottom: 0.5rem;\n }\n \n .rich-text-content p:last-child {\n margin-bottom: 0;\n }\n \n .rich-text-content h1,\n .rich-text-content h2,\n .rich-text-content h3,\n .rich-text-content h4,\n .rich-text-content h5,\n .rich-text-content h6 {\n font-weight: 600;\n margin-top: 1rem;\n margin-bottom: 0.5rem;\n }\n \n .rich-text-content h1 { font-size: 1.5rem; }\n .rich-text-content h2 { font-size: 1.25rem; }\n .rich-text-content h3 { font-size: 1.125rem; }\n .rich-text-content h4 { font-size: 1rem; }\n .rich-text-content h5 { font-size: 0.875rem; }\n .rich-text-content h6 { font-size: 0.75rem; }\n \n .rich-text-content ul,\n .rich-text-content ol {\n margin-left: 1.5rem;\n margin-bottom: 0.5rem;\n }\n \n .rich-text-content li {\n margin-bottom: 0.25rem;\n }\n \n .rich-text-content a {\n color: hsl(var(--primary));\n text-decoration: underline;\n }\n \n .rich-text-content a:hover {\n text-decoration: none;\n }\n \n .rich-text-content img {\n max-width: 100%;\n height: auto;\n border-radius: 0.375rem;\n margin: 0.5rem 0;\n }\n \n .rich-text-content blockquote {\n border-left: 3px solid hsl(var(--border));\n padding-left: 1rem;\n margin: 0.5rem 0;\n font-style: italic;\n }\n \n .rich-text-content code {\n background-color: hsl(var(--muted));\n padding: 0.125rem 0.375rem;\n border-radius: 0.25rem;\n font-size: 0.875rem;\n font-family: monospace;\n }\n \n .rich-text-content pre {\n background-color: hsl(var(--muted));\n padding: 1rem;\n border-radius: 0.375rem;\n overflow-x: auto;\n margin: 0.5rem 0;\n }\n \n .rich-text-content pre code {\n background-color: transparent;\n padding: 0;\n }\n`;\ndocument.head.appendChild(style);","import React, { ReactNode } from 'react';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from './ui/card';\nimport { Button } from './ui/button';\nimport { TooltipButton } from './ui/tooltip-button';\nimport { AlertCircle, RefreshCw, Plus, LucideIcon } from 'lucide-react';\nimport { GenericFilterBar, FilterField } from './GenericFilterBar';\nimport { PageHeader } from './PageHeader';\n\nexport interface StandardPageLayoutProps {\n // Header\n readonly title: string;\n readonly description?: string;\n readonly icon?: LucideIcon;\n \n // Actions\n readonly onRefresh?: () => void;\n readonly onCreateNew?: () => void;\n readonly refreshButtonText?: string;\n readonly createButtonText?: string;\n readonly refreshLoading?: boolean;\n \n // Filters\n readonly filterFields?: FilterField[];\n readonly filters?: Record<string, string | number | boolean>;\n readonly onFilterChange?: (filters: Record<string, string | number | boolean>) => void;\n readonly onClearFilters?: () => void;\n readonly totalResults?: number;\n readonly isFiltersLoaded?: boolean;\n \n // Error state\n readonly error?: string | null;\n readonly onRetryError?: () => void;\n readonly onClearError?: () => void;\n \n // Content\n readonly children: ReactNode;\n readonly contentTitle?: string;\n readonly contentDescription?: string;\n readonly contentIcon?: ReactNode;\n \n // Loading\n readonly loading?: boolean;\n \n // Layout\n readonly className?: string;\n}\n\nexport function StandardPageLayout({\n // Header\n title,\n description,\n icon,\n \n // Actions\n onRefresh,\n onCreateNew,\n refreshButtonText = \"Atualizar\",\n createButtonText = \"Novo\",\n refreshLoading = false,\n \n // Filters\n filterFields,\n filters,\n onFilterChange,\n onClearFilters,\n totalResults,\n isFiltersLoaded = true,\n \n // Error state\n error,\n onRetryError,\n onClearError,\n \n // Content\n children,\n contentTitle,\n contentDescription,\n contentIcon,\n \n // Loading\n loading = false,\n \n // Layout\n className = \"\"\n}: StandardPageLayoutProps) {\n \n const hasActions = onRefresh || onCreateNew;\n const hasFilters = filterFields && filterFields.length > 0;\n \n return (\n <div className={className}>\n <PageHeader\n icon={icon}\n title={title}\n description={description}\n >\n {hasActions && (\n <>\n {onRefresh && (\n <TooltipButton\n variant=\"outline\"\n onClick={onRefresh}\n disabled={refreshLoading || loading}\n tooltip={refreshButtonText}\n icon={<RefreshCw className={`w-4 h-4 ${refreshLoading || loading ? 'animate-spin' : ''}`} />}\n >\n </TooltipButton>\n )}\n\n {onCreateNew && (\n <TooltipButton\n variant=\"primary\"\n onClick={onCreateNew}\n tooltip={createButtonText}\n icon={<Plus className=\"w-4 h-4\" />}\n >\n </TooltipButton>\n )}\n </>\n )}\n </PageHeader>\n\n <div className=\"container mx-auto py-6 space-y-6\">\n\n {/* Filter Bar */}\n {hasFilters && filters && onFilterChange && onClearFilters && (\n <GenericFilterBar\n fields={filterFields}\n filters={filters}\n onFilterChange={onFilterChange}\n onClearFilters={onClearFilters}\n totalResults={totalResults}\n isLoading={loading}\n isFiltersLoaded={isFiltersLoaded}\n />\n )}\n\n {/* Error State */}\n {error && (\n <Card className=\"border-destructive\">\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center gap-2 text-destructive\">\n <AlertCircle className=\"icon-size\" />\n <span>{error}</span>\n \n <div className=\"ml-auto flex gap-2\">\n {onRetryError && (\n <Button variant=\"outline\" size=\"sm\" onClick={onRetryError}>\n <RefreshCw className=\"w-4 h-4 mr-2\" />\n Tentar novamente\n </Button>\n )}\n {onClearError && (\n <Button variant=\"outline\" size=\"sm\" onClick={onClearError}>\n Fechar\n </Button>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n )}\n\n {/* Main Content */}\n {!error && (\n <Card>\n {(contentTitle || contentDescription) && (\n <CardHeader>\n {contentTitle && (\n <CardTitle className=\"flex items-center gap-2\">\n {contentIcon}\n {contentTitle}\n </CardTitle>\n )}\n {contentDescription && (\n <CardDescription>\n {contentDescription}\n </CardDescription>\n )}\n </CardHeader>\n )}\n <CardContent className=\"p-6\">\n {children}\n </CardContent>\n </Card>\n )}\n </div>\n </div>\n );\n}\n","import React from 'react';\n\ninterface StatusIndicatorProps {\n status: 'online' | 'busy' | 'offline';\n count: number;\n label: string;\n onClick?: () => void;\n}\n\nconst StatusIndicator: React.FC<StatusIndicatorProps> = ({status, count, label, onClick}) => {\n const getStatusColor = () => {\n switch (status) {\n case 'online':\n return 'bg-green-500';\n case 'busy':\n return 'bg-yellow-500';\n case 'offline':\n return 'bg-red-500';\n default:\n return 'bg-gray-500';\n }\n };\n\n return (\n <div onClick={onClick}\n className={`flex items-center gap-3 bg-white rounded-lg p-4 shadow-sm border border-gray-100 my-auto ${onClick ? \"cursor-pointer\" : \"\"}`}>\n <div className={`flex w-3 h-3 rounded-full ${getStatusColor()} animate-pulse m-auto`}></div>\n <div className={'flex items-center m-auto w-full'}>\n <div className={'flex flex-row gap-2 w-full justify-start'}>\n <p className=\"text-2xl font-bold text-gray-800\">{count}</p>\n <p className=\"flex my-auto text-sm text-gray-500\">{label}</p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default StatusIndicator;\n","\nimport React from 'react';\nimport { Button } from '@/components/ui/button';\nimport { LayoutGrid, Circle, MessageSquare } from 'lucide-react';\n\ninterface ViewToggleProps {\n viewMode: 'cards' | 'dots' | 'chat';\n onViewModeChange: (mode: 'cards' | 'dots' | 'chat') => void;\n}\n\nconst ViewToggle: React.FC<ViewToggleProps> = ({ viewMode, onViewModeChange }) => {\n return (\n <div className=\"flex items-center gap-2 rounded-lg border p-1\">\n <Button\n variant={viewMode === 'cards' ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => onViewModeChange('cards')}\n className=\"flex items-center gap-2\"\n >\n <LayoutGrid className=\"icon-size\" />\n Cards\n </Button>\n <Button\n variant={viewMode === 'dots' ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => onViewModeChange('dots')}\n className=\"flex items-center gap-2\"\n >\n <Circle className=\"icon-size\" />\n Resumido\n </Button>\n <Button\n variant={viewMode === 'chat' ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => onViewModeChange('chat')}\n className=\"flex items-center gap-2\"\n >\n <MessageSquare className=\"icon-size\" />\n Conversa\n </Button>\n </div>\n );\n};\n\nexport default ViewToggle;\n","import React, { memo, useCallback } from 'react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Button } from '@/components/ui/button';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Badge } from '@/components/ui/badge';\nimport {\n AlertTriangle,\n RefreshCw,\n Home,\n ExternalLink,\n Shield,\n Clock,\n Key,\n Server,\n Users\n} from 'lucide-react';\n\ninterface SSOErrorProps {\n /** Type of SSO error */\n errorType: 'authentication_failed' | 'invalid_state' | 'token_expired' | 'server_error' | 'tenant_mismatch' | 'unknown';\n /** Error message */\n message: string;\n /** Additional error details */\n details?: string;\n /** Tenant ID where error occurred */\n tenantId?: string;\n /** Error code from SSO provider */\n errorCode?: string;\n /** Whether retry is possible */\n canRetry?: boolean;\n /** Custom class name */\n className?: string;\n /** Callback when retry is requested */\n onRetry?: () => void;\n /** Callback when user goes back to login */\n onBackToLogin?: () => void;\n /** Callback when user requests support */\n onContactSupport?: () => void;\n /** SSO Provider name */\n ssoProviderName?: string;\n /** Application name */\n appName?: string;\n /** Support email */\n supportEmail?: string;\n}\n\nconst SSOError: React.FC<SSOErrorProps> = memo(({\n errorType,\n message,\n details,\n tenantId,\n errorCode,\n canRetry = true,\n className = '',\n onRetry,\n onBackToLogin,\n onContactSupport,\n ssoProviderName = 'SSO',\n appName = 'o sistema',\n supportEmail = 'suporte@example.com'\n}) => {\n const getErrorIcon = () => {\n switch (errorType) {\n case 'authentication_failed':\n return <Key className=\"h-12 w-12 text-red-500\" />;\n case 'invalid_state':\n return <Shield className=\"h-12 w-12 text-orange-500\" />;\n case 'token_expired':\n return <Clock className=\"h-12 w-12 text-yellow-500\" />;\n case 'server_error':\n return <Server className=\"h-12 w-12 text-red-500\" />;\n case 'tenant_mismatch':\n return <Users className=\"h-12 w-12 text-purple-500\" />;\n default:\n return <AlertTriangle className=\"h-12 w-12 text-red-500\" />;\n }\n };\n\n const getErrorTitle = () => {\n switch (errorType) {\n case 'authentication_failed':\n return 'Falha na Autenticação SSO';\n case 'invalid_state':\n return 'Sessão SSO Inválida';\n case 'token_expired':\n return 'Sessão SSO Expirada';\n case 'server_error':\n return 'Erro no Servidor SSO';\n case 'tenant_mismatch':\n return 'Tenant Incompatível';\n default:\n return 'Erro SSO Inesperado';\n }\n };\n\n const getErrorDescription = () => {\n switch (errorType) {\n case 'authentication_failed':\n return `Não foi possível autenticar suas credenciais no sistema ${ssoProviderName}. Verifique suas permissões e tente novamente.`;\n case 'invalid_state':\n return 'A sessão SSO é inválida ou foi comprometida. Por segurança, o login foi cancelado.';\n case 'token_expired':\n return 'Sua sessão SSO expirou durante o processo de autenticação. Inicie o login novamente.';\n case 'server_error':\n return 'Ocorreu um erro interno no servidor durante a autenticação SSO. Tente novamente em alguns instantes.';\n case 'tenant_mismatch':\n return 'O tenant configurado não corresponde ao esperado para esta sessão SSO.';\n default:\n return 'Ocorreu um erro inesperado durante a autenticação SSO. Nossa equipe foi notificada.';\n }\n };\n\n const getSolutionSteps = () => {\n switch (errorType) {\n case 'authentication_failed':\n return [\n `Verifique se você tem acesso ao sistema ${ssoProviderName}`,\n 'Confirme se suas credenciais estão corretas',\n 'Entre em contato com o administrador se o problema persistir'\n ];\n case 'invalid_state':\n return [\n 'Limpe os cookies do navegador',\n `Feche todas as abas de ${appName} e ${ssoProviderName}`,\n 'Inicie um novo processo de login SSO'\n ];\n case 'token_expired':\n return [\n 'Inicie um novo processo de login',\n 'Complete o login mais rapidamente da próxima vez',\n 'Verifique sua conexão com a internet'\n ];\n case 'server_error':\n return [\n 'Aguarde alguns minutos e tente novamente',\n `Verifique se o serviço ${ssoProviderName} está funcionando`,\n 'Use o login tradicional como alternativa'\n ];\n case 'tenant_mismatch':\n return [\n 'Verifique se está acessando o subdomínio correto',\n 'Confirme o tenant ID com o administrador',\n 'Limpe o cache do navegador e tente novamente'\n ];\n default:\n return [\n 'Tente novamente em alguns instantes',\n 'Limpe o cache do navegador',\n 'Entre em contato com o suporte se o problema persistir'\n ];\n }\n };\n\n const getErrorSeverity = () => {\n switch (errorType) {\n case 'server_error':\n case 'unknown':\n return 'destructive';\n case 'authentication_failed':\n case 'tenant_mismatch':\n return 'destructive';\n case 'invalid_state':\n case 'token_expired':\n return 'default';\n default:\n return 'destructive';\n }\n };\n\n const handleRetry = useCallback(() => {\n onRetry?.();\n // Default retry behavior\n window.location.href = `/auth/sso/login?tenant=${tenantId}`;\n }, [onRetry, tenantId]);\n\n const handleBackToLogin = useCallback(() => {\n onBackToLogin?.();\n // Default behavior\n window.location.href = '/login';\n }, [onBackToLogin]);\n\n const handleContactSupport = useCallback(() => {\n onContactSupport?.();\n window.open(`mailto:${supportEmail}?subject=Erro SSO&body=` + encodeURIComponent(\n `Erro SSO\\n\\nTipo: ${errorType}\\nMensagem: ${message}\\nTenant: ${tenantId}\\nCódigo: ${errorCode}\\nDetalhes: ${details}`\n ), '_blank');\n }, [onContactSupport, errorType, message, tenantId, errorCode, details, supportEmail]);\n\n return (\n <div className={`min-h-screen flex items-center justify-center p-4 bg-muted/30 ${className}`}>\n <Card className=\"w-full max-w-2xl shadow-lg\">\n <CardHeader className=\"text-center pb-4\">\n <div className=\"flex justify-center mb-4\">\n {getErrorIcon()}\n </div>\n\n <CardTitle className=\"text-2xl mb-2\">\n {getErrorTitle()}\n </CardTitle>\n\n <p className=\"text-muted-foreground\">\n {getErrorDescription()}\n </p>\n </CardHeader>\n\n <CardContent className=\"space-y-6\">\n {/* Error Details Alert */}\n <Alert variant={getErrorSeverity()}>\n <AlertTriangle className=\"icon-size\" />\n <AlertDescription>\n <strong>Erro:</strong> {message}\n {details && (\n <div className=\"mt-2 text-xs opacity-75\">\n <strong>Detalhes:</strong> {details}\n </div>\n )}\n </AlertDescription>\n </Alert>\n\n {/* Error Metadata */}\n <div className=\"flex flex-wrap gap-2 justify-center\">\n {tenantId && (\n <Badge variant=\"outline\">\n <Users className=\"h-3 w-3 mr-1\" />\n Tenant: {tenantId}\n </Badge>\n )}\n\n {errorCode && (\n <Badge variant=\"outline\">\n Código: {errorCode}\n </Badge>\n )}\n\n <Badge variant=\"outline\">\n Tipo: {errorType}\n </Badge>\n </div>\n\n {/* Solution Steps */}\n <div className=\"bg-muted/50 p-4 rounded-lg\">\n <h4 className=\"font-medium mb-3 flex items-center gap-2\">\n <Shield className=\"icon-size\" />\n Passos para Resolver\n </h4>\n\n <ol className=\"space-y-2 text-sm\">\n {getSolutionSteps().map((step, index) => (\n <li key={index} className=\"flex items-start gap-2\">\n <span className=\"flex-shrink-0 w-5 h-5 bg-primary text-primary-foreground rounded-full text-xs flex items-center justify-center\">\n {index + 1}\n </span>\n <span>{step}</span>\n </li>\n ))}\n </ol>\n </div>\n\n {/* Action Buttons */}\n <div className=\"flex flex-col sm:flex-row gap-3\">\n {canRetry && (\n <Button\n onClick={handleRetry}\n className=\"flex-1\"\n size=\"lg\"\n >\n <RefreshCw className=\"icon-size mr-2\" />\n Tentar Novamente\n </Button>\n )}\n\n <Button\n onClick={handleBackToLogin}\n variant=\"outline\"\n className=\"flex-1\"\n size=\"lg\"\n >\n <Home className=\"icon-size mr-2\" />\n Voltar ao Login\n </Button>\n\n <Button\n onClick={handleContactSupport}\n variant=\"ghost\"\n className=\"flex-1\"\n size=\"lg\"\n >\n <ExternalLink className=\"icon-size mr-2\" />\n Contatar Suporte\n </Button>\n </div>\n\n {/* Additional Help */}\n <div className=\"text-center text-xs text-muted-foreground border-t pt-4\">\n <p>\n Se você continuar enfrentando problemas, entre em contato com o administrador do sistema\n ou visite nossa central de ajuda.\n </p>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n});\n\nexport default SSOError;\n\n// Display name for debugging\nSSOError.displayName = 'SSOError';","import React, { useState, memo, useCallback } from 'react';\nimport { Button } from '@/components/ui/button';\nimport { AlertCircle, LogIn, Shield } from 'lucide-react';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\n\ninterface SSOLoginButtonProps {\n tenantId: string;\n redirectUrl?: string;\n loading?: boolean;\n error?: string;\n variant?: 'default' | 'outline' | 'secondary' | 'ghost' | 'link' | 'destructive' | 'primary-acorde' | 'secondary-acorde' | 'outline-acorde';\n size?: 'default' | 'sm' | 'lg' | 'icon';\n fullWidth?: boolean;\n className?: string;\n onLoginStart?: () => void;\n onLoginError?: (error: string) => void;\n hideAlternativeLogin?: boolean;\n ssoLoginUrl?: string;\n apiBaseUrl?: string;\n ssoProviderName?: string;\n}\n\nconst SSOLoginButton: React.FC<SSOLoginButtonProps> = memo(({\n tenantId,\n redirectUrl,\n loading = false,\n error,\n variant = 'primary-acorde',\n size = 'default',\n fullWidth = true,\n className = '',\n onLoginStart,\n onLoginError,\n hideAlternativeLogin = false,\n ssoLoginUrl,\n apiBaseUrl = 'http://localhost:8000',\n ssoProviderName = 'SSO'\n}) => {\n const [isInitiating, setIsInitiating] = useState(false);\n\n const handleSSOLogin = useCallback(async () => {\n if (loading || isInitiating) return;\n\n try {\n setIsInitiating(true);\n onLoginStart?.();\n\n let ssoUrl: string;\n if (ssoLoginUrl && ssoLoginUrl.trim()) {\n const trimmedUrl = ssoLoginUrl.trim();\n\n try {\n let url: URL;\n\n if (trimmedUrl.startsWith('/')) {\n url = new URL(trimmedUrl, apiBaseUrl);\n console.info('Converted relative SSO URL to absolute:', trimmedUrl, '→', url.toString());\n } else {\n url = new URL(trimmedUrl);\n console.info('Using absolute SSO URL:', url.toString());\n }\n\n if (!url.searchParams.has('tenant_id')) {\n url.searchParams.set('tenant_id', tenantId);\n }\n\n if (redirectUrl && !url.searchParams.has('redirect_url')) {\n url.searchParams.set('redirect_url', redirectUrl);\n }\n\n ssoUrl = url.toString();\n } catch (urlError) {\n console.warn('Invalid SSO login URL provided, falling back to default:', trimmedUrl, urlError);\n ssoUrl = '';\n }\n } else {\n ssoUrl = '';\n }\n\n if (!ssoUrl) {\n const params = new URLSearchParams();\n\n params.set('tenant_id', tenantId);\n\n if (redirectUrl) {\n params.set('redirect_url', redirectUrl);\n }\n\n ssoUrl = `${apiBaseUrl}/api/v1/auth/sso/login?${params.toString()}`;\n console.info('Using default SSO URL:', ssoUrl);\n }\n\n console.info('Redirecting to SSO:', ssoUrl);\n window.location.href = ssoUrl;\n\n } catch (err) {\n let errorMessage = 'Failed to initiate SSO login';\n\n if (err instanceof Error) {\n if (err.message.includes('Invalid URL')) {\n errorMessage = 'Configuração de SSO inválida. Entre em contato com o administrador.';\n console.error('Invalid SSO URL configuration:', ssoLoginUrl, err);\n } else {\n errorMessage = err.message;\n }\n }\n\n onLoginError?.(errorMessage);\n } finally {\n setIsInitiating(false);\n }\n }, [loading, isInitiating, onLoginStart, tenantId, redirectUrl, onLoginError, ssoLoginUrl, apiBaseUrl]);\n\n const isLoading = loading || isInitiating;\n\n return (\n <div className=\"w-full space-y-4\">\n {error && (\n <Alert variant=\"destructive\">\n <AlertCircle className=\"icon-size\" />\n <AlertDescription>{error}</AlertDescription>\n </Alert>\n )}\n <Button\n onClick={handleSSOLogin}\n disabled={isLoading}\n variant={variant}\n size={size}\n className={`\n ${fullWidth ? 'w-full' : ''}\n ${className}\n relative overflow-hidden transition-all duration-200\n hover:scale-[1.02] active:scale-[0.98]\n `}\n >\n <div className=\"flex items-center justify-center gap-3\">\n {isLoading ? (\n <div className=\"icon-size animate-spin rounded-full border-2 border-background border-t-foreground\" />\n ) : (\n <Shield className=\"icon-size\" />\n )}\n\n <span className=\"font-medium\">\n {isLoading ? 'Iniciando SSO...' : `Entrar com ${ssoProviderName}`}\n </span>\n </div>\n\n {isLoading && (\n <div className=\"absolute inset-0 bg-background/50 backdrop-blur-sm\" />\n )}\n </Button>\n {!hideAlternativeLogin && (\n <div className=\"text-center\">\n <Button\n variant=\"link\"\n size=\"sm\"\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n onClick={() => {\n window.location.href = '/login/traditional';\n }}\n >\n <LogIn className=\"h-3 w-3 mr-1\" />\n Usar login tradicional\n </Button>\n </div>\n )}\n </div>\n );\n});\n\nSSOLoginButton.displayName = 'SSOLoginButton';\n\nexport default SSOLoginButton;","import React, { useState } from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport {\n AlertCircle,\n CheckCircle,\n Clock,\n Code,\n Copy,\n FileJson,\n Hash,\n Info,\n Loader2,\n RefreshCw,\n Timer,\n XCircle,\n ChevronDown,\n ChevronRight,\n Activity,\n Database,\n Network,\n Zap,\n AlertTriangle\n} from 'lucide-react';\nimport { useToast } from '../ui/use-toast';\nimport { WebhookEvent, WebhookEventStatus } from '@/domain/entities/WebhookEvent';\nimport { webhookService } from '@/services/api/webhook.service';\nimport { cn } from '@/utils/styles';\nimport { format, formatDistanceToNow } from 'date-fns';\nimport { ptBR } from 'date-fns/locale';\n\ninterface EventInspectorProps {\n event: WebhookEvent;\n onRetry?: (eventId: string) => void;\n onClose?: () => void;\n className?: string;\n}\n\ninterface ProcessingStep {\n name: string;\n status: 'pending' | 'processing' | 'success' | 'failed' | 'skipped';\n startTime?: Date;\n endTime?: Date;\n duration?: number;\n error?: string;\n details?: Record<string, unknown>;\n}\n\nexport function EventInspector({ event, onRetry, className }: EventInspectorProps) {\n const { toast } = useToast();\n const [expandedSections, setExpandedSections] = useState<Set<string>>(new Set(['overview']));\n const [copiedField, setCopiedField] = useState<string | null>(null);\n\n const retryMutation = useMutation({\n mutationFn: async (eventId: string) => {\n return await webhookService.retryEvent(eventId);\n },\n onSuccess: () => {\n toast({\n title: 'Reprocessamento iniciado',\n description: 'O evento será reprocessado em breve',\n });\n onRetry?.(event.id);\n },\n onError: (error: Error) => {\n toast({\n title: 'Erro ao reprocessar',\n description: error.message,\n variant: 'destructive',\n });\n }\n });\n\n const getStatusIcon = (status: WebhookEventStatus) => {\n switch (status) {\n case WebhookEventStatus.SUCCESS:\n return <CheckCircle className=\"icon-size text-green-500\" />;\n case WebhookEventStatus.FAILED:\n return <XCircle className=\"icon-size text-red-500\" />;\n case WebhookEventStatus.PROCESSING:\n return <Loader2 className=\"icon-size text-blue-500 animate-spin\" />;\n case WebhookEventStatus.PENDING:\n return <Clock className=\"icon-size text-yellow-500\" />;\n case WebhookEventStatus.RETRYING:\n return <RefreshCw className=\"icon-size text-orange-500 animate-spin\" />;\n default:\n return <Info className=\"icon-size text-muted-foreground\" />;\n }\n };\n\n const getStatusBadge = (status: WebhookEventStatus) => {\n const variants: Record<WebhookEventStatus, 'default' | 'secondary' | 'destructive' | 'outline'> = {\n [WebhookEventStatus.SUCCESS]: 'default',\n [WebhookEventStatus.FAILED]: 'destructive',\n [WebhookEventStatus.PROCESSING]: 'secondary',\n [WebhookEventStatus.PENDING]: 'outline',\n [WebhookEventStatus.RETRYING]: 'secondary'\n };\n\n return (\n <Badge variant={variants[status]} className=\"gap-1\">\n {getStatusIcon(status)}\n {status}\n </Badge>\n );\n };\n\n const copyToClipboard = async (text: string, field: string) => {\n await navigator.clipboard.writeText(text);\n setCopiedField(field);\n setTimeout(() => setCopiedField(null), 2000);\n toast({\n title: 'Copiado!',\n description: 'Conteúdo copiado para a área de transferência',\n });\n };\n\n const toggleSection = (section: string) => {\n setExpandedSections(prev => {\n const newSet = new Set(prev);\n if (newSet.has(section)) {\n newSet.delete(section);\n } else {\n newSet.add(section);\n }\n return newSet;\n });\n };\n\n const renderJsonTree = (data: unknown, path: string = ''): React.ReactNode => {\n if (data === null) return <span className=\"text-muted-foreground\">null</span>;\n if (data === undefined) return <span className=\"text-muted-foreground\">undefined</span>;\n\n if (typeof data === 'object' && !Array.isArray(data)) {\n const obj = data as Record<string, unknown>;\n return (\n <div className=\"ml-4\">\n {Object.entries(obj).map(([key, value]) => {\n const currentPath = path ? `${path}.${key}` : key;\n const isExpanded = expandedSections.has(currentPath);\n const isExpandable = typeof value === 'object' && value !== null;\n\n return (\n <div key={currentPath} className=\"my-1\">\n {isExpandable ? (\n <Collapsible open={isExpanded} onOpenChange={() => toggleSection(currentPath)}>\n <CollapsibleTrigger className=\"flex items-center gap-1 hover:bg-muted/50 px-2 py-1 rounded cursor-pointer w-full text-left\">\n {isExpanded ? <ChevronDown className=\"h-3 w-3\" /> : <ChevronRight className=\"h-3 w-3\" />}\n <span className=\"font-mono text-sm text-blue-600 dark:text-blue-400\">{key}:</span>\n <span className=\"text-muted-foreground text-xs\">\n {Array.isArray(value) ? `[${value.length}]` : '{...}'}\n </span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n {renderJsonTree(value, currentPath)}\n </CollapsibleContent>\n </Collapsible>\n ) : (\n <div className=\"flex items-center gap-2 px-2 py-1\">\n <span className=\"font-mono text-sm text-blue-600 dark:text-blue-400\">{key}:</span>\n <span className=\"font-mono text-sm\">\n {typeof value === 'string' ? (\n <span className=\"text-green-600 dark:text-green-400\">\"{value}\"</span>\n ) : typeof value === 'number' ? (\n <span className=\"text-orange-600 dark:text-orange-400\">{value}</span>\n ) : typeof value === 'boolean' ? (\n <span className=\"text-purple-600 dark:text-purple-400\">{String(value)}</span>\n ) : (\n renderJsonTree(value, currentPath)\n )}\n </span>\n {typeof value === 'string' && value.length > 20 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => copyToClipboard(value, currentPath)}\n >\n <Copy className={cn(\n \"h-3 w-3\",\n copiedField === currentPath && \"text-green-500\"\n )} />\n </Button>\n )}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n }\n\n if (Array.isArray(data)) {\n return (\n <div className=\"ml-4\">\n {data.map((item, index) => {\n const currentPath = `${path}[${index}]`;\n const isExpanded = expandedSections.has(currentPath);\n const isExpandable = typeof item === 'object' && item !== null;\n\n return (\n <div key={currentPath} className=\"my-1\">\n {isExpandable ? (\n <Collapsible open={isExpanded} onOpenChange={() => toggleSection(currentPath)}>\n <CollapsibleTrigger className=\"flex items-center gap-1 hover:bg-muted/50 px-2 py-1 rounded cursor-pointer w-full text-left\">\n {isExpanded ? <ChevronDown className=\"h-3 w-3\" /> : <ChevronRight className=\"h-3 w-3\" />}\n <span className=\"font-mono text-sm text-purple-600 dark:text-purple-400\">[{index}]</span>\n <span className=\"text-muted-foreground text-xs\">\n {Array.isArray(item) ? `[${item.length}]` : '{...}'}\n </span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n {renderJsonTree(item, currentPath)}\n </CollapsibleContent>\n </Collapsible>\n ) : (\n <div className=\"flex items-center gap-2 px-2 py-1\">\n <span className=\"font-mono text-sm text-purple-600 dark:text-purple-400\">[{index}]:</span>\n <span className=\"font-mono text-sm\">{renderJsonTree(item, currentPath)}</span>\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n }\n\n if (typeof data === 'string') return <span className=\"text-green-600 dark:text-green-400\">\"{data}\"</span>;\n if (typeof data === 'number') return <span className=\"text-orange-600 dark:text-orange-400\">{data}</span>;\n if (typeof data === 'boolean') return <span className=\"text-purple-600 dark:text-purple-400\">{String(data)}</span>;\n\n return <span className=\"text-muted-foreground\">{String(data)}</span>;\n };\n\n const getProcessingSteps = (): ProcessingStep[] => {\n const steps: ProcessingStep[] = [\n {\n name: 'Recebimento',\n status: event.createdAt ? 'success' : 'pending',\n startTime: event.createdAt,\n details: {\n eventId: event.eventId,\n source: event.source\n }\n },\n {\n name: 'Validação',\n status: event.status !== WebhookEventStatus.PENDING ? 'success' : 'pending',\n details: {\n type: event.type,\n retryCount: event.retryCount\n }\n },\n {\n name: 'Processamento',\n status: event.status === WebhookEventStatus.PROCESSING ? 'processing' :\n event.status === WebhookEventStatus.SUCCESS ? 'success' :\n event.status === WebhookEventStatus.FAILED ? 'failed' : 'pending',\n startTime: event.processedAt,\n error: event.error?.message\n }\n ];\n\n if (event.metadata.flowId) {\n steps.push({\n name: 'Execução de Fluxo',\n status: event.status === WebhookEventStatus.SUCCESS ? 'success' :\n event.status === WebhookEventStatus.FAILED ? 'failed' : 'pending',\n details: {\n flowId: event.metadata.flowId,\n triggerId: event.metadata.triggerId,\n sessionId: event.metadata.sessionId\n }\n });\n }\n\n if (event.retryCount > 0) {\n steps.push({\n name: 'Retry',\n status: event.status === WebhookEventStatus.RETRYING ? 'processing' : 'success',\n details: {\n attempt: event.retryCount,\n maxRetries: event.maxRetries\n }\n });\n }\n\n return steps;\n };\n\n const formatDuration = (start?: Date, end?: Date): string => {\n if (!start) return '-';\n const endTime = end || new Date();\n const duration = endTime.getTime() - start.getTime();\n \n if (duration < 1000) return `${duration}ms`;\n if (duration < 60000) return `${(duration / 1000).toFixed(1)}s`;\n return `${Math.floor(duration / 60000)}m ${Math.floor((duration % 60000) / 1000)}s`;\n };\n\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle className=\"flex items-center gap-2\">\n <FileJson className=\"h-5 w-5\" />\n Inspetor de Evento\n </CardTitle>\n <CardDescription>\n Detalhes completos do evento webhook\n </CardDescription>\n </div>\n <div className=\"flex items-center gap-2\">\n {getStatusBadge(event.status)}\n {(event.status === WebhookEventStatus.FAILED || event.status === WebhookEventStatus.RETRYING) && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => retryMutation.mutate(event.id)}\n disabled={retryMutation.isPending}\n >\n {retryMutation.isPending ? (\n <Loader2 className=\"icon-size animate-spin\" />\n ) : (\n <RefreshCw className=\"icon-size\" />\n )}\n Reprocessar\n </Button>\n )}\n </div>\n </div>\n </CardHeader>\n\n <CardContent>\n <Tabs defaultValue=\"overview\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-4\">\n <TabsTrigger value=\"overview\">\n <Info className=\"icon-size mr-2\" />\n Visão Geral\n </TabsTrigger>\n <TabsTrigger value=\"payload\">\n <Code className=\"icon-size mr-2\" />\n Payload\n </TabsTrigger>\n <TabsTrigger value=\"timeline\">\n <Activity className=\"icon-size mr-2\" />\n Timeline\n </TabsTrigger>\n <TabsTrigger value=\"metadata\">\n <Database className=\"icon-size mr-2\" />\n Metadados\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"overview\" className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2 text-sm\">\n <Hash className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Event ID:</span>\n <code className=\"text-xs bg-muted px-1 py-0.5 rounded\">{event.eventId}</code>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => copyToClipboard(event.eventId, 'eventId')}\n >\n <Copy className={cn(\n \"h-3 w-3\",\n copiedField === 'eventId' && \"text-green-500\"\n )} />\n </Button>\n </div>\n\n <div className=\"flex items-center gap-2 text-sm\">\n <Zap className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Tipo:</span>\n <Badge variant=\"outline\">{event.type}</Badge>\n </div>\n\n <div className=\"flex items-center gap-2 text-sm\">\n <Network className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Origem:</span>\n <span>{event.source}</span>\n </div>\n\n <div className=\"flex items-center gap-2 text-sm\">\n <RefreshCw className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Tentativas:</span>\n <span>{event.retryCount} / {event.maxRetries}</span>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2 text-sm\">\n <Clock className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Criado:</span>\n <span title={format(event.createdAt, 'PPpp', { locale: ptBR })}>\n {formatDistanceToNow(event.createdAt, { addSuffix: true, locale: ptBR })}\n </span>\n </div>\n\n {event.processedAt && (\n <div className=\"flex items-center gap-2 text-sm\">\n <CheckCircle className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Processado:</span>\n <span title={format(event.processedAt, 'PPpp', { locale: ptBR })}>\n {formatDistanceToNow(event.processedAt, { addSuffix: true, locale: ptBR })}\n </span>\n </div>\n )}\n\n <div className=\"flex items-center gap-2 text-sm\">\n <Timer className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Duração:</span>\n <span>{formatDuration(event.createdAt, event.processedAt)}</span>\n </div>\n </div>\n </div>\n\n {event.error && (\n <Alert variant=\"destructive\">\n <AlertTriangle className=\"icon-size\" />\n <AlertDescription className=\"space-y-2\">\n <div>\n <strong>Código:</strong> {event.error.code}\n </div>\n <div>\n <strong>Mensagem:</strong> {event.error.message}\n </div>\n {event.error.details && (\n <details className=\"cursor-pointer\">\n <summary className=\"text-sm font-medium\">Detalhes do erro</summary>\n <pre className=\"mt-2 text-xs bg-background p-2 rounded overflow-auto\">\n {JSON.stringify(event.error.details, null, 2)}\n </pre>\n </details>\n )}\n </AlertDescription>\n </Alert>\n )}\n </TabsContent>\n\n <TabsContent value=\"payload\">\n <Card>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-sm font-medium\">Dados do Evento</CardTitle>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => copyToClipboard(JSON.stringify(event.payload, null, 2), 'payload')}\n >\n <Copy className={cn(\n \"icon-size\",\n copiedField === 'payload' && \"text-green-500\"\n )} />\n Copiar JSON\n </Button>\n </div>\n </CardHeader>\n <CardContent>\n <ScrollArea className=\"h-[400px] w-full rounded border p-4\">\n <div className=\"font-mono text-sm\">\n {renderJsonTree(event.payload)}\n </div>\n </ScrollArea>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"timeline\">\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-medium\">Etapas de Processamento</h3>\n <div className=\"relative\">\n <div className=\"absolute left-4 top-0 bottom-0 w-0.5 bg-border\" />\n {getProcessingSteps().map((step, index) => (\n <div key={index} className=\"relative flex items-start pb-4 last:pb-0\">\n <div className={cn(\n \"absolute left-2.5 h-3 w-3 rounded-full border-2 bg-background\",\n step.status === 'success' && \"border-green-500 bg-green-500\",\n step.status === 'failed' && \"border-red-500 bg-red-500\",\n step.status === 'processing' && \"border-blue-500 bg-blue-500\",\n step.status === 'skipped' && \"border-gray-400 bg-gray-400\",\n step.status === 'pending' && \"border-yellow-500 bg-yellow-500\"\n )} />\n \n <div className=\"ml-8 flex-1\">\n <div className=\"flex items-center gap-2 mb-1\">\n <span className=\"font-medium text-sm\">{step.name}</span>\n <Badge\n variant={\n step.status === 'success' ? 'default' :\n step.status === 'failed' ? 'destructive' :\n step.status === 'processing' ? 'secondary' :\n 'outline'\n }\n className=\"text-xs\"\n >\n {step.status}\n </Badge>\n </div>\n \n {step.startTime && (\n <div className=\"text-xs text-muted-foreground\">\n {format(step.startTime, 'HH:mm:ss.SSS')}\n {step.duration && ` (${step.duration}ms)`}\n </div>\n )}\n \n {step.error && (\n <Alert variant=\"destructive\" className=\"mt-2\">\n <AlertCircle className=\"h-3 w-3\" />\n <AlertDescription className=\"text-xs\">\n {step.error}\n </AlertDescription>\n </Alert>\n )}\n \n {step.details && (\n <div className=\"mt-2 space-y-1\">\n {Object.entries(step.details).map(([key, value]) => (\n <div key={key} className=\"flex items-center gap-2 text-xs\">\n <span className=\"text-muted-foreground\">{key}:</span>\n <code className=\"bg-muted px-1 py-0.5 rounded\">\n {typeof value === 'object' ? JSON.stringify(value) : String(value)}\n </code>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"metadata\">\n <div className=\"space-y-4\">\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium\">Metadados do Evento</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n {Object.entries(event.metadata).map(([key, value]) => (\n value && (\n <div key={key} className=\"flex items-center gap-2 text-sm\">\n <span className=\"text-muted-foreground min-w-[140px]\">{key}:</span>\n <code className=\"bg-muted px-2 py-1 rounded text-xs flex-1\">\n {value}\n </code>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => copyToClipboard(value, key)}\n >\n <Copy className={cn(\n \"h-3 w-3\",\n copiedField === key && \"text-green-500\"\n )} />\n </Button>\n </div>\n )\n ))}\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium\">Informações do Sistema</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2 text-sm\">\n <span className=\"text-muted-foreground min-w-[140px]\">ID Interno:</span>\n <code className=\"bg-muted px-2 py-1 rounded text-xs\">{event.id}</code>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n <span className=\"text-muted-foreground min-w-[140px]\">Última Atualização:</span>\n <span className=\"text-xs\">\n {format(event.updatedAt, 'dd/MM/yyyy HH:mm:ss', { locale: ptBR })}\n </span>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n </TabsContent>\n </Tabs>\n </CardContent>\n </Card>\n );\n}","import { WebhookEventStatus } from '@/domain/entities/WebhookEvent';\nimport { format } from 'date-fns';\nimport { ptBR } from 'date-fns/locale';\n\nexport const validateUrl = (url: string): boolean => {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n};\n\nexport const formatEventType = (type: string): string => {\n return type.replace(/[._]/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\n};\n\nexport const formatStatus = (status: string): string => {\n const statusMap: Record<string, string> = {\n [WebhookEventStatus.PENDING]: 'Pendente',\n [WebhookEventStatus.PROCESSING]: 'Processando',\n [WebhookEventStatus.SUCCESS]: 'Sucesso',\n [WebhookEventStatus.FAILED]: 'Falhou',\n [WebhookEventStatus.RETRYING]: 'Tentando novamente'\n };\n return statusMap[status] || status;\n};\n\nexport const formatDateTime = (date: Date): string => {\n return format(date, 'dd/MM/yyyy HH:mm:ss', { locale: ptBR });\n};\n\nexport const formatDate = (date: Date): string => {\n return format(date, 'dd/MM/yyyy', { locale: ptBR });\n};\n\nexport const formatTime = (date: Date): string => {\n return format(date, 'HH:mm:ss', { locale: ptBR });\n};\n\nexport const calculateProcessingTime = (startDate: Date, endDate: Date): number => {\n return Math.round((endDate.getTime() - startDate.getTime()) / 1000);\n};\n\nexport const getStatusVariant = (status: WebhookEventStatus): string => {\n switch (status) {\n case WebhookEventStatus.SUCCESS:\n return 'default';\n case WebhookEventStatus.FAILED:\n return 'destructive';\n case WebhookEventStatus.PROCESSING:\n case WebhookEventStatus.RETRYING:\n return 'secondary';\n case WebhookEventStatus.PENDING:\n return 'outline';\n default:\n return 'outline';\n }\n};\n\nexport const getEventTypeVariant = (type: string): string => {\n if (type.includes('message')) return 'default';\n if (type.includes('connection')) return 'secondary';\n if (type.includes('flow')) return 'outline';\n return 'outline';\n};\n\nexport const getTimelineColor = (status: WebhookEventStatus): string => {\n switch (status) {\n case WebhookEventStatus.SUCCESS:\n return 'bg-green-500';\n case WebhookEventStatus.FAILED:\n return 'bg-red-500';\n case WebhookEventStatus.PROCESSING:\n case WebhookEventStatus.RETRYING:\n return 'bg-blue-500';\n case WebhookEventStatus.PENDING:\n return 'bg-gray-400';\n default:\n return 'bg-gray-300';\n }\n};\n\nexport const getMetricColor = (type: 'success' | 'error' | 'warning' | 'info' | 'default'): string => {\n switch (type) {\n case 'success':\n return 'green';\n case 'error':\n return 'red';\n case 'warning':\n return 'yellow';\n case 'info':\n return 'blue';\n default:\n return 'gray';\n }\n};\n\nexport const DEFAULT_WEBHOOK_CONFIG = {\n maxRetries: 3,\n retryDelay: 1000,\n timeout: 30000,\n maxQueueSize: 10000,\n rateLimitPerMinute: 1000,\n backoffMultiplier: 2,\n maxRetryDelay: 60000\n};\n\nexport const WEBHOOK_TEST_EVENTS = [\n { value: 'message.received', label: 'Mensagem Recebida' },\n { value: 'message.sent', label: 'Mensagem Enviada' },\n { value: 'connection.update', label: 'Atualização de Conexão' },\n { value: 'instance.created', label: 'Instância Criada' },\n { value: 'flow.triggered', label: 'Fluxo Iniciado' },\n { value: 'flow.completed', label: 'Fluxo Concluído' }\n];\n\nexport const isValidWebhookPayload = (payload: unknown): boolean => {\n return payload !== null && \n typeof payload === 'object' && \n !Array.isArray(payload);\n};\n\nexport const sanitizeWebhookUrl = (url: string): string => {\n if (!url) return '';\n \n const trimmedUrl = url.trim();\n \n if (!trimmedUrl.startsWith('http://') && !trimmedUrl.startsWith('https://')) {\n return `https://${trimmedUrl}`;\n }\n \n return trimmedUrl;\n};","import React, { useState, useEffect } from 'react';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Switch } from '@/components/ui/switch';\nimport { Badge } from '@/components/ui/badge';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Separator } from '@/components/ui/separator';\nimport { \n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@/components/ui/select';\nimport {\n RefreshCw,\n Save,\n TestTube,\n AlertTriangle,\n Plus,\n Trash2,\n Loader2\n} from 'lucide-react';\nimport { webhookService } from '@/services/api/webhook.service';\nimport { WebhookConfiguration, WebhookTestRequest } from '@/types/webhook.types';\nimport { toast } from 'sonner';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { validateUrl, sanitizeWebhookUrl } from '@/utils/webhook.utils';\n\ninterface WebhookConfigPanelProps {\n instanceId?: string;\n onConfigChange?: (config: WebhookConfiguration) => void;\n}\n\nexport const WebhookConfigPanel: React.FC<WebhookConfigPanelProps> = ({\n instanceId,\n onConfigChange\n}) => {\n const queryClient = useQueryClient();\n const [testUrl, setTestUrl] = useState('');\n const [testEventType, setTestEventType] = useState('message.received');\n const [isTesting, setIsTesting] = useState(false);\n const [allowedOrigins, setAllowedOrigins] = useState<string[]>([]);\n const [newOrigin, setNewOrigin] = useState('');\n\n const { data: config, isLoading } = useQuery({\n queryKey: ['webhookConfig'],\n queryFn: () => webhookService.getConfiguration(),\n staleTime: 30000,\n });\n\n const updateConfigMutation = useMutation({\n mutationFn: (updates: Partial<WebhookConfiguration>) => \n webhookService.updateConfiguration(updates),\n onSuccess: (updatedConfig) => {\n queryClient.invalidateQueries({ queryKey: ['webhookConfig'] });\n toast.success('Configuração atualizada com sucesso');\n onConfigChange?.(updatedConfig);\n },\n onError: (error) => {\n toast.error('Erro ao atualizar configuração: ' + (error as Error).message);\n }\n });\n\n useEffect(() => {\n if (config?.allowedOrigins) {\n setAllowedOrigins(config.allowedOrigins);\n }\n }, [config]);\n\n const handleTestWebhook = async () => {\n if (!testUrl) {\n toast.error('Por favor, insira uma URL para testar');\n return;\n }\n\n setIsTesting(true);\n try {\n const testRequest: WebhookTestRequest = {\n url: testUrl,\n event_type: testEventType,\n payload: {\n test: true,\n timestamp: new Date().toISOString(),\n instanceId: instanceId || 'test-instance'\n }\n };\n\n const result = await webhookService.testWebhook(testRequest);\n \n if (result.success) {\n toast.success(`Teste bem-sucedido! Tempo de resposta: ${result.response_time}ms`);\n } else {\n toast.error(`Teste falhou: ${result.error || 'Erro desconhecido'}`);\n }\n } catch (error) {\n toast.error('Erro ao testar webhook: ' + (error as Error).message);\n } finally {\n setIsTesting(false);\n }\n };\n\n const handleAddOrigin = () => {\n if (!newOrigin) return;\n \n const sanitizedUrl = sanitizeWebhookUrl(newOrigin);\n if (!validateUrl(sanitizedUrl)) {\n toast.error('URL inválida');\n return;\n }\n \n const updatedOrigins = [...allowedOrigins, sanitizedUrl];\n setAllowedOrigins(updatedOrigins);\n setNewOrigin('');\n updateConfigMutation.mutate({ allowedOrigins: updatedOrigins });\n };\n\n const handleRemoveOrigin = (origin: string) => {\n const updatedOrigins = allowedOrigins.filter(o => o !== origin);\n setAllowedOrigins(updatedOrigins);\n updateConfigMutation.mutate({ allowedOrigins: updatedOrigins });\n };\n\n const handleToggleEnabled = (enabled: boolean) => {\n updateConfigMutation.mutate({ enabled });\n };\n\n const handleUpdateRetryPolicy = (field: string, value: number) => {\n const updates: Partial<WebhookConfiguration> = {\n [field]: value\n };\n updateConfigMutation.mutate(updates);\n };\n\n if (isLoading) {\n return (\n <Card>\n <CardContent className=\"py-12\">\n <div className=\"flex items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-gray-400\" />\n </div>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle>Configuração de Webhooks</CardTitle>\n <CardDescription>\n Gerencie as configurações globais de webhooks\n </CardDescription>\n </div>\n <Badge variant={config?.enabled ? 'default' : 'secondary'}>\n {config?.enabled ? 'Ativo' : 'Inativo'}\n </Badge>\n </div>\n </CardHeader>\n \n <CardContent>\n <Tabs defaultValue=\"general\" className=\"space-y-4\">\n <TabsList className=\"grid w-full grid-cols-4\">\n <TabsTrigger value=\"general\">Geral</TabsTrigger>\n <TabsTrigger value=\"security\">Segurança</TabsTrigger>\n <TabsTrigger value=\"retry\">Retry Policy</TabsTrigger>\n <TabsTrigger value=\"test\">Teste</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"general\" className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-1\">\n <Label htmlFor=\"enabled\">Webhooks Ativos</Label>\n <p className=\"text-sm text-gray-500\">\n Ativar ou desativar o processamento de webhooks\n </p>\n </div>\n <Switch\n id=\"enabled\"\n checked={config?.enabled || false}\n onCheckedChange={handleToggleEnabled}\n />\n </div>\n\n <Separator />\n\n <div className=\"grid gap-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"timeout\">Timeout (ms)</Label>\n <Input\n id=\"timeout\"\n type=\"number\"\n value={config?.timeout || 30000}\n onChange={(e) => handleUpdateRetryPolicy('timeout', parseInt(e.target.value))}\n min={1000}\n max={60000}\n />\n <p className=\"text-xs text-gray-500\">\n Tempo máximo de espera para resposta (1-60 segundos)\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"maxQueueSize\">Tamanho Máximo da Fila</Label>\n <Input\n id=\"maxQueueSize\"\n type=\"number\"\n value={config?.maxQueueSize || 10000}\n onChange={(e) => handleUpdateRetryPolicy('maxQueueSize', parseInt(e.target.value))}\n min={100}\n max={100000}\n />\n <p className=\"text-xs text-gray-500\">\n Número máximo de eventos na fila de processamento\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"rateLimitPerMinute\">Rate Limit (por minuto)</Label>\n <Input\n id=\"rateLimitPerMinute\"\n type=\"number\"\n value={config?.rateLimitPerMinute || 1000}\n onChange={(e) => handleUpdateRetryPolicy('rateLimitPerMinute', parseInt(e.target.value))}\n min={10}\n max={10000}\n />\n <p className=\"text-xs text-gray-500\">\n Número máximo de requisições por minuto\n </p>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"security\" className=\"space-y-4\">\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"signatureHeader\">Header de Assinatura</Label>\n <Input\n id=\"signatureHeader\"\n value={config?.signatureHeader || 'X-Webhook-Signature'}\n onChange={(e) => updateConfigMutation.mutate({ signatureHeader: e.target.value })}\n />\n <p className=\"text-xs text-gray-500\">\n Nome do header usado para validação de assinatura\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"signatureAlgorithm\">Algoritmo de Assinatura</Label>\n <Select\n value={config?.signatureAlgorithm || 'sha256'}\n onValueChange={(value: 'sha256' | 'sha512') => \n updateConfigMutation.mutate({ signatureAlgorithm: value })\n }\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"sha256\">SHA-256</SelectItem>\n <SelectItem value=\"sha512\">SHA-512</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <Separator />\n\n <div className=\"space-y-2\">\n <Label>Origens Permitidas (CORS)</Label>\n <div className=\"space-y-2\">\n {allowedOrigins.map((origin) => (\n <div key={origin} className=\"flex items-center justify-between p-2 border rounded\">\n <span className=\"text-sm\">{origin}</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handleRemoveOrigin(origin)}\n >\n <Trash2 className=\"icon-size\" />\n </Button>\n </div>\n ))}\n \n <div className=\"flex items-center space-x-2\">\n <Input\n placeholder=\"https://example.com\"\n value={newOrigin}\n onChange={(e) => setNewOrigin(e.target.value)}\n />\n <Button onClick={handleAddOrigin} size=\"sm\">\n <Plus className=\"icon-size mr-2\" />\n Adicionar\n </Button>\n </div>\n </div>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"retry\" className=\"space-y-4\">\n <div className=\"grid gap-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"maxRetries\">Máximo de Tentativas</Label>\n <Input\n id=\"maxRetries\"\n type=\"number\"\n value={config?.maxRetries || 3}\n onChange={(e) => handleUpdateRetryPolicy('maxRetries', parseInt(e.target.value))}\n min={0}\n max={10}\n />\n <p className=\"text-xs text-gray-500\">\n Número máximo de tentativas em caso de falha (0-10)\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"retryDelay\">Delay entre Tentativas (ms)</Label>\n <Input\n id=\"retryDelay\"\n type=\"number\"\n value={config?.retryDelay || 1000}\n onChange={(e) => handleUpdateRetryPolicy('retryDelay', parseInt(e.target.value))}\n min={100}\n max={60000}\n />\n <p className=\"text-xs text-gray-500\">\n Tempo de espera inicial entre tentativas\n </p>\n </div>\n\n <Alert>\n <AlertTriangle className=\"icon-size\" />\n <AlertDescription>\n O delay entre tentativas usa backoff exponencial. \n Cada tentativa esperará progressivamente mais tempo.\n </AlertDescription>\n </Alert>\n </div>\n </TabsContent>\n\n <TabsContent value=\"test\" className=\"space-y-4\">\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"testUrl\">URL de Teste</Label>\n <Input\n id=\"testUrl\"\n placeholder=\"https://seu-webhook.com/endpoint\"\n value={testUrl}\n onChange={(e) => setTestUrl(e.target.value)}\n />\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"testEventType\">Tipo de Evento</Label>\n <Select value={testEventType} onValueChange={setTestEventType}>\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"message.received\">Mensagem Recebida</SelectItem>\n <SelectItem value=\"message.sent\">Mensagem Enviada</SelectItem>\n <SelectItem value=\"connection.update\">Atualização de Conexão</SelectItem>\n <SelectItem value=\"instance.created\">Instância Criada</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <Button\n onClick={handleTestWebhook}\n disabled={isTesting || !testUrl}\n className=\"w-full\"\n >\n {isTesting ? (\n <>\n <Loader2 className=\"mr-2 icon-size animate-spin\" />\n Testando...\n </>\n ) : (\n <>\n <TestTube className=\"mr-2 icon-size\" />\n Testar Webhook\n </>\n )}\n </Button>\n\n <Alert>\n <AlertTriangle className=\"icon-size\" />\n <AlertDescription>\n O teste enviará um evento de exemplo para a URL especificada.\n Certifique-se de que o endpoint está preparado para receber a requisição.\n </AlertDescription>\n </Alert>\n </div>\n </TabsContent>\n </Tabs>\n\n <div className=\"flex justify-end mt-6\">\n <Button\n onClick={() => queryClient.invalidateQueries({ queryKey: ['webhookConfig'] })}\n variant=\"outline\"\n className=\"mr-2\"\n >\n <RefreshCw className=\"mr-2 icon-size\" />\n Recarregar\n </Button>\n <Button\n disabled={updateConfigMutation.isPending}\n >\n {updateConfigMutation.isPending ? (\n <>\n <Loader2 className=\"mr-2 icon-size animate-spin\" />\n Salvando...\n </>\n ) : (\n <>\n <Save className=\"mr-2 icon-size\" />\n Salvar Alterações\n </>\n )}\n </Button>\n </div>\n </CardContent>\n </Card>\n );\n};","import React from 'react';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { WebhookConfigPanel } from '@/components/whatsapp/WebhookConfigPanel';\n\ninterface WebhookConfigModalProps {\n isOpen: boolean;\n onClose: () => void;\n instanceName?: string;\n flowId?: string;\n triggerId?: string;\n}\n\nexport const WebhookConfigModal: React.FC<WebhookConfigModalProps> = ({\n isOpen,\n onClose,\n instanceName\n}) => {\n return (\n <Dialog open={isOpen} onOpenChange={onClose}>\n <DialogContent className=\"max-w-4xl max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>Configurações de Webhook</DialogTitle>\n <DialogDescription>\n Configure os webhooks para receber eventos da Evolution API\n </DialogDescription>\n </DialogHeader>\n \n <WebhookConfigPanel\n instanceName={instanceName || ''}\n onSave={() => {\n console.log('Webhook configuration saved');\n onClose();\n }}\n />\n </DialogContent>\n </Dialog>\n );\n};","import React from 'react';\nimport { Card, CardContent, CardHeader } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { \n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger\n} from '@/components/ui/dropdown-menu';\nimport { \n MoreVertical, \n RefreshCw, \n X, \n Eye, \n Clock, \n CheckCircle2, \n XCircle, \n AlertCircle,\n Loader2,\n MessageSquare,\n Phone,\n Wifi,\n WifiOff,\n QrCode,\n Workflow\n} from 'lucide-react';\nimport { WebhookEvent, WebhookEventStatus, WebhookEventType } from '@/domain/entities/WebhookEvent';\nimport { cn } from '@/utils/styles';\nimport { \n formatEventType, \n formatStatus, \n formatDateTime, \n calculateProcessingTime,\n getStatusVariant,\n getEventTypeVariant \n} from '@/utils/webhook.utils';\n\ninterface WebhookEventCardProps {\n event: WebhookEvent;\n onRetry?: (eventId: string) => void;\n onCancel?: (eventId: string) => void;\n onViewDetails?: (event: WebhookEvent) => void;\n isRetrying?: boolean;\n isCancelling?: boolean;\n}\n\nexport const WebhookEventCard: React.FC<WebhookEventCardProps> = ({\n event,\n onRetry,\n onCancel,\n onViewDetails,\n isRetrying,\n isCancelling\n}) => {\n const getStatusIcon = () => {\n switch (event.status) {\n case WebhookEventStatus.SUCCESS:\n return <CheckCircle2 className=\"icon-size text-green-500\" />;\n case WebhookEventStatus.FAILED:\n return <XCircle className=\"icon-size text-red-500\" />;\n case WebhookEventStatus.PROCESSING:\n return <Loader2 className=\"icon-size text-blue-500 animate-spin\" />;\n case WebhookEventStatus.RETRYING:\n return <RefreshCw className=\"icon-size text-orange-500 animate-spin\" />;\n case WebhookEventStatus.PENDING:\n return <Clock className=\"icon-size text-gray-500\" />;\n default:\n return <AlertCircle className=\"icon-size text-gray-400\" />;\n }\n };\n\n const getEventIcon = () => {\n switch (event.type) {\n case WebhookEventType.MESSAGE_RECEIVED:\n case WebhookEventType.MESSAGE_SENT:\n case WebhookEventType.MESSAGE_DELIVERED:\n case WebhookEventType.MESSAGE_READ:\n case WebhookEventType.MESSAGE_FAILED:\n return <MessageSquare className=\"icon-size\" />;\n case WebhookEventType.CONNECTION_UPDATE:\n return (event.payload && 'connected' in event.payload && event.payload.connected) ? \n <Wifi className=\"icon-size\" /> : <WifiOff className=\"icon-size\" />;\n case WebhookEventType.QR_CODE_UPDATED:\n return <QrCode className=\"icon-size\" />;\n case WebhookEventType.INSTANCE_CREATED:\n case WebhookEventType.INSTANCE_DELETED:\n return <Phone className=\"icon-size\" />;\n case WebhookEventType.FLOW_TRIGGERED:\n case WebhookEventType.FLOW_COMPLETED:\n return <Workflow className=\"icon-size\" />;\n default:\n return <AlertCircle className=\"icon-size\" />;\n }\n };\n\n const getStatusBadgeVariant = () => getStatusVariant(event.status);\n\n const getEventTypeBadgeVariant = () => getEventTypeVariant(event.type);\n\n\n return (\n <Card className={cn(\n \"hover:shadow-md transition-shadow\",\n event.status === WebhookEventStatus.FAILED && \"border-red-200\",\n event.status === WebhookEventStatus.SUCCESS && \"border-green-200\"\n )}>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-start space-x-3\">\n <div className=\"flex items-center justify-center w-10 h-10 rounded-lg bg-gray-100\">\n {getEventIcon()}\n </div>\n <div className=\"flex-1\">\n <div className=\"flex items-center space-x-2\">\n <h3 className=\"text-sm font-semibold text-gray-900\">\n {event.eventId}\n </h3>\n <Badge variant={getEventTypeBadgeVariant()} className=\"text-xs\">\n {formatEventType(event.type)}\n </Badge>\n </div>\n <div className=\"flex items-center space-x-2 mt-1\">\n {getStatusIcon()}\n <Badge variant={getStatusBadgeVariant()} className=\"text-xs\">\n {formatStatus(event.status)}\n </Badge>\n {event.retryCount > 0 && (\n <span className=\"text-xs text-gray-500\">\n Tentativa {event.retryCount}/{event.maxRetries}\n </span>\n )}\n </div>\n </div>\n </div>\n \n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n disabled={isRetrying || isCancelling}\n >\n <MoreVertical className=\"icon-size\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => onViewDetails?.(event)}>\n <Eye className=\"mr-2 icon-size\" />\n Ver Detalhes\n </DropdownMenuItem>\n {event.status === WebhookEventStatus.FAILED && onRetry && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem \n onClick={() => onRetry(event.id)}\n disabled={isRetrying}\n >\n <RefreshCw className=\"mr-2 icon-size\" />\n Tentar Novamente\n </DropdownMenuItem>\n </>\n )}\n {(event.status === WebhookEventStatus.PENDING || \n event.status === WebhookEventStatus.RETRYING) && onCancel && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem \n onClick={() => onCancel(event.id)}\n disabled={isCancelling}\n className=\"text-red-600\"\n >\n <X className=\"mr-2 icon-size\" />\n Cancelar\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </CardHeader>\n \n <CardContent className=\"pt-0\">\n <div className=\"space-y-2\">\n {event.metadata.instanceName && (\n <div className=\"flex items-center text-xs text-gray-600\">\n <Phone className=\"mr-1 h-3 w-3\" />\n <span className=\"font-medium\">Instância:</span>\n <span className=\"ml-1\">{event.metadata.instanceName}</span>\n </div>\n )}\n \n {event.metadata.phoneNumber && (\n <div className=\"flex items-center text-xs text-gray-600\">\n <MessageSquare className=\"mr-1 h-3 w-3\" />\n <span className=\"font-medium\">Telefone:</span>\n <span className=\"ml-1\">{event.metadata.phoneNumber}</span>\n </div>\n )}\n\n {event.metadata.flowId && (\n <div className=\"flex items-center text-xs text-gray-600\">\n <Workflow className=\"mr-1 h-3 w-3\" />\n <span className=\"font-medium\">Fluxo:</span>\n <span className=\"ml-1\">{event.metadata.flowId}</span>\n </div>\n )}\n\n {event.error && (\n <div className=\"mt-2 p-2 bg-red-50 rounded-md\">\n <p className=\"text-xs text-red-600 font-medium\">\n Erro: {event.error.message}\n </p>\n {event.error.code && (\n <p className=\"text-xs text-red-500 mt-1\">\n Código: {event.error.code}\n </p>\n )}\n </div>\n )}\n\n <div className=\"flex items-center justify-between pt-2 border-t\">\n <span className=\"text-xs text-gray-500\">\n {formatDateTime(event.createdAt)}\n </span>\n {event.processedAt && (\n <span className=\"text-xs text-gray-500\">\n Processado em {calculateProcessingTime(event.createdAt, event.processedAt)}s\n </span>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n );\n};","import React from 'react';\nimport { useQuery, useMutation } from '@tanstack/react-query';\nimport { Link } from 'react-router-dom';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport { Progress } from '@/components/ui/progress';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Separator } from '@/components/ui/separator';\nimport {\n AlertCircle,\n CheckCircle,\n Clock,\n ExternalLink,\n GitBranch,\n Loader2,\n RefreshCw,\n Timer,\n XCircle,\n Zap,\n ArrowRight,\n Activity,\n Database,\n FileJson\n} from 'lucide-react';\nimport { useToast } from '../ui/use-toast';\nimport { WebhookEvent } from '@/domain/entities/WebhookEvent';\nimport { flowExecutionService } from '@/services/api/flow-execution.service';\nimport { flowsService } from '@/services/api/flows.service';\nimport { cn } from '@/utils/styles';\nimport { format, formatDistanceToNow } from 'date-fns';\nimport { ptBR } from 'date-fns/locale';\n\ninterface WebhookFlowLinkProps {\n event: WebhookEvent;\n className?: string;\n showDetails?: boolean;\n onReExecute?: () => void;\n}\n\ninterface FlowExecutionInfo {\n id: string;\n flowId: string;\n flowName: string;\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n startedAt: Date;\n completedAt?: Date;\n duration?: number;\n currentNode?: string;\n progress: number;\n error?: {\n message: string;\n node?: string;\n };\n result?: Record<string, unknown>;\n stats?: {\n nodesExecuted: number;\n totalNodes: number;\n messagesProcessed?: number;\n apiCallsMade?: number;\n };\n}\n\nexport function WebhookFlowLink({ \n event, \n className, \n showDetails = true,\n onReExecute \n}: WebhookFlowLinkProps) {\n const { toast } = useToast();\n\n const { data: flowExecution, isLoading, refetch } = useQuery({\n queryKey: ['flow-execution', event.metadata.sessionId],\n queryFn: async (): Promise<FlowExecutionInfo | null> => {\n if (!event.metadata.flowId || !event.metadata.sessionId) {\n return null;\n }\n\n try {\n const execution = await flowExecutionService.getExecution(event.metadata.sessionId);\n const flow = await flowsService.getFlow(event.metadata.flowId);\n \n return {\n id: execution.id,\n flowId: execution.flow_id,\n flowName: flow.name,\n status: execution.status,\n startedAt: new Date(execution.started_at),\n completedAt: execution.completed_at ? new Date(execution.completed_at) : undefined,\n duration: execution.duration,\n currentNode: execution.current_node,\n progress: execution.progress || 0,\n error: execution.error,\n result: execution.result,\n stats: {\n nodesExecuted: execution.nodes_executed || 0,\n totalNodes: flow.nodes?.length || 0,\n messagesProcessed: execution.messages_processed,\n apiCallsMade: execution.api_calls_made\n }\n };\n } catch (error) {\n console.error('Error fetching flow execution:', error);\n return null;\n }\n },\n enabled: !!event.metadata.flowId && !!event.metadata.sessionId,\n refetchInterval: (data) => {\n if (data?.status === 'running' || data?.status === 'pending') {\n return 2000;\n }\n return false;\n }\n });\n\n const reExecuteMutation = useMutation({\n mutationFn: async () => {\n if (!event.metadata.flowId) {\n throw new Error('Flow ID não encontrado');\n }\n\n const execution = await flowExecutionService.createExecution({\n flow_id: event.metadata.flowId,\n trigger_data: event.payload,\n metadata: {\n triggeredBy: 'webhook_re_execution',\n originalEventId: event.id,\n ...event.metadata\n }\n });\n\n return execution;\n },\n onSuccess: (execution) => {\n toast({\n title: 'Fluxo re-executado',\n description: `Nova execução iniciada: ${execution.id}`,\n });\n onReExecute?.();\n refetch();\n },\n onError: (error: Error) => {\n toast({\n title: 'Erro ao re-executar fluxo',\n description: error.message,\n variant: 'destructive',\n });\n }\n });\n\n const getStatusIcon = (status?: string) => {\n switch (status) {\n case 'completed':\n return <CheckCircle className=\"icon-size text-green-500\" />;\n case 'failed':\n return <XCircle className=\"icon-size text-red-500\" />;\n case 'running':\n return <Loader2 className=\"icon-size text-blue-500 animate-spin\" />;\n case 'pending':\n return <Clock className=\"icon-size text-yellow-500\" />;\n case 'cancelled':\n return <XCircle className=\"icon-size text-gray-500\" />;\n default:\n return <AlertCircle className=\"icon-size text-muted-foreground\" />;\n }\n };\n\n const getStatusBadge = (status?: string) => {\n const variants: Record<string, 'default' | 'secondary' | 'destructive' | 'outline'> = {\n completed: 'default',\n failed: 'destructive',\n running: 'secondary',\n pending: 'outline',\n cancelled: 'outline'\n };\n\n const labels: Record<string, string> = {\n completed: 'Concluído',\n failed: 'Falhou',\n running: 'Executando',\n pending: 'Pendente',\n cancelled: 'Cancelado'\n };\n\n if (!status) return null;\n\n return (\n <Badge variant={variants[status] || 'outline'} className=\"gap-1\">\n {getStatusIcon(status)}\n {labels[status] || status}\n </Badge>\n );\n };\n\n const formatDuration = (ms?: number): string => {\n if (!ms) return '-';\n \n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n \n const minutes = Math.floor(ms / 60000);\n const seconds = Math.floor((ms % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n };\n\n if (!event.metadata.flowId) {\n return null;\n }\n\n if (isLoading) {\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-center py-4\">\n <Loader2 className=\"h-6 w-6 animate-spin text-muted-foreground\" />\n </div>\n </CardContent>\n </Card>\n );\n }\n\n if (!flowExecution) {\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium flex items-center gap-2\">\n <GitBranch className=\"icon-size\" />\n Execução de Fluxo\n </CardTitle>\n </CardHeader>\n <CardContent>\n <Alert>\n <AlertCircle className=\"icon-size\" />\n <AlertDescription>\n Nenhuma execução de fluxo encontrada para este evento.\n {event.metadata.flowId && (\n <div className=\"mt-2\">\n <span className=\"text-sm text-muted-foreground\">\n Flow ID: {event.metadata.flowId}\n </span>\n </div>\n )}\n </AlertDescription>\n </Alert>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-sm font-medium flex items-center gap-2\">\n <GitBranch className=\"icon-size\" />\n Execução de Fluxo\n </CardTitle>\n <div className=\"flex items-center gap-2\">\n {getStatusBadge(flowExecution.status)}\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => reExecuteMutation.mutate()}\n disabled={reExecuteMutation.isPending}\n >\n {reExecuteMutation.isPending ? (\n <Loader2 className=\"icon-size animate-spin\" />\n ) : (\n <RefreshCw className=\"icon-size\" />\n )}\n Re-executar\n </Button>\n </div>\n </div>\n <CardDescription>\n {flowExecution.flowName}\n </CardDescription>\n </CardHeader>\n\n <CardContent className=\"space-y-4\">\n {flowExecution.status === 'running' && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"text-muted-foreground\">Progresso</span>\n <span className=\"font-medium\">{flowExecution.progress}%</span>\n </div>\n <Progress value={flowExecution.progress} className=\"h-2\" />\n {flowExecution.currentNode && (\n <div className=\"text-xs text-muted-foreground\">\n Nó atual: {flowExecution.currentNode}\n </div>\n )}\n </div>\n )}\n\n <div className=\"grid grid-cols-2 gap-4 text-sm\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <Clock className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Iniciado:</span>\n </div>\n <span className=\"text-xs\" title={format(flowExecution.startedAt, 'PPpp', { locale: ptBR })}>\n {formatDistanceToNow(flowExecution.startedAt, { addSuffix: true, locale: ptBR })}\n </span>\n </div>\n\n {flowExecution.completedAt && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <CheckCircle className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Concluído:</span>\n </div>\n <span className=\"text-xs\" title={format(flowExecution.completedAt, 'PPpp', { locale: ptBR })}>\n {formatDistanceToNow(flowExecution.completedAt, { addSuffix: true, locale: ptBR })}\n </span>\n </div>\n )}\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <Timer className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Duração:</span>\n </div>\n <span className=\"text-xs\">{formatDuration(flowExecution.duration)}</span>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <Activity className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Nós:</span>\n </div>\n <span className=\"text-xs\">\n {flowExecution.stats?.nodesExecuted} / {flowExecution.stats?.totalNodes}\n </span>\n </div>\n </div>\n\n {flowExecution.error && (\n <Alert variant=\"destructive\">\n <AlertCircle className=\"icon-size\" />\n <AlertDescription>\n <strong>Erro:</strong> {flowExecution.error.message}\n {flowExecution.error.node && (\n <div className=\"mt-1 text-xs\">\n Nó: {flowExecution.error.node}\n </div>\n )}\n </AlertDescription>\n </Alert>\n )}\n\n {showDetails && flowExecution.stats && (\n <>\n <Separator />\n <div className=\"space-y-2\">\n <h4 className=\"text-sm font-medium\">Estatísticas</h4>\n <div className=\"grid grid-cols-2 gap-2 text-sm\">\n {flowExecution.stats.messagesProcessed !== undefined && (\n <div className=\"flex items-center gap-2\">\n <FileJson className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Mensagens:</span>\n <span className=\"font-medium\">{flowExecution.stats.messagesProcessed}</span>\n </div>\n )}\n {flowExecution.stats.apiCallsMade !== undefined && (\n <div className=\"flex items-center gap-2\">\n <Zap className=\"icon-size text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Chamadas API:</span>\n <span className=\"font-medium\">{flowExecution.stats.apiCallsMade}</span>\n </div>\n )}\n </div>\n </div>\n </>\n )}\n\n {flowExecution.result && Object.keys(flowExecution.result).length > 0 && (\n <>\n <Separator />\n <div className=\"space-y-2\">\n <h4 className=\"text-sm font-medium\">Resultado</h4>\n <pre className=\"text-xs bg-muted p-2 rounded overflow-auto max-h-[200px]\">\n {JSON.stringify(flowExecution.result, null, 2)}\n </pre>\n </div>\n </>\n )}\n\n <Separator />\n\n <div className=\"flex items-center justify-between\">\n <Link\n to={`/flows/${flowExecution.flowId}/executions/${flowExecution.id}`}\n className=\"inline-flex items-center gap-2 text-sm text-primary hover:underline\"\n >\n Ver detalhes da execução\n <ExternalLink className=\"h-3 w-3\" />\n </Link>\n\n <Link\n to={`/flows/${flowExecution.flowId}/edit`}\n className=\"inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-primary\"\n >\n <Database className=\"h-3 w-3\" />\n Editar fluxo\n <ArrowRight className=\"h-3 w-3\" />\n </Link>\n </div>\n </CardContent>\n </Card>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Badge } from '@/components/ui/badge';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { Separator } from '@/components/ui/separator';\nimport {\n AlertCircle,\n Download,\n Filter,\n Info,\n Loader2,\n RefreshCw,\n Search,\n Terminal,\n Trash2,\n AlertTriangle,\n Bug,\n FileText,\n Play,\n Pause,\n Copy,\n ChevronLeft,\n ChevronRight\n} from 'lucide-react';\nimport { useToast } from '../ui/use-toast';\nimport { webhookService } from '@/services/api/webhook.service';\nimport { WebhookLogEntry } from '@/types/webhook.types';\nimport { cn } from '@/utils/styles';\nimport { format } from 'date-fns';\n\ninterface WebhookLogsViewerProps {\n eventId?: string;\n subscriptionId?: string;\n autoRefresh?: boolean;\n refreshInterval?: number;\n maxLogs?: number;\n className?: string;\n}\n\ntype LogLevel = 'all' | 'info' | 'warning' | 'error' | 'debug';\n\nexport function WebhookLogsViewer({\n eventId,\n subscriptionId,\n autoRefresh = false,\n refreshInterval = 5000,\n maxLogs = 500,\n className\n}: WebhookLogsViewerProps) {\n const { toast } = useToast();\n const scrollAreaRef = useRef<HTMLDivElement>(null);\n const [searchTerm, setSearchTerm] = useState('');\n const [selectedLevel, setSelectedLevel] = useState<LogLevel>('all');\n const [isAutoRefresh, setIsAutoRefresh] = useState(autoRefresh);\n const [autoScroll, setAutoScroll] = useState(true);\n const [selectedLogs, setSelectedLogs] = useState<Set<string>>(new Set());\n const [page, setPage] = useState(1);\n const [pageSize] = useState(100);\n\n const { data: logs, isLoading, error, refetch, isFetching } = useQuery({\n queryKey: ['webhook-logs', eventId, subscriptionId, selectedLevel, page],\n queryFn: async () => {\n const filter: Parameters<typeof webhookService.getLogs>[0] = {\n limit: pageSize,\n eventId,\n subscriptionId\n };\n\n if (selectedLevel !== 'all') {\n filter.level = selectedLevel;\n }\n\n const allLogs = await webhookService.getLogs(filter);\n return allLogs.slice(0, maxLogs);\n },\n refetchInterval: isAutoRefresh ? refreshInterval : false,\n refetchIntervalInBackground: false\n });\n\n useEffect(() => {\n if (autoScroll && logs && logs.length > 0 && scrollAreaRef.current) {\n const scrollContainer = scrollAreaRef.current.querySelector('[data-radix-scroll-area-viewport]');\n if (scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n }\n }, [logs, autoScroll]);\n\n const getLevelIcon = (level: WebhookLogEntry['level']) => {\n switch (level) {\n case 'info':\n return <Info className=\"icon-size text-blue-500\" />;\n case 'warning':\n return <AlertTriangle className=\"icon-size text-yellow-500\" />;\n case 'error':\n return <AlertCircle className=\"icon-size text-red-500\" />;\n case 'debug':\n return <Bug className=\"icon-size text-gray-500\" />;\n default:\n return <Terminal className=\"icon-size text-muted-foreground\" />;\n }\n };\n\n const getLevelBadge = (level: WebhookLogEntry['level']) => {\n const variants: Record<WebhookLogEntry['level'], 'default' | 'secondary' | 'destructive' | 'outline'> = {\n info: 'default',\n warning: 'secondary',\n error: 'destructive',\n debug: 'outline'\n };\n\n return (\n <Badge variant={variants[level]} className=\"gap-1 text-xs\">\n {getLevelIcon(level)}\n {level.toUpperCase()}\n </Badge>\n );\n };\n\n const filteredLogs = logs?.filter(log => {\n if (searchTerm) {\n const searchLower = searchTerm.toLowerCase();\n return (\n log.message.toLowerCase().includes(searchLower) ||\n log.id.toLowerCase().includes(searchLower) ||\n (log.eventId && log.eventId.toLowerCase().includes(searchLower)) ||\n (log.subscriptionId && log.subscriptionId.toLowerCase().includes(searchLower))\n );\n }\n return true;\n });\n\n const handleExport = (format: 'json' | 'csv') => {\n if (!filteredLogs || filteredLogs.length === 0) {\n toast({\n title: 'Nenhum log para exportar',\n description: 'Não há logs disponíveis para exportação',\n variant: 'destructive'\n });\n return;\n }\n\n const selectedToExport = selectedLogs.size > 0\n ? filteredLogs.filter(log => selectedLogs.has(log.id))\n : filteredLogs;\n\n if (format === 'json') {\n const dataStr = JSON.stringify(selectedToExport, null, 2);\n const dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr);\n const exportFileDefaultName = `webhook-logs-${Date.now()}.json`;\n \n const linkElement = document.createElement('a');\n linkElement.setAttribute('href', dataUri);\n linkElement.setAttribute('download', exportFileDefaultName);\n linkElement.click();\n } else {\n const headers = ['ID', 'Timestamp', 'Level', 'Message', 'Event ID', 'Subscription ID'];\n const csvContent = [\n headers.join(','),\n ...selectedToExport.map(log => [\n log.id,\n log.timestamp.toISOString(),\n log.level,\n `\"${log.message.replace(/\"/g, '\"\"')}\"`,\n log.eventId || '',\n log.subscriptionId || ''\n ].join(','))\n ].join('\\n');\n\n const dataUri = 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvContent);\n const exportFileDefaultName = `webhook-logs-${Date.now()}.csv`;\n \n const linkElement = document.createElement('a');\n linkElement.setAttribute('href', dataUri);\n linkElement.setAttribute('download', exportFileDefaultName);\n linkElement.click();\n }\n\n toast({\n title: 'Logs exportados',\n description: `${selectedToExport.length} logs exportados com sucesso`,\n });\n };\n\n const handleSelectAll = () => {\n if (filteredLogs) {\n if (selectedLogs.size === filteredLogs.length) {\n setSelectedLogs(new Set());\n } else {\n setSelectedLogs(new Set(filteredLogs.map(log => log.id)));\n }\n }\n };\n\n const handleSelectLog = (logId: string) => {\n const newSelected = new Set(selectedLogs);\n if (newSelected.has(logId)) {\n newSelected.delete(logId);\n } else {\n newSelected.add(logId);\n }\n setSelectedLogs(newSelected);\n };\n\n const copyLogToClipboard = (log: WebhookLogEntry) => {\n const logText = `[${format(log.timestamp, 'yyyy-MM-dd HH:mm:ss.SSS')}] [${log.level.toUpperCase()}] ${log.message}`;\n navigator.clipboard.writeText(logText);\n toast({\n title: 'Log copiado',\n description: 'Conteúdo do log copiado para a área de transferência',\n });\n };\n\n const clearSelection = () => {\n setSelectedLogs(new Set());\n };\n\n const formatMetadata = (metadata?: Record<string, string | number | boolean>) => {\n if (!metadata || Object.keys(metadata).length === 0) return null;\n \n return Object.entries(metadata).map(([key, value]) => (\n <span key={key} className=\"text-xs text-muted-foreground\">\n {key}: {String(value)}\n </span>\n ));\n };\n\n if (error) {\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardContent className=\"pt-6\">\n <div className=\"flex flex-col items-center justify-center py-8\">\n <AlertCircle className=\"h-8 w-8 text-destructive mb-2\" />\n <p className=\"text-sm text-muted-foreground\">Erro ao carregar logs</p>\n </div>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <Card className={cn(\"w-full\", className)}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle className=\"flex items-center gap-2\">\n <Terminal className=\"h-5 w-5\" />\n Logs do Webhook\n </CardTitle>\n <CardDescription>\n {filteredLogs?.length || 0} logs encontrados\n {selectedLogs.size > 0 && ` (${selectedLogs.size} selecionados)`}\n </CardDescription>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => refetch()}\n disabled={isFetching}\n >\n {isFetching ? (\n <Loader2 className=\"icon-size animate-spin\" />\n ) : (\n <RefreshCw className=\"icon-size\" />\n )}\n </Button>\n <Button\n variant={isAutoRefresh ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => setIsAutoRefresh(!isAutoRefresh)}\n >\n {isAutoRefresh ? (\n <Pause className=\"icon-size\" />\n ) : (\n <Play className=\"icon-size\" />\n )}\n </Button>\n </div>\n </div>\n </CardHeader>\n\n <CardContent className=\"space-y-4\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex gap-2\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-2 top-2.5 icon-size text-muted-foreground\" />\n <Input\n placeholder=\"Buscar nos logs...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n className=\"pl-8\"\n />\n </div>\n <Select\n value={selectedLevel}\n onValueChange={(value) => setSelectedLevel(value as LogLevel)}\n >\n <SelectTrigger className=\"w-[150px]\">\n <Filter className=\"icon-size mr-2\" />\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">Todos</SelectItem>\n <SelectItem value=\"info\">Info</SelectItem>\n <SelectItem value=\"warning\">Warning</SelectItem>\n <SelectItem value=\"error\">Error</SelectItem>\n <SelectItem value=\"debug\">Debug</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Checkbox\n checked={filteredLogs?.length > 0 && selectedLogs.size === filteredLogs?.length}\n onCheckedChange={handleSelectAll}\n />\n <span className=\"text-sm text-muted-foreground\">Selecionar todos</span>\n {selectedLogs.size > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={clearSelection}\n >\n <Trash2 className=\"icon-size mr-1\" />\n Limpar seleção\n </Button>\n )}\n </div>\n \n <div className=\"flex items-center gap-2\">\n <div className=\"flex items-center gap-1\">\n <Checkbox\n checked={autoScroll}\n onCheckedChange={(checked) => setAutoScroll(checked as boolean)}\n />\n <label className=\"text-sm text-muted-foreground\">Auto-scroll</label>\n </div>\n \n <Separator orientation=\"vertical\" className=\"h-6\" />\n \n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleExport('json')}\n disabled={!filteredLogs || filteredLogs.length === 0}\n >\n <Download className=\"icon-size mr-1\" />\n JSON\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleExport('csv')}\n disabled={!filteredLogs || filteredLogs.length === 0}\n >\n <FileText className=\"icon-size mr-1\" />\n CSV\n </Button>\n </div>\n </div>\n </div>\n\n <ScrollArea ref={scrollAreaRef} className=\"h-[500px] w-full rounded border\">\n {isLoading ? (\n <div className=\"flex items-center justify-center py-8\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n ) : filteredLogs && filteredLogs.length > 0 ? (\n <div className=\"p-2 space-y-1\">\n {filteredLogs.map((log) => (\n <div\n key={log.id}\n className={cn(\n \"flex items-start gap-2 p-2 rounded hover:bg-muted/50 group\",\n selectedLogs.has(log.id) && \"bg-muted/50\",\n log.level === 'error' && \"border-l-2 border-red-500\",\n log.level === 'warning' && \"border-l-2 border-yellow-500\"\n )}\n >\n <Checkbox\n checked={selectedLogs.has(log.id)}\n onCheckedChange={() => handleSelectLog(log.id)}\n className=\"mt-0.5\"\n />\n \n <div className=\"flex-1 space-y-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-muted-foreground font-mono\">\n {format(log.timestamp, 'HH:mm:ss.SSS')}\n </span>\n {getLevelBadge(log.level)}\n {log.eventId && (\n <Badge variant=\"outline\" className=\"text-xs\">\n Event: {log.eventId.slice(0, 8)}...\n </Badge>\n )}\n </div>\n \n <div className=\"text-sm break-all font-mono\">\n {log.message}\n </div>\n \n {log.metadata && (\n <div className=\"flex flex-wrap gap-2 mt-1\">\n {formatMetadata(log.metadata)}\n </div>\n )}\n </div>\n \n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"opacity-0 group-hover:opacity-100 transition-opacity\"\n onClick={() => copyLogToClipboard(log)}\n >\n <Copy className=\"h-3 w-3\" />\n </Button>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"flex flex-col items-center justify-center py-8\">\n <Terminal className=\"h-8 w-8 text-muted-foreground mb-2\" />\n <p className=\"text-sm text-muted-foreground\">Nenhum log encontrado</p>\n </div>\n )}\n </ScrollArea>\n\n {filteredLogs && filteredLogs.length > pageSize && (\n <div className=\"flex items-center justify-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setPage(p => Math.max(1, p - 1))}\n disabled={page === 1}\n >\n <ChevronLeft className=\"icon-size\" />\n Anterior\n </Button>\n <span className=\"text-sm text-muted-foreground\">\n Página {page}\n </span>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setPage(p => p + 1)}\n disabled={filteredLogs.length < pageSize}\n >\n Próxima\n <ChevronRight className=\"icon-size\" />\n </Button>\n </div>\n )}\n </CardContent>\n </Card>\n );\n}","import React, { useMemo } from 'react';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { WebhookEventMetrics } from '@/domain/entities/WebhookEvent';\nimport { \n LineChart, \n Line, \n BarChart, \n Bar, \n PieChart, \n Pie, \n Cell,\n XAxis, \n YAxis, \n CartesianGrid, \n Tooltip, \n Legend, \n ResponsiveContainer,\n Area,\n AreaChart\n} from 'recharts';\n\ninterface WebhookMetricsChartProps {\n metrics: WebhookEventMetrics;\n timeRange?: '1h' | '6h' | '24h' | '7d' | '30d';\n onTimeRangeChange?: (range: string) => void;\n}\n\nconst COLORS = {\n success: '#10b981',\n failed: '#ef4444',\n pending: '#f59e0b',\n processing: '#3b82f6',\n retrying: '#8b5cf6'\n};\n\nconst EVENT_TYPE_COLORS = [\n '#3b82f6',\n '#10b981',\n '#f59e0b',\n '#ef4444',\n '#8b5cf6',\n '#ec4899',\n '#14b8a6',\n '#f97316'\n];\n\nexport const WebhookMetricsChart: React.FC<WebhookMetricsChartProps> = ({\n metrics,\n timeRange = '24h',\n onTimeRangeChange\n}) => {\n const statusData = useMemo(() => [\n { name: 'Sucesso', value: metrics.success, color: COLORS.success },\n { name: 'Falha', value: metrics.failed, color: COLORS.failed },\n { name: 'Pendente', value: metrics.pending, color: COLORS.pending },\n { name: 'Processando', value: metrics.processing, color: COLORS.processing },\n { name: 'Tentando', value: metrics.retrying, color: COLORS.retrying }\n ].filter(item => item.value > 0), [metrics]);\n\n const eventTypeData = useMemo(() => {\n return Object.entries(metrics.byType || {})\n .map(([type, count]) => ({\n name: formatEventType(type),\n value: count\n }))\n .sort((a, b) => b.value - a.value)\n .slice(0, 8);\n }, [metrics.byType]);\n\n const timeSeriesData = useMemo(() => {\n return metrics.byHour?.map(item => ({\n time: item.hour,\n total: item.count,\n success: item.success,\n failed: item.failed,\n successRate: item.success > 0 ? ((item.success / item.count) * 100).toFixed(1) : 0\n })) || [];\n }, [metrics.byHour]);\n\n const formatEventType = (type: string) => {\n return type\n .replace(/[._]/g, ' ')\n .replace(/\\b\\w/g, l => l.toUpperCase())\n .replace('Message ', 'Msg ')\n .replace('Connection ', 'Conn ')\n .replace('Instance ', 'Inst ');\n };\n\n interface TooltipPayload {\n name: string;\n value: number;\n color: string;\n }\n\n interface CustomTooltipProps {\n active?: boolean;\n payload?: TooltipPayload[];\n label?: string;\n }\n\n const CustomTooltip = ({ active, payload, label }: CustomTooltipProps) => {\n if (active && payload && payload.length) {\n return (\n <div className=\"bg-white p-3 border rounded-lg shadow-lg\">\n <p className=\"font-semibold text-sm\">{label}</p>\n {payload.map((entry, index) => (\n <p key={index} className=\"text-xs\" style={{ color: entry.color }}>\n {entry.name}: {entry.value}\n </p>\n ))}\n </div>\n );\n }\n return null;\n };\n\n const formatPercentage = (value: number) => `${value.toFixed(1)}%`;\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-lg font-semibold\">Métricas de Desempenho</h3>\n <Select value={timeRange} onValueChange={onTimeRangeChange}>\n <SelectTrigger className=\"w-[180px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"1h\">Última hora</SelectItem>\n <SelectItem value=\"6h\">Últimas 6 horas</SelectItem>\n <SelectItem value=\"24h\">Últimas 24 horas</SelectItem>\n <SelectItem value=\"7d\">Últimos 7 dias</SelectItem>\n <SelectItem value=\"30d\">Últimos 30 dias</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <Tabs defaultValue=\"overview\" className=\"space-y-4\">\n <TabsList className=\"grid w-full grid-cols-4\">\n <TabsTrigger value=\"overview\">Visão Geral</TabsTrigger>\n <TabsTrigger value=\"timeline\">Linha do Tempo</TabsTrigger>\n <TabsTrigger value=\"distribution\">Distribuição</TabsTrigger>\n <TabsTrigger value=\"performance\">Performance</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"overview\" className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Status dos Eventos</CardTitle>\n <CardDescription>Distribuição por status</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveContainer width=\"100%\" height={250}>\n <PieChart>\n <Pie\n data={statusData}\n cx=\"50%\"\n cy=\"50%\"\n labelLine={false}\n label={({ name, percent }) => `${name} ${(percent * 100).toFixed(0)}%`}\n outerRadius={80}\n fill=\"#8884d8\"\n dataKey=\"value\"\n >\n {statusData.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={entry.color} />\n ))}\n </Pie>\n <Tooltip content={<CustomTooltip />} />\n </PieChart>\n </ResponsiveContainer>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Tipos de Evento</CardTitle>\n <CardDescription>Top 8 tipos mais frequentes</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveContainer width=\"100%\" height={250}>\n <BarChart data={eventTypeData} layout=\"vertical\">\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis type=\"number\" />\n <YAxis dataKey=\"name\" type=\"category\" width={100} />\n <Tooltip content={<CustomTooltip />} />\n <Bar dataKey=\"value\" fill=\"#3b82f6\">\n {eventTypeData.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={EVENT_TYPE_COLORS[index % EVENT_TYPE_COLORS.length]} />\n ))}\n </Bar>\n </BarChart>\n </ResponsiveContainer>\n </CardContent>\n </Card>\n </div>\n </TabsContent>\n\n <TabsContent value=\"timeline\" className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Volume de Eventos</CardTitle>\n <CardDescription>Eventos processados ao longo do tempo</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveContainer width=\"100%\" height={300}>\n <AreaChart data={timeSeriesData}>\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis \n dataKey=\"time\" \n tick={{ fontSize: 12 }}\n tickFormatter={(value) => {\n const hour = value.split('T')[1]?.split(':')[0];\n return hour ? `${hour}h` : value;\n }}\n />\n <YAxis tick={{ fontSize: 12 }} />\n <Tooltip content={<CustomTooltip />} />\n <Legend />\n <Area \n type=\"monotone\" \n dataKey=\"total\" \n stackId=\"1\"\n stroke=\"#3b82f6\" \n fill=\"#3b82f6\"\n fillOpacity={0.6}\n name=\"Total\"\n />\n <Area \n type=\"monotone\" \n dataKey=\"success\" \n stackId=\"2\"\n stroke=\"#10b981\" \n fill=\"#10b981\"\n fillOpacity={0.6}\n name=\"Sucesso\"\n />\n <Area \n type=\"monotone\" \n dataKey=\"failed\" \n stackId=\"2\"\n stroke=\"#ef4444\" \n fill=\"#ef4444\"\n fillOpacity={0.6}\n name=\"Falha\"\n />\n </AreaChart>\n </ResponsiveContainer>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"distribution\" className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Taxa de Sucesso por Hora</CardTitle>\n <CardDescription>Percentual de eventos bem-sucedidos</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveContainer width=\"100%\" height={250}>\n <LineChart data={timeSeriesData}>\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis \n dataKey=\"time\"\n tick={{ fontSize: 12 }}\n tickFormatter={(value) => {\n const hour = value.split('T')[1]?.split(':')[0];\n return hour ? `${hour}h` : value;\n }}\n />\n <YAxis \n tick={{ fontSize: 12 }}\n tickFormatter={formatPercentage}\n domain={[0, 100]}\n />\n <Tooltip \n content={<CustomTooltip />}\n formatter={(value: any) => `${value}%`}\n />\n <Legend />\n <Line \n type=\"monotone\" \n dataKey=\"successRate\" \n stroke=\"#10b981\" \n strokeWidth={2}\n dot={{ fill: '#10b981', r: 4 }}\n name=\"Taxa de Sucesso\"\n />\n </LineChart>\n </ResponsiveContainer>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Comparativo Sucesso vs Falha</CardTitle>\n <CardDescription>Evolução ao longo do tempo</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveContainer width=\"100%\" height={250}>\n <BarChart data={timeSeriesData}>\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis \n dataKey=\"time\"\n tick={{ fontSize: 12 }}\n tickFormatter={(value) => {\n const hour = value.split('T')[1]?.split(':')[0];\n return hour ? `${hour}h` : value;\n }}\n />\n <YAxis tick={{ fontSize: 12 }} />\n <Tooltip content={<CustomTooltip />} />\n <Legend />\n <Bar dataKey=\"success\" fill={COLORS.success} name=\"Sucesso\" />\n <Bar dataKey=\"failed\" fill={COLORS.failed} name=\"Falha\" />\n </BarChart>\n </ResponsiveContainer>\n </CardContent>\n </Card>\n </div>\n </TabsContent>\n\n <TabsContent value=\"performance\" className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Métricas de Performance</CardTitle>\n <CardDescription>Indicadores chave de desempenho</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between p-4 border rounded-lg\">\n <div>\n <p className=\"text-sm font-medium\">Tempo Médio de Processamento</p>\n <p className=\"text-2xl font-bold text-blue-600\">\n {metrics.averageProcessingTime.toFixed(2)}ms\n </p>\n </div>\n <div className=\"text-right\">\n <p className=\"text-sm font-medium\">Taxa de Sucesso</p>\n <p className=\"text-2xl font-bold text-green-600\">\n {metrics.successRate.toFixed(1)}%\n </p>\n </div>\n <div className=\"text-right\">\n <p className=\"text-sm font-medium\">Taxa de Falha</p>\n <p className=\"text-2xl font-bold text-red-600\">\n {metrics.failureRate.toFixed(1)}%\n </p>\n </div>\n </div>\n\n <div className=\"grid grid-cols-3 gap-4\">\n <div className=\"p-3 border rounded-lg\">\n <p className=\"text-xs text-gray-500\">Total Processado</p>\n <p className=\"text-lg font-semibold\">{metrics.total.toLocaleString('pt-BR')}</p>\n </div>\n <div className=\"p-3 border rounded-lg\">\n <p className=\"text-xs text-gray-500\">Em Processamento</p>\n <p className=\"text-lg font-semibold\">{metrics.processing.toLocaleString('pt-BR')}</p>\n </div>\n <div className=\"p-3 border rounded-lg\">\n <p className=\"text-xs text-gray-500\">Tentativas de Retry</p>\n <p className=\"text-lg font-semibold\">{metrics.retrying.toLocaleString('pt-BR')}</p>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n </Tabs>\n </div>\n );\n};","import React, { useState, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport * as z from 'zod';\nimport { useMutation } from '@tanstack/react-query';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Textarea } from '@/components/ui/textarea';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { Badge } from '@/components/ui/badge';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport {\n Loader2,\n Send,\n History,\n Code,\n AlertCircle,\n CheckCircle,\n XCircle,\n Clock,\n Copy,\n Download\n} from 'lucide-react';\nimport { useToast } from '../ui/use-toast';\nimport { webhookService } from '@/services/api/webhook.service';\nimport { WebhookEventType } from '@/domain/entities/WebhookEvent';\nimport { WebhookTestRequest, WebhookTestResponse } from '@/types/webhook.types';\nimport { cn } from '@/utils/styles';\n\nconst EVENT_TEMPLATES: Record<WebhookEventType, Record<string, unknown>> = {\n [WebhookEventType.MESSAGE_RECEIVED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n key: {\n remoteJid: '5511999999999@s.whatsapp.net',\n fromMe: false,\n id: 'message-123'\n },\n pushName: 'João Silva',\n message: {\n conversation: 'Olá, preciso de ajuda!',\n messageTimestamp: Date.now() / 1000\n }\n }\n },\n [WebhookEventType.MESSAGE_SENT]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n key: {\n remoteJid: '5511999999999@s.whatsapp.net',\n fromMe: true,\n id: 'message-456'\n },\n message: {\n conversation: 'Olá! Como posso ajudar?',\n messageTimestamp: Date.now() / 1000\n },\n status: 'sent'\n }\n },\n [WebhookEventType.MESSAGE_DELIVERED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n key: {\n remoteJid: '5511999999999@s.whatsapp.net',\n fromMe: true,\n id: 'message-456'\n },\n status: 'delivered',\n deliveredAt: new Date().toISOString()\n }\n },\n [WebhookEventType.MESSAGE_READ]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n key: {\n remoteJid: '5511999999999@s.whatsapp.net',\n fromMe: true,\n id: 'message-456'\n },\n status: 'read',\n readAt: new Date().toISOString()\n }\n },\n [WebhookEventType.MESSAGE_FAILED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n key: {\n remoteJid: '5511999999999@s.whatsapp.net',\n fromMe: true,\n id: 'message-789'\n },\n error: {\n code: 'DELIVERY_FAILED',\n message: 'Failed to deliver message'\n }\n }\n },\n [WebhookEventType.CONNECTION_UPDATE]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n state: 'open',\n statusReason: 'Connected successfully',\n isNewLogin: false\n }\n },\n [WebhookEventType.QR_CODE_UPDATED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n qrcode: {\n code: '2@AhR...',\n base64: 'data:image/png;base64,iVBORw0...'\n }\n }\n },\n [WebhookEventType.INSTANCE_CREATED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n settings: {\n webhook: {\n url: 'https://example.com/webhook',\n enabled: true\n }\n }\n }\n },\n [WebhookEventType.INSTANCE_DELETED]: {\n instance: {\n instanceName: 'evolution-instance',\n instanceId: 'instance-123'\n },\n data: {\n deletedAt: new Date().toISOString()\n }\n },\n [WebhookEventType.FLOW_TRIGGERED]: {\n flowId: 'flow-123',\n triggerId: 'trigger-456',\n sessionId: 'session-789',\n data: {\n trigger: {\n type: 'message',\n value: 'Olá'\n },\n context: {\n phoneNumber: '5511999999999',\n instanceId: 'instance-123'\n }\n }\n },\n [WebhookEventType.FLOW_COMPLETED]: {\n flowId: 'flow-123',\n sessionId: 'session-789',\n data: {\n status: 'success',\n duration: 1500,\n result: {\n messagesCount: 3,\n finalState: 'completed'\n }\n }\n }\n};\n\nconst testSchema = z.object({\n url: z.string().url('URL inválida'),\n event_type: z.nativeEnum(WebhookEventType),\n payload: z.string().refine((val) => {\n try {\n JSON.parse(val);\n return true;\n } catch {\n return false;\n }\n }, 'JSON inválido'),\n headers: z.string().optional().refine((val) => {\n if (!val) return true;\n try {\n const headers = JSON.parse(val);\n return typeof headers === 'object' && !Array.isArray(headers);\n } catch {\n return false;\n }\n }, 'Headers devem ser um objeto JSON válido')\n});\n\ntype TestFormData = z.infer<typeof testSchema>;\n\ninterface TestHistoryItem {\n id: string;\n timestamp: Date;\n url: string;\n eventType: WebhookEventType;\n response?: WebhookTestResponse;\n duration: number;\n}\n\ninterface WebhookTestModalProps {\n isOpen: boolean;\n onClose: () => void;\n defaultUrl?: string;\n defaultEventType?: WebhookEventType;\n}\n\nexport function WebhookTestModal({\n isOpen,\n onClose,\n defaultUrl = '',\n defaultEventType = WebhookEventType.MESSAGE_RECEIVED\n}: WebhookTestModalProps) {\n const { toast } = useToast();\n const [testHistory, setTestHistory] = useState<TestHistoryItem[]>([]);\n const [selectedTemplate, setSelectedTemplate] = useState<WebhookEventType>(defaultEventType);\n const [activeTab, setActiveTab] = useState<'test' | 'history'>('test');\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n setValue,\n watch\n } = useForm<TestFormData>({\n resolver: zodResolver(testSchema),\n defaultValues: {\n url: defaultUrl,\n event_type: defaultEventType,\n payload: JSON.stringify(EVENT_TEMPLATES[defaultEventType], null, 2),\n headers: JSON.stringify({ 'Content-Type': 'application/json' }, null, 2)\n }\n });\n\n const payloadValue = watch('payload');\n const headersValue = watch('headers');\n\n const testMutation = useMutation({\n mutationFn: async (data: TestFormData) => {\n const startTime = Date.now();\n const request: WebhookTestRequest = {\n url: data.url,\n event_type: data.event_type,\n payload: JSON.parse(data.payload),\n headers: data.headers ? JSON.parse(data.headers) : undefined\n };\n \n const response = await webhookService.testWebhook(request);\n const duration = Date.now() - startTime;\n \n return { response, duration, request };\n },\n onSuccess: ({ response, duration, request }) => {\n const historyItem: TestHistoryItem = {\n id: `test-${Date.now()}`,\n timestamp: new Date(),\n url: request.url,\n eventType: request.event_type as WebhookEventType,\n response,\n duration\n };\n \n setTestHistory(prev => [historyItem, ...prev].slice(0, 10));\n \n if (response.success) {\n toast({\n title: 'Teste bem-sucedido',\n description: `Webhook respondeu com status ${response.status_code} em ${duration}ms`,\n });\n } else {\n toast({\n title: 'Teste falhou',\n description: response.error || `Status: ${response.status_code}`,\n variant: 'destructive',\n });\n }\n },\n onError: (error: Error) => {\n toast({\n title: 'Erro ao testar webhook',\n description: error.message,\n variant: 'destructive',\n });\n }\n });\n\n useEffect(() => {\n if (selectedTemplate) {\n setValue('event_type', selectedTemplate);\n setValue('payload', JSON.stringify(EVENT_TEMPLATES[selectedTemplate], null, 2));\n }\n }, [selectedTemplate, setValue]);\n\n const onSubmit = (data: TestFormData) => {\n testMutation.mutate(data);\n };\n\n const copyToClipboard = (text: string) => {\n navigator.clipboard.writeText(text);\n toast({\n title: 'Copiado!',\n description: 'Conteúdo copiado para a área de transferência',\n });\n };\n\n const downloadHistory = () => {\n const dataStr = JSON.stringify(testHistory, null, 2);\n const dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr);\n const exportFileDefaultName = `webhook-tests-${Date.now()}.json`;\n \n const linkElement = document.createElement('a');\n linkElement.setAttribute('href', dataUri);\n linkElement.setAttribute('download', exportFileDefaultName);\n linkElement.click();\n };\n\n const formatJson = (json: string): string => {\n try {\n return JSON.stringify(JSON.parse(json), null, 2);\n } catch {\n return json;\n }\n };\n\n const getStatusIcon = (status?: boolean) => {\n if (status === undefined) return <Clock className=\"icon-size text-muted-foreground\" />;\n return status ? \n <CheckCircle className=\"icon-size text-green-500\" /> : \n <XCircle className=\"icon-size text-red-500\" />;\n };\n\n const getStatusBadge = (response?: WebhookTestResponse) => {\n if (!response) return <Badge variant=\"secondary\">Pendente</Badge>;\n \n if (response.success) {\n return <Badge variant=\"default\" className=\"bg-green-500\">Sucesso</Badge>;\n }\n \n return <Badge variant=\"destructive\">Falhou</Badge>;\n };\n\n return (\n <Dialog open={isOpen} onOpenChange={onClose}>\n <DialogContent className=\"max-w-4xl max-h-[90vh] overflow-hidden flex flex-col\">\n <DialogHeader>\n <DialogTitle>Testar Webhook</DialogTitle>\n <DialogDescription>\n Envie eventos de teste para validar a configuração do webhook\n </DialogDescription>\n </DialogHeader>\n\n <Tabs value={activeTab} onValueChange={(v) => setActiveTab(v as 'test' | 'history')} className=\"flex-1 flex flex-col\">\n <TabsList className=\"grid w-full grid-cols-2\">\n <TabsTrigger value=\"test\">\n <Send className=\"icon-size mr-2\" />\n Enviar Teste\n </TabsTrigger>\n <TabsTrigger value=\"history\">\n <History className=\"icon-size mr-2\" />\n Histórico ({testHistory.length})\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"test\" className=\"flex-1 overflow-auto\">\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"url\">URL do Webhook</Label>\n <Input\n id=\"url\"\n placeholder=\"https://exemplo.com/webhook\"\n {...register('url')}\n />\n {errors.url && (\n <p className=\"text-sm text-red-500\">{errors.url.message}</p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"event_type\">Tipo de Evento</Label>\n <Select\n value={selectedTemplate}\n onValueChange={(value) => setSelectedTemplate(value as WebhookEventType)}\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={WebhookEventType.MESSAGE_RECEIVED}>\n Mensagem Recebida\n </SelectItem>\n <SelectItem value={WebhookEventType.MESSAGE_SENT}>\n Mensagem Enviada\n </SelectItem>\n <SelectItem value={WebhookEventType.MESSAGE_DELIVERED}>\n Mensagem Entregue\n </SelectItem>\n <SelectItem value={WebhookEventType.MESSAGE_READ}>\n Mensagem Lida\n </SelectItem>\n <SelectItem value={WebhookEventType.MESSAGE_FAILED}>\n Falha no Envio\n </SelectItem>\n <SelectItem value={WebhookEventType.CONNECTION_UPDATE}>\n Atualização de Conexão\n </SelectItem>\n <SelectItem value={WebhookEventType.QR_CODE_UPDATED}>\n QR Code Atualizado\n </SelectItem>\n <SelectItem value={WebhookEventType.INSTANCE_CREATED}>\n Instância Criada\n </SelectItem>\n <SelectItem value={WebhookEventType.INSTANCE_DELETED}>\n Instância Deletada\n </SelectItem>\n <SelectItem value={WebhookEventType.FLOW_TRIGGERED}>\n Fluxo Disparado\n </SelectItem>\n <SelectItem value={WebhookEventType.FLOW_COMPLETED}>\n Fluxo Concluído\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor=\"payload\">Payload (JSON)</Label>\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setValue('payload', formatJson(payloadValue))}\n >\n <Code className=\"icon-size mr-1\" />\n Formatar\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => copyToClipboard(payloadValue)}\n >\n <Copy className=\"icon-size mr-1\" />\n Copiar\n </Button>\n </div>\n </div>\n <Textarea\n id=\"payload\"\n className=\"font-mono text-sm min-h-[200px]\"\n {...register('payload')}\n />\n {errors.payload && (\n <p className=\"text-sm text-red-500\">{errors.payload.message}</p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor=\"headers\">Headers (JSON - Opcional)</Label>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => copyToClipboard(headersValue || '')}\n >\n <Copy className=\"icon-size mr-1\" />\n Copiar\n </Button>\n </div>\n <Textarea\n id=\"headers\"\n className=\"font-mono text-sm min-h-[100px]\"\n placeholder='{\"Content-Type\": \"application/json\"}'\n {...register('headers')}\n />\n {errors.headers && (\n <p className=\"text-sm text-red-500\">{errors.headers.message}</p>\n )}\n </div>\n\n {testMutation.data?.response && (\n <Alert className={cn(\n \"mt-4\",\n testMutation.data.response.success ? \"border-green-500\" : \"border-red-500\"\n )}>\n <AlertCircle className=\"icon-size\" />\n <AlertDescription className=\"space-y-2\">\n <div className=\"flex items-center gap-4\">\n <span>Status: {testMutation.data.response.status_code}</span>\n <span>Tempo: {testMutation.data.duration}ms</span>\n </div>\n {testMutation.data.response.response_body && (\n <pre className=\"text-xs bg-muted p-2 rounded mt-2 overflow-auto max-h-[100px]\">\n {typeof testMutation.data.response.response_body === 'string' \n ? testMutation.data.response.response_body\n : JSON.stringify(testMutation.data.response.response_body, null, 2)}\n </pre>\n )}\n {testMutation.data.response.error && (\n <p className=\"text-sm text-red-500\">{testMutation.data.response.error}</p>\n )}\n </AlertDescription>\n </Alert>\n )}\n </form>\n </TabsContent>\n\n <TabsContent value=\"history\" className=\"flex-1 overflow-hidden flex flex-col\">\n <div className=\"flex justify-end mb-4\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={downloadHistory}\n disabled={testHistory.length === 0}\n >\n <Download className=\"icon-size mr-2\" />\n Exportar Histórico\n </Button>\n </div>\n \n <ScrollArea className=\"flex-1\">\n <div className=\"space-y-3\">\n {testHistory.length === 0 ? (\n <div className=\"text-center text-muted-foreground py-8\">\n Nenhum teste realizado ainda\n </div>\n ) : (\n testHistory.map((item) => (\n <div\n key={item.id}\n className=\"border rounded-lg p-4 space-y-2\"\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {getStatusIcon(item.response?.success)}\n <span className=\"font-medium\">{item.eventType}</span>\n {getStatusBadge(item.response)}\n </div>\n <span className=\"text-sm text-muted-foreground\">\n {item.timestamp.toLocaleTimeString()}\n </span>\n </div>\n \n <div className=\"text-sm space-y-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">URL:</span>\n <code className=\"text-xs bg-muted px-1 py-0.5 rounded\">\n {item.url}\n </code>\n </div>\n \n {item.response && (\n <>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">Status:</span>\n <span>{item.response.status_code}</span>\n </div>\n \n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">Tempo:</span>\n <span>{item.duration}ms</span>\n </div>\n \n {item.response.error && (\n <div className=\"text-red-500 text-sm mt-2\">\n {item.response.error}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n ))\n )}\n </div>\n </ScrollArea>\n </TabsContent>\n </Tabs>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={onClose}>\n Fechar\n </Button>\n {activeTab === 'test' && (\n <Button\n type=\"submit\"\n onClick={handleSubmit(onSubmit)}\n disabled={testMutation.isPending}\n >\n {testMutation.isPending ? (\n <>\n <Loader2 className=\"mr-2 icon-size animate-spin\" />\n Enviando...\n </>\n ) : (\n <>\n <Send className=\"mr-2 icon-size\" />\n Enviar Teste\n </>\n )}\n </Button>\n )}\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}","import React from 'react';\nimport { WebhookEvent, WebhookEventStatus } from '@/domain/entities/WebhookEvent';\nimport { cn } from '@/utils/styles';\nimport {\n formatEventType,\n formatStatus,\n formatDate,\n formatTime,\n calculateProcessingTime,\n getTimelineColor\n} from '@/utils/webhook.utils';\nimport {\n CheckCircle2,\n XCircle,\n AlertCircle,\n Clock,\n Loader2,\n RefreshCw,\n MessageSquare,\n Phone,\n Wifi,\n QrCode,\n Workflow,\n ChevronRight\n} from 'lucide-react';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\n\ninterface WebhookTimelineProps {\n events: WebhookEvent[];\n onEventClick?: (event: WebhookEvent) => void;\n groupByDate?: boolean;\n className?: string;\n}\n\nexport const WebhookTimeline: React.FC<WebhookTimelineProps> = ({\n events,\n onEventClick,\n groupByDate = true,\n className\n}) => {\n const getStatusIcon = (status: WebhookEventStatus) => {\n switch (status) {\n case WebhookEventStatus.SUCCESS:\n return <CheckCircle2 className=\"h-5 w-5 text-green-500\" />;\n case WebhookEventStatus.FAILED:\n return <XCircle className=\"h-5 w-5 text-red-500\" />;\n case WebhookEventStatus.PROCESSING:\n return <Loader2 className=\"h-5 w-5 text-blue-500 animate-spin\" />;\n case WebhookEventStatus.RETRYING:\n return <RefreshCw className=\"h-5 w-5 text-orange-500 animate-spin\" />;\n case WebhookEventStatus.PENDING:\n return <Clock className=\"h-5 w-5 text-gray-500\" />;\n default:\n return <AlertCircle className=\"h-5 w-5 text-gray-400\" />;\n }\n };\n\n const getEventIcon = (type: string) => {\n if (type.includes('message')) return <MessageSquare className=\"icon-size\" />;\n if (type.includes('connection')) return <Wifi className=\"icon-size\" />;\n if (type.includes('qr')) return <QrCode className=\"icon-size\" />;\n if (type.includes('instance')) return <Phone className=\"icon-size\" />;\n if (type.includes('flow')) return <Workflow className=\"icon-size\" />;\n return <AlertCircle className=\"icon-size\" />;\n };\n\n\n\n const groupEventsByDate = () => {\n if (!groupByDate) return { '': events };\n\n const grouped: Record<string, WebhookEvent[]> = {};\n events.forEach(event => {\n const dateKey = formatDate(event.createdAt);\n if (!grouped[dateKey]) {\n grouped[dateKey] = [];\n }\n grouped[dateKey].push(event);\n });\n return grouped;\n };\n\n const groupedEvents = groupEventsByDate();\n\n return (\n <div className={cn(\"space-y-6\", className)}>\n {Object.entries(groupedEvents).map(([date, dateEvents]) => (\n <div key={date} className=\"space-y-4\">\n {groupByDate && date && (\n <div className=\"flex items-center space-x-2\">\n <div className=\"h-px flex-1 bg-gray-200\" />\n <span className=\"text-sm font-medium text-gray-500 px-2\">\n {date}\n </span>\n <div className=\"h-px flex-1 bg-gray-200\" />\n </div>\n )}\n \n <div className=\"relative\">\n {dateEvents.map((event, index) => (\n <div key={event.id} className=\"flex items-start pb-8 last:pb-0\">\n <div className=\"relative flex items-center justify-center flex-shrink-0\">\n <div className={cn(\n \"absolute top-5 left-1/2 -translate-x-1/2 w-0.5 h-full\",\n index === dateEvents.length - 1 ? \"hidden\" : \"bg-gray-200\"\n )} />\n <div className={cn(\n \"relative z-10 flex items-center justify-center w-10 h-10 rounded-full border-4 border-white shadow-sm\",\n getTimelineColor(event.status)\n )}>\n {getStatusIcon(event.status)}\n </div>\n </div>\n\n <div className=\"ml-4 flex-1\">\n <Button\n variant=\"ghost\"\n className=\"w-full justify-start p-3 h-auto hover:bg-gray-50\"\n onClick={() => onEventClick?.(event)}\n >\n <div className=\"flex-1 text-left\">\n <div className=\"flex items-center justify-between mb-1\">\n <div className=\"flex items-center space-x-2\">\n <div className=\"flex items-center justify-center w-8 h-8 rounded bg-gray-100\">\n {getEventIcon(event.type)}\n </div>\n <span className=\"text-sm font-medium text-gray-900\">\n {formatEventType(event.type)}\n </span>\n <Badge variant=\"outline\" className=\"text-xs\">\n {formatStatus(event.status)}\n </Badge>\n </div>\n <ChevronRight className=\"icon-size text-gray-400 flex-shrink-0\" />\n </div>\n\n <div className=\"flex items-center space-x-4 text-xs text-gray-500\">\n <span>{formatTime(event.createdAt)}</span>\n {event.metadata.instanceName && (\n <>\n <span>•</span>\n <span>{event.metadata.instanceName}</span>\n </>\n )}\n {event.metadata.phoneNumber && (\n <>\n <span>•</span>\n <span>{event.metadata.phoneNumber}</span>\n </>\n )}\n {event.metadata.flowId && (\n <>\n <span>•</span>\n <span>{event.metadata.flowId}</span>\n </>\n )}\n {event.processedAt && (\n <>\n <span>•</span>\n <span>\n {calculateProcessingTime(event.createdAt, event.processedAt)}s\n </span>\n </>\n )}\n </div>\n\n {event.error && (\n <div className=\"mt-2 text-xs text-red-600\">\n {event.error.message}\n </div>\n )}\n\n {event.retryCount > 0 && (\n <div className=\"mt-1 text-xs text-orange-600\">\n Tentativa {event.retryCount} de {event.maxRetries}\n </div>\n )}\n </div>\n </Button>\n </div>\n </div>\n ))}\n </div>\n </div>\n ))}\n \n {events.length === 0 && (\n <div className=\"text-center py-12\">\n <AlertCircle className=\"mx-auto h-12 w-12 text-gray-400\" />\n <p className=\"mt-2 text-sm text-gray-600\">\n Nenhum evento encontrado\n </p>\n </div>\n )}\n </div>\n );\n};","import React, { useState, useMemo } from 'react';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport {\n Search,\n Filter,\n Download,\n Trash2,\n MessageCircle,\n Image,\n MapPin,\n User,\n FileText,\n CheckCheck,\n Check,\n Clock,\n XCircle,\n ChevronDown,\n ChevronUp\n} from 'lucide-react';\nimport { format } from 'date-fns';\nimport { ptBR } from 'date-fns/locale';\nimport { useWhatsAppStore } from '@/presentation/stores/whatsapp.store';\nimport { WhatsAppMessage } from '@/domain/entities/WhatsAppMessage';\nimport { cn } from '@/utils/styles';\n\ninterface MessageHistoryProps {\n configId?: number;\n className?: string;\n maxHeight?: string;\n}\n\nconst MessageItem: React.FC<{\n message: WhatsAppMessage;\n direction: 'sent' | 'received';\n timestamp: Date;\n instanceName: string;\n}> = ({ message, direction, timestamp, instanceName }) => {\n const [expanded, setExpanded] = useState(false);\n\n const isOutgoing = direction === 'sent';\n const bubbleVariant = isOutgoing ? 'primary-acorde' : 'outlined';\n const alignment = isOutgoing ? 'justify-end' : 'justify-start';\n\n const getMessageIcon = () => {\n switch (message.type) {\n case 'text':\n return <MessageCircle className=\"icon-size\" />;\n case 'media':\n return <Image className=\"icon-size\" />;\n case 'location':\n return <MapPin className=\"icon-size\" />;\n case 'contact':\n return <User className=\"icon-size\" />;\n case 'template':\n return <FileText className=\"icon-size\" />;\n default:\n return <MessageCircle className=\"icon-size\" />;\n }\n };\n\n const getStatusIcon = () => {\n switch (message.status) {\n case 'sent':\n return <Check className=\"h-3 w-3 text-gray-400\" />;\n case 'delivered':\n return <CheckCheck className=\"h-3 w-3 text-gray-400\" />;\n case 'read':\n return <CheckCheck className=\"h-3 w-3 text-blue-500\" />;\n case 'failed':\n return <XCircle className=\"h-3 w-3 text-red-500\" />;\n case 'pending':\n return <Clock className=\"h-3 w-3 text-yellow-500\" />;\n default:\n return null;\n }\n };\n\n const getMessageContent = () => {\n switch (message.type) {\n case 'text':\n return message.text || '';\n case 'media':\n return (\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"secondary\" className=\"text-xs\">\n {message.mediaType?.toUpperCase()}\n </Badge>\n {message.filename && (\n <span className=\"text-xs text-muted-foreground\">{message.filename}</span>\n )}\n </div>\n {message.caption && <p className=\"text-sm\">{message.caption}</p>}\n </div>\n );\n case 'location':\n return (\n <div className=\"space-y-1\">\n <p className=\"font-medium text-sm\">{message.location?.name || 'Localização'}</p>\n {message.location?.address && (\n <p className=\"text-xs text-muted-foreground\">{message.location.address}</p>\n )}\n <p className=\"text-xs text-muted-foreground\">\n {message.location?.latitude}, {message.location?.longitude}\n </p>\n </div>\n );\n case 'contact':\n return (\n <div className=\"space-y-1\">\n <p className=\"font-medium text-sm\">{message.contact?.name}</p>\n <p className=\"text-xs text-muted-foreground\">{message.contact?.phone}</p>\n </div>\n );\n case 'template':\n return (\n <div className=\"space-y-1\">\n <Badge variant=\"secondary\" className=\"text-xs\">Template</Badge>\n <p className=\"text-sm\">{message.template?.name}</p>\n </div>\n );\n default:\n return message.getSummary();\n }\n };\n\n return (\n <div className={cn(\"flex mb-3\", alignment)}>\n <Card\n variant={bubbleVariant}\n size=\"sm\"\n className={cn(\n \"max-w-[80%] transition-all duration-200\",\n isOutgoing && \"bg-acorde-primary text-white\"\n )}\n >\n <CardContent className=\"p-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <div className={cn(\n \"flex items-center gap-1\",\n isOutgoing ? \"text-white\" : \"text-foreground\"\n )}>\n {getMessageIcon()}\n <span className=\"text-sm font-medium\">\n {direction === 'sent' ? message.getFormattedToNumber() : message.getFormattedFromNumber() || 'Desconhecido'}\n </span>\n </div>\n <div className=\"flex items-center gap-1\">\n <Badge\n variant={isOutgoing ? 'secondary' : 'outline'}\n size=\"sm\"\n className={cn(\n \"text-xs\",\n isOutgoing && \"bg-white/20 text-white border-white/30\"\n )}\n >\n {direction === 'sent' ? 'Enviada' : 'Recebida'}\n </Badge>\n <Badge\n variant=\"outline\"\n size=\"sm\"\n className={cn(\n \"text-xs\",\n isOutgoing && \"bg-white/20 text-white border-white/30\"\n )}\n >\n {instanceName}\n </Badge>\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n {direction === 'sent' && getStatusIcon()}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"h-6 w-6 p-0\",\n isOutgoing && \"text-white hover:bg-white/20\"\n )}\n onClick={() => setExpanded(!expanded)}\n >\n {expanded ? (\n <ChevronUp className=\"h-3 w-3\" />\n ) : (\n <ChevronDown className=\"h-3 w-3\" />\n )}\n </Button>\n </div>\n </div>\n\n <div>\n {typeof getMessageContent() === 'string' ? (\n <p className={cn(\n \"text-sm leading-relaxed\",\n isOutgoing ? \"text-white\" : \"text-foreground\",\n !expanded && \"line-clamp-2\"\n )}>\n {getMessageContent()}\n </p>\n ) : (\n <div className={cn(isOutgoing && \"text-white\")}>\n {getMessageContent()}\n </div>\n )}\n </div>\n\n <div className={cn(\n \"flex items-center justify-between mt-2 pt-2 border-t text-xs\",\n isOutgoing\n ? \"border-white/20 text-white/70\"\n : \"border-border text-muted-foreground\"\n )}>\n <span>\n {format(timestamp, 'dd/MM/yyyy HH:mm:ss', { locale: ptBR })}\n </span>\n\n <div className=\"flex items-center gap-2\">\n {message.errorMessage && (\n <span className=\"text-red-400\">\n Erro: {message.errorMessage}\n </span>\n )}\n\n {direction === 'sent' && message.getDeliveryTime() && (\n <span>\n Entregue em {(message.getDeliveryTime()! / 1000).toFixed(1)}s\n </span>\n )}\n\n {direction === 'sent' && getStatusIcon()}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n};\n\nexport const MessageHistory: React.FC<MessageHistoryProps> = ({\n configId,\n className,\n maxHeight = '600px'\n}) => {\n const { messageHistory, clearHistory, getHistoryByConfig } = useWhatsAppStore();\n const [searchTerm, setSearchTerm] = useState('');\n const [filterType, setFilterType] = useState<'all' | 'sent' | 'received'>('all');\n const [filterInstance, setFilterInstance] = useState<string>('all');\n\n const filteredMessages = useMemo(() => {\n let messages = configId ? getHistoryByConfig(configId) : messageHistory;\n\n // Filter by direction\n if (filterType !== 'all') {\n messages = messages.filter(m => m.direction === filterType);\n }\n\n // Filter by instance\n if (filterInstance !== 'all') {\n messages = messages.filter(m => m.instanceName === filterInstance);\n }\n\n // Filter by search term\n if (searchTerm) {\n const term = searchTerm.toLowerCase();\n messages = messages.filter(m => {\n const summary = m.message.getSummary().toLowerCase();\n const toNumber = m.message.toNumber.toLowerCase();\n const fromNumber = (m.message.fromNumber || '').toLowerCase();\n return summary.includes(term) || toNumber.includes(term) || fromNumber.includes(term);\n });\n }\n\n return messages;\n }, [messageHistory, configId, searchTerm, filterType, filterInstance, getHistoryByConfig]);\n\n const uniqueInstances = useMemo(() => {\n const instances = new Set(messageHistory.map(m => m.instanceName));\n return Array.from(instances);\n }, [messageHistory]);\n\n const stats = useMemo(() => {\n return {\n total: filteredMessages.length,\n sent: filteredMessages.filter(m => m.direction === 'sent').length,\n received: filteredMessages.filter(m => m.direction === 'received').length,\n failed: filteredMessages.filter(m => m.message.status === 'failed').length\n };\n }, [filteredMessages]);\n\n const handleExport = () => {\n const data = filteredMessages.map(m => ({\n timestamp: m.timestamp.toISOString(),\n direction: m.direction,\n instance: m.instanceName,\n type: m.message.type,\n to: m.message.toNumber,\n from: m.message.fromNumber || '',\n status: m.message.status,\n content: m.message.getSummary()\n }));\n\n const csv = [\n 'Timestamp,Direction,Instance,Type,To,From,Status,Content',\n ...data.map(row => \n `\"${row.timestamp}\",\"${row.direction}\",\"${row.instance}\",\"${row.type}\",\"${row.to}\",\"${row.from}\",\"${row.status}\",\"${row.content.replace(/\"/g, '\"\"')}\"`\n )\n ].join('\\n');\n\n const blob = new Blob([csv], { type: 'text/csv' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `whatsapp-history-${format(new Date(), 'yyyy-MM-dd-HH-mm')}.csv`;\n a.click();\n URL.revokeObjectURL(url);\n };\n\n const handleClear = () => {\n if (confirm('Tem certeza que deseja limpar o histórico de mensagens?')) {\n clearHistory(configId);\n }\n };\n\n return (\n <Card variant=\"elevated\" className={className}>\n <CardHeader variant=\"accent\">\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle className=\"flex items-center gap-2\">\n <MessageCircle className=\"h-5 w-5 text-acorde-primary\" />\n Histórico de Mensagens\n </CardTitle>\n <CardDescription>\n <div className=\"flex items-center gap-4 mt-1\">\n <span>{stats.total} mensagens</span>\n <Badge variant=\"outline-success\" size=\"sm\">{stats.sent} enviadas</Badge>\n <Badge variant=\"outline\" size=\"sm\">{stats.received} recebidas</Badge>\n {stats.failed > 0 && (\n <Badge variant=\"destructive\" size=\"sm\">{stats.failed} falharam</Badge>\n )}\n </div>\n </CardDescription>\n </div>\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handleExport}\n disabled={filteredMessages.length === 0}\n >\n <Download className=\"mr-2 icon-size\" />\n Exportar\n </Button>\n <Button\n variant=\"destructive\"\n size=\"sm\"\n onClick={handleClear}\n disabled={filteredMessages.length === 0}\n >\n <Trash2 className=\"mr-2 icon-size\" />\n Limpar\n </Button>\n </div>\n </div>\n </CardHeader>\n \n <CardContent className=\"space-y-4\">\n {/* Filters */}\n <div className=\"flex gap-2\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-2 top-1/2 -translate-y-1/2 icon-size text-muted-foreground\" />\n <Input\n variant=\"acorde\"\n type=\"text\"\n placeholder=\"Buscar mensagens...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n className=\"pl-8\"\n />\n </div>\n \n <Select value={filterType} onValueChange={(value: any) => setFilterType(value)}>\n <SelectTrigger className=\"w-[140px]\">\n <Filter className=\"mr-2 icon-size\" />\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">Todas</SelectItem>\n <SelectItem value=\"sent\">Enviadas</SelectItem>\n <SelectItem value=\"received\">Recebidas</SelectItem>\n </SelectContent>\n </Select>\n \n {uniqueInstances.length > 1 && (\n <Select value={filterInstance} onValueChange={setFilterInstance}>\n <SelectTrigger className=\"w-[160px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">Todas Instâncias</SelectItem>\n {uniqueInstances.map(instance => (\n <SelectItem key={instance} value={instance}>\n {instance}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n </div>\n\n {/* Messages List */}\n <ScrollArea className=\"w-full\" style={{ maxHeight }}>\n <div className=\"p-4\">\n {filteredMessages.length === 0 ? (\n <Card variant=\"outlined\" className=\"text-center py-8\">\n <CardContent>\n <MessageCircle className=\"h-12 w-12 mx-auto mb-4 text-muted-foreground/50\" />\n <p className=\"text-muted-foreground\">\n {searchTerm || filterType !== 'all' || filterInstance !== 'all' ? (\n 'Nenhuma mensagem encontrada com os filtros aplicados'\n ) : (\n 'Nenhuma mensagem no histórico'\n )}\n </p>\n </CardContent>\n </Card>\n ) : (\n <div className=\"space-y-1\">\n {filteredMessages.map((item) => (\n <MessageItem\n key={item.id}\n message={item.message}\n direction={item.direction}\n timestamp={item.timestamp}\n instanceName={item.instanceName}\n />\n ))}\n </div>\n )}\n </div>\n </ScrollArea>\n </CardContent>\n </Card>\n );\n};","import React, { useEffect, useState, useCallback } from 'react';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport { QrCode, CheckCircle, AlertCircle, Clock, Loader2 } from 'lucide-react';\nimport { WhatsAppConnectResponse, whatsappService } from '@/services/api/whatsapp.service';\nimport { useToast } from '../ui/use-toast';\nimport QRCode from 'qrcode';\n\ninterface QRCodeModalProps {\n open: boolean;\n onClose: () => void;\n connectResponse: WhatsAppConnectResponse | null;\n instanceName: string;\n configId?: number;\n onConnectionSuccess?: () => void;\n}\n\nexport const QRCodeModal: React.FC<QRCodeModalProps> = ({\n open,\n onClose,\n connectResponse,\n instanceName,\n configId,\n onConnectionSuccess\n}) => {\n const { toast } = useToast();\n const [qrCodeUrl, setQrCodeUrl] = useState<string>('');\n const [timeRemaining, setTimeRemaining] = useState<number>(180);\n const [isExpired, setIsExpired] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isGenerating, setIsGenerating] = useState(false);\n const [isConnected, setIsConnected] = useState(false);\n const [checkingStatus, setCheckingStatus] = useState(false);\n const [currentStatus, setCurrentStatus] = useState(connectResponse?.status || 'waiting_qr');\n\n useEffect(() => {\n if (connectResponse?.qr_code) {\n const qrCode = connectResponse.qr_code;\n\n // Verificar se o QR code já é uma imagem pronta (data URL ou URL)\n if (qrCode.startsWith('data:image/') || qrCode.startsWith('http://') || qrCode.startsWith('https://')) {\n // É uma imagem pronta - usar diretamente\n setQrCodeUrl(qrCode);\n setIsGenerating(false);\n setError(null);\n } else if (qrCode.length > 0) {\n // É texto - gerar QR Code visual\n generateQRCode(qrCode);\n }\n\n // Se tem tempo de expiração, calcular o tempo restante\n if (connectResponse.expires_at) {\n const expiresAt = new Date(connectResponse.expires_at);\n const now = new Date();\n const remainingMs = expiresAt.getTime() - now.getTime();\n setTimeRemaining(Math.max(0, Math.floor(remainingMs / 1000)));\n }\n } else if (connectResponse && !connectResponse.qr_code) {\n // Se não tem QR Code mas tem resposta, pode estar conectado\n if (connectResponse.status === 'connected') {\n setError(null);\n } else {\n setError('QR Code não foi gerado. Verifique a configuração da instância.');\n }\n }\n }, [connectResponse]);\n\n useEffect(() => {\n if (timeRemaining > 0 && !isExpired) {\n const timer = setTimeout(() => {\n setTimeRemaining(prev => {\n if (prev <= 1) {\n setIsExpired(true);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n return () => clearTimeout(timer);\n }\n }, [timeRemaining, isExpired]);\n\n const generateQRCode = async (text: string) => {\n try {\n setIsGenerating(true);\n setError(null);\n \n // Tentar gerar o QR Code\n const url = await QRCode.toDataURL(text, {\n width: 300,\n margin: 2,\n color: {\n dark: '#000000',\n light: '#FFFFFF'\n }\n });\n \n setQrCodeUrl(url);\n setIsGenerating(false);\n } catch (err) {\n console.error('Erro ao gerar QR Code:', err);\n setError('Erro ao gerar QR Code visual');\n setIsGenerating(false);\n }\n };\n\n const formatTime = (seconds: number): string => {\n const mins = Math.floor(seconds / 60);\n const secs = seconds % 60;\n return `${mins}:${secs.toString().padStart(2, '0')}`;\n };\n\n // Função para verificar o status da conexão\n const checkConnectionStatus = useCallback(async () => {\n if (!configId || checkingStatus || isConnected || isExpired) return;\n \n try {\n setCheckingStatus(true);\n const health = await whatsappService.checkHealth(configId);\n \n console.log('Status da conexão:', health);\n \n if (health.connected || health.status === 'connected') {\n setIsConnected(true);\n setCurrentStatus('connected');\n \n toast({\n title: 'WhatsApp Conectado!',\n description: `A instância ${instanceName} foi conectada com sucesso.`,\n variant: 'default'\n });\n \n // Aguarda um pouco para mostrar o status de sucesso antes de fechar\n setTimeout(() => {\n if (onConnectionSuccess) {\n onConnectionSuccess();\n }\n onClose();\n }, 2000);\n } else {\n setCurrentStatus(health.status);\n }\n } catch (error: any) {\n console.error('Erro ao verificar status:', error);\n // Não exibe erro, apenas continua tentando\n } finally {\n setCheckingStatus(false);\n }\n }, [configId, checkingStatus, isConnected, isExpired, instanceName, onConnectionSuccess, onClose, toast]);\n\n // Polling para verificar status da conexão\n useEffect(() => {\n if (!open || !configId || isConnected || isExpired) return;\n \n // Verifica status a cada 3 segundos\n const interval = setInterval(() => {\n checkConnectionStatus();\n }, 3000);\n \n // Verifica imediatamente também\n checkConnectionStatus();\n \n return () => clearInterval(interval);\n }, [open, configId, isConnected, isExpired, checkConnectionStatus]);\n\n const getStatusBadge = () => {\n switch (currentStatus) {\n case 'connected':\n return (\n <Badge className=\"bg-green-500 text-white\">\n <CheckCircle className=\"mr-1 h-3 w-3\" />\n Conectado\n </Badge>\n );\n case 'waiting_qr':\n return (\n <Badge className=\"bg-yellow-500 text-white\">\n <QrCode className=\"mr-1 h-3 w-3\" />\n Aguardando QR\n </Badge>\n );\n case 'connecting':\n return (\n <Badge className=\"bg-blue-500 text-white\">\n <Loader2 className=\"mr-1 h-3 w-3 animate-spin\" />\n Conectando\n </Badge>\n );\n default:\n return (\n <Badge variant=\"secondary\">\n {connectResponse?.status || currentStatus || 'Desconhecido'}\n </Badge>\n );\n }\n };\n\n return (\n <Dialog open={open} onOpenChange={onClose}>\n <DialogContent className=\"max-w-md\">\n <DialogHeader>\n <DialogTitle className=\"flex items-center justify-between\">\n <span>Conectar WhatsApp</span>\n {getStatusBadge()}\n </DialogTitle>\n <DialogDescription>\n Instância: {instanceName}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"space-y-4\">\n {/* Mensagem da resposta */}\n {connectResponse?.message && (\n <Alert>\n <AlertCircle className=\"icon-size\" />\n <AlertDescription>{connectResponse.message}</AlertDescription>\n </Alert>\n )}\n\n {/* QR Code ou Status */}\n {isConnected || currentStatus === 'connected' ? (\n <div className=\"flex flex-col items-center py-8\">\n <CheckCircle className=\"h-16 w-16 text-green-500 mb-4\" />\n <p className=\"text-lg font-semibold\">WhatsApp Conectado!</p>\n <p className=\"text-sm text-muted-foreground mt-2\">\n A instância está pronta para enviar mensagens\n </p>\n </div>\n ) : (\n <>\n {/* QR Code */}\n {qrCodeUrl && !isExpired ? (\n <div className=\"flex flex-col items-center space-y-4\">\n <div className=\"p-4 bg-white rounded-lg border\">\n {isGenerating ? (\n <div className=\"w-[300px] h-[300px] flex items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-gray-400\" />\n </div>\n ) : (\n <img src={qrCodeUrl} alt=\"QR Code\" className=\"w-[300px] h-[300px]\" />\n )}\n </div>\n \n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"flex items-center gap-2\">\n <Clock className=\"icon-size text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">\n Expira em {formatTime(timeRemaining)}\n </span>\n </div>\n {checkingStatus && (\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <Loader2 className=\"h-3 w-3 animate-spin\" />\n <span>Verificando conexão...</span>\n </div>\n )}\n </div>\n \n <Alert>\n <QrCode className=\"icon-size\" />\n <AlertDescription>\n Escaneie este QR Code com o WhatsApp no seu celular para conectar\n </AlertDescription>\n </Alert>\n </div>\n ) : (\n <>\n {/* Erro ou QR Code expirado */}\n {error ? (\n <Alert variant=\"destructive\">\n <AlertCircle className=\"icon-size\" />\n <AlertDescription>{error}</AlertDescription>\n </Alert>\n ) : isExpired ? (\n <div className=\"flex flex-col items-center py-8\">\n <Clock className=\"h-16 w-16 text-yellow-500 mb-4\" />\n <p className=\"text-lg font-semibold\">QR Code Expirado</p>\n <p className=\"text-sm text-muted-foreground mt-2\">\n Feche esta janela e tente conectar novamente\n </p>\n </div>\n ) : (\n <div className=\"flex flex-col items-center py-8\">\n <Loader2 className=\"h-16 w-16 animate-spin text-gray-400 mb-4\" />\n <p className=\"text-lg font-semibold\">Gerando QR Code...</p>\n <p className=\"text-sm text-muted-foreground mt-2\">\n Aguarde enquanto geramos o código de conexão\n </p>\n </div>\n )}\n </>\n )}\n </>\n )}\n\n {/* Debug info em desenvolvimento */}\n {process.env.NODE_ENV === 'development' && connectResponse && (\n <details className=\"text-xs\">\n <summary className=\"cursor-pointer text-muted-foreground\">Debug Info</summary>\n <pre className=\"mt-2 p-2 bg-gray-100 rounded text-xs overflow-auto\">\n {JSON.stringify(connectResponse, null, 2)}\n </pre>\n </details>\n )}\n </div>\n\n <div className=\"flex justify-end gap-2 mt-4\">\n <Button variant=\"outline\" onClick={onClose}>\n Fechar\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n );\n};","import React, { useState, useEffect } from 'react';\nimport { Send, X, MessageCircle, User } from 'lucide-react';\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Textarea } from '@/components/ui/textarea';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Badge } from '@/components/ui/badge';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Avatar, AvatarFallback } from '@/components/ui/avatar';\nimport { cn } from '@/utils/styles';\nimport { WhatsAppConfig } from '@/domain/entities/WhatsAppConfig';\nimport { SendMessageDTO } from '@/application/use-cases/whatsapp/send-whatsapp-message.use-case';\nimport { WhatsAppMediaType } from '@/domain/entities/WhatsAppMessage';\n\ninterface SendMessageModalProps {\n open: boolean;\n onClose: () => void;\n config?: WhatsAppConfig;\n configs?: WhatsAppConfig[];\n defaultPhone?: string;\n appName?: string;\n}\n\nexport const SendMessageModal: React.FC<SendMessageModalProps> = ({\n open,\n onClose,\n config: initialConfig,\n configs = [],\n defaultPhone = '',\n appName = 'Sistema'\n}) => {\n const { sendMessage, isSending, validatePhoneNumber } = useWhatsApp();\n \n const [selectedConfig, setSelectedConfig] = useState<WhatsAppConfig | null>(initialConfig || null);\n const [messageType, setMessageType] = useState<'text' | 'media' | 'location' | 'contact' | 'template'>('text');\n const [phoneNumber, setPhoneNumber] = useState(defaultPhone);\n const [phoneError, setPhoneError] = useState<string>('');\n \n // Text message state\n const [textMessage, setTextMessage] = useState('');\n const [linkPreview, setLinkPreview] = useState(true);\n \n // Media message state\n const [mediaType, setMediaType] = useState<WhatsAppMediaType>('image');\n const [mediaUrl, setMediaUrl] = useState('');\n const [mediaFile, setMediaFile] = useState<string>('');\n const [caption, setCaption] = useState('');\n const [filename, setFilename] = useState('');\n \n // Location state\n const [latitude, setLatitude] = useState('');\n const [longitude, setLongitude] = useState('');\n const [locationName, setLocationName] = useState('');\n const [address, setAddress] = useState('');\n \n // Contact state\n const [contactName, setContactName] = useState('');\n const [contactPhone, setContactPhone] = useState('');\n \n // Template state\n const [templateName, setTemplateName] = useState('');\n const [templateLanguage, setTemplateLanguage] = useState('pt_BR');\n const [templateParams, setTemplateParams] = useState<string[]>(['']);\n\n useEffect(() => {\n if (initialConfig) {\n setSelectedConfig(initialConfig);\n } else if (configs.length > 0 && !selectedConfig) {\n // Preferir uma configuração conectada\n const connected = configs.find(c => c.isConnected());\n setSelectedConfig(connected || configs[0]);\n }\n }, [initialConfig, configs, selectedConfig]);\n\n const handlePhoneChange = (value: string) => {\n setPhoneNumber(value);\n \n // Aplicar máscara brasileira\n let masked = value.replace(/\\D/g, '');\n if (masked.length > 0) {\n if (masked.length <= 2) {\n masked = `(${masked}`;\n } else if (masked.length <= 7) {\n masked = `(${masked.slice(0, 2)}) ${masked.slice(2)}`;\n } else if (masked.length <= 11) {\n masked = `(${masked.slice(0, 2)}) ${masked.slice(2, 7)}-${masked.slice(7)}`;\n } else {\n masked = `(${masked.slice(0, 2)}) ${masked.slice(2, 7)}-${masked.slice(7, 11)}`;\n }\n }\n \n setPhoneNumber(masked);\n \n // Validar número\n if (value.length > 10) {\n const validation = validatePhoneNumber(value);\n if (!validation.valid) {\n setPhoneError(validation.errors[0] || 'Número inválido');\n } else {\n setPhoneError('');\n }\n }\n };\n\n const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0];\n if (!file) return;\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const base64 = e.target?.result as string;\n setMediaFile(base64);\n setFilename(file.name);\n };\n reader.readAsDataURL(file);\n };\n\n const handleSend = () => {\n if (!selectedConfig) {\n alert('Selecione uma configuração');\n return;\n }\n\n if (!phoneNumber || phoneError) {\n alert('Número de telefone inválido');\n return;\n }\n\n let messageData: SendMessageDTO;\n\n switch (messageType) {\n case 'text':\n if (!textMessage) {\n alert('Digite uma mensagem');\n return;\n }\n messageData = {\n type: 'text',\n instanceName: selectedConfig.instanceName,\n toNumber: phoneNumber,\n text: textMessage,\n options: { linkPreview }\n };\n break;\n\n case 'media':\n if (!mediaUrl && !mediaFile) {\n alert('Forneça uma URL ou arquivo de mídia');\n return;\n }\n messageData = {\n type: 'media',\n instanceName: selectedConfig.instanceName,\n toNumber: phoneNumber,\n mediaUrl: mediaUrl || undefined,\n mediaFile: mediaFile || undefined,\n mediaType,\n caption: caption || undefined,\n filename: filename || undefined\n };\n break;\n\n case 'location':\n if (!latitude || !longitude) {\n alert('Forneça latitude e longitude');\n return;\n }\n messageData = {\n type: 'location',\n instanceName: selectedConfig.instanceName,\n toNumber: phoneNumber,\n latitude: parseFloat(latitude),\n longitude: parseFloat(longitude),\n name: locationName || undefined,\n address: address || undefined\n };\n break;\n\n case 'contact':\n if (!contactName || !contactPhone) {\n alert('Forneça nome e telefone do contato');\n return;\n }\n messageData = {\n type: 'contact',\n instanceName: selectedConfig.instanceName,\n toNumber: phoneNumber,\n contactName,\n contactPhone\n };\n break;\n\n case 'template':\n if (!templateName) {\n alert('Forneça o nome do template');\n return;\n }\n messageData = {\n type: 'template',\n instanceName: selectedConfig.instanceName,\n toNumber: phoneNumber,\n templateName,\n languageCode: templateLanguage,\n parameters: templateParams.filter(p => p.trim() !== '')\n };\n break;\n\n default:\n return;\n }\n\n sendMessage(messageData, {\n onSuccess: () => {\n onClose();\n // Reset form\n setTextMessage('');\n setMediaUrl('');\n setMediaFile('');\n setCaption('');\n setFilename('');\n setLatitude('');\n setLongitude('');\n setLocationName('');\n setAddress('');\n setContactName('');\n setContactPhone('');\n setTemplateName('');\n setTemplateParams(['']);\n }\n });\n };\n\n const addTemplateParam = () => {\n setTemplateParams([...templateParams, '']);\n };\n\n const updateTemplateParam = (index: number, value: string) => {\n const newParams = [...templateParams];\n newParams[index] = value;\n setTemplateParams(newParams);\n };\n\n const removeTemplateParam = (index: number) => {\n setTemplateParams(templateParams.filter((_, i) => i !== index));\n };\n\n return (\n <Dialog open={open} onOpenChange={onClose}>\n <DialogContent className=\"sm:max-w-[600px] max-h-[80vh] overflow-y-auto\">\n <DialogHeader className=\"space-y-3\">\n <DialogTitle className=\"flex items-center gap-2\">\n <Badge variant=\"outline-success\" className=\"flex items-center gap-1\">\n <MessageCircle className=\"h-3 w-3\" />\n WhatsApp\n </Badge>\n Enviar Mensagem\n </DialogTitle>\n <DialogDescription>\n Escolha o tipo de mensagem e preencha os dados necessários\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"space-y-4 py-4\">\n {/* Seleção de configuração */}\n {!initialConfig && configs.length > 1 && (\n <Card variant=\"outlined\" size=\"sm\">\n <CardHeader>\n <CardTitle size=\"sm\">Instância WhatsApp</CardTitle>\n </CardHeader>\n <CardContent>\n <Select\n value={selectedConfig?.id.toString()}\n onValueChange={(value) => {\n const config = configs.find(c => c.id.toString() === value);\n setSelectedConfig(config || null);\n }}\n >\n <SelectTrigger>\n <SelectValue placeholder=\"Selecione uma instância\" />\n </SelectTrigger>\n <SelectContent>\n {configs.map((config) => (\n <SelectItem key={config.id} value={config.id.toString()}>\n <div className=\"flex items-center gap-2\">\n <span>{config.instanceName}</span>\n {config.isConnected() && (\n <Badge variant=\"success\" size=\"sm\">Conectado</Badge>\n )}\n </div>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </CardContent>\n </Card>\n )}\n\n {/* Contato de destino */}\n <Card variant=\"outlined\" size=\"sm\">\n <CardContent className=\"space-y-3\">\n <div className=\"flex items-center gap-3 p-3 bg-muted/50 rounded-md\">\n <Avatar size=\"sm\">\n <AvatarFallback>\n <User className=\"icon-size\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"flex-1\">\n <Label htmlFor=\"phone\" className=\"text-sm font-medium\">Número do Destinatário</Label>\n <Input\n id=\"phone\"\n type=\"tel\"\n variant=\"acorde\"\n value={phoneNumber}\n onChange={(e) => handlePhoneChange(e.target.value)}\n placeholder=\"(11) 99999-9999\"\n className={cn(\n \"mt-1\",\n phoneError && \"border-destructive focus:border-destructive\"\n )}\n />\n {phoneError && (\n <p className=\"text-sm text-destructive mt-1\">{phoneError}</p>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n\n {/* Seleção do tipo de mensagem */}\n <Card variant=\"outlined\">\n <CardHeader>\n <CardTitle size=\"sm\">Tipo de Mensagem</CardTitle>\n </CardHeader>\n <CardContent>\n <Tabs value={messageType} onValueChange={(value: any) => setMessageType(value)}>\n <TabsList className=\"grid w-full grid-cols-5\">\n <TabsTrigger value=\"text\">Texto</TabsTrigger>\n <TabsTrigger value=\"media\">Mídia</TabsTrigger>\n <TabsTrigger value=\"location\">Local</TabsTrigger>\n <TabsTrigger value=\"contact\">Contato</TabsTrigger>\n <TabsTrigger value=\"template\">Template</TabsTrigger>\n </TabsList>\n\n {/* Mensagem de Texto */}\n <TabsContent value=\"text\" className=\"space-y-4 mt-4\">\n <div className=\"space-y-3\">\n <Label htmlFor=\"message\" className=\"text-sm font-medium\">Mensagem</Label>\n <Textarea\n id=\"message\"\n variant=\"acorde\"\n value={textMessage}\n onChange={(e) => setTextMessage(e.target.value)}\n placeholder=\"Digite sua mensagem...\"\n rows={4}\n maxLength={4096}\n className=\"resize-none\"\n />\n <div className=\"flex items-center justify-between text-sm text-muted-foreground\">\n <span className={cn(\n textMessage.length > 3900 && \"text-warning\",\n textMessage.length === 4096 && \"text-destructive\"\n )}>\n {textMessage.length}/4096\n </span>\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={linkPreview}\n onChange={(e) => setLinkPreview(e.target.checked)}\n className=\"rounded border-border\"\n />\n <span className=\"text-sm\">Preview de links</span>\n </label>\n </div>\n </div>\n </TabsContent>\n\n {/* Mensagem de Mídia */}\n <TabsContent value=\"media\" className=\"space-y-4 mt-4\">\n <div className=\"space-y-3\">\n <div>\n <Label className=\"text-sm font-medium\">Tipo de Mídia</Label>\n <Select value={mediaType} onValueChange={(value: WhatsAppMediaType) => setMediaType(value)}>\n <SelectTrigger className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"image\">📷 Imagem</SelectItem>\n <SelectItem value=\"video\">🎥 Vídeo</SelectItem>\n <SelectItem value=\"audio\">🎵 Áudio</SelectItem>\n <SelectItem value=\"document\">📄 Documento</SelectItem>\n <SelectItem value=\"sticker\">😀 Sticker</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div>\n <Label className=\"text-sm font-medium\">URL da Mídia (ou faça upload)</Label>\n <Input\n variant=\"acorde\"\n value={mediaUrl}\n onChange={(e) => setMediaUrl(e.target.value)}\n placeholder=\"https://exemplo.com/imagem.jpg\"\n disabled={!!mediaFile}\n className=\"mt-1\"\n />\n </div>\n\n <div>\n <Label className=\"text-sm font-medium\">Ou faça upload de um arquivo</Label>\n <Input\n type=\"file\"\n onChange={handleFileUpload}\n disabled={!!mediaUrl}\n className=\"mt-1\"\n accept={\n mediaType === 'image' ? 'image/*' :\n mediaType === 'video' ? 'video/*' :\n mediaType === 'audio' ? 'audio/*' :\n '*'\n }\n />\n {filename && (\n <Badge variant=\"outline\" size=\"sm\" className=\"mt-2\">\n 📎 {filename}\n </Badge>\n )}\n </div>\n\n <div>\n <Label htmlFor=\"caption\" className=\"text-sm font-medium\">Legenda (opcional)</Label>\n <Textarea\n id=\"caption\"\n variant=\"acorde\"\n value={caption}\n onChange={(e) => setCaption(e.target.value)}\n placeholder=\"Adicione uma legenda...\"\n rows={2}\n maxLength={1024}\n className=\"mt-1 resize-none\"\n />\n </div>\n </div>\n </TabsContent>\n\n {/* Mensagem de Localização */}\n <TabsContent value=\"location\" className=\"space-y-4 mt-4\">\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <Label htmlFor=\"latitude\" className=\"text-sm font-medium\">📍 Latitude</Label>\n <Input\n id=\"latitude\"\n type=\"number\"\n step=\"0.000001\"\n variant=\"acorde\"\n value={latitude}\n onChange={(e) => setLatitude(e.target.value)}\n placeholder=\"-23.550520\"\n className=\"mt-1\"\n />\n </div>\n <div>\n <Label htmlFor=\"longitude\" className=\"text-sm font-medium\">📍 Longitude</Label>\n <Input\n id=\"longitude\"\n type=\"number\"\n step=\"0.000001\"\n variant=\"acorde\"\n value={longitude}\n onChange={(e) => setLongitude(e.target.value)}\n placeholder=\"-46.633308\"\n className=\"mt-1\"\n />\n </div>\n </div>\n\n <div>\n <Label htmlFor=\"locationName\" className=\"text-sm font-medium\">🏢 Nome do Local (opcional)</Label>\n <Input\n id=\"locationName\"\n variant=\"acorde\"\n value={locationName}\n onChange={(e) => setLocationName(e.target.value)}\n placeholder={appName}\n className=\"mt-1\"\n />\n </div>\n\n <div>\n <Label htmlFor=\"address\" className=\"text-sm font-medium\">📍 Endereço (opcional)</Label>\n <Input\n id=\"address\"\n variant=\"acorde\"\n value={address}\n onChange={(e) => setAddress(e.target.value)}\n placeholder=\"Av. Paulista, 1000 - São Paulo, SP\"\n className=\"mt-1\"\n />\n </div>\n </div>\n </TabsContent>\n\n {/* Mensagem de Contato */}\n <TabsContent value=\"contact\" className=\"space-y-4 mt-4\">\n <div className=\"space-y-3\">\n <div>\n <Label htmlFor=\"contactName\" className=\"text-sm font-medium\">👤 Nome do Contato</Label>\n <Input\n id=\"contactName\"\n variant=\"acorde\"\n value={contactName}\n onChange={(e) => setContactName(e.target.value)}\n placeholder=\"João Silva\"\n className=\"mt-1\"\n />\n </div>\n\n <div>\n <Label htmlFor=\"contactPhone\" className=\"text-sm font-medium\">📞 Telefone do Contato</Label>\n <Input\n id=\"contactPhone\"\n type=\"tel\"\n variant=\"acorde\"\n value={contactPhone}\n onChange={(e) => setContactPhone(e.target.value)}\n placeholder=\"(11) 88888-8888\"\n className=\"mt-1\"\n />\n </div>\n </div>\n </TabsContent>\n\n {/* Mensagem de Template */}\n <TabsContent value=\"template\" className=\"space-y-4 mt-4\">\n <Alert variant=\"info\">\n <AlertDescription>\n ⚠️ Templates precisam ser pré-aprovados pelo WhatsApp Business\n </AlertDescription>\n </Alert>\n\n <div className=\"space-y-3\">\n <div>\n <Label htmlFor=\"templateName\" className=\"text-sm font-medium\">📋 Nome do Template</Label>\n <Input\n id=\"templateName\"\n variant=\"acorde\"\n value={templateName}\n onChange={(e) => setTemplateName(e.target.value)}\n placeholder=\"order_confirmation\"\n className=\"mt-1\"\n />\n </div>\n\n <div>\n <Label className=\"text-sm font-medium\">🌐 Idioma</Label>\n <Select value={templateLanguage} onValueChange={setTemplateLanguage}>\n <SelectTrigger className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"pt_BR\">🇧🇷 Português (Brasil)</SelectItem>\n <SelectItem value=\"en_US\">🇺🇸 English (US)</SelectItem>\n <SelectItem value=\"es_ES\">🇪🇸 Español (España)</SelectItem>\n <SelectItem value=\"es_MX\">🇲🇽 Español (México)</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div>\n <Label className=\"text-sm font-medium\">🔧 Parâmetros do Template</Label>\n <div className=\"space-y-2 mt-2\">\n {templateParams.map((param, index) => (\n <div key={index} className=\"flex gap-2\">\n <Input\n variant=\"acorde\"\n value={param}\n onChange={(e) => updateTemplateParam(index, e.target.value)}\n placeholder={`Parâmetro ${index + 1}`}\n className=\"flex-1\"\n />\n {templateParams.length > 1 && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => removeTemplateParam(index)}\n className=\"flex-shrink-0\"\n >\n <X className=\"icon-size\" />\n </Button>\n )}\n </div>\n ))}\n {templateParams.length < 10 && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={addTemplateParam}\n className=\"w-full\"\n >\n ➕ Adicionar Parâmetro\n </Button>\n )}\n </div>\n </div>\n </div>\n </TabsContent>\n\n </Tabs>\n </CardContent>\n </Card>\n\n {/* Aviso sobre configuração não conectada */}\n {selectedConfig && !selectedConfig.isConnected() && (\n <Alert variant=\"destructive\">\n <AlertDescription>\n A instância selecionada não está conectada. Conecte-a antes de enviar mensagens.\n </AlertDescription>\n </Alert>\n )}\n </div>\n\n <DialogFooter className=\"flex gap-2\">\n <Button variant=\"outline\" onClick={onClose} disabled={isSending}>\n Cancelar\n </Button>\n <Button\n variant=\"success\"\n onClick={handleSend}\n disabled={isSending || !selectedConfig || !selectedConfig.isConnected()}\n className=\"flex items-center gap-2\"\n >\n {isSending ? (\n <>\n <div className=\"icon-size animate-spin rounded-full border-2 border-current border-t-transparent\" />\n Enviando...\n </>\n ) : (\n <>\n <Send className=\"icon-size\" />\n Enviar Mensagem\n </>\n )}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n};","import React, { useState, useEffect } from 'react';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Progress } from '@/components/ui/progress';\nimport { Badge } from '@/components/ui/badge';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Button } from '@/components/ui/button';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { \n Activity, \n AlertTriangle, \n CheckCircle, \n Clock, \n MessageCircle, \n RefreshCw,\n TrendingUp,\n TrendingDown,\n XCircle,\n Wifi,\n WifiOff,\n BarChart3\n} from 'lucide-react';\nimport { WhatsAppConfig } from '@/domain/entities/WhatsAppConfig';\nimport { format } from 'date-fns';\nimport { ptBR } from 'date-fns/locale';\n\ninterface HealthMetrics {\n uptime: number;\n messagesPerHour: number;\n successRate: number;\n avgResponseTime: number;\n lastError?: string;\n lastErrorTime?: Date;\n}\n\ninterface WhatsAppHealthMonitorProps {\n configs?: WhatsAppConfig[];\n autoRefresh?: boolean;\n refreshInterval?: number;\n}\n\nconst InstanceHealthCard: React.FC<{ \n config: WhatsAppConfig; \n onRefresh: () => void;\n}> = ({ config, onRefresh }) => {\n const health = useWhatsAppHealthMonitor(config.id, 30000); // Check every 30 seconds\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const handleRefresh = async () => {\n setIsRefreshing(true);\n await onRefresh();\n setTimeout(() => setIsRefreshing(false), 1000);\n };\n\n const getHealthIcon = () => {\n if (!health) return <Clock className=\"h-5 w-5 text-gray-400\" />;\n \n if (health.healthy && health.connected) {\n return <CheckCircle className=\"h-5 w-5 text-green-500\" />;\n } else if (health.connected) {\n return <AlertTriangle className=\"h-5 w-5 text-yellow-500\" />;\n } else {\n return <XCircle className=\"h-5 w-5 text-red-500\" />;\n }\n };\n\n const getConnectionIcon = () => {\n if (!health) return <WifiOff className=\"icon-size text-gray-400\" />;\n return health.connected ? \n <Wifi className=\"icon-size text-green-500\" /> : \n <WifiOff className=\"icon-size text-red-500\" />;\n };\n\n const getUptimePercentage = () => {\n if (!config.connectedAt) return 0;\n const now = new Date();\n const connectedTime = config.connectedAt.getTime();\n const totalTime = now.getTime() - connectedTime;\n const uptimeHours = totalTime / (1000 * 60 * 60);\n return Math.min(100, (uptimeHours / 24) * 100); // Percentage of 24 hours\n };\n\n return (\n <Card>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {getHealthIcon()}\n <div>\n <CardTitle className=\"text-base\">{config.instanceName}</CardTitle>\n <CardDescription className=\"text-xs\">\n {config.providerType.toUpperCase()} • {config.phoneNumber || 'Não conectado'}\n </CardDescription>\n </div>\n </div>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={handleRefresh}\n disabled={isRefreshing}\n className=\"h-8 w-8 p-0\"\n >\n <RefreshCw className={`icon-size ${isRefreshing ? 'animate-spin' : ''}`} />\n </Button>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {/* Connection Status */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Conexão</span>\n <div className=\"flex items-center gap-2\">\n {getConnectionIcon()}\n <Badge variant={health?.connected ? 'default' : 'destructive'}>\n {health?.connected ? 'Conectado' : 'Desconectado'}\n </Badge>\n </div>\n </div>\n\n {/* Health Status */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Saúde</span>\n <Badge variant={\n health?.healthy ? 'default' : \n health?.error ? 'destructive' : \n 'secondary'\n }>\n {health?.healthy ? 'Saudável' : \n health?.error ? 'Com Erro' : \n 'Verificando...'}\n </Badge>\n </div>\n\n {/* Uptime */}\n {config.isConnected() && (\n <div className=\"space-y-1\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Uptime</span>\n <span className=\"text-sm font-medium\">{getUptimePercentage().toFixed(1)}%</span>\n </div>\n <Progress value={getUptimePercentage()} className=\"h-1\" />\n </div>\n )}\n\n {/* Rate Limits */}\n <div className=\"space-y-1\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Limites</span>\n <span className=\"text-xs text-muted-foreground\">\n {config.rateLimitPerMinute}/min • {config.rateLimitPerHour}/h\n </span>\n </div>\n </div>\n\n {/* Last Check */}\n {health && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Última verificação</span>\n <span className=\"text-xs text-muted-foreground\">\n {format(health.lastCheck, 'HH:mm:ss', { locale: ptBR })}\n </span>\n </div>\n )}\n\n {/* Error Message */}\n {health?.error && (\n <Alert variant=\"destructive\" className=\"py-2\">\n <AlertTriangle className=\"h-3 w-3\" />\n <AlertDescription className=\"text-xs\">\n {health.error}\n </AlertDescription>\n </Alert>\n )}\n </CardContent>\n </Card>\n );\n};\n\nexport const WhatsAppHealthMonitor: React.FC<WhatsAppHealthMonitorProps> = ({\n configs = [],\n autoRefresh = true,\n refreshInterval = 60000\n}) => {\n const { configs: allConfigs, checkHealth, stats } = useWhatsApp({ \n autoRefresh, \n refreshInterval \n });\n \n const [selectedPeriod, setSelectedPeriod] = useState<'1h' | '24h' | '7d'>('24h');\n const [metrics, setMetrics] = useState<HealthMetrics>({\n uptime: 0,\n messagesPerHour: 0,\n successRate: 0,\n avgResponseTime: 0\n });\n\n const configsToMonitor = configs.length > 0 ? configs : allConfigs;\n\n useEffect(() => {\n // Simulated metrics calculation\n // In a real app, these would come from the backend\n const connectedConfigs = configsToMonitor.filter(c => c.isConnected());\n const uptime = connectedConfigs.length > 0 ? \n (connectedConfigs.length / configsToMonitor.length) * 100 : 0;\n\n setMetrics({\n uptime,\n messagesPerHour: Math.floor(Math.random() * 100),\n successRate: 95 + Math.random() * 5,\n avgResponseTime: 200 + Math.random() * 300\n });\n }, [configsToMonitor]);\n\n const handleRefreshHealth = async (config: WhatsAppConfig) => {\n await checkHealth(config.id);\n };\n\n return (\n <div className=\"space-y-6\">\n {/* Overview Stats */}\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Instâncias</CardTitle>\n <MessageCircle className=\"icon-size text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{configsToMonitor.length}</div>\n <p className=\"text-xs text-muted-foreground\">\n {stats.connected} conectadas\n </p>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Uptime Geral</CardTitle>\n <Activity className=\"icon-size text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{metrics.uptime.toFixed(1)}%</div>\n <div className=\"flex items-center text-xs text-muted-foreground\">\n {metrics.uptime > 95 ? (\n <>\n <TrendingUp className=\"mr-1 h-3 w-3 text-green-500\" />\n Estável\n </>\n ) : (\n <>\n <TrendingDown className=\"mr-1 h-3 w-3 text-red-500\" />\n Instável\n </>\n )}\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Taxa de Sucesso</CardTitle>\n <CheckCircle className=\"icon-size text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{metrics.successRate.toFixed(1)}%</div>\n <p className=\"text-xs text-muted-foreground\">\n Últimas {selectedPeriod === '1h' ? 'hora' : selectedPeriod === '24h' ? '24 horas' : '7 dias'}\n </p>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Tempo de Resposta</CardTitle>\n <Clock className=\"icon-size text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{metrics.avgResponseTime.toFixed(0)}ms</div>\n <p className=\"text-xs text-muted-foreground\">\n Média de resposta\n </p>\n </CardContent>\n </Card>\n </div>\n\n {/* Period Selector */}\n <Tabs value={selectedPeriod} onValueChange={(v) => setSelectedPeriod(v as any)}>\n <TabsList>\n <TabsTrigger value=\"1h\">Última Hora</TabsTrigger>\n <TabsTrigger value=\"24h\">24 Horas</TabsTrigger>\n <TabsTrigger value=\"7d\">7 Dias</TabsTrigger>\n </TabsList>\n\n <TabsContent value={selectedPeriod} className=\"space-y-4 mt-4\">\n {/* Instance Health Cards */}\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {configsToMonitor.map(config => (\n <InstanceHealthCard\n key={config.id}\n config={config}\n onRefresh={() => handleRefreshHealth(config)}\n />\n ))}\n </div>\n\n {configsToMonitor.length === 0 && (\n <Card>\n <CardContent className=\"flex flex-col items-center justify-center py-10\">\n <MessageCircle className=\"h-10 w-10 text-muted-foreground mb-4\" />\n <p className=\"text-muted-foreground text-center\">\n Nenhuma instância WhatsApp configurada.\n </p>\n <p className=\"text-sm text-muted-foreground text-center mt-2\">\n Configure uma instância para começar o monitoramento.\n </p>\n </CardContent>\n </Card>\n )}\n\n {/* Activity Chart Placeholder */}\n {configsToMonitor.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base flex items-center gap-2\">\n <BarChart3 className=\"icon-size\" />\n Atividade de Mensagens\n </CardTitle>\n <CardDescription>\n Volume de mensagens nas últimas {selectedPeriod === '1h' ? 'hora' : selectedPeriod === '24h' ? '24 horas' : '7 dias'}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"h-[200px] flex items-center justify-center border-2 border-dashed rounded-lg\">\n <p className=\"text-sm text-muted-foreground\">\n Gráfico de atividade (em desenvolvimento)\n </p>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n </Tabs>\n </div>\n );\n};","import { formatInTimeZone } from 'date-fns-tz';\nimport { ptBR } from 'date-fns/locale';\n\nconst BRAZIL_TIMEZONE = 'America/Sao_Paulo';\n\n/**\n * Formata uma data para o horário local do Brasil (GMT-3)\n * @param date - Data a ser formatada (string ou Date)\n * @param formatStr - String de formato (padrão: 'dd/MM/yyyy HH:mm:ss')\n * @returns String formatada no horário local\n */\nexport function formatLocalDateTime(\n date: string | Date, \n formatStr: string = 'dd/MM/yyyy HH:mm:ss'\n): string {\n const dateObj = typeof date === 'string' ? new Date(date) : date;\n \n // Formata diretamente no timezone do Brasil\n return formatInTimeZone(dateObj, BRAZIL_TIMEZONE, formatStr, { locale: ptBR });\n}\n\n/**\n * Formata apenas a hora no horário local\n * @param date - Data a ser formatada\n * @returns String com hora formatada (HH:mm:ss)\n */\nexport function formatLocalTime(date: string | Date): string {\n return formatLocalDateTime(date, 'HH:mm:ss');\n}\n\n/**\n * Formata apenas a data no formato brasileiro\n * @param date - Data a ser formatada\n * @returns String com data formatada (dd/MM/yyyy)\n */\nexport function formatLocalDate(date: string | Date): string {\n return formatLocalDateTime(date, 'dd/MM/yyyy');\n}","import { NodeExecutionStatus, TimelineStatus } from '@/domain/types/flow-execution.types';\n\ninterface NodeStylingParams {\n status: NodeExecutionStatus;\n isCurrentDebugNode?: boolean;\n timelineStatus?: TimelineStatus;\n isSelected?: boolean;\n}\n\nexport function getNodeBorderStyles({\n status,\n isCurrentDebugNode,\n timelineStatus,\n isSelected = false\n}: NodeStylingParams): string {\n if (isCurrentDebugNode) {\n return \"border-orange-500 bg-orange-50 shadow-2xl shadow-orange-500/50 animate-pulse\";\n }\n\n if (timelineStatus) {\n switch (timelineStatus) {\n case 'before':\n return \"border-gray-300 bg-gray-100 opacity-40\";\n case 'during':\n return \"border-blue-500 bg-blue-50 shadow-2xl shadow-blue-500/50 animate-pulse\";\n case 'after':\n return status === 'error' \n ? \"border-red-500 bg-red-50\" \n : \"border-green-500 bg-green-50\";\n }\n }\n\n const statusStyles: Record<NodeExecutionStatus, string> = {\n executing: \"border-blue-500 bg-blue-50 shadow-lg shadow-blue-500/20\",\n completed: \"border-green-500 bg-green-50\",\n error: \"border-red-500 bg-red-50\",\n paused: \"border-yellow-500 bg-yellow-50\",\n not_executed: \"border-gray-400 bg-gray-100 text-gray-500 opacity-60\",\n idle: isSelected ? \"border-purple-500 shadow-xl ring-2 ring-purple-500 ring-opacity-50\" : \"border-purple-300\"\n };\n\n return statusStyles[status] || (isSelected ? \"border-purple-500 shadow-xl ring-2 ring-purple-500 ring-opacity-50\" : \"border-purple-300\");\n}\n\nexport function getNodeIconColor({\n status,\n isCurrentDebugNode\n}: NodeStylingParams): string {\n if (isCurrentDebugNode) {\n return \"bg-orange-200\";\n }\n\n const colorMap: Record<NodeExecutionStatus, string> = {\n completed: \"bg-green-200\",\n executing: \"bg-blue-200\",\n error: \"bg-red-200\",\n paused: \"bg-yellow-200\",\n idle: \"bg-purple-100\",\n not_executed: \"bg-gray-200\"\n };\n\n return colorMap[status] || \"bg-purple-100\";\n}\n\nexport function getNodeIconTextColor({\n status,\n isCurrentDebugNode\n}: NodeStylingParams): string {\n if (isCurrentDebugNode) {\n return \"text-orange-600\";\n }\n\n const colorMap: Record<NodeExecutionStatus, string> = {\n completed: \"text-green-600\",\n executing: \"text-blue-600\",\n error: \"text-red-600\",\n paused: \"text-yellow-600\",\n idle: \"text-purple-600\",\n not_executed: \"text-gray-600\"\n };\n\n return colorMap[status] || \"text-purple-600\";\n}","export function beautifyString(str: string): string {\n if (!str) return '';\n\n return str\n .replace(/_/g, ' ')\n .toLowerCase()\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nexport function capitalizeFirst(str: string): string {\n if (!str) return '';\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\n}\n\nexport function toSnakeCase(str: string): string {\n if (!str) return '';\n return str\n .replace(/\\s+/g, '_')\n .toLowerCase();\n}\n\nexport function toCamelCase(str: string): string {\n if (!str) return '';\n return str\n .toLowerCase()\n .replace(/[_\\s]+(.)?/g, (_, char) => char ? char.toUpperCase() : '');\n}\n","// MCP (Model Context Protocol) Types\n\nimport { JsonValue, JsonObject } from './flow.types';\n\nexport interface MCPToolParameter {\n name: string;\n type: string;\n description?: string;\n required?: boolean;\n default?: JsonValue;\n enum?: string[];\n min?: number;\n max?: number;\n}\n\nexport interface MCPToolInfo {\n name: string;\n description: string;\n category: string;\n source: string;\n node_subtype?: string;\n parameters: {\n type: string;\n properties?: JsonObject;\n } | MCPToolParameter[];\n metadata?: JsonObject;\n}\n\nexport interface MCPToolsResponse {\n tools: MCPToolInfo[];\n categories?: string[];\n total: number;\n skip: number;\n limit: number;\n by_category: Record<string, number>;\n}\n\nexport interface ExecuteMCPToolRequest {\n tool_name: string;\n parameters?: Record<string, JsonValue>;\n context?: JsonObject;\n}\n\nexport interface ExecuteMCPToolResponse {\n success: boolean;\n result?: JsonValue;\n error?: string;\n execution_time?: number;\n metadata?: JsonObject;\n}\n\nexport interface MCPNodeValidationRequest {\n node_type: string;\n node_subtype: string;\n parameters: Record<string, JsonValue>;\n connections?: {\n inputs: string[];\n outputs: string[];\n };\n}\n\nexport interface MCPNodeValidationResponse {\n valid: boolean;\n errors?: string[];\n warnings?: string[];\n suggestions?: string[];\n}\n\nexport interface MCPExportResponse {\n version: string;\n tools: MCPToolInfo[];\n metadata: {\n exported_at: string;\n total_tools: number;\n categories: string[];\n };\n}\n\n// Mapping de categorias MCP para tipos de nós existentes\nexport const MCPCategoryToNodeType: Record<string, string> = {\n 'Communication': 'action',\n 'Data': 'action',\n 'AI': 'ai_agent',\n 'Logic': 'condition',\n 'Integration': 'action',\n 'Automation': 'action',\n 'Trigger': 'trigger',\n};\n\n// Mapping de subtipos MCP para ícones\nexport const MCPSubtypeToIcon: Record<string, string> = {\n 'send_email': 'Mail',\n 'send_sms': 'MessageSquare',\n 'send_whatsapp': 'MessageSquare',\n 'database_query': 'Database',\n 'api_request': 'Globe',\n 'file_operation': 'File',\n 'ai_completion': 'Brain',\n 'ai_analysis': 'Brain',\n 'conditional': 'GitBranch',\n 'loop': 'RefreshCw',\n 'webhook': 'Globe',\n 'schedule': 'Clock',\n 'manual': 'Zap',\n};","import { \n WebhookEvent, \n WebhookEventMetrics, \n WebhookSubscription, \n WebhookEventType, \n WebhookEventStatus,\n WebhookEventMetadata,\n WebhookEventErrorDetails\n} from '@/domain/entities/WebhookEvent';\n\nexport interface WebhookEventResponse {\n id: string;\n event_id: string;\n type: string;\n status: string;\n source: string;\n payload: Record<string, unknown>;\n metadata: Record<string, string | undefined>;\n retry_count: number;\n max_retries: number;\n error?: {\n code: string;\n message: string;\n details?: WebhookEventErrorDetails;\n timestamp: string;\n };\n processed_at?: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface WebhookEventListResponse {\n items?: WebhookEventResponse[];\n events?: WebhookEventResponse[];\n total: number;\n page?: number;\n pageSize?: number;\n hasMore?: boolean;\n}\n\nexport interface WebhookMetricsResponse {\n total: number;\n success: number;\n failed: number;\n pending: number;\n processing: number;\n retrying: number;\n average_processing_time: number;\n success_rate: number;\n failure_rate: number;\n by_type: Record<string, number>;\n by_hour: Array<{\n hour: string;\n count: number;\n success: number;\n failed: number;\n }>;\n}\n\nexport interface WebhookSubscriptionResponse {\n id: string;\n url: string;\n events: string[];\n active: boolean;\n secret?: string;\n headers?: Record<string, string>;\n retry_policy: {\n max_retries: number;\n retry_delay: number;\n backoff_multiplier: number;\n max_retry_delay: number;\n };\n created_at: string;\n updated_at: string;\n}\n\nexport interface WebhookTokenResponse {\n token: string;\n expires_at: string;\n created_at: string;\n}\n\nexport interface WebhookTestRequest {\n url: string;\n event_type: string;\n payload?: Record<string, unknown>;\n headers?: Record<string, string>;\n}\n\nexport interface WebhookTestResponse {\n success: boolean;\n status_code: number;\n response_time: number;\n response_body?: string | Record<string, unknown> | unknown[];\n error?: string;\n}\n\nexport interface WebhookHealthStatus {\n status: 'healthy' | 'degraded' | 'unhealthy';\n uptime: number;\n lastCheck: Date;\n successRate: number;\n averageResponseTime: number;\n activeSubscriptions: number;\n queueSize: number;\n errors: Array<{\n type: string;\n count: number;\n lastOccurrence: Date;\n }>;\n}\n\nexport interface WebhookLogEntry {\n id: string;\n timestamp: Date;\n level: 'info' | 'warning' | 'error' | 'debug';\n message: string;\n eventId?: string;\n subscriptionId?: string;\n metadata?: Record<string, string | number | boolean>;\n}\n\nexport interface WebhookConfiguration {\n enabled: boolean;\n maxRetries: number;\n retryDelay: number;\n timeout: number;\n maxQueueSize: number;\n rateLimitPerMinute: number;\n allowedOrigins: string[];\n signatureHeader: string;\n signatureAlgorithm: 'sha256' | 'sha512';\n}\n\nexport class WebhookEventMapper {\n static toDomain(response: WebhookEventResponse): WebhookEvent {\n if (!response) {\n return WebhookEventMapper.createEmptyEvent();\n }\n \n return {\n id: response.id || '',\n eventId: response.event_id || '',\n type: (response.type as WebhookEventType) || WebhookEventType.MESSAGE_RECEIVED,\n status: (response.status as WebhookEventStatus) || WebhookEventStatus.PENDING,\n source: response.source || 'unknown',\n payload: response.payload || {},\n metadata: (response.metadata as WebhookEventMetadata) || {},\n retryCount: response.retry_count || 0,\n maxRetries: response.max_retries || 3,\n error: response.error ? {\n code: response.error.code,\n message: response.error.message,\n details: response.error.details,\n timestamp: new Date(response.error.timestamp)\n } : undefined,\n processedAt: response.processed_at ? new Date(response.processed_at) : undefined,\n createdAt: response.created_at ? new Date(response.created_at) : new Date(),\n updatedAt: response.updated_at ? new Date(response.updated_at) : new Date()\n };\n }\n\n static createEmptyEvent(): WebhookEvent {\n return {\n id: '',\n eventId: '',\n type: WebhookEventType.MESSAGE_RECEIVED,\n status: WebhookEventStatus.PENDING,\n source: 'unknown',\n payload: {},\n metadata: {},\n retryCount: 0,\n maxRetries: 3,\n error: undefined,\n processedAt: undefined,\n createdAt: new Date(),\n updatedAt: new Date()\n };\n }\n\n static toResponse(event: WebhookEvent): WebhookEventResponse {\n return {\n id: event.id,\n event_id: event.eventId,\n type: event.type,\n status: event.status,\n source: event.source,\n payload: event.payload,\n metadata: event.metadata,\n retry_count: event.retryCount,\n max_retries: event.maxRetries,\n error: event.error ? {\n code: event.error.code,\n message: event.error.message,\n details: event.error.details,\n timestamp: event.error.timestamp.toISOString()\n } : undefined,\n processed_at: event.processedAt?.toISOString(),\n created_at: event.createdAt.toISOString(),\n updated_at: event.updatedAt.toISOString()\n };\n }\n}\n\nexport class WebhookSubscriptionMapper {\n static toDomain(response: WebhookSubscriptionResponse): WebhookSubscription {\n return {\n id: response.id,\n url: response.url,\n events: response.events as WebhookEventType[],\n active: response.active,\n secret: response.secret,\n headers: response.headers,\n retryPolicy: {\n maxRetries: response.retry_policy.max_retries,\n retryDelay: response.retry_policy.retry_delay,\n backoffMultiplier: response.retry_policy.backoff_multiplier,\n maxRetryDelay: response.retry_policy.max_retry_delay\n },\n createdAt: new Date(response.created_at),\n updatedAt: new Date(response.updated_at)\n };\n }\n\n static toResponse(subscription: WebhookSubscription): WebhookSubscriptionResponse {\n return {\n id: subscription.id,\n url: subscription.url,\n events: subscription.events,\n active: subscription.active,\n secret: subscription.secret,\n headers: subscription.headers,\n retry_policy: {\n max_retries: subscription.retryPolicy.maxRetries,\n retry_delay: subscription.retryPolicy.retryDelay,\n backoff_multiplier: subscription.retryPolicy.backoffMultiplier,\n max_retry_delay: subscription.retryPolicy.maxRetryDelay\n },\n created_at: subscription.createdAt.toISOString(),\n updated_at: subscription.updatedAt.toISOString()\n };\n }\n}\n\nexport class WebhookMetricsMapper {\n static toDomain(response: WebhookMetricsResponse): WebhookEventMetrics {\n return {\n total: response.total,\n success: response.success,\n failed: response.failed,\n pending: response.pending,\n processing: response.processing,\n retrying: response.retrying,\n averageProcessingTime: response.average_processing_time,\n successRate: response.success_rate,\n failureRate: response.failure_rate,\n byType: response.by_type,\n byHour: response.by_hour\n };\n }\n}","import * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../../utils/styles\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n\n // Variantes semânticas Acorde\n success: \"border-acorde-success/20 bg-acorde-success/5 text-acorde-success\",\n warning: \"border-acorde-warning/20 bg-acorde-warning/5 text-acorde-warning\",\n error: \"border-acorde-error/20 bg-acorde-error/5 text-acorde-error\",\n info: \"border-acorde-info/20 bg-acorde-info/5 text-acorde-info\",\n acorde: \"border-acorde-primary/20 bg-acorde-primary/5 text-acorde-primary\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst AlertIcons = {\n success: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 12l2 2 4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n ),\n warning: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ),\n error: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n ),\n info: (\n <svg className=\"icon-size\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <path d=\"M12 16v-4M12 8h.01\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ),\n}\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants> & {\n icon?: React.ReactNode\n }\n>(({ className, variant, icon, children, ...props }, ref) => {\n // Auto-detect icon based on variant\n const defaultIcon = variant && AlertIcons[variant as keyof typeof AlertIcons]\n const displayIcon = icon !== undefined ? icon : defaultIcon\n\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n >\n <div className=\"flex gap-3 items-start\">\n {displayIcon && (\n <div className=\"flex-shrink-0 mt-0.5\">\n {displayIcon}\n </div>\n )}\n <div className=\"flex-1\">\n {children}\n </div>\n </div>\n </ToastPrimitives.Root>\n )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"icon-size\" />\n </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n}\n","import { useToast } from \"./use-toast\"\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"./toast\"\n\nexport function Toaster() {\n const { toasts } = useToast()\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription className=\"whitespace-pre-line\">{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n )\n })}\n <ToastViewport />\n </ToastProvider>\n )\n}\n"]}