@acsrocha/ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/badge.tsx","../src/components/PageHeader.tsx","../src/components/ui/card.tsx","../src/components/StatCard.tsx","../src/components/PageLayout.tsx","../src/components/ui/table.tsx","../src/components/ui/checkbox.tsx","../src/components/SmartFilterPanel.tsx","../src/components/DataTable.tsx","../src/components/Toast.tsx","../src/components/ui/dialog.tsx","../src/components/ui/input.tsx","../src/components/ConfirmDialog.tsx","../src/components/CardView.tsx","../src/theme/tokens.ts","../src/theme/ThemeProvider.tsx"],"names":["React","cva","jsx","React2","useState","jsxs","Table","React4","useRef","useEffect","e","AnimatePresence","motion","Fragment","RefreshCw","Download","X","forwardRef","React8","Trash2","AlertTriangle","Plus"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClassValue, clsx } 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 { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst buttonVariants = cva(\n 'relative inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-semibold ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/50 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:scale-[1.03] active:scale-[0.98] overflow-hidden group',\n {\n variants: {\n variant: {\n default: 'bg-gradient-to-br from-blue-500 via-blue-600 to-blue-700 text-white shadow-lg shadow-blue-500/25 hover:shadow-xl hover:shadow-blue-500/40 border border-blue-400/20 before:absolute before:inset-0 before:bg-gradient-to-br before:from-white/20 before:to-transparent before:opacity-0 hover:before:opacity-100 before:transition-opacity',\n destructive: 'bg-gradient-to-br from-red-500 via-red-600 to-red-700 text-white shadow-lg shadow-red-500/25 hover:shadow-xl hover:shadow-red-500/40 border border-red-400/20 before:absolute before:inset-0 before:bg-gradient-to-br before:from-white/20 before:to-transparent before:opacity-0 hover:before:opacity-100 before:transition-opacity',\n outline: 'border-2 border-slate-300 bg-white/80 backdrop-blur-sm hover:bg-white hover:border-blue-400 hover:text-blue-700 text-slate-700 shadow-sm hover:shadow-lg hover:shadow-blue-500/10 before:absolute before:inset-0 before:bg-gradient-to-br before:from-blue-50/50 before:to-transparent before:opacity-0 hover:before:opacity-100 before:transition-opacity',\n secondary: 'bg-gradient-to-br from-slate-500 via-slate-600 to-slate-700 text-white shadow-lg shadow-slate-500/25 hover:shadow-xl hover:shadow-slate-500/40 border border-slate-400/20 before:absolute before:inset-0 before:bg-gradient-to-br before:from-white/20 before:to-transparent before:opacity-0 hover:before:opacity-100 before:transition-opacity',\n ghost: 'hover:bg-slate-100/80 hover:text-slate-900 shadow-none hover:shadow-md text-slate-600 backdrop-blur-sm before:absolute before:inset-0 before:bg-gradient-to-br before:from-slate-100/50 before:to-transparent before:opacity-0 hover:before:opacity-100 before:transition-opacity',\n link: 'text-blue-600 underline-offset-4 hover:underline shadow-none hover:shadow-none hover:scale-100 hover:text-blue-700 relative z-10',\n success: 'bg-gradient-to-br from-emerald-500 via-emerald-600 to-emerald-700 text-white shadow-lg shadow-emerald-500/25 hover:shadow-xl hover:shadow-emerald-500/40 border border-emerald-400/20 before:absolute before:inset-0 before:bg-gradient-to-br before:from-white/20 before:to-transparent before:opacity-0 hover:before:opacity-100 before:transition-opacity',\n warning: 'bg-gradient-to-br from-amber-500 via-amber-600 to-amber-700 text-white shadow-lg shadow-amber-500/25 hover:shadow-xl hover:shadow-amber-500/40 border border-amber-400/20 before:absolute before:inset-0 before:bg-gradient-to-br before:from-white/20 before:to-transparent before:opacity-0 hover:before:opacity-100 before:transition-opacity',\n },\n size: {\n default: 'h-11 px-6 py-2.5 text-sm',\n sm: 'h-9 px-4 text-xs',\n lg: 'h-13 px-8 text-base',\n icon: 'h-11 w-11',\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}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, ...props }, ref) => {\n return (\n <button\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n <span className=\"relative z-10 flex items-center justify-center gap-2\">\n {props.children}\n </span>\n </button>\n );\n }\n);\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none',\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',\n success: 'border-transparent bg-emerald-500 text-white hover:bg-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400',\n warning: 'border-transparent bg-amber-500 text-white hover:bg-amber-600 dark:bg-amber-900/30 dark:text-amber-400',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import { ReactNode, useRef, useState, useLayoutEffect } from 'react';\nimport { LucideIcon, LayoutGrid, Table, List, Grid3x3, RefreshCw } from 'lucide-react';\nimport { Button } from './ui/button';\nimport { Badge } from './ui/badge';\n\nexport type ViewMode = 'cards' | 'table' | 'list' | 'grid';\n\nexport interface ViewModeOption {\n value: ViewMode;\n icon: LucideIcon;\n label: string;\n}\n\nexport interface TabOption {\n value: string;\n label: string;\n icon: LucideIcon;\n badge?: number;\n}\n\nexport interface PageHeaderProps {\n title: string;\n subtitle?: string;\n icon?: LucideIcon;\n actions?: ReactNode;\n badge?: {\n label: string;\n variant?: 'default' | 'secondary' | 'destructive' | 'outline';\n };\n viewMode?: ViewMode;\n onViewModeChange?: (mode: ViewMode) => void;\n viewModeOptions?: ViewMode[];\n loading?: boolean;\n tabs?: TabOption[];\n activeTab?: string;\n onTabChange?: (value: string) => void;\n onRefresh?: () => void;\n}\n\nconst VIEW_MODE_CONFIG: Record<ViewMode, ViewModeOption> = {\n cards: { value: 'cards', icon: LayoutGrid, label: 'Cards' },\n table: { value: 'table', icon: Table, label: 'Tabela' },\n list: { value: 'list', icon: List, label: 'Lista' },\n grid: { value: 'grid', icon: Grid3x3, label: 'Grade' },\n};\n\nconst BTN_H = 'h-9';\nconst CTRL_BTN = `relative z-10 inline-flex items-center justify-center gap-1.5 px-3 text-xs font-semibold whitespace-nowrap transition-colors duration-150`;\n\ninterface SelectorBarProps {\n children: ReactNode;\n activeIndex: number;\n}\n\nfunction SelectorBar({ children, activeIndex }: SelectorBarProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const [highlight, setHighlight] = useState({ left: 0, width: 0 });\n\n const measure = () => {\n const container = containerRef.current;\n if (!container) return;\n const buttons = container.querySelectorAll<HTMLButtonElement>('button');\n const active = buttons[activeIndex];\n if (!active) return;\n setHighlight({ left: active.offsetLeft, width: active.offsetWidth });\n };\n\n useLayoutEffect(() => { measure(); }, [activeIndex, children]);\n\n useLayoutEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n const observer = new ResizeObserver(measure);\n observer.observe(container);\n return () => observer.disconnect();\n }, []);\n\n return (\n <div\n ref={containerRef}\n className={`relative inline-flex items-stretch border border-input bg-background rounded-md ${BTN_H} p-0.5 gap-0.5`}\n >\n <div\n className=\"absolute top-0.5 bottom-0.5 bg-blue-600 rounded transition-all duration-200 ease-out pointer-events-none\"\n style={{ left: highlight.left, width: highlight.width }}\n />\n {children}\n </div>\n );\n}\n\nexport function PageHeader({\n title,\n subtitle,\n icon: Icon,\n actions,\n badge,\n viewMode,\n onViewModeChange,\n viewModeOptions = ['table', 'cards'],\n loading = false,\n tabs,\n activeTab,\n onTabChange,\n onRefresh,\n}: PageHeaderProps) {\n return (\n <div className=\"flex items-end justify-between\">\n <div className=\"flex items-center gap-3\">\n {Icon && (\n <div className=\"bg-primary/10 rounded-lg flex-shrink-0 p-2\">\n <Icon className={`w-6 h-6 text-primary ${loading ? 'animate-pulse' : ''}`} />\n </div>\n )}\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <h1 className=\"text-lg font-semibold whitespace-nowrap\">{title}</h1>\n {badge && (\n <Badge variant={badge.variant || 'secondary'} className=\"whitespace-nowrap\">\n {badge.label}\n </Badge>\n )}\n </div>\n {subtitle && <p className=\"text-muted-foreground text-xs mt-0.5\">{subtitle}</p>}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {actions}\n\n {tabs && onTabChange && (\n <SelectorBar activeIndex={tabs.findIndex(t => t.value === activeTab)}>\n {tabs.map((t) => (\n <button\n key={t.value}\n onClick={() => onTabChange(t.value)}\n className={`${CTRL_BTN} ${activeTab === t.value ? 'text-white' : 'text-muted-foreground hover:text-foreground'}`}\n >\n <t.icon className=\"w-3.5 h-3.5 shrink-0\" />\n {t.label}\n {(t.badge ?? 0) > 0 && (\n <span className=\"ml-1 bg-red-500 text-white text-[10px] font-bold rounded-full min-w-[18px] h-[18px] flex items-center justify-center px-1\">\n {t.badge}\n </span>\n )}\n </button>\n ))}\n </SelectorBar>\n )}\n\n {viewMode && onViewModeChange && viewModeOptions.length > 1 && (\n <SelectorBar activeIndex={viewModeOptions.indexOf(viewMode)}>\n {viewModeOptions.map((mode) => {\n const config = VIEW_MODE_CONFIG[mode];\n return (\n <button\n key={mode}\n onClick={() => onViewModeChange(mode)}\n className={`${CTRL_BTN} ${viewMode === mode ? 'text-white' : 'text-muted-foreground hover:text-foreground'}`}\n >\n <config.icon className=\"w-3.5 h-3.5\" />\n {config.label}\n </button>\n );\n })}\n </SelectorBar>\n )}\n\n {onRefresh && (\n <Button variant=\"outline\" size=\"sm\" onClick={onRefresh} disabled={loading} className=\"gap-1.5 text-xs font-semibold\">\n <RefreshCw className={`w-3.5 h-3.5 ${loading ? 'animate-spin' : ''}`} /> Atualizar\n </Button>\n )}\n </div>\n </div>\n );\n}\n","import * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('rounded-lg border bg-card text-card-foreground shadow-sm', className)}\n {...props}\n />\n )\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n )\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn('text-2xl font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />\n )\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n )\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import { LucideIcon, Loader2 } from 'lucide-react';\nimport { Card, CardContent } from './ui/card';\nimport { useEffect, useState } from 'react';\n\nexport type AccentColor = 'blue' | 'purple' | 'green' | 'amber' | 'teal' | 'rose';\nexport const STAT_ACCENT_SEQUENCE: AccentColor[] = ['blue', 'green', 'amber', 'purple', 'teal', 'rose'];\n\nexport interface StatCardProps {\n icon?: LucideIcon;\n title?: string;\n label?: string;\n value: string | number;\n subtitle?: string;\n sublabel?: string;\n gradient?: string;\n accentColor?: AccentColor;\n color?: string;\n onClick?: () => void;\n variant?: 'default' | 'slim';\n loading?: boolean;\n active?: boolean;\n}\n\nconst accentLight: Record<string, { border: string; icon: string; text: string }> = {\n blue: { border: 'border-l-blue-400', icon: 'bg-blue-100 text-blue-600', text: 'text-blue-600' },\n purple: { border: 'border-l-purple-400', icon: 'bg-purple-100 text-purple-600', text: 'text-purple-600' },\n green: { border: 'border-l-emerald-400', icon: 'bg-emerald-100 text-emerald-600', text: 'text-emerald-600' },\n amber: { border: 'border-l-amber-400', icon: 'bg-amber-100 text-amber-600', text: 'text-amber-600' },\n teal: { border: 'border-l-teal-400', icon: 'bg-teal-100 text-teal-600', text: 'text-teal-600' },\n rose: { border: 'border-l-rose-400', icon: 'bg-rose-100 text-rose-600', text: 'text-rose-600' },\n};\n\nconst accentDark: Record<string, { gradient: string; icon: string }> = {\n blue: { gradient: 'bg-gradient-to-br from-blue-950 to-blue-900', icon: 'bg-black/20 text-white/70' },\n purple: { gradient: 'bg-gradient-to-br from-purple-950 to-purple-900', icon: 'bg-black/20 text-white/70' },\n green: { gradient: 'bg-gradient-to-br from-green-950 to-green-900', icon: 'bg-black/20 text-white/70' },\n amber: { gradient: 'bg-gradient-to-br from-orange-950 to-orange-900', icon: 'bg-black/20 text-white/70' },\n teal: { gradient: 'bg-gradient-to-br from-emerald-950 to-emerald-900', icon: 'bg-black/20 text-white/70' },\n rose: { gradient: 'bg-gradient-to-br from-red-950 to-red-900', icon: 'bg-black/20 text-white/70' },\n};\n\nexport function StatCard({\n icon: Icon,\n title,\n label,\n value,\n subtitle,\n sublabel,\n gradient,\n accentColor,\n color,\n onClick,\n variant = 'default',\n loading = false,\n active = false,\n}: StatCardProps) {\n const displayLabel = title || label;\n const displaySublabel = subtitle || sublabel;\n const isClickable = !!onClick;\n\n const [isDark, setIsDark] = useState(() =>\n document.documentElement.classList.contains('dark')\n );\n\n useEffect(() => {\n const observer = new MutationObserver(() => {\n setIsDark(document.documentElement.classList.contains('dark'));\n });\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n return () => observer.disconnect();\n }, []);\n\n if (variant === 'slim') {\n return (\n <Card\n className={`border-0 shadow-md transition-all ${isClickable ? 'cursor-pointer hover:shadow-lg' : ''} ${active ? 'ring-2 ring-primary' : ''}`}\n onClick={onClick}\n >\n <CardContent className=\"p-3\">\n <div className=\"text-center\">\n <p className=\"text-[11px] uppercase tracking-wide text-muted-foreground mb-1\">{displayLabel}</p>\n <p className=\"text-base font-bold\">\n {loading ? <Loader2 className=\"w-4 h-4 animate-spin mx-auto\" /> : value}\n </p>\n </div>\n </CardContent>\n </Card>\n );\n }\n\n let cardClass = '';\n let iconClass = '';\n let valueClass = '';\n\n if (accentColor) {\n if (isDark) {\n cardClass = `border-0 ${accentDark[accentColor].gradient}`;\n iconClass = accentDark[accentColor].icon;\n valueClass = 'text-foreground';\n } else {\n cardClass = `border border-border border-l-4 ${accentLight[accentColor].border} bg-card shadow-sm`;\n iconClass = accentLight[accentColor].icon;\n valueClass = accentLight[accentColor].text;\n }\n } else {\n cardClass = `border-0 ${gradient ? `bg-gradient-to-br ${gradient}` : 'shadow-md'}`;\n iconClass = color || (gradient ? 'bg-black/10 dark:bg-white/10' : 'bg-primary/10');\n valueClass = '';\n }\n\n return (\n <Card\n className={`transition-all overflow-hidden ${cardClass} ${\n isClickable ? 'cursor-pointer hover:shadow-md hover:scale-[1.02]' : ''\n } ${active ? 'ring-2 ring-primary shadow-md scale-[1.02]' : ''}`}\n onClick={onClick}\n >\n <CardContent className=\"p-3\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <p className=\"text-[11px] uppercase tracking-wide font-medium text-muted-foreground mb-1\">{displayLabel}</p>\n <div className=\"flex items-baseline gap-2\">\n <h3 className={`text-2xl font-bold leading-none ${valueClass}`}>\n {loading ? <Loader2 className=\"w-5 h-5 animate-spin\" /> : value}\n </h3>\n </div>\n {displaySublabel && <p className=\"text-[11px] text-muted-foreground mt-1\">{displaySublabel}</p>}\n </div>\n {Icon && (\n <div className={`p-1.5 rounded-lg ${iconClass}`}>\n <Icon className=\"w-4 h-4\" />\n </div>\n )}\n </div>\n </CardContent>\n </Card>\n );\n}\n","import { ReactNode } from 'react';\nimport { StatCard, type StatCardProps, STAT_ACCENT_SEQUENCE } from './StatCard';\n\ninterface PageLayoutProps {\n header: ReactNode;\n stats?: StatCardProps[];\n statsCols?: 2 | 3 | 4 | 5 | 6;\n content?: ReactNode;\n viewMode?: 'table' | 'cards' | string;\n tableContent?: ReactNode;\n cardContent?: ReactNode;\n paddingX?: string;\n paddingTop?: string;\n paddingBottom?: string;\n gapHeaderStats?: string;\n gapStatsContent?: string;\n maxWidth?: string;\n extras?: ReactNode;\n fillHeight?: boolean;\n}\n\nconst COLS_CLASS: Record<number, string> = {\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',\n 5: 'grid-cols-1 md:grid-cols-3 lg:grid-cols-5',\n 6: 'grid-cols-1 md:grid-cols-3 lg:grid-cols-6',\n};\n\nfunction resolveStatsCols(count: number, override?: number): string {\n const cols = override ?? Math.min(count, 6);\n return COLS_CLASS[cols] ?? COLS_CLASS[6];\n}\n\nexport function PageLayout({\n header,\n stats,\n statsCols,\n content,\n viewMode,\n tableContent,\n cardContent,\n paddingX = 'px-3',\n paddingTop = 'pt-3',\n paddingBottom = 'pb-[2px]',\n gapHeaderStats = 'mt-4',\n gapStatsContent = 'mt-4',\n maxWidth = 'max-w-[1600px]',\n extras,\n fillHeight = true,\n}: PageLayoutProps) {\n const mainContent = viewMode !== undefined\n ? (viewMode === 'table' ? tableContent : cardContent)\n : content;\n\n return (\n <main className={`gradient-bg ${fillHeight ? 'h-full flex flex-col' : ''} ${paddingX} ${paddingTop} ${paddingBottom}`}>\n <div className={`${maxWidth} mx-auto w-full ${fillHeight ? 'flex flex-col flex-1 min-h-0' : ''}`}>\n\n {header}\n\n {stats && stats.length > 0 && (\n <div className={`grid ${resolveStatsCols(stats.length, statsCols)} gap-3 ${gapHeaderStats}`}>\n {stats.map((stat, i) => {\n const needsDefault = !stat.accentColor && !stat.gradient;\n return (\n <StatCard\n key={stat.title ?? stat.label ?? i}\n {...stat}\n accentColor={needsDefault ? STAT_ACCENT_SEQUENCE[i % STAT_ACCENT_SEQUENCE.length] : stat.accentColor}\n />\n );\n })}\n </div>\n )}\n\n <div className={`${gapStatsContent} ${fillHeight ? 'flex flex-col flex-1 min-h-0' : ''}`}>\n {mainContent}\n </div>\n\n </div>\n {extras}\n </main>\n );\n}\n\nexport default PageLayout;\n","import * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"relative w-full\">\n <table\n ref={ref}\n className={cn('w-full caption-bottom text-sm bg-transparent', className)}\n {...props}\n />\n </div>\n )\n);\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\n '[&_tr]:border-b [&_tr]:border-border [&_tr]:bg-muted/60 dark:[&_tr]:bg-gradient-to-b dark:[&_tr]:from-slate-700 dark:[&_tr]:to-slate-800 dark:[&_tr]:border-cyan-400/60 dark:[&_tr]:border-b-2',\n className\n )}\n {...props}\n />\n )\n);\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0 bg-transparent', className)} {...props} />\n )\n);\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', className)}\n {...props}\n />\n )\n);\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b border-border/60 transition-colors hover:bg-muted/40 data-[state=selected]:bg-muted/30 text-foreground even:bg-muted/20',\n className\n )}\n {...props}\n />\n )\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\n ({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-9 px-4 text-left align-middle font-medium text-muted-foreground dark:text-slate-300 uppercase text-[10px] tracking-wide border-r border-border/50 dark:border-slate-600/70 last:border-r-0 [&:has([role=checkbox])]:pr-0',\n className\n )}\n {...props}\n />\n )\n);\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n ({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn('px-4 py-1.5 align-middle [&:has([role=checkbox])]:pr-0 text-foreground/90 text-xs', className)}\n {...props}\n />\n )\n);\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\n ({ className, ...props }, ref) => (\n <caption ref={ref} className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />\n )\n);\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { cn } from '../../lib/utils';\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 h-4 w-4 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 className={cn('flex items-center justify-center text-current')}>\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import { useState, useEffect, useCallback, useMemo, useRef } from 'react';\nimport { Card, CardContent } from './ui/card';\nimport { Badge } from './ui/badge';\nimport { Button } from './ui/button';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Filter, XCircle, ChevronDown, ChevronRight, Activity, Save, Download, Upload, History, Bookmark } from 'lucide-react';\n\nexport interface FilterOption {\n value: string;\n label: string;\n emoji?: string;\n color: {\n bg: string;\n text: string;\n border: string;\n darkBg: string;\n darkText: string;\n darkBorder: string;\n };\n}\n\nexport interface FilterGroup {\n key: string;\n label: string;\n options: FilterOption[];\n selectedValues: string[];\n onChange: (values: string[]) => void;\n renderType?: 'badges' | 'select';\n allLabel?: string;\n allColor?: {\n bg: string;\n text: string;\n border: string;\n darkBg: string;\n darkText: string;\n darkBorder: string;\n };\n}\n\nexport interface FilterPreset {\n id: string;\n name: string;\n filters: Record<string, string[]>;\n searchValue?: string;\n createdAt: Date;\n}\n\ninterface SmartFilterPanelProps {\n filterGroups: FilterGroup[];\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n searchPlaceholder?: string;\n resultsCount?: number;\n onClearAll?: () => void;\n defaultExpanded?: boolean;\n persistKey?: string;\n enablePresets?: boolean;\n enableUrlSync?: boolean;\n enableHistory?: boolean;\n maxHistoryItems?: number;\n onFiltersChange?: (filters: Record<string, string[]>) => void;\n}\n\nconst SmartFilterPanel = ({\n filterGroups,\n searchValue = '',\n onSearchChange,\n searchPlaceholder = 'Buscar...',\n resultsCount,\n onClearAll,\n defaultExpanded = false,\n persistKey,\n enablePresets = false,\n enableUrlSync = false,\n enableHistory = false,\n maxHistoryItems = 10,\n onFiltersChange,\n}: SmartFilterPanelProps) => {\n const [showFilters, setShowFilters] = useState(() => {\n if (!persistKey) return defaultExpanded;\n const saved = localStorage.getItem(`showFilters_${persistKey}`);\n return saved !== null ? saved === 'true' : defaultExpanded;\n });\n const [presets, setPresets] = useState<FilterPreset[]>([]);\n const [showPresets, setShowPresets] = useState(false);\n const [history, setHistory] = useState<FilterPreset[]>([]);\n const [showHistory, setShowHistory] = useState(false);\n const [showSavePresetModal, setShowSavePresetModal] = useState(false);\n const [presetName, setPresetName] = useState('');\n const [localSearch, setLocalSearch] = useState(searchValue);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (searchValue === '') setLocalSearch('');\n }, [searchValue]);\n\n const activeFiltersCount = useMemo(\n () => filterGroups.filter(g => g.selectedValues.length > 0).length + (searchValue ? 1 : 0),\n [filterGroups, searchValue]\n );\n\n const hasActiveFilters = activeFiltersCount > 0;\n\n const currentFiltersState = useMemo(\n () => filterGroups.reduce((acc, group) => { acc[group.key] = group.selectedValues; return acc; }, {} as Record<string, string[]>),\n [filterGroups]\n );\n\n useEffect(() => {\n if (!persistKey) return;\n const saved = localStorage.getItem(`filters_${persistKey}`);\n if (saved) {\n try {\n const parsed = JSON.parse(saved);\n Object.entries(parsed).forEach(([key, values]) => {\n const group = filterGroups.find(g => g.key === key);\n if (group) group.onChange(values as string[]);\n });\n } catch (e) { console.error('Erro ao carregar filtros:', e); }\n }\n if (enablePresets) {\n const savedPresets = localStorage.getItem(`presets_${persistKey}`);\n if (savedPresets) { try { setPresets(JSON.parse(savedPresets)); } catch (e) { console.error(e); } }\n }\n if (enableHistory) {\n const savedHistory = localStorage.getItem(`history_${persistKey}`);\n if (savedHistory) { try { setHistory(JSON.parse(savedHistory)); } catch (e) { console.error(e); } }\n }\n }, [persistKey]);\n\n useEffect(() => {\n if (!persistKey) return;\n localStorage.setItem(`filters_${persistKey}`, JSON.stringify(currentFiltersState));\n onFiltersChange?.(currentFiltersState);\n }, [currentFiltersState, persistKey, onFiltersChange]);\n\n useEffect(() => {\n if (!enableUrlSync) return;\n const params = new URLSearchParams(window.location.search);\n Object.entries(currentFiltersState).forEach(([key, values]) => {\n if (values.length > 0) params.set(key, values.join(','));\n else params.delete(key);\n });\n if (searchValue) params.set('search', searchValue);\n else params.delete('search');\n window.history.replaceState({}, '', `${window.location.pathname}?${params.toString()}`);\n }, [currentFiltersState, searchValue, enableUrlSync]);\n\n const handleClearAll = useCallback(() => {\n filterGroups.forEach(group => group.onChange([]));\n onSearchChange?.('');\n onClearAll?.();\n }, [filterGroups, onSearchChange, onClearAll]);\n\n const toggleOption = useCallback((group: FilterGroup, value: string) => {\n if (group.selectedValues.includes(value)) group.onChange(group.selectedValues.filter(v => v !== value));\n else group.onChange([...group.selectedValues, value]);\n }, []);\n\n const toggleAll = useCallback((group: FilterGroup) => {\n const allValues = group.options.map(o => o.value);\n if (group.selectedValues.length === allValues.length) group.onChange([]);\n else group.onChange(allValues);\n }, []);\n\n const confirmSavePreset = useCallback(() => {\n if (!presetName.trim()) return;\n const newPreset: FilterPreset = { id: Date.now().toString(), name: presetName.trim(), filters: currentFiltersState, searchValue, createdAt: new Date() };\n const updated = [...presets, newPreset];\n setPresets(updated);\n if (persistKey) localStorage.setItem(`presets_${persistKey}`, JSON.stringify(updated));\n setPresetName('');\n setShowSavePresetModal(false);\n }, [presets, currentFiltersState, searchValue, persistKey, presetName]);\n\n const loadPreset = useCallback((preset: FilterPreset) => {\n Object.entries(preset.filters).forEach(([key, values]) => {\n const group = filterGroups.find(g => g.key === key);\n if (group) group.onChange(values);\n });\n if (preset.searchValue) onSearchChange?.(preset.searchValue);\n setShowPresets(false);\n setShowHistory(false);\n }, [filterGroups, onSearchChange]);\n\n const deletePreset = useCallback((id: string) => {\n const updated = presets.filter(p => p.id !== id);\n setPresets(updated);\n if (persistKey) localStorage.setItem(`presets_${persistKey}`, JSON.stringify(updated));\n }, [presets, persistKey]);\n\n const addToHistory = useCallback(() => {\n if (!enableHistory || !hasActiveFilters) return;\n const newEntry: FilterPreset = { id: Date.now().toString(), name: `Filtro ${new Date().toLocaleString()}`, filters: currentFiltersState, searchValue, createdAt: new Date() };\n const updated = [newEntry, ...history].slice(0, maxHistoryItems);\n setHistory(updated);\n if (persistKey) localStorage.setItem(`history_${persistKey}`, JSON.stringify(updated));\n }, [enableHistory, hasActiveFilters, currentFiltersState, searchValue, history, maxHistoryItems, persistKey]);\n\n useEffect(() => {\n if (hasActiveFilters) {\n const timer = setTimeout(addToHistory, 2000);\n return () => clearTimeout(timer);\n }\n }, [hasActiveFilters, addToHistory]);\n\n const exportFilters = useCallback(() => {\n const data = { filters: currentFiltersState, searchValue, exportedAt: new Date().toISOString() };\n const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `filters_${persistKey || 'export'}_${Date.now()}.json`;\n a.click();\n URL.revokeObjectURL(url);\n }, [currentFiltersState, searchValue, persistKey]);\n\n const importFilters = useCallback(() => {\n const input = document.createElement('input');\n input.type = 'file';\n input.accept = 'application/json';\n input.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (!file) return;\n const reader = new FileReader();\n reader.onload = (e) => {\n try {\n const data = JSON.parse(e.target?.result as string);\n Object.entries(data.filters).forEach(([key, values]) => {\n const group = filterGroups.find(g => g.key === key);\n if (group) group.onChange(values as string[]);\n });\n if (data.searchValue) onSearchChange?.(data.searchValue);\n } catch { alert('Erro ao importar filtros'); }\n };\n reader.readAsText(file);\n };\n input.click();\n }, [filterGroups, onSearchChange]);\n\n const defaultAllColor = { bg: 'bg-slate-100', text: 'text-slate-800', border: 'border-slate-300', darkBg: 'dark:bg-slate-900/30', darkText: 'dark:text-slate-300', darkBorder: 'dark:border-slate-800' };\n\n return (\n <>\n <Card className=\"border-border/30 shadow-xl\">\n <CardContent className={`transition-all ${showFilters ? 'p-3' : 'p-2.5'}`}>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div className=\"p-1 bg-primary/10 rounded\">\n <Filter className=\"w-3 h-3 text-primary\" />\n </div>\n <h3 className=\"text-sm font-medium\">Filtros</h3>\n {hasActiveFilters && (\n <Badge variant=\"secondary\" className=\"bg-primary/10 text-primary border-primary/20\">\n {activeFiltersCount} ativo{activeFiltersCount > 1 ? 's' : ''}\n </Badge>\n )}\n </div>\n <div className=\"flex items-center gap-2\">\n {enablePresets && <Button variant=\"ghost\" size=\"sm\" onClick={() => setShowPresets(!showPresets)} title=\"Presets\" disabled={!showFilters}><Bookmark className=\"w-4 h-4\" /></Button>}\n {enableHistory && <Button variant=\"ghost\" size=\"sm\" onClick={() => setShowHistory(!showHistory)} title=\"Histórico\" disabled={!showFilters}><History className=\"w-4 h-4\" /></Button>}\n {persistKey && (\n <>\n <Button variant=\"ghost\" size=\"sm\" onClick={exportFilters} title=\"Exportar\" disabled={!showFilters}><Download className=\"w-4 h-4\" /></Button>\n <Button variant=\"ghost\" size=\"sm\" onClick={importFilters} title=\"Importar\" disabled={!showFilters}><Upload className=\"w-4 h-4\" /></Button>\n </>\n )}\n {enablePresets && hasActiveFilters && <Button variant=\"ghost\" size=\"sm\" onClick={() => setShowSavePresetModal(true)} title=\"Salvar Preset\" disabled={!showFilters}><Save className=\"w-4 h-4\" /></Button>}\n {hasActiveFilters && <Button variant=\"outline\" size=\"sm\" onClick={handleClearAll}><XCircle className=\"w-4 h-4 mr-2\" />Limpar</Button>}\n <Button variant=\"outline\" size=\"sm\" onClick={() => {\n const next = !showFilters;\n setShowFilters(next);\n if (persistKey) localStorage.setItem(`showFilters_${persistKey}`, String(next));\n }}>\n {showFilters ? <ChevronDown className=\"w-4 h-4\" /> : <ChevronRight className=\"w-4 h-4\" />}\n </Button>\n </div>\n </div>\n\n <AnimatePresence>\n {showPresets && presets.length > 0 && (\n <motion.div initial={{ height: 0, opacity: 0 }} animate={{ height: 'auto', opacity: 1 }} exit={{ height: 0, opacity: 0 }} className=\"mt-3 p-3 bg-muted/30 rounded-lg border\">\n <div className=\"text-xs font-semibold mb-2\">Presets Salvos</div>\n <div className=\"flex flex-wrap gap-2\">\n {presets.map(preset => (\n <div key={preset.id} className=\"flex items-center gap-1 px-2 py-1 bg-background rounded border\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => loadPreset(preset)} className=\"h-6 px-2\">{preset.name}</Button>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => deletePreset(preset.id)} className=\"h-6 w-6 p-0\"><XCircle className=\"w-3 h-3\" /></Button>\n </div>\n ))}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <AnimatePresence>\n {showHistory && history.length > 0 && (\n <motion.div initial={{ height: 0, opacity: 0 }} animate={{ height: 'auto', opacity: 1 }} exit={{ height: 0, opacity: 0 }} className=\"mt-3 p-3 bg-muted/30 rounded-lg border\">\n <div className=\"text-xs font-semibold mb-2\">Histórico Recente</div>\n <div className=\"space-y-1\">\n {history.map(entry => (\n <Button key={entry.id} variant=\"ghost\" size=\"sm\" onClick={() => loadPreset(entry)} className=\"w-full justify-start h-8 text-xs\">\n <History className=\"w-3 h-3 mr-2\" />{entry.name}\n </Button>\n ))}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <AnimatePresence>\n {showFilters && (\n <motion.div initial={{ height: 0, opacity: 0 }} animate={{ height: 'auto', opacity: 1 }} exit={{ height: 0, opacity: 0 }} transition={{ duration: 0.3 }} style={{ overflow: 'visible' }}>\n <div className=\"space-y-3 mt-3\">\n {onSearchChange && (\n <div className=\"relative\">\n <span className=\"absolute left-2.5 top-1/2 -translate-y-1/2 text-muted-foreground text-xs pointer-events-none\">🔍</span>\n <input\n type=\"text\"\n placeholder={searchPlaceholder}\n value={localSearch}\n onChange={(e) => {\n const val = e.target.value;\n setLocalSearch(val);\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => onSearchChange(val), 900);\n }}\n className=\"w-full pl-8 pr-3 h-8 text-xs py-1.5 border border-input rounded-md bg-slate-900/50 dark:bg-slate-950/50 text-foreground focus:outline-none focus:border-primary/50\"\n />\n </div>\n )}\n\n {filterGroups.map((group) => {\n const allValues = group.options.map(o => o.value);\n const allSelected = group.selectedValues.length === allValues.length;\n const allColor = group.allColor || defaultAllColor;\n\n if (group.renderType === 'select') {\n return (\n <div key={group.key} className=\"space-y-1\">\n <label className=\"text-xs font-medium\">{group.label}</label>\n <select\n value={group.selectedValues[0] || ''}\n onChange={(e) => group.onChange(e.target.value ? [e.target.value] : [])}\n className=\"w-full px-3 py-2 text-sm border border-input rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-ring\"\n >\n {group.options.map((option) => (\n <option key={option.value} value={option.value}>{option.label}</option>\n ))}\n </select>\n </div>\n );\n }\n\n return (\n <div key={group.key} className=\"space-y-1\">\n <label className=\"text-xs font-medium\">{group.label}</label>\n <div className=\"flex flex-wrap gap-2\">\n {group.allLabel && (\n <Button variant=\"outline\" size=\"sm\" onClick={() => toggleAll(group)}\n className={`rounded-full ${allColor.bg} ${allColor.text} ${allColor.darkBg} ${allColor.darkText} ${allSelected ? `${allColor.border} ${allColor.darkBorder}` : 'border-transparent'}`}>\n {group.allLabel} {allSelected && '✓'}\n </Button>\n )}\n {group.options.map((option) => {\n const isSelected = group.selectedValues.includes(option.value);\n return (\n <Button key={option.value} variant=\"outline\" size=\"sm\" onClick={() => toggleOption(group, option.value)}\n className={`rounded-full ${option.color.bg} ${option.color.text} ${option.color.darkBg} ${option.color.darkText} ${isSelected ? `${option.color.border} ${option.color.darkBorder}` : 'border-transparent'}`}>\n {option.emoji && `${option.emoji} `}{option.label}\n </Button>\n );\n })}\n </div>\n </div>\n );\n })}\n\n {resultsCount !== undefined && (\n <div className=\"pt-2 border-t\">\n <Badge className=\"px-3 py-1.5 bg-primary/10 text-primary border-primary/20\">\n <Activity className=\"w-3.5 h-3.5 mr-1.5\" />\n {resultsCount} resultado{resultsCount !== 1 ? 's' : ''}\n </Badge>\n </div>\n )}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </CardContent>\n </Card>\n\n <AnimatePresence>\n {showSavePresetModal && (\n <motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} exit={{ opacity: 0 }} className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-[9999]\" onClick={() => setShowSavePresetModal(false)}>\n <motion.div initial={{ scale: 0.9, opacity: 0 }} animate={{ scale: 1, opacity: 1 }} exit={{ scale: 0.9, opacity: 0 }} onClick={(e) => e.stopPropagation()} className=\"bg-background border rounded-lg p-6 w-96 shadow-2xl\">\n <h3 className=\"text-lg font-bold mb-4\">Salvar Preset</h3>\n <input\n type=\"text\"\n placeholder=\"Nome do preset\"\n value={presetName}\n onChange={(e) => setPresetName(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && confirmSavePreset()}\n className=\"w-full px-3 py-2 border border-input rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-ring mb-4\"\n autoFocus\n />\n <div className=\"flex gap-2 justify-end\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => { setShowSavePresetModal(false); setPresetName(''); }}>Cancelar</Button>\n <Button size=\"sm\" onClick={confirmSavePreset} disabled={!presetName.trim()}>Salvar</Button>\n </div>\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n </>\n );\n};\n\nexport default SmartFilterPanel;\n","import React, { useState, type ReactNode } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Card, CardContent, CardHeader, CardTitle } from './ui/card';\nimport { Button } from './ui/button';\nimport { Input } from './ui/input';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './ui/table';\nimport { Badge } from './ui/badge';\nimport { Checkbox } from './ui/checkbox';\nimport { type LucideIcon, Download, RefreshCw, X, Trash2 } from 'lucide-react';\nimport SmartFilterPanel, { type FilterGroup } from './SmartFilterPanel';\nimport { StatCard, type StatCardProps } from './StatCard';\nimport { PageHeader } from './PageHeader';\n\nexport interface DataTableColumn<T> {\n key: keyof T | string;\n label: string;\n width?: string;\n render?: (item: T, index: number) => ReactNode;\n sortable?: boolean;\n}\n\nexport interface DataTableAction<T> {\n label: string | ((item: T) => string);\n icon: LucideIcon;\n onClick: (item: T) => void;\n variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';\n className?: string | ((item: T) => string);\n condition?: (item: T) => boolean;\n}\n\nexport interface DataTableFilter {\n key: string;\n label: string;\n type: 'select' | 'multiselect' | 'text' | 'date';\n options?: { value: string; label: string; color?: string }[];\n value?: any;\n onChange: (value: any) => void;\n}\n\ninterface DataTableProps<T> {\n data?: T[];\n columns: DataTableColumn<T>[];\n title?: string;\n subtitle?: string;\n icon?: LucideIcon;\n loading?: boolean;\n hideHeader?: boolean;\n total?: number;\n page?: number;\n pageSize?: number;\n onPageChange?: (page: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n search?: string;\n onSearchChange?: (search: string) => void;\n filters?: DataTableFilter[];\n actions?: DataTableAction<T>[];\n selectable?: boolean;\n selectedItems?: any[];\n onSelectionChange?: (items: any[]) => void;\n onBulkDelete?: (ids: any[]) => void;\n bulkDeleteLabel?: string;\n onRefresh?: () => void;\n onExport?: () => void;\n emptyMessage?: string;\n emptyIcon?: LucideIcon;\n stats?: StatCardProps[];\n enablePagination?: boolean;\n customActions?: ReactNode;\n sortBy?: string;\n sortOrder?: 'asc' | 'desc';\n onSort?: (key: string) => void;\n searchDebounce?: boolean;\n tableBodyHeight?: string;\n fillHeight?: boolean;\n onRowClick?: (item: T) => void;\n renderDrawer?: (item: T, onClose: () => void) => ReactNode;\n}\n\nfunction DataTable<T extends { id: number | string }>({\n data = [],\n columns,\n title,\n subtitle,\n icon: Icon,\n loading = false,\n total = 0,\n page = 1,\n pageSize = 25,\n onPageChange,\n onPageSizeChange,\n search = '',\n onSearchChange,\n filters = [],\n actions = [],\n selectable = false,\n selectedItems = [],\n onSelectionChange,\n onBulkDelete,\n bulkDeleteLabel = 'Excluir selecionados',\n onRefresh,\n onExport,\n emptyMessage = 'Nenhum registro encontrado',\n emptyIcon: EmptyIcon,\n stats = [],\n enablePagination = true,\n customActions,\n sortBy,\n sortOrder,\n onSort,\n hideHeader = false,\n searchDebounce = true,\n tableBodyHeight,\n fillHeight = true,\n onRowClick,\n renderDrawer,\n}: DataTableProps<T>) {\n const [drawerItem, setDrawerItem] = useState<T | null>(null);\n const [showBulkDeleteConfirm, setShowBulkDeleteConfirm] = useState(false);\n const [isRefreshing, setIsRefreshing] = useState(false);\n const [searchInput, setSearchInput] = useState(search);\n\n const handleRowClick = (item: T) => {\n if (renderDrawer) { setDrawerItem(item); return; }\n onRowClick?.(item);\n };\n\n React.useEffect(() => { setSearchInput(search); }, [search]);\n\n React.useEffect(() => {\n if (!searchDebounce) return;\n const timer = setTimeout(() => {\n if (onSearchChange && searchInput !== search) onSearchChange(searchInput);\n }, 600);\n return () => clearTimeout(timer);\n }, [searchInput, searchDebounce]);\n\n const handleSearchChange = (value: string) => {\n if (searchDebounce) setSearchInput(value);\n else onSearchChange?.(value);\n };\n\n const toggleSelectAll = () => {\n const currentPageIds = data.map(item => item.id);\n const allCurrentSelected = currentPageIds.every(id => selectedItems.includes(id));\n if (allCurrentSelected) onSelectionChange?.(selectedItems.filter(id => !currentPageIds.includes(id)));\n else onSelectionChange?.([...new Set([...selectedItems, ...currentPageIds])]);\n };\n\n const toggleSelectItem = (itemId: any) => {\n if (selectedItems.includes(itemId)) onSelectionChange?.(selectedItems.filter(id => id !== itemId));\n else onSelectionChange?.([...selectedItems, itemId]);\n };\n\n if (loading) {\n return (\n <div className=\"min-h-96 flex items-center justify-center\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-16 w-16 border-b-2 border-primary mx-auto mb-4\"></div>\n <p className=\"text-muted-foreground\">Carregando dados...</p>\n </div>\n </div>\n );\n }\n\n const handleBulkDelete = () => {\n if (onBulkDelete && selectedItems.length > 0) {\n onBulkDelete(selectedItems);\n setShowBulkDeleteConfirm(false);\n }\n };\n\n return (\n <div className={fillHeight ? 'flex flex-col h-full gap-4' : 'space-y-4'}>\n <AnimatePresence>\n {selectable && selectedItems.length > 0 && (\n <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} exit={{ opacity: 0, y: 20 }} className=\"fixed bottom-6 left-1/2 -translate-x-1/2 z-50\">\n <div className=\"bg-gradient-to-r from-slate-900 to-slate-800 dark:from-slate-800 dark:to-slate-900 text-white rounded-full shadow-2xl px-6 py-4 flex items-center gap-4 border border-slate-700\">\n <div className=\"flex items-center gap-2\">\n <div className=\"w-8 h-8 bg-primary/20 rounded-full flex items-center justify-center\">\n <span className=\"text-sm font-bold text-primary\">{selectedItems.length}</span>\n </div>\n <span className=\"text-sm font-medium\">{selectedItems.length === 1 ? '1 item selecionado' : `${selectedItems.length} itens selecionados`}</span>\n </div>\n <div className=\"h-6 w-px bg-slate-600\" />\n {onBulkDelete && (\n <Button onClick={() => setShowBulkDeleteConfirm(true)} variant=\"ghost\" size=\"sm\" className=\"text-red-400 hover:text-red-300 hover:bg-red-500/10 gap-2\">\n <Trash2 className=\"w-4 h-4\" />{bulkDeleteLabel}\n </Button>\n )}\n <Button onClick={() => onSelectionChange?.([])} variant=\"ghost\" size=\"sm\" className=\"text-slate-400 hover:text-slate-300 hover:bg-slate-700 gap-2\">\n <X className=\"w-4 h-4\" />Cancelar\n </Button>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <AnimatePresence>\n {showBulkDeleteConfirm && (\n <motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} exit={{ opacity: 0 }} className=\"fixed inset-0 bg-black/50 backdrop-blur-sm z-50 flex items-center justify-center p-4\" onClick={() => setShowBulkDeleteConfirm(false)}>\n <motion.div initial={{ scale: 0.95, opacity: 0 }} animate={{ scale: 1, opacity: 1 }} exit={{ scale: 0.95, opacity: 0 }} onClick={(e) => e.stopPropagation()} className=\"bg-background rounded-lg shadow-xl max-w-md w-full p-6 space-y-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-12 h-12 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center\">\n <Trash2 className=\"w-6 h-6 text-red-600 dark:text-red-400\" />\n </div>\n <div>\n <h3 className=\"text-lg font-semibold\">Confirmar Exclusão</h3>\n <p className=\"text-sm text-muted-foreground\">Tem certeza que deseja excluir {selectedItems.length} {selectedItems.length === 1 ? 'item' : 'itens'}?</p>\n </div>\n </div>\n <p className=\"text-sm text-muted-foreground\">Esta ação não pode ser desfeita.</p>\n <div className=\"flex gap-3 justify-end\">\n <Button variant=\"outline\" onClick={() => setShowBulkDeleteConfirm(false)}>Cancelar</Button>\n <Button variant=\"destructive\" onClick={handleBulkDelete} className=\"bg-red-600 hover:bg-red-700\">\n <Trash2 className=\"w-4 h-4 mr-2\" />Excluir {selectedItems.length} {selectedItems.length === 1 ? 'item' : 'itens'}\n </Button>\n </div>\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n\n {!hideHeader && title && (\n <PageHeader\n title={title}\n subtitle={subtitle}\n icon={Icon}\n actions={\n <>\n {onRefresh && (\n <Button size=\"sm\" onClick={() => { setIsRefreshing(true); onRefresh(); setTimeout(() => setIsRefreshing(false), 500); }}>\n <RefreshCw className={`w-4 h-4 mr-2 transition-transform ${isRefreshing ? 'animate-[spin_0.5s_ease-in-out]' : ''}`} />Atualizar\n </Button>\n )}\n {onExport && (\n <Button variant=\"outline\" size=\"sm\" onClick={onExport}>\n <Download className=\"w-4 h-4 mr-2\" />Exportar\n </Button>\n )}\n </>\n }\n />\n )}\n\n {stats && stats.length > 0 && (\n <div className={`grid grid-cols-2 md:grid-cols-3 lg:grid-cols-${Math.min(stats.length, 6)} gap-4`}>\n {stats.map((stat, index) => <StatCard key={stat.label || index} {...stat} variant={stat.variant || 'slim'} />)}\n </div>\n )}\n\n {(onSearchChange || filters.length > 0) && (\n <SmartFilterPanel\n filterGroups={filters.map(f => ({\n key: f.key,\n label: f.label,\n renderType: f.type === 'select' ? 'select' : 'badges',\n options: f.options?.map(opt => {\n const colorClasses = opt.color?.split(' ') || [];\n const bgClass = colorClasses.find(c => c.startsWith('bg-')) || 'bg-slate-100';\n const textClass = colorClasses.find(c => c.startsWith('text-')) || 'text-slate-800';\n const borderClass = colorClasses.find(c => c.startsWith('border-') && !c.includes('dark:')) || 'border-slate-300';\n const darkBgClass = colorClasses.find(c => c.startsWith('dark:bg-')) || 'dark:bg-slate-900/30';\n const darkTextClass = colorClasses.find(c => c.startsWith('dark:text-')) || 'dark:text-slate-300';\n const darkBorderClass = colorClasses.find(c => c.startsWith('dark:border-')) || 'dark:border-slate-800';\n return { value: opt.value, label: opt.label, color: { bg: bgClass, text: textClass, border: borderClass, darkBg: darkBgClass, darkText: darkTextClass, darkBorder: darkBorderClass } };\n }) || [],\n selectedValues: Array.isArray(f.value) ? f.value : (f.value ? [f.value] : []),\n onChange: (values) => f.onChange(f.type === 'select' ? values[0] || '' : values),\n allLabel: f.type === 'multiselect' ? 'Todos' : undefined,\n }))}\n searchValue={searchDebounce ? searchInput : search}\n onSearchChange={handleSearchChange}\n searchPlaceholder=\"Buscar...\"\n persistKey={title ? title.toLowerCase().replace(/\\s+/g, '-') : 'datatable'}\n />\n )}\n\n <Card className={`shadow-lg ${fillHeight ? 'flex flex-col flex-1 min-h-0' : ''}`}>\n {(title || customActions || (selectable && selectedItems.length > 0)) && (\n <CardHeader className={`py-2 px-4 ${fillHeight ? 'shrink-0' : ''}`}>\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"flex items-center gap-2 text-sm font-semibold\">\n {Icon && <Icon className=\"w-3.5 h-3.5\" />}\n {title}\n <Badge variant=\"secondary\" className=\"bg-primary/10 text-primary border-primary/20 text-[11px]\">{total || data.length}</Badge>\n </CardTitle>\n <div className=\"flex items-center gap-3\">\n {customActions}\n {selectable && selectedItems.length > 0 && (\n <Badge variant=\"outline\" className=\"bg-blue-50 text-blue-700 border-blue-200 text-[11px]\">\n {selectedItems.length} selecionado{selectedItems.length > 1 ? 's' : ''}\n </Badge>\n )}\n </div>\n </div>\n </CardHeader>\n )}\n <CardContent className={`p-0 overflow-hidden ${fillHeight ? 'flex flex-col flex-1 min-h-0' : ''}`}>\n <div className={`overflow-x-auto ${fillHeight ? 'flex-1 min-h-0 overflow-y-auto' : ''}`}>\n <div className=\"w-full\" style={tableBodyHeight ? { height: tableBodyHeight, overflowY: 'auto' } : {}}>\n <Table className=\"w-full\">\n <TableHeader className=\"sticky top-0 z-10\">\n <TableRow className=\"bg-muted/50\">\n {selectable && (\n <TableHead className=\"w-12\">\n <Checkbox checked={data?.length > 0 && data.every(item => selectedItems.includes(item.id))} onCheckedChange={toggleSelectAll} />\n </TableHead>\n )}\n {columns.map((column) => (\n <TableHead\n key={String(column.key)}\n className={`${column.width} ${column.sortable && onSort ? 'cursor-pointer hover:bg-muted/70 select-none' : ''}`}\n onClick={() => column.sortable && onSort && onSort(String(column.key))}\n >\n <div className=\"flex items-center gap-2\">\n {column.label}\n {column.sortable && onSort && sortBy === String(column.key) && (\n <span className=\"text-xs\">{sortOrder === 'asc' ? '↑' : '↓'}</span>\n )}\n </div>\n </TableHead>\n ))}\n {actions.length > 0 && <TableHead className=\"w-16\">Ações</TableHead>}\n </TableRow>\n </TableHeader>\n <TableBody>\n <AnimatePresence>\n {data?.map((item, index) => (\n <motion.tr\n key={`${item.id}-${index}`}\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -20 }}\n transition={{ delay: index * 0.05 }}\n className={`hover:bg-muted/30 transition-colors ${onRowClick || renderDrawer ? 'cursor-pointer' : ''}`}\n onClick={() => handleRowClick(item)}\n >\n {selectable && (\n <TableCell>\n <Checkbox checked={selectedItems.includes(item.id)} onCheckedChange={() => toggleSelectItem(item.id)} />\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell key={String(column.key)} onClick={column.key === 'actions' ? (e) => e.stopPropagation() : undefined}>\n {column.render ? column.render(item, index) : String((item as any)[column.key] || '')}\n </TableCell>\n ))}\n {actions.length > 0 && (\n <TableCell>\n <div className=\"flex items-center gap-1\">\n {actions.filter(action => !action.condition || action.condition(item)).map((action, actionIndex) => {\n const label = typeof action.label === 'function' ? action.label(item) : action.label;\n const className = typeof action.className === 'function' ? action.className(item) : action.className;\n return (\n <Button key={actionIndex} variant={action.variant || 'ghost'} size=\"sm\" onClick={() => action.onClick(item)} title={label} className={className}>\n <action.icon className=\"w-4 h-4\" />\n </Button>\n );\n })}\n </div>\n </TableCell>\n )}\n </motion.tr>\n ))}\n </AnimatePresence>\n </TableBody>\n </Table>\n </div>\n </div>\n {(!data || data.length === 0) && (\n <div className=\"text-center py-12\">\n {EmptyIcon && <EmptyIcon className=\"w-10 h-10 text-muted-foreground mx-auto mb-3\" />}\n <p className=\"text-sm text-muted-foreground\">{emptyMessage}</p>\n </div>\n )}\n </CardContent>\n\n {enablePagination && total > 0 && onPageChange && (\n <div className=\"flex flex-col sm:flex-row items-center justify-between gap-2 px-4 py-2 border-t bg-muted/20\">\n <div className=\"flex items-center gap-4 text-xs text-muted-foreground\">\n <span>Mostrando {((page - 1) * pageSize) + 1}–{Math.min(page * pageSize, total)} de {total}</span>\n {onPageSizeChange && (\n <div className=\"flex items-center gap-1.5\">\n <span>Por página:</span>\n <select value={pageSize} onChange={(e) => onPageSizeChange(Number(e.target.value))} className=\"px-1.5 py-0.5 border border-border rounded text-xs bg-background\">\n <option value={10}>10</option>\n <option value={25}>25</option>\n <option value={50}>50</option>\n <option value={100}>100</option>\n </select>\n </div>\n )}\n </div>\n <div className=\"flex items-center gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => onPageChange(1)} disabled={page === 1} className=\"hidden sm:flex h-7 text-xs px-2\">Primeira</Button>\n <Button variant=\"outline\" size=\"sm\" onClick={() => onPageChange(page - 1)} disabled={page === 1} className=\"h-7 text-xs px-2\">‹ Anterior</Button>\n <div className=\"flex items-center gap-1\">\n {Array.from({ length: Math.min(5, Math.ceil(total / pageSize)) }, (_, i) => {\n const totalPages = Math.ceil(total / pageSize);\n let pageNum: number;\n if (totalPages <= 5) pageNum = i + 1;\n else if (page <= 3) pageNum = i + 1;\n else if (page >= totalPages - 2) pageNum = totalPages - 4 + i;\n else pageNum = page - 2 + i;\n return (\n <Button key={pageNum} variant={page === pageNum ? 'default' : 'outline'} size=\"sm\" onClick={() => onPageChange(pageNum)} className=\"w-7 h-7 p-0 text-xs\">{pageNum}</Button>\n );\n })}\n </div>\n <Button variant=\"outline\" size=\"sm\" onClick={() => onPageChange(page + 1)} disabled={page >= Math.ceil(total / pageSize)} className=\"h-7 text-xs px-2\">Próxima ›</Button>\n <Button variant=\"outline\" size=\"sm\" onClick={() => onPageChange(Math.ceil(total / pageSize))} disabled={page >= Math.ceil(total / pageSize)} className=\"hidden sm:flex h-7 text-xs px-2\">Última</Button>\n </div>\n </div>\n )}\n </Card>\n {renderDrawer && drawerItem && renderDrawer(drawerItem, () => setDrawerItem(null))}\n </div>\n );\n}\n\nexport default DataTable;\n","import React, { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { CheckCircle, AlertTriangle, X } from 'lucide-react';\n\ninterface ToastProps {\n message?: string;\n type: 'success' | 'error';\n onClose: () => void;\n duration?: number;\n entity?: string;\n action?: 'created' | 'updated' | 'deleted' | 'error';\n}\n\nconst Toast: React.FC<ToastProps> = ({ message, type, onClose, duration = 4000, entity, action }) => {\n const [isVisible, setIsVisible] = useState(false);\n const [progress, setProgress] = useState(100);\n\n const getAutoMessage = () => {\n if (message) return message;\n if (!entity || !action) return 'Operação realizada';\n const messages = {\n created: `${entity} criado com sucesso!`,\n updated: `${entity} atualizado com sucesso!`,\n deleted: `${entity} removido com sucesso!`,\n error: `Erro ao processar ${entity.toLowerCase()}`,\n };\n return messages[action] || 'Operação realizada';\n };\n\n useEffect(() => {\n setIsVisible(true);\n const progressInterval = setInterval(() => {\n setProgress(prev => Math.max(0, prev - (100 / (duration / 100))));\n }, 100);\n const timer = setTimeout(() => {\n setIsVisible(false);\n setTimeout(onClose, 300);\n }, duration);\n return () => { clearTimeout(timer); clearInterval(progressInterval); };\n }, [duration, onClose]);\n\n const handleClose = () => { setIsVisible(false); setTimeout(onClose, 300); };\n\n const config = {\n success: { bg: 'bg-gradient-to-r from-emerald-500 to-green-600', icon: CheckCircle, shadow: 'shadow-emerald-500/25' },\n error: { bg: 'bg-gradient-to-r from-red-500 to-rose-600', icon: AlertTriangle, shadow: 'shadow-red-500/25' },\n };\n\n const { bg, icon: Icon, shadow } = config[type];\n\n return createPortal(\n <div className=\"fixed top-24 right-6 z-[9999]\">\n <div className={`${bg} ${shadow} min-w-80 max-w-md p-4 rounded-2xl shadow-2xl backdrop-blur-sm transform transition-all duration-300 ease-out ${isVisible ? 'translate-x-0 opacity-100 scale-100' : 'translate-x-full opacity-0 scale-95'}`}>\n <div className=\"flex items-start gap-3\">\n <div className=\"flex-shrink-0 mt-0.5\">\n <div className=\"w-6 h-6 bg-white/20 rounded-full flex items-center justify-center\">\n <Icon className=\"w-4 h-4 text-white\" />\n </div>\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-white font-medium text-sm leading-relaxed\">{getAutoMessage()}</p>\n </div>\n <button onClick={handleClose} className=\"flex-shrink-0 text-white/70 hover:text-white transition-colors p-1 hover:bg-white/10 rounded-full\">\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n <div className=\"mt-3 h-1 bg-white/20 rounded-full overflow-hidden\">\n <div className=\"h-full bg-white/40 rounded-full transition-all duration-100 ease-linear\" style={{ width: `${progress}%` }} />\n </div>\n </div>\n </div>,\n document.body\n );\n};\n\nexport default Toast;\n","import { cn } from '../../lib/utils';\nimport React, { useEffect, forwardRef } from 'react';\n\ninterface DialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n children: React.ReactNode;\n}\n\ninterface DialogContentProps {\n className?: string;\n children: React.ReactNode;\n [key: string]: any;\n}\n\ninterface DialogHeaderProps {\n className?: string;\n children: React.ReactNode;\n}\n\ninterface DialogTitleProps {\n className?: string;\n children: React.ReactNode;\n}\n\ninterface DialogDescriptionProps {\n children: React.ReactNode;\n}\n\ninterface DialogFooterProps {\n children: React.ReactNode;\n}\n\ninterface DialogTriggerProps {\n asChild?: boolean;\n children: React.ReactNode;\n onClick?: () => void;\n}\n\nexport function Dialog({ open, onOpenChange, children }: DialogProps) {\n useEffect(() => {\n if (open) {\n const scrollY = window.scrollY;\n document.body.style.position = 'fixed';\n document.body.style.top = `-${scrollY}px`;\n document.body.style.width = '100%';\n document.body.classList.add('modal-open');\n } else {\n const scrollY = document.body.style.top;\n document.body.style.position = '';\n document.body.style.top = '';\n document.body.style.width = '';\n document.body.classList.remove('modal-open');\n if (scrollY) {\n window.scrollTo(0, parseInt(scrollY || '0') * -1);\n }\n }\n return () => {\n document.body.style.position = '';\n document.body.style.top = '';\n document.body.style.width = '';\n document.body.classList.remove('modal-open');\n };\n }, [open]);\n\n if (!open) return null;\n\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget) onOpenChange(false);\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4\" onClick={handleBackdropClick}>\n <div className=\"fixed inset-0 bg-black/60 backdrop-blur-sm transition-all duration-300\" />\n <div className=\"relative z-50 animate-in fade-in-0 zoom-in-95 duration-300\">{children}</div>\n </div>\n );\n}\n\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'bg-card/95 backdrop-blur-none border border-border/50 rounded-2xl shadow-2xl w-full p-0 max-h-[90vh] overflow-y-auto',\n className\n )}\n onClick={(e) => e.stopPropagation()}\n onWheel={(e) => e.stopPropagation()}\n {...props}\n >\n {children}\n </div>\n )\n);\nDialogContent.displayName = 'DialogContent';\n\nexport function DialogHeader({ className, children }: DialogHeaderProps) {\n return (\n <div className={cn('flex flex-col space-y-1.5 p-6 pb-4 border-b border-border/30', className)}>\n {children}\n </div>\n );\n}\n\nexport function DialogTitle({ className, children }: DialogTitleProps) {\n return (\n <h2 className={cn('text-xl font-semibold text-foreground leading-none tracking-tight', className)}>\n {children}\n </h2>\n );\n}\n\nexport function DialogDescription({ children }: DialogDescriptionProps) {\n return <p className=\"text-sm text-muted-foreground\">{children}</p>;\n}\n\nexport function DialogFooter({ children }: DialogFooterProps) {\n return (\n <div className=\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 p-6 pt-4\">\n {children}\n </div>\n );\n}\n\nexport function DialogTrigger({ asChild, children, onClick }: DialogTriggerProps) {\n if (asChild) {\n const child = children as React.ReactElement<{ onClick?: (e: React.MouseEvent) => void }>;\n return React.cloneElement(child, {\n onClick: (e: React.MouseEvent) => {\n if (child.props.onClick) child.props.onClick(e);\n if (onClick) onClick();\n },\n });\n }\n return <button onClick={onClick}>{children}</button>;\n}\n","import * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-[hsl(var(--input-bg))] px-3 py-2 text-xs text-foreground ring-offset-background file:border-0 file:bg-transparent file:text-xs file:font-medium placeholder:text-muted-foreground/50 focus-visible:outline-none focus-visible:border-primary/60 focus-visible:ring-0 disabled:cursor-not-allowed disabled:opacity-50 transition-colors duration-150',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nInput.displayName = 'Input';\n\nexport { Input };\n","import React, { useState } from 'react';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from './ui/dialog';\nimport { Button } from './ui/button';\nimport { Input } from './ui/input';\nimport { AlertTriangle, Trash2, Edit, Plus, X, Shield, Database } from 'lucide-react';\nimport { motion, AnimatePresence } from 'framer-motion';\n\ninterface ConfirmDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onConfirm: () => void;\n title: string;\n message: string;\n type?: 'delete' | 'edit' | 'create' | 'warning' | 'danger';\n confirmText?: string;\n cancelText?: string;\n loading?: boolean;\n requireConfirmation?: boolean;\n confirmationText?: string;\n details?: string[];\n impact?: string;\n}\n\nconst ConfirmDialog: React.FC<ConfirmDialogProps> = ({\n isOpen,\n onClose,\n onConfirm,\n title,\n message,\n type = 'warning',\n confirmText,\n cancelText = 'Cancelar',\n loading = false,\n requireConfirmation = false,\n confirmationText = 'CONFIRMAR',\n details = [],\n impact,\n}) => {\n const [confirmationInput, setConfirmationInput] = useState('');\n const [showDetails, setShowDetails] = useState(false);\n\n const isConfirmationValid = !requireConfirmation || confirmationInput.toUpperCase() === confirmationText.toUpperCase();\n\n const handleClose = () => { setConfirmationInput(''); setShowDetails(false); onClose(); };\n const handleConfirm = () => { if (isConfirmationValid) { onConfirm(); setConfirmationInput(''); } };\n\n const getConfig = () => {\n switch (type) {\n case 'delete': return { icon: <Trash2 className=\"w-6 h-6 text-red-500\" />, confirmText: confirmText || 'Excluir', confirmVariant: 'destructive' as const, bgColor: 'bg-gradient-to-br from-red-50 to-red-100 dark:from-red-950/30 dark:to-red-900/20', borderColor: 'border-red-200 dark:border-red-800' };\n case 'danger': return { icon: <Shield className=\"w-6 h-6 text-red-600\" />, confirmText: confirmText || 'Executar', confirmVariant: 'destructive' as const, bgColor: 'bg-gradient-to-br from-red-100 to-red-200 dark:from-red-950/50 dark:to-red-900/30', borderColor: 'border-red-300 dark:border-red-700' };\n case 'edit': return { icon: <Edit className=\"w-6 h-6 text-blue-500\" />, confirmText: confirmText || 'Confirmar', confirmVariant: 'default' as const, bgColor: 'bg-gradient-to-br from-blue-50 to-blue-100 dark:from-blue-950/30 dark:to-blue-900/20', borderColor: 'border-blue-200 dark:border-blue-800' };\n case 'create': return { icon: <Plus className=\"w-6 h-6 text-green-500\" />, confirmText: confirmText || 'Criar', confirmVariant: 'default' as const, bgColor: 'bg-gradient-to-br from-green-50 to-green-100 dark:from-green-950/30 dark:to-green-900/20', borderColor: 'border-green-200 dark:border-green-800' };\n default: return { icon: <AlertTriangle className=\"w-6 h-6 text-yellow-500\" />, confirmText: confirmText || 'Confirmar', confirmVariant: 'default' as const, bgColor: 'bg-gradient-to-br from-yellow-50 to-yellow-100 dark:from-yellow-950/30 dark:to-yellow-900/20', borderColor: 'border-yellow-200 dark:border-yellow-800' };\n }\n };\n\n const config = getConfig();\n\n return (\n <AnimatePresence>\n {isOpen && (\n <Dialog open={isOpen} onOpenChange={onClose}>\n <DialogContent className=\"max-w-md mx-auto p-0 overflow-hidden border-0 shadow-2xl\">\n <motion.div initial={{ scale: 0.95, opacity: 0 }} animate={{ scale: 1, opacity: 1 }} exit={{ scale: 0.95, opacity: 0 }} transition={{ duration: 0.2, ease: 'easeOut' }} className=\"relative\">\n <div className={`${config.bgColor} ${config.borderColor} px-6 py-8 text-center relative overflow-hidden`}>\n <div className=\"absolute inset-0 bg-gradient-to-br from-white/20 to-transparent\"></div>\n <div className=\"relative z-10\">\n <motion.div initial={{ scale: 0 }} animate={{ scale: 1 }} transition={{ delay: 0.1, type: 'spring', stiffness: 200 }} className=\"w-16 h-16 mx-auto mb-4 rounded-full bg-white/90 backdrop-blur-sm flex items-center justify-center shadow-lg\">\n <div className=\"scale-150\">{config.icon}</div>\n </motion.div>\n <motion.h2 initial={{ y: 10, opacity: 0 }} animate={{ y: 0, opacity: 1 }} transition={{ delay: 0.2 }} className=\"text-xl font-bold text-gray-900 dark:text-white mb-2 drop-shadow-sm\">\n {title}\n </motion.h2>\n </div>\n </div>\n\n <div className=\"px-6 py-6 bg-white dark:bg-gray-900 space-y-4\">\n <motion.div initial={{ y: 10, opacity: 0 }} animate={{ y: 0, opacity: 1 }} transition={{ delay: 0.3 }} className=\"text-center text-gray-700 dark:text-gray-200 leading-relaxed font-medium\">\n {message.split('\\n').map((line, index) => <p key={index} className={index > 0 ? 'mt-2' : ''}>{line}</p>)}\n </motion.div>\n\n {impact && (\n <motion.div initial={{ y: 10, opacity: 0 }} animate={{ y: 0, opacity: 1 }} transition={{ delay: 0.4 }} className=\"bg-orange-50 dark:bg-orange-950/30 border border-orange-200 dark:border-orange-800 rounded-lg p-4\">\n <div className=\"flex items-start gap-2\">\n <AlertTriangle className=\"w-5 h-5 text-orange-500 mt-0.5 flex-shrink-0\" />\n <div>\n <p className=\"font-medium text-orange-800 dark:text-orange-200 mb-1\">Impacto da Operação:</p>\n <p className=\"text-sm text-orange-700 dark:text-orange-300\">{impact}</p>\n </div>\n </div>\n </motion.div>\n )}\n\n {details.length > 0 && (\n <motion.div initial={{ y: 10, opacity: 0 }} animate={{ y: 0, opacity: 1 }} transition={{ delay: 0.5 }} className=\"space-y-2\">\n <button onClick={() => setShowDetails(!showDetails)} className=\"text-sm text-blue-600 dark:text-blue-400 hover:underline flex items-center gap-1\">\n <Database className=\"w-4 h-4\" />{showDetails ? 'Ocultar detalhes' : 'Ver detalhes'}\n </button>\n <AnimatePresence>\n {showDetails && (\n <motion.div initial={{ height: 0, opacity: 0 }} animate={{ height: 'auto', opacity: 1 }} exit={{ height: 0, opacity: 0 }} className=\"bg-gray-50 dark:bg-gray-800 rounded-lg p-3 overflow-hidden\">\n <ul className=\"text-sm text-gray-600 dark:text-gray-300 space-y-1\">\n {details.map((detail, index) => <li key={index} className=\"flex items-start gap-2\"><span className=\"text-gray-400 mt-1\">•</span><span>{detail}</span></li>)}\n </ul>\n </motion.div>\n )}\n </AnimatePresence>\n </motion.div>\n )}\n\n {requireConfirmation && (\n <motion.div initial={{ y: 10, opacity: 0 }} animate={{ y: 0, opacity: 1 }} transition={{ delay: 0.6 }} className=\"space-y-3\">\n <div className=\"bg-red-50 dark:bg-red-950/30 border border-red-200 dark:border-red-800 rounded-lg p-4\">\n <p className=\"text-sm font-medium text-red-800 dark:text-red-200 mb-2\">\n Para confirmar, digite: <code className=\"bg-red-100 dark:bg-red-900 px-2 py-1 rounded text-red-900 dark:text-red-100\">{confirmationText}</code>\n </p>\n <Input value={confirmationInput} onChange={(e) => setConfirmationInput(e.target.value)} placeholder={`Digite \"${confirmationText}\" para confirmar`} className={`${!isConfirmationValid && confirmationInput ? 'border-red-300 focus:border-red-500' : ''}`} disabled={loading} />\n </div>\n </motion.div>\n )}\n </div>\n\n <motion.div initial={{ y: 20, opacity: 0 }} animate={{ y: 0, opacity: 1 }} transition={{ delay: 0.4 }} className=\"px-6 py-4 bg-gray-50 dark:bg-gray-800 flex gap-3 justify-center\">\n <Button variant=\"outline\" onClick={onClose} disabled={loading} className=\"min-w-24\">{cancelText}</Button>\n <Button variant={config.confirmVariant} onClick={handleConfirm} disabled={loading || !isConfirmationValid} className={`min-w-24 shadow-lg ${!isConfirmationValid ? 'opacity-50 cursor-not-allowed' : ''}`}>\n {loading ? <><div className=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin mr-2\" />Processando...</> : config.confirmText}\n </Button>\n </motion.div>\n\n <button onClick={handleClose} disabled={loading} className=\"absolute top-4 right-4 w-8 h-8 rounded-full bg-white/90 backdrop-blur-sm hover:bg-white transition-colors flex items-center justify-center shadow-md z-20 disabled:opacity-50 disabled:cursor-not-allowed\">\n <X className=\"w-4 h-4 text-gray-800\" />\n </button>\n </motion.div>\n </DialogContent>\n </Dialog>\n )}\n </AnimatePresence>\n );\n};\n\nexport default ConfirmDialog;\n","import { useState, ReactNode } from 'react';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { Button } from './ui/button';\nimport { Plus, Download, LucideIcon } from 'lucide-react';\nimport { motion } from 'framer-motion';\nimport Toast from './Toast';\nimport ConfirmDialog from './ConfirmDialog';\nimport SmartFilterPanel from './SmartFilterPanel';\nimport { StatCard, type StatCardProps } from './StatCard';\nimport { PageHeader } from './PageHeader';\n\nexport interface CardViewColumn<T> {\n key: keyof T;\n searchable?: boolean;\n}\n\nexport interface CardViewStat extends Omit<StatCardProps, 'onClick'> {}\n\nexport interface CardViewFilter {\n key: string;\n label: string;\n value: string;\n color?: 'gray' | 'green' | 'blue' | 'orange' | 'red' | 'purple' | 'cyan';\n badge?: boolean;\n emoji?: string;\n}\n\nexport interface CardViewProps<T> {\n queryKey: string[];\n queryFn: () => Promise<T[] | { data?: T[]; assets?: T[] }>;\n title?: string;\n subtitle?: string;\n icon?: LucideIcon;\n hideHeader?: boolean;\n emptyMessage?: string;\n emptyIcon?: LucideIcon;\n renderCard: (item: T, isSelected: boolean, onDelete?: (id: number) => void) => ReactNode;\n onCardClick: (item: T) => void;\n selectedItem?: T | null;\n onSelectedItemChange?: (item: T | null) => void;\n stats?: CardViewStat[] | ((items: T[]) => CardViewStat[]);\n filters?: CardViewFilter[] | ((items: T[]) => CardViewFilter[]);\n filterFn?: (item: T, filterValue: string) => boolean;\n activeFilters?: string[];\n onActiveFiltersChange?: (filters: string[]) => void;\n searchPlaceholder?: string;\n searchColumns?: CardViewColumn<T>[];\n persistKey?: string;\n enablePresets?: boolean;\n enableHistory?: boolean;\n enableUrlSync?: boolean;\n onNew?: () => void;\n newButtonLabel?: string;\n onExport?: () => void;\n renderDrawer?: (item: T | null, onClose: () => void, onEdit: (item: T) => void, onDelete: (id: number) => void) => ReactNode;\n deleteFn?: (id: number) => Promise<void>;\n deleteTitle?: string;\n deleteMessage?: (item: T) => string;\n renderAdvancedFilters?: (open: boolean, onOpenChange: (open: boolean) => void) => ReactNode;\n}\n\nexport function CardView<T extends { id: number }>({\n queryKey,\n queryFn,\n title,\n subtitle,\n icon: Icon,\n hideHeader = false,\n emptyMessage = 'Nenhum registro encontrado',\n emptyIcon: EmptyIcon,\n renderCard,\n onCardClick,\n selectedItem: externalSelectedItem,\n onSelectedItemChange,\n stats,\n filters,\n filterFn,\n activeFilters: externalActiveFilters,\n onActiveFiltersChange,\n searchPlaceholder = 'Buscar...',\n searchColumns = [],\n persistKey,\n enablePresets,\n enableHistory,\n enableUrlSync,\n onNew,\n newButtonLabel = 'Novo',\n onExport,\n renderDrawer,\n deleteFn,\n deleteTitle = 'Confirmar exclusão',\n deleteMessage = () => 'Tem certeza que deseja excluir este registro?',\n renderAdvancedFilters,\n}: CardViewProps<T>) {\n const queryClient = useQueryClient();\n const [internalSelectedItem, setInternalSelectedItem] = useState<T | null>(null);\n const selectedItem = externalSelectedItem !== undefined ? externalSelectedItem : internalSelectedItem;\n const setSelectedItem = onSelectedItemChange || setInternalSelectedItem;\n const [searchTerm, setSearchTerm] = useState('');\n const [internalActiveFilters, setInternalActiveFilters] = useState<string[]>([]);\n const activeFilters = externalActiveFilters !== undefined ? externalActiveFilters : internalActiveFilters;\n const setActiveFilters = onActiveFiltersChange || setInternalActiveFilters;\n const [showFilters, setShowFilters] = useState(false);\n const [deleteItemId, setDeleteItemId] = useState<number | null>(null);\n const [toastState, setToastState] = useState<{ message: string; type: 'success' | 'error' } | null>(null);\n\n const { data: response, isLoading } = useQuery({ queryKey, queryFn });\n\n const items = Array.isArray(response)\n ? response\n : (response?.data || response?.assets || []) as T[];\n\n const computedStats = typeof stats === 'function' ? stats(items) : stats;\n const computedFilters = typeof filters === 'function' ? filters(items) : filters;\n\n const deleteMutation = useMutation({\n mutationFn: (id: number) => deleteFn!(id),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey });\n setToastState({ message: 'Registro excluído com sucesso', type: 'success' });\n setSelectedItem(null);\n setDeleteItemId(null);\n },\n onError: (error: any) => {\n setToastState({ message: error.response?.data?.message || 'Não foi possível excluir o registro', type: 'error' });\n },\n });\n\n const handleDelete = (id: number) => setDeleteItemId(id);\n const confirmDelete = () => { if (deleteItemId && deleteFn) deleteMutation.mutate(deleteItemId); };\n\n const filteredItems = items.filter((item: T) => {\n const matchesSearch = searchColumns.length === 0 || searchColumns.some(col => {\n const value = item[col.key];\n return value && String(value).toLowerCase().includes(searchTerm.toLowerCase());\n });\n const matchesFilter = !filterFn || activeFilters.length === 0 || activeFilters.some(filterValue => filterFn(item, filterValue));\n return matchesSearch && matchesFilter;\n });\n\n const DisplayIcon = EmptyIcon || Icon;\n\n const colorMap: Record<string, { bg: string; text: string; border: string; darkBg: string; darkText: string; darkBorder: string }> = {\n green: { bg: 'bg-green-100', text: 'text-green-800', border: 'border-green-300', darkBg: 'dark:bg-green-900/30', darkText: 'dark:text-green-300', darkBorder: 'dark:border-green-800' },\n red: { bg: 'bg-red-100', text: 'text-red-800', border: 'border-red-300', darkBg: 'dark:bg-red-900/30', darkText: 'dark:text-red-300', darkBorder: 'dark:border-red-800' },\n blue: { bg: 'bg-blue-100', text: 'text-blue-800', border: 'border-blue-300', darkBg: 'dark:bg-blue-900/30', darkText: 'dark:text-blue-300', darkBorder: 'dark:border-blue-800' },\n cyan: { bg: 'bg-cyan-100', text: 'text-cyan-800', border: 'border-cyan-300', darkBg: 'dark:bg-cyan-900/30', darkText: 'dark:text-cyan-300', darkBorder: 'dark:border-cyan-800' },\n orange: { bg: 'bg-orange-100', text: 'text-orange-800', border: 'border-orange-300', darkBg: 'dark:bg-orange-900/30', darkText: 'dark:text-orange-300', darkBorder: 'dark:border-orange-800' },\n gray: { bg: 'bg-slate-100', text: 'text-slate-800', border: 'border-slate-300', darkBg: 'dark:bg-slate-900/30', darkText: 'dark:text-slate-300', darkBorder: 'dark:border-slate-800' },\n purple: { bg: 'bg-purple-100', text: 'text-purple-800', border: 'border-purple-300', darkBg: 'dark:bg-purple-900/30', darkText: 'dark:text-purple-300', darkBorder: 'dark:border-purple-800' },\n };\n\n return (\n <div className=\"space-y-6\">\n {!hideHeader && title && Icon && (\n <PageHeader\n title={title}\n subtitle={subtitle}\n icon={Icon}\n actions={\n <>\n {onExport && <Button variant=\"outline\" size=\"sm\" onClick={onExport}><Download className=\"h-4 w-4 mr-2\" />Exportar</Button>}\n {onNew && <Button size=\"sm\" onClick={onNew}><Plus className=\"h-4 w-4 mr-2\" />{newButtonLabel}</Button>}\n </>\n }\n />\n )}\n\n {computedStats && computedStats.length > 0 && (\n <div className={`grid grid-cols-2 md:grid-cols-3 lg:grid-cols-${Math.min(computedStats.length, 6)} gap-4`}>\n {computedStats.map((stat, idx) => <StatCard key={stat.label || idx} {...stat} />)}\n </div>\n )}\n\n {computedFilters && computedFilters.length > 0 && (\n <SmartFilterPanel\n filterGroups={[{\n key: 'status',\n label: 'Status',\n renderType: 'badges',\n allLabel: 'Todos',\n options: computedFilters.map((f) => ({\n value: f.value,\n label: f.label,\n emoji: f.emoji,\n color: colorMap[f.color || 'gray'] || colorMap.gray,\n })),\n selectedValues: activeFilters,\n onChange: setActiveFilters,\n }]}\n searchValue={searchTerm}\n onSearchChange={setSearchTerm}\n searchPlaceholder={searchPlaceholder}\n resultsCount={filteredItems.length}\n persistKey={persistKey}\n enablePresets={enablePresets}\n enableHistory={enableHistory}\n enableUrlSync={enableUrlSync}\n onClearAll={() => { setSearchTerm(''); setActiveFilters([]); }}\n />\n )}\n\n <div>\n {isLoading ? (\n <div className=\"text-center py-12 text-muted-foreground\">\n {DisplayIcon && <DisplayIcon className=\"w-16 h-16 mx-auto mb-4 opacity-30 animate-pulse\" />}\n <p>Carregando...</p>\n </div>\n ) : filteredItems.length === 0 ? (\n <div className=\"text-center py-12 text-muted-foreground\">\n {DisplayIcon && <DisplayIcon className=\"w-16 h-16 mx-auto mb-4 opacity-30\" />}\n <p className=\"font-medium\">{emptyMessage}</p>\n <p className=\"text-sm\">Tente ajustar os filtros ou adicione um novo registro</p>\n </div>\n ) : (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-4\">\n {filteredItems.map((item: T, index: number) => (\n <motion.div\n key={`${item.id}-${index}`}\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: index * 0.05, duration: 0.3 }}\n onClick={() => { onCardClick(item); setSelectedItem(item); }}\n className=\"cursor-pointer\"\n >\n {renderCard(item, selectedItem?.id === item.id, deleteFn ? handleDelete : undefined)}\n </motion.div>\n ))}\n </div>\n )}\n </div>\n\n {selectedItem && renderDrawer && (\n <>\n <div className=\"fixed inset-0 bg-black/20 dark:bg-black/40 z-40\" onClick={() => setSelectedItem(null)} />\n {renderDrawer(selectedItem, () => setSelectedItem(null), () => {}, handleDelete)}\n </>\n )}\n\n {renderAdvancedFilters && renderAdvancedFilters(showFilters, setShowFilters)}\n\n {deleteFn && (\n <ConfirmDialog\n isOpen={deleteItemId !== null}\n onClose={() => setDeleteItemId(null)}\n onConfirm={confirmDelete}\n type=\"delete\"\n title={deleteTitle}\n message={deleteItemId ? deleteMessage(items.find(i => i.id === deleteItemId)!) : ''}\n loading={deleteMutation.isPending}\n />\n )}\n\n {toastState && <Toast message={toastState.message} type={toastState.type} onClose={() => setToastState(null)} />}\n </div>\n );\n}\n","export interface Theme {\n /** HSL sem parênteses. Ex: \"142 76% 36%\" */\n primary?: string;\n primaryForeground?: string;\n secondary?: string;\n secondaryForeground?: string;\n background?: string;\n foreground?: string;\n card?: string;\n cardForeground?: string;\n muted?: string;\n mutedForeground?: string;\n accent?: string;\n accentForeground?: string;\n destructive?: string;\n destructiveForeground?: string;\n border?: string;\n input?: string;\n inputBg?: string;\n ring?: string;\n radius?: string;\n}\n\nexport const defaultTheme: Theme = {\n background: '210 20% 96%',\n foreground: '240 10% 4%',\n card: '0 0% 100%',\n cardForeground: '240 10% 4%',\n primary: '142 76% 36%',\n primaryForeground: '0 0% 100%',\n secondary: '240 5% 96%',\n secondaryForeground: '240 10% 4%',\n muted: '240 5% 96%',\n mutedForeground: '240 4% 46%',\n accent: '217 91% 60%',\n accentForeground: '0 0% 100%',\n destructive: '0 72% 51%',\n destructiveForeground: '0 0% 100%',\n border: '240 6% 90%',\n input: '240 6% 90%',\n inputBg: '0 0% 100%',\n ring: '142 76% 36%',\n radius: '0.75rem',\n};\n\nexport const defaultDarkTheme: Theme = {\n background: '222 47% 8%',\n foreground: '210 40% 98%',\n card: '222 47% 15%',\n cardForeground: '210 40% 98%',\n primary: '161 94% 43%',\n primaryForeground: '255 100% 100%',\n secondary: '215 28% 21%',\n secondaryForeground: '210 40% 98%',\n muted: '215 28% 21%',\n mutedForeground: '215 20% 65%',\n accent: '161 94% 43%',\n accentForeground: '255 100% 100%',\n destructive: '0 84% 60%',\n destructiveForeground: '210 40% 98%',\n border: '215 28% 21%',\n input: '215 28% 21%',\n inputBg: '215 28% 17%',\n ring: '161 94% 43%',\n};\n","import React, { useEffect } from 'react';\nimport { type Theme, defaultTheme, defaultDarkTheme } from './tokens';\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n /** Tokens para o tema claro — sobrescreve os padrões */\n theme?: Theme;\n /** Tokens para o tema escuro — sobrescreve os padrões */\n darkTheme?: Theme;\n}\n\nfunction applyTheme(tokens: Theme, selector: string) {\n const map: Record<keyof Theme, string> = {\n background: '--background',\n foreground: '--foreground',\n card: '--card',\n cardForeground: '--card-foreground',\n primary: '--primary',\n primaryForeground: '--primary-foreground',\n secondary: '--secondary',\n secondaryForeground: '--secondary-foreground',\n muted: '--muted',\n mutedForeground: '--muted-foreground',\n accent: '--accent',\n accentForeground: '--accent-foreground',\n destructive: '--destructive',\n destructiveForeground:'--destructive-foreground',\n border: '--border',\n input: '--input',\n inputBg: '--input-bg',\n ring: '--ring',\n radius: '--radius',\n };\n\n const el = selector === ':root'\n ? document.documentElement\n : document.querySelector(selector) as HTMLElement | null;\n\n if (!el) return;\n\n (Object.entries(tokens) as [keyof Theme, string][]).forEach(([key, value]) => {\n if (value !== undefined) el.style.setProperty(map[key], value);\n });\n}\n\nexport function ThemeProvider({ children, theme, darkTheme }: ThemeProviderProps) {\n useEffect(() => {\n const light = { ...defaultTheme, ...theme };\n applyTheme(light, ':root');\n }, [theme]);\n\n useEffect(() => {\n const dark = { ...defaultDarkTheme, ...darkTheme };\n\n const applyDark = () => {\n if (document.documentElement.classList.contains('dark')) {\n applyTheme(dark, ':root');\n } else {\n const light = { ...defaultTheme, ...theme };\n applyTheme(light, ':root');\n }\n };\n\n applyDark();\n\n const observer = new MutationObserver(applyDark);\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n return () => observer.disconnect();\n }, [theme, darkTheme]);\n\n return <>{children}</>;\n}\n"]}