@facter/ds-core 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cn.ts","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Input/Input.tsx","../src/components/Badge/Badge.tsx","../src/components/BigNumberCard/Sparkline.tsx","../src/components/BigNumberCard/BigNumberCard.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Select/Select.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Loader/Loader.tsx","../src/components/Loader/LoaderContext.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Table/hooks/useDataTable.ts","../src/components/Table/DataTableContext.tsx","../src/components/Table/DataTable.tsx","../src/components/Table/types.ts","../src/components/Table/Table.tsx","../src/components/Table/DataTableContent.tsx","../src/components/Table/DataTableToolbar.tsx","../src/components/Table/hooks/useDebounce.ts","../src/components/Table/DataTableSearch.tsx","../src/components/Table/DataTableFilters.tsx","../src/components/Table/DataTablePagination.tsx","../src/components/Table/DataTableEmptyState.tsx","../src/components/Table/DataTableLoading.tsx","../src/components/Table/DataTableColumnHeader.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Table/DataTableColumnVisibility.tsx","../src/components/Table/DataTableDensityToggle.tsx","../src/components/Table/DataTableBulkActions.tsx","../src/components/Table/DataTableExport.tsx","../src/components/Table/DataTableTabs.tsx","../src/components/Table/index.ts","../src/components/Dialog/Dialog.tsx","../src/components/RippleEffect/RippleEffect.tsx","../src/components/Dialog/DialogWrapper.tsx","../src/components/Toast/Toast.tsx","../src/components/Switch/Switch.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Form/FormContext.tsx","../src/components/Form/FormInput.tsx","../src/components/Form/FormSelect.tsx","../src/components/Form/FormTextarea.tsx","../src/components/Form/FormCheckbox.tsx","../src/components/Form/FormSwitch.tsx","../src/components/Form/FormRadioGroup.tsx","../src/components/Form/FormParts.tsx","../src/components/Form/Form.tsx","../src/components/Avatar/Avatar.tsx","../src/components/DropdownMenu/DropdownMenu.tsx","../src/components/Popover/Popover.tsx","../src/components/Layouts/AuthLayout/AuthLayout.tsx","../src/components/Layouts/SelectionLayout/SelectionLayout.tsx","../src/components/Layouts/DashboardLayout/DashboardLayout.tsx","../src/components/Sidebar/SidebarContext.tsx","../src/components/Sidebar/SidebarHeader.tsx","../src/components/Sidebar/SidebarNav.tsx","../src/components/Sidebar/SidebarSection.tsx","../src/components/Sidebar/SidebarNavItem.tsx","../src/components/Sidebar/SidebarNavGroup.tsx","../src/components/Sidebar/SidebarFooter.tsx","../src/components/Sidebar/Sidebar.tsx","../src/components/MobileNav/MobileNavItem.tsx","../src/components/MobileNav/MobileNav.tsx","../src/components/Navbar/Navbar.tsx","../src/components/Navbar/ThemeToggle.tsx","../src/components/Navbar/NavbarNotification.tsx","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Separator/Separator.tsx","../src/components/Navbar/NavbarCompanyProfile.tsx","../src/components/Navbar/NavbarUserMenu.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/SectionHeader/SectionHeader.tsx","../src/components/Kanban/KanbanContext.tsx","../src/components/Kanban/KanbanBoard.tsx","../src/components/Kanban/KanbanColumn.tsx","../src/components/Kanban/KanbanCard.tsx","../src/components/Kanban/Kanban.tsx","../src/components/Brand/Logo.tsx","../src/providers/ThemeProvider.tsx","../src/themes/index.ts"],"names":["React","jsx","cva","React2","Icon","React3","jsxs","React4","React5","motion","React6","React7","React8","React9","React10","React11","React12","DataTableContent","flexRender","React13","DataTableToolbar","React14","React15","DataTableSearch","React16","DataTableFilters","DataTableFilter","React17","DataTablePagination","React18","DataTableEmptyState","React19","Check","React20","React21","React22","React23","React24","X","React25","iconWrapperVariants","iconVariants","React26","Sonner","React27","sonnerToast","React28","React29","React30","React31","Controller","React32","React33","React34","React35","React36","ChevronRight","Circle","React37","React38","React39","React40","Fragment","renderIcon","ChevronDown","React41","useMediaQuery","React42","SidebarHeader","AnimatePresence","PinOff","Pin","React43","SidebarNav","React44","SidebarSection","React45","SidebarNavItem","React46","badgeVariantStyles","SidebarNavGroup","React47","SidebarFooter","React49","MobileNavItem","React50","MobileNav","React51","Navbar","React52","React53","Separator","React54","getInitials","React55","CheckCircle2","User","Bell","LogOut","React56","React57","React58","React59","React60","React61","theme"],"mappings":"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","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from 'clsx'\r\nimport { twMerge } from 'tailwind-merge'\r\n\r\n/**\r\n * Merge Tailwind CSS classes\r\n * Combines clsx (conditional classes) with tailwind-merge (deduplicates classes)\r\n *\r\n * @example\r\n * cn('px-4 py-2', isActive && 'bg-primary', className)\r\n */\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst buttonVariants = cva(\r\n 'inline-flex items-center justify-center rounded-md text-sm font-medium 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:pointer-events-none disabled:opacity-50',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\r\n destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\r\n outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\r\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\r\n ghost: 'hover:bg-accent hover:text-accent-foreground',\r\n link: 'text-primary underline-offset-4 hover:underline',\r\n },\r\n size: {\r\n default: 'h-10 px-4 py-2',\r\n sm: 'h-9 px-3',\r\n lg: 'h-11 px-8',\r\n icon: 'h-10 w-10',\r\n 'icon-sm': 'h-8 w-8',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'default',\r\n },\r\n }\r\n)\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n asChild?: boolean\r\n}\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ className, variant, size, ...props }, ref) => {\r\n return (\r\n <button\r\n className={cn(buttonVariants({ variant, size, className }))}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\n\r\nButton.displayName = 'Button'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport function Card({ className, ...props }: CardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'rounded-lg border bg-card text-card-foreground shadow-sm',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nCard.displayName = 'Card'\r\n\r\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport function CardHeader({ className, ...props }: CardHeaderProps) {\r\n return (\r\n <div\r\n className={cn('flex flex-col space-y-1.5 p-6', className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nCardHeader.displayName = 'CardHeader'\r\n\r\nexport interface CardTitleProps\r\n extends React.HTMLAttributes<HTMLHeadingElement> {}\r\n\r\nexport function CardTitle({ className, ...props }: CardTitleProps) {\r\n return (\r\n <h3\r\n className={cn(\r\n 'text-2xl font-semibold leading-none tracking-tight',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nCardTitle.displayName = 'CardTitle'\r\n\r\nexport interface CardDescriptionProps\r\n extends React.HTMLAttributes<HTMLParagraphElement> {}\r\n\r\nexport function CardDescription({ className, ...props }: CardDescriptionProps) {\r\n return (\r\n <p\r\n className={cn('text-sm text-muted-foreground', className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nCardDescription.displayName = 'CardDescription'\r\n\r\nexport interface CardContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport function CardContent({ className, ...props }: CardContentProps) {\r\n return <div className={cn('p-6 pt-0', className)} {...props} />\r\n}\r\n\r\nCardContent.displayName = 'CardContent'\r\n\r\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport function CardFooter({ className, ...props }: CardFooterProps) {\r\n return (\r\n <div\r\n className={cn('flex items-center p-6 pt-0', className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nCardFooter.displayName = 'CardFooter'\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst inputVariants = cva(\r\n 'w-full h-12 px-3 pt-4 pb-2 text-sm bg-background rounded-md border-2 transition-colors focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'border-border focus:border-primary',\r\n error: 'border-red-500 focus:border-red-600',\r\n },\r\n inputSize: {\r\n default: 'h-12',\r\n sm: 'h-10 pt-3 pb-1',\r\n lg: 'h-14 pt-5 pb-2',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n inputSize: 'default',\r\n },\r\n }\r\n)\r\n\r\nexport interface InputProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\r\n VariantProps<typeof inputVariants> {\r\n label?: string\r\n error?: boolean\r\n icon?: React.ComponentType<any>\r\n containerClassName?: string\r\n labelClassName?: string\r\n}\r\n\r\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n inputSize,\r\n error,\r\n type = 'text',\r\n label,\r\n icon: Icon,\r\n required,\r\n containerClassName,\r\n labelClassName,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const inputRef = React.useRef<HTMLInputElement | null>(null)\r\n const [showPassword, setShowPassword] = React.useState(false)\r\n\r\n React.useImperativeHandle(ref, () => inputRef.current!, [])\r\n\r\n const focusInput = React.useCallback(() => {\r\n inputRef.current?.focus()\r\n }, [])\r\n\r\n const togglePasswordVisibility = React.useCallback(() => {\r\n setShowPassword((prev) => !prev)\r\n }, [])\r\n\r\n const inputType = type === 'password' ? (showPassword ? 'text' : 'password') : type\r\n\r\n return (\r\n <div className={cn('relative', containerClassName)}>\r\n {/* Icon */}\r\n {Icon && (\r\n <Icon\r\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground h-4 w-4 cursor-pointer z-10\"\r\n onClick={focusInput}\r\n />\r\n )}\r\n\r\n {/* Input */}\r\n <input\r\n type={inputType}\r\n className={cn(\r\n inputVariants({\r\n variant: error ? 'error' : variant,\r\n inputSize,\r\n }),\r\n Icon && 'pl-10',\r\n type === 'password' && 'pr-11',\r\n className\r\n )}\r\n ref={inputRef}\r\n {...props}\r\n />\r\n\r\n {/* Floating Label */}\r\n {label && (\r\n <label\r\n className={cn(\r\n 'absolute left-3 top-[-6px] text-xs font-medium bg-background px-1 cursor-pointer',\r\n error ? 'text-red-500' : 'text-foreground',\r\n Icon && 'left-10',\r\n labelClassName\r\n )}\r\n onClick={focusInput}\r\n >\r\n {label}\r\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\r\n </label>\r\n )}\r\n\r\n {/* Password Toggle */}\r\n {type === 'password' && (\r\n <button\r\n type=\"button\"\r\n onClick={togglePasswordVisibility}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors z-10\"\r\n aria-label={showPassword ? 'Ocultar senha' : 'Mostrar senha'}\r\n >\r\n {showPassword ? (\r\n <svg\r\n className=\"h-5 w-5\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\r\n />\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\"\r\n />\r\n </svg>\r\n ) : (\r\n <svg\r\n className=\"h-5 w-5\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\"\r\n />\r\n </svg>\r\n )}\r\n </button>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nInput.displayName = 'Input'\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst badgeVariants = cva(\r\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n 'border-transparent bg-primary/15 text-primary hover:bg-primary/25',\r\n secondary:\r\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\r\n success:\r\n 'border-transparent bg-green-500/15 text-green-600 dark:text-green-400 hover:bg-green-500/25',\r\n warning:\r\n 'border-transparent bg-yellow-500/15 text-yellow-600 dark:text-yellow-400 hover:bg-yellow-500/25',\r\n error:\r\n 'border-transparent bg-red-500/15 text-red-600 dark:text-red-400 hover:bg-red-500/25',\r\n info:\r\n 'border-transparent bg-blue-500/15 text-blue-600 dark:text-blue-400 hover:bg-blue-500/25',\r\n outline: 'border-border text-foreground hover:bg-muted',\r\n },\r\n size: {\r\n default: 'px-2.5 py-0.5 text-xs',\r\n sm: 'px-2 py-0.5 text-[10px]',\r\n lg: 'px-3 py-1 text-sm',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'default',\r\n },\r\n }\r\n)\r\n\r\nexport interface BadgeProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof badgeVariants> {}\r\n\r\nexport function Badge({ className, variant, size, ...props }: BadgeProps) {\r\n return (\r\n <div className={cn(badgeVariants({ variant, size }), className)} {...props} />\r\n )\r\n}\r\n\r\nBadge.displayName = 'Badge'\r\n","import * as React from 'react'\nimport { motion } from 'framer-motion'\nimport { cn } from '../../utils/cn'\nimport type { BigNumberCardSparklineProps, SparklineColor } from './types'\n\nconst colorClasses: Record<SparklineColor, string> = {\n 'chart-1': 'text-chart-1',\n 'chart-2': 'text-chart-2',\n 'chart-3': 'text-chart-3',\n 'chart-4': 'text-chart-4',\n 'chart-5': 'text-chart-5',\n}\n\n// Generate smooth curve using Catmull-Rom spline converted to Bezier\nfunction generateSmoothPath(points: { x: number; y: number }[]): string {\n if (points.length < 2) return ''\n if (points.length === 2) {\n return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`\n }\n\n let path = `M ${points[0].x.toFixed(2)} ${points[0].y.toFixed(2)}`\n\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(0, i - 1)]\n const p1 = points[i]\n const p2 = points[i + 1]\n const p3 = points[Math.min(points.length - 1, i + 2)]\n\n // Catmull-Rom to Bezier conversion\n const tension = 0.3\n const cp1x = p1.x + (p2.x - p0.x) * tension\n const cp1y = p1.y + (p2.y - p0.y) * tension\n const cp2x = p2.x - (p3.x - p1.x) * tension\n const cp2y = p2.y - (p3.y - p1.y) * tension\n\n path += ` C ${cp1x.toFixed(2)} ${cp1y.toFixed(2)}, ${cp2x.toFixed(2)} ${cp2y.toFixed(2)}, ${p2.x.toFixed(2)} ${p2.y.toFixed(2)}`\n }\n\n return path\n}\n\nexport function Sparkline({\n data,\n color = 'chart-1',\n animate = true,\n className,\n show = true,\n}: BigNumberCardSparklineProps) {\n const gradientId = React.useId()\n\n const { linePath, areaPath } = React.useMemo(() => {\n if (data.length < 2) {\n return { linePath: '', areaPath: '' }\n }\n\n const max = Math.max(...data)\n const min = Math.min(...data)\n const range = max - min || 1\n\n const points = data.map((value, index) => ({\n x: (index / (data.length - 1)) * 100,\n y: 100 - ((value - min) / range) * 70 - 15, // 15% padding top, 15% bottom\n }))\n\n const line = generateSmoothPath(points)\n const area = `${line} L 100 100 L 0 100 Z`\n\n return { linePath: line, areaPath: area }\n }, [data])\n\n if (!show || data.length < 2) {\n return null\n }\n\n return (\n <svg\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"none\"\n className={cn('w-full h-16', colorClasses[color], className)}\n >\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"currentColor\" stopOpacity=\"0.3\" />\n <stop offset=\"100%\" stopColor=\"currentColor\" stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n\n {/* Area fill */}\n <motion.path\n d={areaPath}\n fill={`url(#${gradientId})`}\n initial={animate ? { opacity: 0 } : undefined}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.5, delay: 0.3 }}\n />\n\n {/* Line stroke */}\n <motion.path\n d={linePath}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n initial={animate ? { pathLength: 0 } : undefined}\n animate={{ pathLength: 1 }}\n transition={{ duration: 0.8, ease: 'easeOut' }}\n />\n </svg>\n )\n}\n\nSparkline.displayName = 'BigNumberCard.Sparkline'\n","import * as React from 'react'\nimport { cva } from 'class-variance-authority'\nimport { TrendingUp, TrendingDown } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { Sparkline } from './Sparkline'\nimport type {\n BigNumberCardRootProps,\n BigNumberCardHeaderProps,\n BigNumberCardTitleProps,\n BigNumberCardLinkProps,\n BigNumberCardContentProps,\n BigNumberCardValueProps,\n BigNumberCardTrendProps,\n} from './types'\n\n// ============================================================================\n// Root - Card container\n// ============================================================================\n\nconst rootVariants = cva(\n 'relative overflow-hidden rounded-xl border border-border bg-card shadow-sm min-h-[140px]',\n {\n variants: {\n size: {\n default: 'p-5 pb-14',\n sm: 'p-4 pb-12',\n lg: 'p-6 pb-16',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n)\n\nfunction BigNumberCardRoot({ children, className, size }: BigNumberCardRootProps) {\n return (\n <div className={cn(rootVariants({ size }), className)}>\n {children}\n </div>\n )\n}\n\nBigNumberCardRoot.displayName = 'BigNumberCard.Root'\n\n// ============================================================================\n// Header - Flex container for title + action\n// ============================================================================\n\nfunction BigNumberCardHeader({ children, className }: BigNumberCardHeaderProps) {\n return (\n <div className={cn('flex items-center justify-between', className)}>\n {children}\n </div>\n )\n}\n\nBigNumberCardHeader.displayName = 'BigNumberCard.Header'\n\n// ============================================================================\n// Title - Muted text\n// ============================================================================\n\nfunction BigNumberCardTitle({ children, className }: BigNumberCardTitleProps) {\n return (\n <span className={cn('text-sm font-medium text-muted-foreground', className)}>\n {children}\n </span>\n )\n}\n\nBigNumberCardTitle.displayName = 'BigNumberCard.Title'\n\n// ============================================================================\n// Link - Action link\n// ============================================================================\n\nfunction BigNumberCardLink({ children, href, onClick, className }: BigNumberCardLinkProps) {\n const handleClick = (e: React.MouseEvent) => {\n if (onClick) {\n e.preventDefault()\n onClick()\n }\n }\n\n return (\n <a\n href={href ?? '#'}\n onClick={handleClick}\n className={cn(\n 'text-xs font-medium text-primary hover:text-primary/80 hover:underline transition-colors',\n className\n )}\n >\n {children}\n </a>\n )\n}\n\nBigNumberCardLink.displayName = 'BigNumberCard.Link'\n\n// ============================================================================\n// Content - Optional wrapper for value area\n// ============================================================================\n\nfunction BigNumberCardContent({ children, className }: BigNumberCardContentProps) {\n return (\n <div className={cn('mt-3 space-y-1', className)}>\n {children}\n </div>\n )\n}\n\nBigNumberCardContent.displayName = 'BigNumberCard.Content'\n\n// ============================================================================\n// Value - Big number with prefix/suffix\n// ============================================================================\n\nfunction BigNumberCardValue({ children, prefix, suffix, className }: BigNumberCardValueProps) {\n return (\n <div className={cn('mt-3 text-3xl font-bold tracking-tight text-foreground', className)}>\n {prefix && <span className=\"text-2xl\">{prefix}</span>}\n {children}\n {suffix && <span className=\"text-2xl ml-0.5\">{suffix}</span>}\n </div>\n )\n}\n\nBigNumberCardValue.displayName = 'BigNumberCard.Value'\n\n// ============================================================================\n// Trend - Percentage change indicator\n// ============================================================================\n\nfunction BigNumberCardTrend({ value, direction, children, className, show = true }: BigNumberCardTrendProps) {\n if (!show) {\n return null\n }\n\n const isUp = direction === 'up'\n const Icon = isUp ? TrendingUp : TrendingDown\n\n return (\n <div\n className={cn(\n 'mt-2 flex items-center gap-1.5 text-sm',\n isUp ? 'text-emerald-600 dark:text-emerald-400' : 'text-red-600 dark:text-red-400',\n className\n )}\n >\n <Icon className=\"h-4 w-4 flex-shrink-0\" />\n <span className=\"font-semibold\">\n {isUp ? '+' : ''}{value.toFixed(1)}%\n </span>\n {children && (\n <span className=\"text-muted-foreground font-normal\">{children}</span>\n )}\n </div>\n )\n}\n\nBigNumberCardTrend.displayName = 'BigNumberCard.Trend'\n\n// ============================================================================\n// Description - Muted description text\n// ============================================================================\n\ninterface BigNumberCardDescriptionProps {\n children: React.ReactNode\n className?: string\n show?: boolean\n}\n\nfunction BigNumberCardDescription({ children, className, show = true }: BigNumberCardDescriptionProps) {\n if (!show) {\n return null\n }\n\n return (\n <p className={cn('mt-1 text-xs text-muted-foreground', className)}>\n {children}\n </p>\n )\n}\n\nBigNumberCardDescription.displayName = 'BigNumberCard.Description'\n\n// ============================================================================\n// Sparkline wrapper for positioning\n// ============================================================================\n\nfunction BigNumberCardSparklineWrapper(props: React.ComponentProps<typeof Sparkline>) {\n const { show = true, ...rest } = props\n\n if (!show) {\n return null\n }\n\n return (\n <div className=\"absolute bottom-0 left-0 right-0 h-16 opacity-80\">\n <Sparkline {...rest} show={show} />\n </div>\n )\n}\n\nBigNumberCardSparklineWrapper.displayName = 'BigNumberCard.Sparkline'\n\n// ============================================================================\n// Compound export\n// ============================================================================\n\nexport const BigNumberCard = {\n Root: BigNumberCardRoot,\n Header: BigNumberCardHeader,\n Title: BigNumberCardTitle,\n Link: BigNumberCardLink,\n Content: BigNumberCardContent,\n Value: BigNumberCardValue,\n Trend: BigNumberCardTrend,\n Description: BigNumberCardDescription,\n Sparkline: BigNumberCardSparklineWrapper,\n}\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: 'default' | 'circular' | 'text'\r\n animation?: 'pulse' | 'wave' | 'none'\r\n}\r\n\r\nexport function Skeleton({\r\n className,\r\n variant = 'default',\r\n animation = 'pulse',\r\n ...props\r\n}: SkeletonProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'bg-muted',\r\n {\r\n 'rounded-md': variant === 'default',\r\n 'rounded-full': variant === 'circular',\r\n 'rounded h-4': variant === 'text',\r\n 'animate-pulse': animation === 'pulse',\r\n 'animate-shimmer': animation === 'wave',\r\n },\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nSkeleton.displayName = 'Skeleton'\r\n","import * as React from 'react'\r\nimport * as SelectPrimitive from '@radix-ui/react-select'\r\nimport { ChevronDown, Check } from 'lucide-react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst selectVariants = cva(\r\n 'w-full h-12 px-3 pt-4 pb-2 text-sm bg-background rounded-md border-2 transition-colors focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'border-border focus:border-primary',\r\n error: 'border-red-500 focus:border-red-600',\r\n },\r\n selectSize: {\r\n default: 'h-12',\r\n sm: 'h-10 pt-3 pb-1',\r\n lg: 'h-14 pt-5 pb-2',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n selectSize: 'default',\r\n },\r\n }\r\n)\r\n\r\nexport interface SelectProps\r\n extends Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root>, 'size'>,\r\n VariantProps<typeof selectVariants> {\r\n label?: string\r\n error?: boolean\r\n icon?: React.ComponentType<any>\r\n className?: string\r\n containerClassName?: string\r\n labelClassName?: string\r\n placeholder?: string\r\n required?: boolean\r\n children: React.ReactNode\r\n}\r\n\r\nexport const Select = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n SelectProps\r\n>(\r\n (\r\n {\r\n className,\r\n variant,\r\n selectSize,\r\n error,\r\n label,\r\n icon: Icon,\r\n required,\r\n containerClassName,\r\n labelClassName,\r\n placeholder,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n return (\r\n <SelectPrimitive.Root {...props}>\r\n <div className={cn('relative', containerClassName)}>\r\n {/* Icon */}\r\n {Icon && (\r\n <Icon className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground h-4 w-4 z-10 pointer-events-none\" />\r\n )}\r\n\r\n {/* Select Trigger */}\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n selectVariants({\r\n variant: error ? 'error' : variant,\r\n selectSize,\r\n }),\r\n Icon && 'pl-10',\r\n 'flex items-center justify-between',\r\n className\r\n )}\r\n >\r\n <SelectPrimitive.Value placeholder={placeholder} />\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n\r\n {/* Floating Label */}\r\n {label && (\r\n <label\r\n className={cn(\r\n 'absolute left-3 top-[-6px] text-xs font-medium bg-background px-1 pointer-events-none',\r\n error ? 'text-red-500' : 'text-foreground',\r\n Icon && 'left-10',\r\n labelClassName\r\n )}\r\n >\r\n {label}\r\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\r\n </label>\r\n )}\r\n </div>\r\n\r\n {/* Dropdown Content */}\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n className={cn(\r\n 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md',\r\n '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'\r\n )}\r\n position=\"popper\"\r\n sideOffset={4}\r\n >\r\n <SelectPrimitive.Viewport className=\"p-1\">\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n </SelectPrimitive.Root>\r\n )\r\n }\r\n)\r\n\r\nSelect.displayName = 'Select'\r\n\r\n// SelectItem component\r\nexport interface SelectItemProps\r\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {\r\n children: React.ReactNode\r\n}\r\n\r\nexport const SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n SelectItemProps\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n 'relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\r\n 'focus:bg-accent focus:text-accent-foreground',\r\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n))\r\n\r\nSelectItem.displayName = 'SelectItem'\r\n\r\n// SelectGroup component\r\nexport const SelectGroup = SelectPrimitive.Group\r\n\r\n// SelectLabel component\r\nexport const SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label\r\n ref={ref}\r\n className={cn('py-1.5 pl-8 pr-2 text-sm font-semibold', className)}\r\n {...props}\r\n />\r\n))\r\n\r\nSelectLabel.displayName = 'SelectLabel'\r\n\r\n// SelectSeparator component\r\nexport const SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator\r\n ref={ref}\r\n className={cn('-mx-1 my-1 h-px bg-muted', className)}\r\n {...props}\r\n />\r\n))\r\n\r\nSelectSeparator.displayName = 'SelectSeparator'\r\n","import * as React from 'react'\r\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst Tabs = TabsPrimitive.Root\r\n\r\nconst TabsList = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n 'inline-flex h-12 items-center gap-6 border-b border-border',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsList.displayName = TabsPrimitive.List.displayName\r\n\r\nconst TabsTrigger = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n 'inline-flex items-center justify-center whitespace-nowrap px-1 py-3 text-sm font-medium text-muted-foreground 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]:border-b-2 data-[state=active]:border-primary data-[state=active]:text-primary data-[state=active]:-mb-px',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\r\n\r\nconst TabsContent = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n 'mt-4 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsContent.displayName = TabsPrimitive.Content.displayName\r\n\r\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { motion, AnimatePresence } from 'framer-motion'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst loaderVariants = cva('flex items-center justify-center backdrop-blur-sm', {\r\n variants: {\r\n variant: {\r\n default: '',\r\n spinner: '',\r\n dots: '',\r\n pulse: '',\r\n bars: '',\r\n },\r\n scope: {\r\n global: 'fixed inset-0 z-[9999]',\r\n local: 'absolute inset-0 z-50',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n scope: 'global',\r\n },\r\n})\r\n\r\nexport interface LoaderProps extends VariantProps<typeof loaderVariants> {\r\n message?: string\r\n isTransparentBg?: boolean\r\n show?: boolean\r\n}\r\n\r\nconst containerVariants = {\r\n initial: { opacity: 0, scale: 0.9 },\r\n animate: { opacity: 1, scale: 1 },\r\n exit: { opacity: 0, scale: 0.9 },\r\n}\r\n\r\nfunction SpinnerLoader() {\r\n return (\r\n <motion.div\r\n className=\"h-12 w-12 rounded-full border-4 border-primary border-t-transparent\"\r\n animate={{ rotate: 360 }}\r\n transition={{ duration: 1, repeat: Infinity, ease: 'linear' }}\r\n />\r\n )\r\n}\r\n\r\nfunction DotsLoader() {\r\n return (\r\n <div className=\"flex space-x-2\">\r\n {[0, 1, 2].map((i) => (\r\n <motion.div\r\n key={i}\r\n className=\"h-3 w-3 rounded-full bg-primary\"\r\n initial={{ scale: 0 }}\r\n animate={{ scale: [0, 1, 0] }}\r\n transition={{\r\n duration: 1,\r\n repeat: Infinity,\r\n delay: i * 0.2,\r\n ease: 'easeInOut',\r\n }}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nfunction PulseLoader() {\r\n return (\r\n <motion.div\r\n className=\"h-12 w-12 rounded-full bg-primary/20\"\r\n initial={{ scale: 0.8 }}\r\n animate={{ scale: 1, opacity: [1, 0.5, 1] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: 'easeInOut',\r\n }}\r\n >\r\n <motion.div\r\n className=\"h-full w-full rounded-full bg-primary/40\"\r\n initial={{ scale: 0.8 }}\r\n animate={{ scale: 1, opacity: [1, 0, 1] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: 'easeInOut',\r\n delay: 0.2,\r\n }}\r\n />\r\n </motion.div>\r\n )\r\n}\r\n\r\nfunction BarsLoader() {\r\n return (\r\n <div className=\"flex items-center space-x-1\">\r\n {[0, 1, 2, 3].map((i) => (\r\n <motion.div\r\n key={i}\r\n className=\"h-8 w-1 rounded-full bg-primary\"\r\n initial={{ scaleY: 0.3 }}\r\n animate={{ scaleY: [0.3, 1, 0.3] }}\r\n transition={{\r\n duration: 0.8,\r\n repeat: Infinity,\r\n delay: i * 0.1,\r\n ease: 'easeInOut',\r\n }}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nexport const Loader = React.forwardRef<HTMLDivElement, LoaderProps>(\r\n (\r\n {\r\n variant = 'default',\r\n message,\r\n scope = 'global',\r\n isTransparentBg = true,\r\n show = true,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const loaderComponents = {\r\n default: <SpinnerLoader />,\r\n spinner: <SpinnerLoader />,\r\n dots: <DotsLoader />,\r\n pulse: <PulseLoader />,\r\n bars: <BarsLoader />,\r\n }\r\n\r\n if (!show) return null\r\n\r\n return (\r\n <AnimatePresence>\r\n <motion.div\r\n ref={ref}\r\n className={cn(\r\n loaderVariants({ variant, scope }),\r\n isTransparentBg ? 'bg-background/90' : 'bg-background'\r\n )}\r\n initial=\"initial\"\r\n animate=\"animate\"\r\n exit=\"exit\"\r\n variants={containerVariants}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <div className=\"flex flex-col items-center gap-4\">\r\n {loaderComponents[variant || 'default']}\r\n {message && (\r\n <motion.p\r\n className=\"text-lg text-muted-foreground\"\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ delay: 0.1 }}\r\n >\r\n {message}\r\n </motion.p>\r\n )}\r\n </div>\r\n </motion.div>\r\n </AnimatePresence>\r\n )\r\n }\r\n)\r\n\r\nLoader.displayName = 'Loader'\r\n","import * as React from 'react'\r\nimport { Loader, type LoaderProps } from './Loader'\r\n\r\ninterface LoaderContextValue {\r\n show: (options?: LoaderOptions) => void\r\n hide: () => void\r\n isLoading: boolean\r\n}\r\n\r\ninterface LoaderOptions {\r\n message?: string\r\n variant?: LoaderProps['variant']\r\n scope?: LoaderProps['scope']\r\n isTransparentBg?: boolean\r\n}\r\n\r\nconst LoaderContext = React.createContext<LoaderContextValue | undefined>(\r\n undefined\r\n)\r\n\r\nexport function LoaderProvider({ children }: { children: React.ReactNode }) {\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [loaderOptions, setLoaderOptions] = React.useState<LoaderOptions>({})\r\n\r\n const show = React.useCallback((options: LoaderOptions = {}) => {\r\n setLoaderOptions(options)\r\n setIsLoading(true)\r\n }, [])\r\n\r\n const hide = React.useCallback(() => {\r\n setIsLoading(false)\r\n // Limpar opções após animação de saída\r\n setTimeout(() => setLoaderOptions({}), 300)\r\n }, [])\r\n\r\n const value = React.useMemo(\r\n () => ({ show, hide, isLoading }),\r\n [show, hide, isLoading]\r\n )\r\n\r\n return (\r\n <LoaderContext.Provider value={value}>\r\n {children}\r\n {isLoading && (\r\n <Loader\r\n variant={loaderOptions.variant}\r\n message={loaderOptions.message}\r\n scope={loaderOptions.scope}\r\n isTransparentBg={loaderOptions.isTransparentBg}\r\n show={isLoading}\r\n />\r\n )}\r\n </LoaderContext.Provider>\r\n )\r\n}\r\n\r\nexport function useLoader() {\r\n const context = React.useContext(LoaderContext)\r\n if (context === undefined) {\r\n throw new Error('useLoader must be used within a LoaderProvider')\r\n }\r\n return context\r\n}\r\n\r\n// Helper function para usar fora de componentes\r\nlet globalLoaderController: LoaderContextValue | null = null\r\n\r\nexport function setGlobalLoader(controller: LoaderContextValue) {\r\n globalLoaderController = controller\r\n}\r\n\r\nexport const loader = {\r\n show: (options?: LoaderOptions) => {\r\n if (globalLoaderController) {\r\n globalLoaderController.show(options)\r\n } else {\r\n console.warn(\r\n 'Loader: GlobalLoaderController not initialized. Wrap your app with LoaderProvider.'\r\n )\r\n }\r\n },\r\n hide: () => {\r\n if (globalLoaderController) {\r\n globalLoaderController.hide()\r\n } else {\r\n console.warn(\r\n 'Loader: GlobalLoaderController not initialized. Wrap your app with LoaderProvider.'\r\n )\r\n }\r\n },\r\n}\r\n\r\n// Component que registra o controller global\r\nexport function GlobalLoaderController() {\r\n const loaderController = useLoader()\r\n\r\n React.useEffect(() => {\r\n setGlobalLoader(loaderController)\r\n return () => {\r\n setGlobalLoader(null as any)\r\n }\r\n }, [loaderController])\r\n\r\n return null\r\n}\r\n","import * as React from 'react'\r\nimport { motion } from 'framer-motion'\r\nimport { Inbox } from 'lucide-react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\nimport { Button } from '../Button'\r\n\r\nconst emptyStateVariants = cva(\r\n 'flex items-center justify-center p-8 text-center w-full',\r\n {\r\n variants: {\r\n layout: {\r\n vertical: 'flex-col',\r\n horizontal: 'flex-row gap-4 px-4 py-3',\r\n },\r\n },\r\n defaultVariants: {\r\n layout: 'vertical',\r\n },\r\n }\r\n)\r\n\r\nconst iconWrapperVariants = cva('rounded-full bg-primary/5', {\r\n variants: {\r\n size: {\r\n default: 'mb-3 p-6',\r\n sm: 'mb-4 p-3',\r\n },\r\n layout: {\r\n vertical: '',\r\n horizontal: 'mb-0',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n layout: 'vertical',\r\n },\r\n})\r\n\r\nconst iconVariants = cva('text-primary', {\r\n variants: {\r\n size: {\r\n default: 'h-10 w-10',\r\n sm: 'h-8 w-8',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n },\r\n})\r\n\r\nconst titleVariants = cva('font-semibold text-foreground', {\r\n variants: {\r\n size: {\r\n default: 'text-lg',\r\n sm: 'text-base',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n },\r\n})\r\n\r\nconst descriptionVariants = cva('text-muted-foreground', {\r\n variants: {\r\n size: {\r\n default: 'mb-6 text-sm',\r\n sm: 'mb-4 text-xs',\r\n },\r\n layout: {\r\n vertical: '',\r\n horizontal: 'mb-0',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n layout: 'vertical',\r\n },\r\n})\r\n\r\nexport interface EmptyStateProps extends VariantProps<typeof emptyStateVariants> {\r\n message?: string\r\n description?: string\r\n icon?: React.ComponentType<any>\r\n actionLabel?: string\r\n onAction?: () => void\r\n hideDescription?: boolean\r\n size?: 'default' | 'sm'\r\n className?: string\r\n animated?: boolean\r\n}\r\n\r\nconst defaultDescriptionMessage =\r\n 'Não se preocupe, isso é normal quando não há itens para exibir.'\r\n\r\n// Animações memoizadas\r\nconst containerAnimation = {\r\n initial: { opacity: 0, y: 20 },\r\n animate: { opacity: 1, y: 0 },\r\n transition: { duration: 0.5 },\r\n}\r\n\r\nconst iconAnimation = {\r\n whileHover: { scale: 1.1 },\r\n whileTap: { scale: 0.9 },\r\n}\r\n\r\n// Componente interno sem animação (para performance)\r\nconst EmptyStateContent = React.memo<EmptyStateProps>(\r\n ({\r\n message = 'Nenhum item encontrado',\r\n description,\r\n icon: IconComponent = Inbox,\r\n actionLabel,\r\n onAction,\r\n hideDescription = false,\r\n size = 'default',\r\n layout = 'vertical',\r\n className,\r\n }) => {\r\n const handleAction = React.useCallback(() => {\r\n if (onAction) {\r\n onAction()\r\n }\r\n }, [onAction])\r\n\r\n return (\r\n <div className={cn(emptyStateVariants({ layout }), className)}>\r\n <div className={iconWrapperVariants({ size, layout })}>\r\n <IconComponent\r\n className={iconVariants({ size })}\r\n aria-hidden=\"true\"\r\n />\r\n </div>\r\n\r\n <div\r\n className={cn(\r\n layout === 'horizontal' && 'flex flex-col items-start text-left'\r\n )}\r\n >\r\n <h3 className={titleVariants({ size })}>{message}</h3>\r\n\r\n {!hideDescription && (\r\n <p className={descriptionVariants({ size, layout })}>\r\n {description || defaultDescriptionMessage}\r\n </p>\r\n )}\r\n </div>\r\n\r\n {actionLabel && onAction && (\r\n <Button onClick={handleAction} className=\"mt-2\">\r\n {actionLabel}\r\n </Button>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nEmptyStateContent.displayName = 'EmptyStateContent'\r\n\r\n// Componente com animação\r\nconst AnimatedEmptyState = React.memo<EmptyStateProps>((props) => {\r\n const {\r\n message = 'Nenhum item encontrado',\r\n description,\r\n icon: IconComponent = Inbox,\r\n actionLabel,\r\n onAction,\r\n hideDescription = false,\r\n size = 'default',\r\n layout = 'vertical',\r\n className,\r\n } = props\r\n\r\n const handleAction = React.useCallback(() => {\r\n if (onAction) {\r\n onAction()\r\n }\r\n }, [onAction])\r\n\r\n return (\r\n <motion.div\r\n {...containerAnimation}\r\n className={cn(emptyStateVariants({ layout }), className)}\r\n >\r\n <motion.div\r\n {...iconAnimation}\r\n className={iconWrapperVariants({ size, layout })}\r\n >\r\n <IconComponent\r\n className={iconVariants({ size })}\r\n aria-hidden=\"true\"\r\n />\r\n </motion.div>\r\n\r\n <div\r\n className={cn(\r\n layout === 'horizontal' && 'flex flex-col items-start text-left'\r\n )}\r\n >\r\n <h3 className={titleVariants({ size })}>{message}</h3>\r\n\r\n {!hideDescription && (\r\n <p className={descriptionVariants({ size, layout })}>\r\n {description || defaultDescriptionMessage}\r\n </p>\r\n )}\r\n </div>\r\n\r\n {actionLabel && onAction && (\r\n <Button onClick={handleAction} className=\"mt-2\">\r\n {actionLabel}\r\n </Button>\r\n )}\r\n </motion.div>\r\n )\r\n})\r\n\r\nAnimatedEmptyState.displayName = 'AnimatedEmptyState'\r\n\r\n// Componente principal que escolhe versão animada ou não\r\nexport const EmptyState = React.memo<EmptyStateProps>(\r\n ({ animated = true, ...props }) => {\r\n if (!animated) {\r\n return <EmptyStateContent {...props} />\r\n }\r\n return <AnimatedEmptyState {...props} />\r\n }\r\n)\r\n\r\nEmptyState.displayName = 'EmptyState'\r\n","import * as React from 'react'\r\nimport {\r\n type ColumnDef,\r\n type ColumnFiltersState,\r\n type SortingState,\r\n type VisibilityState,\r\n type PaginationState,\r\n type RowSelectionState,\r\n type Table,\r\n flexRender,\r\n getCoreRowModel,\r\n getFilteredRowModel,\r\n getPaginationRowModel,\r\n getSortedRowModel,\r\n useReactTable,\r\n} from '@tanstack/react-table'\r\nimport type { DataTableMeta, DataTableDensity, UseDataTableConfig } from '../types'\r\n\r\n// ============================================================================\r\n// HOOK INTERNO - Usado pelo DataTable root\r\n// ============================================================================\r\n//\r\n// Este hook gerencia todo o estado interno da tabela.\r\n// Consumidores não devem usar diretamente - use os hooks do Context:\r\n//\r\n// - useDataTable() - instância da tabela\r\n// - useDataTableMeta() - estado meta (loading, empty, selection)\r\n// - useDataTableDensity() - densidade (compact, default, comfortable)\r\n// - useDataTablePagination() - helpers de paginação\r\n// - useDataTableSorting() - helpers de sorting\r\n// - useDataTableSelection() - rows selecionadas\r\n//\r\n// ============================================================================\r\n\r\ninterface UseDataTableInternalConfig<TData extends Record<string, unknown>> {\r\n data: TData[]\r\n columns: ColumnDef<TData, unknown>[]\r\n getRowId?: (row: TData) => string\r\n}\r\n\r\ninterface UseDataTableInternalReturn<TData extends Record<string, unknown>> {\r\n table: Table<TData>\r\n meta: DataTableMeta\r\n density: DataTableDensity\r\n setDensity: (density: DataTableDensity) => void\r\n}\r\n\r\nexport function useDataTableInternal<TData extends Record<string, unknown>>({\r\n data,\r\n columns,\r\n getRowId,\r\n}: UseDataTableInternalConfig<TData>): UseDataTableInternalReturn<TData> {\r\n // ============================================================================\r\n // STATE\r\n // ============================================================================\r\n\r\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})\r\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({})\r\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([])\r\n const [sorting, setSorting] = React.useState<SortingState>([])\r\n const [globalFilter, setGlobalFilter] = React.useState<string>('')\r\n const [density, setDensity] = React.useState<DataTableDensity>('default')\r\n\r\n const [pagination, setPagination] = React.useState<PaginationState>({\r\n pageIndex: 0,\r\n pageSize: 10,\r\n })\r\n\r\n // ============================================================================\r\n // TABLE INSTANCE\r\n // ============================================================================\r\n\r\n const table = useReactTable({\r\n data,\r\n columns,\r\n getRowId,\r\n state: {\r\n sorting,\r\n columnVisibility,\r\n rowSelection,\r\n columnFilters,\r\n pagination,\r\n globalFilter,\r\n },\r\n // Features\r\n enableRowSelection: true,\r\n enableSorting: true,\r\n enableFilters: true,\r\n enableGlobalFilter: true,\r\n\r\n // Handlers\r\n onRowSelectionChange: setRowSelection,\r\n onSortingChange: setSorting,\r\n onColumnFiltersChange: setColumnFilters,\r\n onColumnVisibilityChange: setColumnVisibility,\r\n onPaginationChange: setPagination,\r\n onGlobalFilterChange: setGlobalFilter,\r\n\r\n // Row Models\r\n getCoreRowModel: getCoreRowModel(),\r\n getFilteredRowModel: getFilteredRowModel(),\r\n getPaginationRowModel: getPaginationRowModel(),\r\n getSortedRowModel: getSortedRowModel(),\r\n })\r\n\r\n // ============================================================================\r\n // META STATE (Derivado)\r\n // ============================================================================\r\n\r\n const meta: DataTableMeta = React.useMemo(\r\n () => ({\r\n isLoading: false, // Loading é controlado externamente via DataTable.Loading\r\n isEmpty: data.length === 0,\r\n selectedRowCount: Object.keys(rowSelection).length,\r\n totalRows: data.length,\r\n density,\r\n }),\r\n [data.length, rowSelection, density]\r\n )\r\n\r\n return {\r\n table: table as Table<TData>,\r\n meta,\r\n density,\r\n setDensity,\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// EXPORTS PÚBLICOS\r\n// ============================================================================\r\n\r\n// Re-export flexRender para uso em componentes de cell\r\nexport { flexRender }\r\n\r\n// Re-export tipos úteis\r\nexport type { UseDataTableConfig }\r\n","import * as React from 'react'\r\nimport type { Table } from '@tanstack/react-table'\r\nimport type { DataTableMeta, DataTableDensity } from './types'\r\n\r\n// ============================================================================\r\n// SPLIT CONTEXTS - Performance otimizada\r\n// Cada contexto tem frequência de mudança diferente\r\n// ============================================================================\r\n\r\n/**\r\n * Context 1: Table Instance\r\n * - Nunca muda após criação (referência estável)\r\n * - Não causa re-renders nos consumers\r\n *\r\n * Nota: Usamos Record<string, unknown> como constraint base porque:\r\n * 1. É mais seguro que 'any' ou 'unknown'\r\n * 2. Representa que TData deve ser um objeto\r\n * 3. Permite type narrowing nos hooks consumers\r\n */\r\nconst DataTableInstanceContext = React.createContext<Table<Record<string, unknown>> | null>(null)\r\nDataTableInstanceContext.displayName = 'DataTableInstanceContext'\r\n\r\n/**\r\n * Context 2: Meta State\r\n * - Muda com loading, empty, selection count\r\n * - Consumers que precisam desses dados vão re-renderizar\r\n */\r\nconst DataTableMetaContext = React.createContext<DataTableMeta | null>(null)\r\nDataTableMetaContext.displayName = 'DataTableMetaContext'\r\n\r\n/**\r\n * Context 3: Density\r\n * - Muda apenas quando usuário altera densidade\r\n * - Separado para não re-renderizar toda tabela\r\n */\r\ninterface DensityContextValue {\r\n density: DataTableDensity\r\n setDensity: (density: DataTableDensity) => void\r\n}\r\nconst DataTableDensityContext = React.createContext<DensityContextValue | null>(null)\r\nDataTableDensityContext.displayName = 'DataTableDensityContext'\r\n\r\n// ============================================================================\r\n// PROVIDER - Generic para type-safety\r\n// ============================================================================\r\n\r\ninterface DataTableProviderProps<TData extends Record<string, unknown>> {\r\n children: React.ReactNode\r\n table: Table<TData>\r\n meta: DataTableMeta\r\n density: DataTableDensity\r\n setDensity: (density: DataTableDensity) => void\r\n}\r\n\r\nexport function DataTableProvider<TData extends Record<string, unknown>>({\r\n children,\r\n table,\r\n meta,\r\n density,\r\n setDensity,\r\n}: DataTableProviderProps<TData>) {\r\n // Memoizar meta para evitar re-renders desnecessários\r\n const metaValue = React.useMemo(\r\n () => meta,\r\n [meta.isLoading, meta.isEmpty, meta.selectedRowCount, meta.totalRows, meta.density]\r\n )\r\n\r\n // Memoizar density context\r\n const densityValue = React.useMemo(\r\n () => ({ density, setDensity }),\r\n [density, setDensity]\r\n )\r\n\r\n // Cast seguro: TData extends Record<string, unknown>\r\n // O context armazena como base type, hooks fazem o cast de volta\r\n const tableValue = table as Table<Record<string, unknown>>\r\n\r\n return (\r\n <DataTableInstanceContext.Provider value={tableValue}>\r\n <DataTableMetaContext.Provider value={metaValue}>\r\n <DataTableDensityContext.Provider value={densityValue}>\r\n {children}\r\n </DataTableDensityContext.Provider>\r\n </DataTableMetaContext.Provider>\r\n </DataTableInstanceContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// HOOKS - Acesso otimizado aos contexts\r\n// ============================================================================\r\n\r\n/**\r\n * Hook para acessar a instância da tabela\r\n * Não causa re-renders pois a instância é estável\r\n */\r\nexport function useDataTable<TData = unknown>(): Table<TData> {\r\n const context = React.useContext(DataTableInstanceContext)\r\n\r\n if (!context) {\r\n throw new Error(\r\n 'useDataTable must be used within <DataTable>. ' +\r\n 'Make sure your component is wrapped with DataTable.'\r\n )\r\n }\r\n\r\n return context as Table<TData>\r\n}\r\n\r\n/**\r\n * Hook para acessar o estado meta da tabela\r\n * Re-renderiza quando loading, empty, ou selection muda\r\n */\r\nexport function useDataTableMeta(): DataTableMeta {\r\n const context = React.useContext(DataTableMetaContext)\r\n\r\n if (!context) {\r\n throw new Error(\r\n 'useDataTableMeta must be used within <DataTable>. ' +\r\n 'Make sure your component is wrapped with DataTable.'\r\n )\r\n }\r\n\r\n return context\r\n}\r\n\r\n/**\r\n * Hook para acessar apenas o loading state\r\n * Otimizado para componentes que só precisam saber se está carregando\r\n */\r\nexport function useDataTableLoading(): boolean {\r\n const meta = useDataTableMeta()\r\n return meta.isLoading\r\n}\r\n\r\n/**\r\n * Hook para acessar apenas o empty state\r\n * Otimizado para componentes que só precisam saber se está vazio\r\n */\r\nexport function useDataTableEmpty(): boolean {\r\n const meta = useDataTableMeta()\r\n return meta.isEmpty\r\n}\r\n\r\n/**\r\n * Hook para acessar rows selecionadas\r\n * Re-renderiza quando seleção muda\r\n */\r\nexport function useDataTableSelection<TData = unknown>(): TData[] {\r\n const table = useDataTable<TData>()\r\n\r\n return React.useMemo(() => {\r\n return table.getSelectedRowModel().rows.map((row) => row.original)\r\n }, [table.getSelectedRowModel().rows])\r\n}\r\n\r\n/**\r\n * Hook para acessar densidade\r\n * Separado para não re-renderizar componentes que não usam\r\n */\r\nexport function useDataTableDensity(): DensityContextValue {\r\n const context = React.useContext(DataTableDensityContext)\r\n\r\n if (!context) {\r\n throw new Error(\r\n 'useDataTableDensity must be used within <DataTable>. ' +\r\n 'Make sure your component is wrapped with DataTable.'\r\n )\r\n }\r\n\r\n return context\r\n}\r\n\r\n/**\r\n * Hook para paginação\r\n * Retorna informações de paginação memoizadas\r\n */\r\nexport function useDataTablePagination() {\r\n const table = useDataTable()\r\n const { pageIndex, pageSize } = table.getState().pagination\r\n\r\n return React.useMemo(() => {\r\n const pageCount = table.getPageCount()\r\n\r\n return {\r\n pageIndex,\r\n pageSize,\r\n pageCount,\r\n canPreviousPage: pageIndex > 0,\r\n canNextPage: pageIndex < pageCount - 1,\r\n setPageIndex: (index: number) => table.setPageIndex(index),\r\n setPageSize: (size: number) => table.setPageSize(size),\r\n previousPage: () => table.previousPage(),\r\n nextPage: () => table.nextPage(),\r\n firstPage: () => table.setPageIndex(0),\r\n lastPage: () => table.setPageIndex(pageCount - 1),\r\n }\r\n }, [table, pageIndex, pageSize])\r\n}\r\n\r\n/**\r\n * Hook para sorting\r\n * Retorna informações de sorting memoizadas\r\n */\r\nexport function useDataTableSorting() {\r\n const table = useDataTable()\r\n const sorting = table.getState().sorting\r\n\r\n return React.useMemo(() => ({\r\n sorting,\r\n setSorting: table.setSorting,\r\n clearSorting: () => table.resetSorting(),\r\n toggleSort: (columnId: string) => {\r\n const column = table.getColumn(columnId)\r\n column?.toggleSorting()\r\n },\r\n }), [table, sorting])\r\n}\r\n\r\n/**\r\n * Hook para column visibility\r\n * Retorna informações de visibilidade memoizadas\r\n */\r\nexport function useDataTableColumnVisibility() {\r\n const table = useDataTable()\r\n const columnVisibility = table.getState().columnVisibility\r\n\r\n return React.useMemo(() => ({\r\n columnVisibility,\r\n setColumnVisibility: table.setColumnVisibility,\r\n toggleColumn: (columnId: string) => {\r\n const column = table.getColumn(columnId)\r\n column?.toggleVisibility()\r\n },\r\n getAllColumns: () => table.getAllColumns().filter((col) => col.getCanHide()),\r\n }), [table, columnVisibility])\r\n}\r\n\r\n// ============================================================================\r\n// RE-EXPORTS para compatibilidade\r\n// ============================================================================\r\n\r\n// Alias para manter compatibilidade com código existente\r\nexport const useDataTableInstance = useDataTable\r\nexport const useDataTableState = useDataTableMeta\r\n","import { cn } from '../../utils/cn'\r\nimport type { DataTableProps } from './types'\r\nimport { useDataTableInternal } from './hooks/useDataTable'\r\nimport { DataTableProvider } from './DataTableContext'\r\n\r\n// ============================================================================\r\n// ROOT COMPONENT - Compound Component Pattern (Composição Explícita)\r\n// ============================================================================\r\n//\r\n// Props MÍNIMAS no root - features via subcomponentes:\r\n//\r\n// <DataTable data={data} columns={columns}>\r\n// <DataTable.Loading visible={isLoading} />\r\n// <DataTable.Toolbar>...</DataTable.Toolbar>\r\n// <DataTable.Content />\r\n// <DataTable.Pagination mode=\"server\" pageCount={10} />\r\n// </DataTable>\r\n//\r\n// ============================================================================\r\n\r\nexport function DataTableRoot<TData extends Record<string, unknown>>({\r\n children,\r\n data,\r\n columns,\r\n getRowId,\r\n className,\r\n}: DataTableProps<TData>) {\r\n // Hook interno gerencia todo o state\r\n const { table, meta, density, setDensity } = useDataTableInternal({\r\n data,\r\n columns,\r\n getRowId,\r\n })\r\n\r\n return (\r\n <DataTableProvider\r\n table={table}\r\n meta={meta}\r\n density={density}\r\n setDensity={setDensity}\r\n >\r\n <div\r\n className={cn('w-full space-y-4', className)}\r\n data-density={density}\r\n >\r\n {children}\r\n </div>\r\n </DataTableProvider>\r\n )\r\n}\r\n\r\n// Display name for DevTools\r\nDataTableRoot.displayName = 'DataTable'\r\n","import type {\r\n ColumnDef,\r\n SortingState,\r\n ColumnFiltersState,\r\n VisibilityState,\r\n RowSelectionState,\r\n PaginationState,\r\n Table,\r\n Column,\r\n} from '@tanstack/react-table'\r\nimport type * as React from 'react'\r\n\r\n// ============================================================================\r\n// DATATABLE ROOT PROPS (Mínimas - Composição Explícita)\r\n// ============================================================================\r\n\r\n/**\r\n * Props do componente root DataTable.\r\n *\r\n * TData deve ser um objeto (Record<string, unknown>) para garantir\r\n * type-safety com o TanStack Table e permitir acesso a propriedades.\r\n */\r\nexport interface DataTableProps<TData extends Record<string, unknown>> {\r\n /** Data array - deve ser memoizado pelo consumer */\r\n data: TData[]\r\n\r\n /** Column definitions - deve ser memoizado pelo consumer */\r\n columns: ColumnDef<TData, unknown>[]\r\n\r\n /** Children usando Compound Component pattern */\r\n children: React.ReactNode\r\n\r\n /** Função para obter ID único da row */\r\n getRowId?: (row: TData) => string\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// INTERNAL STATE (Gerenciado pelo Context)\r\n// ============================================================================\r\n\r\nexport interface DataTableState {\r\n sorting: SortingState\r\n columnFilters: ColumnFiltersState\r\n columnVisibility: VisibilityState\r\n rowSelection: RowSelectionState\r\n pagination: PaginationState\r\n globalFilter: string\r\n density: DataTableDensity\r\n}\r\n\r\nexport type DataTableDensity = 'compact' | 'default' | 'comfortable'\r\n\r\nexport interface DataTableMeta {\r\n isLoading: boolean\r\n isEmpty: boolean\r\n selectedRowCount: number\r\n totalRows: number\r\n density: DataTableDensity\r\n}\r\n\r\n// ============================================================================\r\n// LOADING COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableLoadingProps {\r\n /** Controla visibilidade do loading */\r\n visible: boolean\r\n\r\n /** Custom skeleton component */\r\n skeleton?: React.ReactNode\r\n\r\n /** Número de rows no skeleton */\r\n skeletonRows?: number\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// TOOLBAR COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableToolbarProps {\r\n /** Children components */\r\n children?: React.ReactNode\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// SEARCH COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableSearchProps {\r\n /** Placeholder text */\r\n placeholder?: string\r\n\r\n /** Coluna específica para buscar (se não passar, busca global) */\r\n column?: string\r\n\r\n /** Debounce delay em ms */\r\n debounce?: number\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// FILTERS CONTAINER\r\n// ============================================================================\r\n\r\nexport interface DataTableFiltersProps {\r\n /** Children: Individual filters */\r\n children?: React.ReactNode\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// FILTER COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableFilterOption {\r\n label: string\r\n value: string\r\n icon?: React.ReactNode\r\n}\r\n\r\nexport interface DataTableFilterProps {\r\n /** Coluna para filtrar */\r\n column: string\r\n\r\n /** Label do filtro */\r\n title: string\r\n\r\n /** Opções de filtro */\r\n options: DataTableFilterOption[]\r\n\r\n /** Permitir seleção múltipla */\r\n multiSelect?: boolean\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// CONTENT COMPONENT (Tabela em si)\r\n// ============================================================================\r\n\r\nexport interface DataTableContentProps {\r\n /** Header fixo no scroll */\r\n stickyHeader?: boolean\r\n\r\n /** Linhas alternadas (zebra) */\r\n stripedRows?: boolean\r\n\r\n /** Highlight no hover */\r\n highlightOnHover?: boolean\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// PAGINATION COMPONENT\r\n// ============================================================================\r\n\r\nexport type DataTablePaginationMode = 'client' | 'server'\r\n\r\nexport interface DataTablePaginationProps {\r\n /** Modo de paginação */\r\n mode?: DataTablePaginationMode\r\n\r\n /** Total de páginas (obrigatório se mode=\"server\") */\r\n pageCount?: number\r\n\r\n /** Opções de items por página */\r\n pageSizes?: number[]\r\n\r\n /** Mostrar seletor de page size */\r\n showPageSize?: boolean\r\n\r\n /** Mostrar informação de página atual */\r\n showPageInfo?: boolean\r\n\r\n /** Mostrar botões primeira/última página */\r\n showFirstLast?: boolean\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// EMPTY STATE COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableEmptyStateProps {\r\n /** Título */\r\n title?: string\r\n\r\n /** Descrição */\r\n description?: string\r\n\r\n /** Ícone customizado */\r\n icon?: React.ReactNode\r\n\r\n /** Ação (botão, link, etc) */\r\n action?: React.ReactNode\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// BULK ACTIONS COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableBulkActionsProps<TData = unknown> {\r\n /** Render prop que recebe as rows selecionadas */\r\n children: (selectedRows: TData[]) => React.ReactNode\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// COLUMN VISIBILITY COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableColumnVisibilityProps {\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// DENSITY TOGGLE COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableDensityToggleProps {\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// TABS COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableTab {\r\n /** Identificador único da tab */\r\n value: string\r\n\r\n /** Label exibido na tab */\r\n label: string\r\n\r\n /** Contador opcional (ex: \"Todas 85\") */\r\n count?: number\r\n}\r\n\r\nexport interface DataTableTabsProps {\r\n /** Lista de tabs disponíveis */\r\n tabs: DataTableTab[]\r\n\r\n /** Tab ativa (controlled) */\r\n value?: string\r\n\r\n /** Tab ativa inicial (uncontrolled) */\r\n defaultValue?: string\r\n\r\n /** Callback quando tab muda */\r\n onValueChange?: (value: string) => void\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// EXPORT COMPONENT\r\n// ============================================================================\r\n\r\nexport type DataTableExportFormat = 'csv' | 'xlsx' | 'pdf'\r\n\r\nexport interface DataTableExportProps {\r\n /** Formatos disponíveis para export */\r\n formats?: DataTableExportFormat[]\r\n\r\n /** Nome do arquivo (sem extensão) */\r\n filename?: string\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// COLUMN HEADER COMPONENT (Sortable)\r\n// ============================================================================\r\n\r\nexport interface DataTableColumnHeaderProps<TData = unknown, TValue = unknown> {\r\n /** Column instance do TanStack Table */\r\n column: Column<TData, TValue>\r\n\r\n /** Título do header */\r\n title: string\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// ROW ACTIONS COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableRowActionsProps {\r\n /** Children (DropdownMenuItems) */\r\n children: React.ReactNode\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// CONTEXT TYPES\r\n// ============================================================================\r\n\r\nexport interface DataTableContextValue<TData = unknown> {\r\n table: Table<TData>\r\n state: DataTableMeta\r\n density: DataTableDensity\r\n setDensity: (density: DataTableDensity) => void\r\n}\r\n\r\n// ============================================================================\r\n// HOOK CONFIG TYPES\r\n// ============================================================================\r\n\r\nexport interface UseDataTableConfig<TData extends Record<string, unknown>> {\r\n data: TData[]\r\n columns: ColumnDef<TData, unknown>[]\r\n getRowId?: (row: TData) => string\r\n initialPageSize?: number\r\n initialPageIndex?: number\r\n}\r\n\r\n// ============================================================================\r\n// PAGINATION TYPES (Para integração com API)\r\n// ============================================================================\r\n\r\nexport interface PaginationMeta {\r\n page: number\r\n perPage: number\r\n totalItems: number\r\n totalPages: number\r\n hasNextPage: boolean\r\n hasPreviousPage: boolean\r\n sortBy?: string\r\n sortOrder?: 'asc' | 'desc'\r\n}\r\n\r\nexport interface PaginatedResponse<T> {\r\n data: T[]\r\n meta: PaginationMeta\r\n}\r\n\r\nexport interface PaginationParams {\r\n page?: number\r\n perPage?: number\r\n sortBy?: string\r\n sortOrder?: 'asc' | 'desc'\r\n}\r\n\r\n// ============================================================================\r\n// DENSITY CONFIG\r\n// ============================================================================\r\n\r\nexport const DENSITY_CONFIG = {\r\n compact: {\r\n rowHeight: 32,\r\n fontSize: 'text-xs',\r\n padding: 'py-1 px-2',\r\n },\r\n default: {\r\n rowHeight: 40,\r\n fontSize: 'text-sm',\r\n padding: 'py-2 px-4',\r\n },\r\n comfortable: {\r\n rowHeight: 52,\r\n fontSize: 'text-sm',\r\n padding: 'py-3 px-4',\r\n },\r\n} as const\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\n\r\n// Table Root Component\r\nconst Table = React.forwardRef<\r\n HTMLTableElement,\r\n React.HTMLAttributes<HTMLTableElement>\r\n>(({ className, ...props }, ref) => (\r\n <div className=\"relative w-full overflow-auto\">\r\n <table\r\n ref={ref}\r\n className={cn('w-full caption-bottom text-sm', className)}\r\n {...props}\r\n />\r\n </div>\r\n))\r\nTable.displayName = 'Table'\r\n\r\n// TableHeader Component\r\nconst TableHeader = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\r\n))\r\nTableHeader.displayName = 'TableHeader'\r\n\r\n// TableBody Component\r\nconst TableBody = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <tbody\r\n ref={ref}\r\n className={cn('[&_tr:last-child]:border-0', className)}\r\n {...props}\r\n />\r\n))\r\nTableBody.displayName = 'TableBody'\r\n\r\n// TableFooter Component\r\nconst TableFooter = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <tfoot\r\n ref={ref}\r\n className={cn(\r\n 'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableFooter.displayName = 'TableFooter'\r\n\r\n// TableRow Component (com React.memo para performance)\r\nconst TableRow = React.memo(\r\n React.forwardRef<\r\n HTMLTableRowElement,\r\n React.HTMLAttributes<HTMLTableRowElement>\r\n >(({ className, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\r\n 'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',\r\n className\r\n )}\r\n {...props}\r\n />\r\n ))\r\n)\r\nTableRow.displayName = 'TableRow'\r\n\r\n// TableHead Component\r\nconst TableHead = React.forwardRef<\r\n HTMLTableCellElement,\r\n React.ThHTMLAttributes<HTMLTableCellElement>\r\n>(({ className, ...props }, ref) => (\r\n <th\r\n ref={ref}\r\n className={cn(\r\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableHead.displayName = 'TableHead'\r\n\r\n// TableCell Component (com React.memo para performance)\r\nconst TableCell = React.memo(\r\n React.forwardRef<\r\n HTMLTableCellElement,\r\n React.TdHTMLAttributes<HTMLTableCellElement>\r\n >(({ className, ...props }, ref) => (\r\n <td\r\n ref={ref}\r\n className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}\r\n {...props}\r\n />\r\n ))\r\n)\r\nTableCell.displayName = 'TableCell'\r\n\r\n// TableCaption Component\r\nconst TableCaption = React.forwardRef<\r\n HTMLTableCaptionElement,\r\n React.HTMLAttributes<HTMLTableCaptionElement>\r\n>(({ className, ...props }, ref) => (\r\n <caption\r\n ref={ref}\r\n className={cn('mt-4 text-sm text-muted-foreground', className)}\r\n {...props}\r\n />\r\n))\r\nTableCaption.displayName = 'TableCaption'\r\n\r\nexport {\r\n Table,\r\n TableHeader,\r\n TableBody,\r\n TableFooter,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableCaption,\r\n}\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { flexRender } from '@tanstack/react-table'\r\nimport {\r\n useDataTable,\r\n useDataTableMeta,\r\n useDataTableDensity,\r\n} from './DataTableContext'\r\nimport type { DataTableContentProps } from './types'\r\nimport { DENSITY_CONFIG } from './types'\r\n\r\nimport {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableHeader,\r\n TableRow,\r\n} from './Table'\r\n\r\n// ============================================================================\r\n// CONTENT COMPONENT - Tabela principal com density support\r\n// ============================================================================\r\n//\r\n// Uso:\r\n// <DataTable data={data} columns={columns}>\r\n// <DataTable.Content stickyHeader stripedRows />\r\n// </DataTable>\r\n//\r\n// ============================================================================\r\n\r\nexport const DataTableContent = React.memo(function DataTableContent({\r\n stickyHeader = false,\r\n stripedRows = false,\r\n highlightOnHover = true,\r\n className,\r\n}: DataTableContentProps) {\r\n const table = useDataTable()\r\n const { isEmpty } = useDataTableMeta()\r\n const { density } = useDataTableDensity()\r\n\r\n const densityStyles = DENSITY_CONFIG[density]\r\n\r\n // Classes baseadas na density\r\n const cellClasses = cn(densityStyles.padding, densityStyles.fontSize)\r\n\r\n // Render table\r\n return (\r\n <div className={cn('rounded-md border overflow-auto', className)}>\r\n <Table>\r\n <TableHeader className={cn(stickyHeader && 'sticky top-0 z-10 bg-background')}>\r\n {table.getHeaderGroups().map((headerGroup) => (\r\n <TableRow key={headerGroup.id}>\r\n {headerGroup.headers.map((header) => (\r\n <TableHead\r\n key={header.id}\r\n className={cn(cellClasses, 'font-medium')}\r\n style={{ width: header.getSize() !== 150 ? header.getSize() : undefined }}\r\n >\r\n {header.isPlaceholder\r\n ? null\r\n : flexRender(\r\n header.column.columnDef.header,\r\n header.getContext()\r\n )}\r\n </TableHead>\r\n ))}\r\n </TableRow>\r\n ))}\r\n </TableHeader>\r\n <TableBody>\r\n {table.getRowModel().rows?.length ? (\r\n table.getRowModel().rows.map((row, index) => (\r\n <TableRow\r\n key={row.id}\r\n data-state={row.getIsSelected() && 'selected'}\r\n className={cn(\r\n highlightOnHover && 'hover:bg-muted/50',\r\n stripedRows && index % 2 === 1 && 'bg-muted/30'\r\n )}\r\n >\r\n {row.getVisibleCells().map((cell) => (\r\n <TableCell key={cell.id} className={cellClasses}>\r\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n ))\r\n ) : (\r\n <TableRow>\r\n <TableCell\r\n colSpan={table.getAllColumns().length}\r\n className=\"h-24 text-center text-muted-foreground\"\r\n >\r\n {isEmpty ? 'Nenhum resultado encontrado.' : 'Carregando...'}\r\n </TableCell>\r\n </TableRow>\r\n )}\r\n </TableBody>\r\n </Table>\r\n </div>\r\n )\r\n})\r\n\r\nDataTableContent.displayName = 'DataTable.Content'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport type { DataTableToolbarProps } from './types'\r\n\r\n// ============================================================================\r\n// TOOLBAR COMPONENT - Container para filtros e ações\r\n// ============================================================================\r\n\r\nexport const DataTableToolbar = React.memo(function DataTableToolbar({\r\n className,\r\n children,\r\n}: DataTableToolbarProps) {\r\n return (\r\n <div className={cn('flex items-center justify-between gap-2', className)}>\r\n {children}\r\n </div>\r\n )\r\n})\r\n","import * as React from 'react'\r\n\r\nexport function useDebounce<T>(value: T, delay: number = 300): T {\r\n const [debouncedValue, setDebouncedValue] = React.useState<T>(value)\r\n\r\n React.useEffect(() => {\r\n const handler = setTimeout(() => {\r\n setDebouncedValue(value)\r\n }, delay)\r\n\r\n return () => {\r\n clearTimeout(handler)\r\n }\r\n }, [value, delay])\r\n\r\n return debouncedValue\r\n}\r\n\r\nexport function useDebouncedCallback<T extends (...args: any[]) => any>(\r\n callback: T,\r\n delay: number = 300\r\n) {\r\n const callbackRef = React.useRef(callback)\r\n const timeoutRef = React.useRef<NodeJS.Timeout | null>(null)\r\n\r\n React.useEffect(() => {\r\n callbackRef.current = callback\r\n }, [callback])\r\n\r\n return React.useCallback(\r\n (...args: Parameters<T>) => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current)\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n callbackRef.current(...args)\r\n }, delay)\r\n },\r\n [delay]\r\n ) as T\r\n}\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useDataTableInstance } from './DataTableContext'\r\nimport { useDebounce } from './hooks/useDebounce'\r\nimport type { DataTableSearchProps } from './types'\r\nimport { Input } from '../Input'\r\n\r\n// ============================================================================\r\n// SEARCH COMPONENT - Busca com debounce\r\n// ============================================================================\r\n\r\nexport const DataTableSearch = React.memo(function DataTableSearch({\r\n column,\r\n placeholder = 'Buscar...',\r\n debounce = 300,\r\n onSearch,\r\n className,\r\n}: DataTableSearchProps) {\r\n const table = useDataTableInstance()\r\n const columnInstance = table.getColumn(column)\r\n\r\n const [value, setValue] = React.useState(\r\n (columnInstance?.getFilterValue() as string) ?? ''\r\n )\r\n const debouncedValue = useDebounce(value, debounce)\r\n\r\n // Sync debounced value with table filter\r\n React.useEffect(() => {\r\n columnInstance?.setFilterValue(debouncedValue)\r\n\r\n // Call external search callback if provided (server-side search)\r\n if (onSearch) {\r\n onSearch(debouncedValue)\r\n }\r\n }, [debouncedValue, columnInstance, onSearch])\r\n\r\n // Sync external filter changes back to input\r\n React.useEffect(() => {\r\n const filterValue = (columnInstance?.getFilterValue() as string) ?? ''\r\n if (filterValue !== value) {\r\n setValue(filterValue)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [columnInstance?.getFilterValue()])\r\n\r\n return (\r\n <Input\r\n placeholder={placeholder}\r\n value={value}\r\n onChange={(e) => setValue(e.target.value)}\r\n className={cn('h-9 w-[150px] lg:w-[250px]', className)}\r\n />\r\n )\r\n})\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useDataTableInstance } from './DataTableContext'\r\nimport type { DataTableFiltersProps, DataTableFilterProps } from './types'\r\nimport { Select, SelectItem } from '../Select'\r\n\r\n// ============================================================================\r\n// FILTERS CONTAINER - Agrupa múltiplos filtros\r\n// ============================================================================\r\n\r\nexport const DataTableFilters = React.memo(function DataTableFilters({\r\n onChange,\r\n className,\r\n children,\r\n}: DataTableFiltersProps) {\r\n const table = useDataTableInstance()\r\n const filters = table.getState().columnFilters\r\n const filtersRef = React.useRef(filters)\r\n\r\n // Sync filter state with external callback\r\n React.useEffect(() => {\r\n if (onChange && JSON.stringify(filters) !== JSON.stringify(filtersRef.current)) {\r\n filtersRef.current = filters\r\n onChange(filters)\r\n }\r\n }, [filters, onChange])\r\n\r\n return <div className={cn('flex gap-2', className)}>{children}</div>\r\n})\r\n\r\n// ============================================================================\r\n// FILTER COMPONENT - Filtro individual com select simples\r\n// ============================================================================\r\n\r\nexport const DataTableFilter = React.memo(function DataTableFilter({\r\n column: columnId,\r\n title,\r\n options,\r\n className,\r\n}: DataTableFilterProps) {\r\n const table = useDataTableInstance()\r\n const column = table.getColumn(columnId)\r\n\r\n const filterValue = (column?.getFilterValue() as string[]) ?? []\r\n const currentValue = filterValue.length > 0 ? filterValue[0] : 'all'\r\n\r\n const handleValueChange = React.useCallback(\r\n (value: string) => {\r\n if (value === 'all') {\r\n column?.setFilterValue(undefined)\r\n } else {\r\n column?.setFilterValue([value])\r\n }\r\n },\r\n [column]\r\n )\r\n\r\n return (\r\n <Select\r\n value={currentValue}\r\n onValueChange={handleValueChange}\r\n selectSize=\"sm\"\r\n placeholder={title}\r\n className={className}\r\n >\r\n <SelectItem value=\"all\">Todos</SelectItem>\r\n {options.map((option) => (\r\n <SelectItem key={option.value} value={option.value}>\r\n {option.label}\r\n </SelectItem>\r\n ))}\r\n </Select>\r\n )\r\n})\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useDataTable, useDataTablePagination, useDataTableMeta } from './DataTableContext'\r\nimport type { DataTablePaginationProps } from './types'\r\nimport { Button } from '../Button'\r\nimport { Select, SelectItem } from '../Select'\r\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react'\r\n\r\n// ============================================================================\r\n// PAGINATION COMPONENT - Client e Server-side pagination\r\n// ============================================================================\r\n//\r\n// Client-side (padrão):\r\n// <DataTable.Pagination />\r\n//\r\n// Server-side:\r\n// <DataTable.Pagination mode=\"server\" pageCount={meta.totalPages} />\r\n//\r\n// ============================================================================\r\n\r\nexport const DataTablePagination = React.memo(function DataTablePagination({\r\n mode = 'client',\r\n pageCount: externalPageCount,\r\n pageSizes = [10, 20, 30, 50],\r\n showPageSize = true,\r\n showPageInfo = true,\r\n showFirstLast = true,\r\n className,\r\n}: DataTablePaginationProps) {\r\n const table = useDataTable()\r\n const { selectedRowCount, totalRows } = useDataTableMeta()\r\n const {\r\n pageIndex,\r\n pageSize,\r\n pageCount: internalPageCount,\r\n canPreviousPage,\r\n canNextPage,\r\n setPageIndex,\r\n setPageSize,\r\n previousPage,\r\n nextPage,\r\n firstPage,\r\n lastPage,\r\n } = useDataTablePagination()\r\n\r\n // Usa pageCount externo para server-side, interno para client-side\r\n const pageCount = mode === 'server' && externalPageCount !== undefined\r\n ? externalPageCount\r\n : internalPageCount\r\n\r\n // Recalcula navegação para server-side\r\n const canGoPrevious = pageIndex > 0\r\n const canGoNext = pageIndex < pageCount - 1\r\n\r\n // Handlers\r\n const handlePageSizeChange = React.useCallback(\r\n (value: string) => {\r\n setPageSize(Number(value))\r\n },\r\n [setPageSize]\r\n )\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex flex-col-reverse items-center justify-between gap-4 sm:flex-row',\r\n className\r\n )}\r\n >\r\n {/* Info Section */}\r\n {showPageInfo && (\r\n <div className=\"flex-1 text-sm text-muted-foreground\">\r\n {selectedRowCount > 0 ? (\r\n <>\r\n {selectedRowCount} de {totalRows} linha(s) selecionada(s)\r\n </>\r\n ) : (\r\n <>\r\n Página {pageIndex + 1} de {pageCount}\r\n </>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div className=\"flex items-center gap-6\">\r\n {/* Page Size Selector */}\r\n {showPageSize && (\r\n <div className=\"flex items-center gap-2\">\r\n <p className=\"text-sm font-medium whitespace-nowrap\">Linhas por página</p>\r\n <Select\r\n value={`${pageSize}`}\r\n onValueChange={handlePageSizeChange}\r\n selectSize=\"sm\"\r\n >\r\n {pageSizes.map((size) => (\r\n <SelectItem key={size} value={`${size}`}>\r\n {size}\r\n </SelectItem>\r\n ))}\r\n </Select>\r\n </div>\r\n )}\r\n\r\n {/* Pagination Controls */}\r\n <div className=\"flex items-center gap-1\">\r\n {showFirstLast && (\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon-sm\"\r\n className=\"hidden h-8 w-8 p-0 lg:flex\"\r\n onClick={firstPage}\r\n disabled={!canGoPrevious}\r\n aria-label=\"Primeira página\"\r\n >\r\n <ChevronsLeft className=\"h-4 w-4\" />\r\n </Button>\r\n )}\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon-sm\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={previousPage}\r\n disabled={!canGoPrevious}\r\n aria-label=\"Página anterior\"\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n </Button>\r\n\r\n {/* Page indicator */}\r\n <span className=\"flex h-8 min-w-[4rem] items-center justify-center text-sm font-medium\">\r\n {pageIndex + 1} / {pageCount}\r\n </span>\r\n\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon-sm\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={nextPage}\r\n disabled={!canGoNext}\r\n aria-label=\"Próxima página\"\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </Button>\r\n {showFirstLast && (\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon-sm\"\r\n className=\"hidden h-8 w-8 p-0 lg:flex\"\r\n onClick={lastPage}\r\n disabled={!canGoNext}\r\n aria-label=\"Última página\"\r\n >\r\n <ChevronsRight className=\"h-4 w-4\" />\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n})\r\n\r\nDataTablePagination.displayName = 'DataTable.Pagination'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport type { DataTableEmptyStateProps } from './types'\r\n\r\n// ============================================================================\r\n// EMPTY STATE COMPONENT - Estado vazio customizável\r\n// ============================================================================\r\n\r\nexport const DataTableEmptyState = React.memo(function DataTableEmptyState({\r\n message = 'Nenhum resultado encontrado.',\r\n description,\r\n icon,\r\n action,\r\n className,\r\n}: DataTableEmptyStateProps) {\r\n const defaultIcon = (\r\n <svg\r\n className=\"h-10 w-10 text-muted-foreground\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={1.5}\r\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\r\n />\r\n </svg>\r\n )\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex min-h-[400px] flex-col items-center justify-center rounded-md border border-dashed p-8 text-center',\r\n className\r\n )}\r\n >\r\n <div className=\"mx-auto flex max-w-[420px] flex-col items-center justify-center text-center\">\r\n {icon ?? defaultIcon}\r\n <h3 className=\"mt-4 text-lg font-semibold\">{message}</h3>\r\n {description && (\r\n <p className=\"mb-4 mt-2 text-sm text-muted-foreground\">\r\n {description}\r\n </p>\r\n )}\r\n {action && <div className=\"mt-4\">{action}</div>}\r\n </div>\r\n </div>\r\n )\r\n})\r\n","import { cn } from '../../utils/cn'\nimport type { DataTableLoadingProps } from './types'\nimport { TableRow, TableCell } from './Table'\nimport { useDataTable } from './DataTableContext'\n\n// ============================================================================\n// LOADING COMPONENT - Skeleton overlay para DataTable\n// ============================================================================\n//\n// Uso:\n// <DataTable data={data} columns={columns}>\n// <DataTable.Loading visible={isLoading} />\n// <DataTable.Content />\n// </DataTable>\n//\n// ============================================================================\n\n/**\n * Skeleton row padrão\n */\nfunction SkeletonRow({ columns }: { columns: number }) {\n return (\n <TableRow className=\"animate-pulse\">\n {Array.from({ length: columns }).map((_, index) => (\n <TableCell key={index} className=\"py-4\">\n <div className=\"h-4 bg-muted rounded w-3/4\" />\n </TableCell>\n ))}\n </TableRow>\n )\n}\n\n/**\n * DataTable.Loading - Componente de loading state\n *\n * Renderiza um skeleton ou overlay quando visible=true.\n * Não renderiza nada quando visible=false.\n */\nexport function DataTableLoading({\n visible,\n skeleton,\n skeletonRows = 5,\n className,\n}: DataTableLoadingProps) {\n const table = useDataTable()\n const columnCount = table.getVisibleLeafColumns().length\n\n if (!visible) {\n return null\n }\n\n // Se tem skeleton customizado, usa ele\n if (skeleton) {\n return <div className={cn('w-full', className)}>{skeleton}</div>\n }\n\n // Skeleton padrão com número de rows configurável\n return (\n <div className={cn('w-full', className)}>\n <div className=\"rounded-md border\">\n <table className=\"w-full\">\n <tbody>\n {Array.from({ length: skeletonRows }).map((_, index) => (\n <SkeletonRow key={index} columns={columnCount || 4} />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )\n}\n\nDataTableLoading.displayName = 'DataTable.Loading'\n","import { cn } from '../../utils/cn'\r\nimport type { DataTableColumnHeaderProps } from './types'\r\nimport { Button } from '../Button'\r\nimport { ArrowDown, ArrowUp, ChevronsUpDown } from 'lucide-react'\r\n\r\n// ============================================================================\r\n// COLUMN HEADER COMPONENT - Header com sorting\r\n// ============================================================================\r\n\r\nexport function DataTableColumnHeader({\r\n column,\r\n title,\r\n className,\r\n}: DataTableColumnHeaderProps) {\r\n if (!column.getCanSort()) {\r\n return <div className={cn(className)}>{title}</div>\r\n }\r\n\r\n const handleSort = () => {\r\n const currentSort = column.getIsSorted()\r\n if (currentSort === 'asc') {\r\n column.toggleSorting(true) // Sort descending\r\n } else if (currentSort === 'desc') {\r\n column.clearSorting() // Clear sort\r\n } else {\r\n column.toggleSorting(false) // Sort ascending\r\n }\r\n }\r\n\r\n return (\r\n <div className={cn('flex items-center space-x-2', className)}>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n className=\"-ml-3 h-8 data-[state=open]:bg-accent\"\r\n onClick={handleSort}\r\n >\r\n <span>{title}</span>\r\n {column.getIsSorted() === 'desc' ? (\r\n <ArrowDown className=\"ml-2 h-4 w-4\" />\r\n ) : column.getIsSorted() === 'asc' ? (\r\n <ArrowUp className=\"ml-2 h-4 w-4\" />\r\n ) : (\r\n <ChevronsUpDown className=\"ml-2 h-4 w-4\" />\r\n )}\r\n </Button>\r\n </div>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\r\nimport { Check } from 'lucide-react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst checkboxVariants = cva(\r\n [\r\n 'peer shrink-0 rounded-sm border-2 ring-offset-background',\r\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\r\n 'disabled:cursor-not-allowed disabled:opacity-50',\r\n 'transition-all duration-200',\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n 'border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\r\n secondary:\r\n 'border-secondary data-[state=checked]:bg-secondary data-[state=checked]:text-secondary-foreground',\r\n outline:\r\n 'border-border data-[state=checked]:bg-background data-[state=checked]:text-primary data-[state=checked]:border-primary',\r\n },\r\n size: {\r\n sm: 'h-4 w-4',\r\n md: 'h-5 w-5',\r\n lg: 'h-6 w-6',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'md',\r\n },\r\n }\r\n)\r\n\r\nconst iconSizeMap = {\r\n sm: 'h-3 w-3',\r\n md: 'h-4 w-4',\r\n lg: 'h-5 w-5',\r\n} as const\r\n\r\nexport interface CheckboxProps\r\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\r\n VariantProps<typeof checkboxVariants> {}\r\n\r\nexport const Checkbox = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof CheckboxPrimitive.Root>,\r\n CheckboxProps\r\n >(({ className, variant, size = 'md', ...props }, ref) => {\r\n const iconSize = iconSizeMap[size || 'md']\r\n\r\n return (\r\n <CheckboxPrimitive.Root\r\n ref={ref}\r\n className={cn(checkboxVariants({ variant, size, className }))}\r\n {...props}\r\n >\r\n <CheckboxPrimitive.Indicator\r\n className={cn('flex items-center justify-center text-current')}\r\n >\r\n <Check className={iconSize} />\r\n </CheckboxPrimitive.Indicator>\r\n </CheckboxPrimitive.Root>\r\n )\r\n })\r\n)\r\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\r\n","import * as React from 'react'\nimport { cn } from '../../utils/cn'\nimport { useDataTable } from './DataTableContext'\nimport type { DataTableColumnVisibilityProps } from './types'\nimport { Button } from '../Button'\nimport { Checkbox } from '../Checkbox'\nimport { SlidersHorizontal } from 'lucide-react'\n\n// ============================================================================\n// COLUMN VISIBILITY COMPONENT - Toggle de colunas visíveis\n// ============================================================================\n//\n// Uso:\n// <DataTable.Toolbar>\n// <DataTable.ColumnVisibility />\n// </DataTable.Toolbar>\n//\n// ============================================================================\n\nexport function DataTableColumnVisibility({\n className,\n}: DataTableColumnVisibilityProps) {\n const table = useDataTable()\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n // Fecha dropdown ao clicar fora\n React.useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [open])\n\n // Pega apenas colunas que podem ser ocultadas\n const columns = table.getAllColumns().filter((column) => column.getCanHide())\n\n return (\n <div className={cn('relative', className)} ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8\"\n onClick={() => setOpen(!open)}\n aria-expanded={open}\n aria-haspopup=\"true\"\n >\n <SlidersHorizontal className=\"mr-2 h-4 w-4\" />\n Colunas\n </Button>\n\n {open && (\n <div\n className={cn(\n 'absolute right-0 top-full z-50 mt-1 w-48',\n 'rounded-md border bg-popover p-2 shadow-md',\n 'animate-in fade-in-0 zoom-in-95'\n )}\n >\n <div className=\"px-2 py-1.5 text-sm font-semibold\">\n Alternar colunas\n </div>\n <div className=\"h-px bg-border my-1\" />\n <div className=\"max-h-60 overflow-auto\">\n {columns.map((column) => {\n const header = column.columnDef.header\n const title = typeof header === 'string'\n ? header\n : column.id\n\n return (\n <label\n key={column.id}\n className={cn(\n 'flex items-center gap-2 px-2 py-1.5 rounded-sm cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground',\n 'text-sm'\n )}\n >\n <Checkbox\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n />\n <span className=\"capitalize\">{title}</span>\n </label>\n )\n })}\n </div>\n </div>\n )}\n </div>\n )\n}\n\nDataTableColumnVisibility.displayName = 'DataTable.ColumnVisibility'\n","import * as React from 'react'\nimport { cn } from '../../utils/cn'\nimport { useDataTableDensity } from './DataTableContext'\nimport type { DataTableDensityToggleProps, DataTableDensity } from './types'\nimport { Button } from '../Button'\nimport { LayoutList, Rows3, Rows4 } from 'lucide-react'\n\n// ============================================================================\n// DENSITY TOGGLE COMPONENT - Compact/Default/Comfortable\n// ============================================================================\n//\n// Uso:\n// <DataTable.Toolbar>\n// <DataTable.DensityToggle />\n// </DataTable.Toolbar>\n//\n// ============================================================================\n\nconst densityOptions: Array<{\n value: DataTableDensity\n label: string\n icon: React.ElementType\n}> = [\n { value: 'compact', label: 'Compacto', icon: Rows4 },\n { value: 'default', label: 'Padrão', icon: Rows3 },\n { value: 'comfortable', label: 'Confortável', icon: LayoutList },\n]\n\nexport function DataTableDensityToggle({\n className,\n}: DataTableDensityToggleProps) {\n const { density, setDensity } = useDataTableDensity()\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n // Fecha dropdown ao clicar fora\n React.useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [open])\n\n const currentOption = densityOptions.find((opt) => opt.value === density) ?? densityOptions[1]\n const Icon = currentOption.icon\n\n return (\n <div className={cn('relative', className)} ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8\"\n onClick={() => setOpen(!open)}\n aria-expanded={open}\n aria-haspopup=\"true\"\n >\n <Icon className=\"mr-2 h-4 w-4\" />\n Densidade\n </Button>\n\n {open && (\n <div\n className={cn(\n 'absolute right-0 top-full z-50 mt-1 w-40',\n 'rounded-md border bg-popover p-1 shadow-md',\n 'animate-in fade-in-0 zoom-in-95'\n )}\n >\n {densityOptions.map((option) => {\n const OptionIcon = option.icon\n const isSelected = density === option.value\n\n return (\n <button\n key={option.value}\n className={cn(\n 'flex w-full items-center gap-2 px-2 py-1.5 rounded-sm cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground',\n 'text-sm text-left',\n isSelected && 'bg-accent'\n )}\n onClick={() => {\n setDensity(option.value)\n setOpen(false)\n }}\n >\n <OptionIcon className=\"h-4 w-4\" />\n <span>{option.label}</span>\n {isSelected && (\n <span className=\"ml-auto text-xs text-muted-foreground\">✓</span>\n )}\n </button>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n\nDataTableDensityToggle.displayName = 'DataTable.DensityToggle'\n","import { cn } from '../../utils/cn'\nimport { useDataTableSelection, useDataTableMeta, useDataTable } from './DataTableContext'\nimport type { DataTableBulkActionsProps } from './types'\nimport { Button } from '../Button'\nimport { X } from 'lucide-react'\n\n// ============================================================================\n// BULK ACTIONS COMPONENT - Barra de ações quando rows selecionadas\n// ============================================================================\n//\n// Uso:\n// <DataTable.BulkActions>\n// {(selectedRows) => (\n// <>\n// <span>{selectedRows.length} selecionados</span>\n// <Button onClick={() => handleDelete(selectedRows)}>Deletar</Button>\n// </>\n// )}\n// </DataTable.BulkActions>\n//\n// ============================================================================\n\nexport function DataTableBulkActions<TData extends Record<string, unknown>>({\n children,\n className,\n}: DataTableBulkActionsProps<TData>) {\n const table = useDataTable<TData>()\n const { selectedRowCount } = useDataTableMeta()\n const selectedRows = useDataTableSelection<TData>()\n\n // Não renderiza se não há seleção\n if (selectedRowCount === 0) {\n return null\n }\n\n const handleClearSelection = () => {\n table.toggleAllRowsSelected(false)\n }\n\n return (\n <div\n className={cn(\n 'flex items-center gap-3 rounded-lg border bg-muted/50 p-3',\n 'animate-in fade-in-0 slide-in-from-top-2',\n className\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">\n {selectedRowCount} {selectedRowCount === 1 ? 'item selecionado' : 'itens selecionados'}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2\"\n onClick={handleClearSelection}\n >\n <X className=\"h-4 w-4 mr-1\" />\n Limpar\n </Button>\n </div>\n\n <div className=\"h-5 w-px bg-border\" />\n\n <div className=\"flex items-center gap-2\">\n {children(selectedRows)}\n </div>\n </div>\n )\n}\n\nDataTableBulkActions.displayName = 'DataTable.BulkActions'\n","import * as React from 'react'\nimport { cn } from '../../utils/cn'\nimport { useDataTable } from './DataTableContext'\nimport type { DataTableExportProps, DataTableExportFormat } from './types'\nimport { Button } from '../Button'\nimport { Download, FileSpreadsheet, FileText } from 'lucide-react'\n\n// ============================================================================\n// EXPORT COMPONENT - Exportar dados para CSV/XLSX\n// ============================================================================\n//\n// Uso:\n// <DataTable.Toolbar>\n// <DataTable.Export formats={['csv']} filename=\"relatorio\" />\n// </DataTable.Toolbar>\n//\n// ============================================================================\n\nconst formatConfig: Record<DataTableExportFormat, {\n label: string\n icon: React.ElementType\n mimeType: string\n extension: string\n}> = {\n csv: {\n label: 'CSV',\n icon: FileText,\n mimeType: 'text/csv',\n extension: 'csv',\n },\n xlsx: {\n label: 'Excel',\n icon: FileSpreadsheet,\n mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n extension: 'xlsx',\n },\n pdf: {\n label: 'PDF',\n icon: FileText,\n mimeType: 'application/pdf',\n extension: 'pdf',\n },\n}\n\n/**\n * Converte valor para string segura para CSV\n */\nfunction escapeCSV(value: unknown): string {\n if (value === null || value === undefined) return ''\n const str = String(value)\n // Escapa aspas e envolve com aspas se necessário\n if (str.includes(',') || str.includes('\"') || str.includes('\\n')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`\n }\n return str\n}\n\n/**\n * Acessa propriedade aninhada (ex: \"user.name\")\n */\nfunction getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n return path.split('.').reduce<unknown>((current, key) => {\n if (current && typeof current === 'object' && key in (current as Record<string, unknown>)) {\n return (current as Record<string, unknown>)[key]\n }\n return undefined\n }, obj)\n}\n\n/**\n * Gera CSV a partir dos dados da tabela\n */\nfunction generateCSV(\n headers: string[],\n rows: Record<string, unknown>[],\n accessors: string[]\n): string {\n const headerLine = headers.map(escapeCSV).join(',')\n const dataLines = rows.map((row) =>\n accessors.map((accessor) => {\n const value = getNestedValue(row, accessor)\n return escapeCSV(value)\n }).join(',')\n )\n return [headerLine, ...dataLines].join('\\n')\n}\n\n/**\n * Download arquivo\n */\nfunction downloadFile(content: string, filename: string, mimeType: string) {\n const blob = new Blob(['\\ufeff' + content], { type: `${mimeType};charset=utf-8` }) // BOM para Excel\n const url = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = url\n link.download = filename\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n URL.revokeObjectURL(url)\n}\n\nexport function DataTableExport({\n formats = ['csv'],\n filename = 'export',\n className,\n}: DataTableExportProps) {\n const table = useDataTable()\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n // Fecha dropdown ao clicar fora\n React.useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [open])\n\n const handleExport = React.useCallback((format: DataTableExportFormat) => {\n const visibleColumns = table.getVisibleLeafColumns()\n const rows = table.getFilteredRowModel().rows\n\n // Extrai headers e accessors\n const headers: string[] = []\n const accessors: string[] = []\n\n visibleColumns.forEach((column) => {\n const header = column.columnDef.header\n const headerText = typeof header === 'string' ? header : column.id\n\n // Pula colunas sem accessor (como select, actions)\n // Usa type assertion via unknown para acessar propriedades dinâmicas\n const columnDef = column.columnDef as unknown as Record<string, unknown>\n if (column.accessorFn || columnDef.accessorKey) {\n headers.push(headerText)\n accessors.push((columnDef.accessorKey as string) || column.id)\n }\n })\n\n // Extrai dados como Record<string, unknown>[]\n const data = rows.map((row) => row.original as Record<string, unknown>)\n\n if (format === 'csv') {\n const csv = generateCSV(headers, data, accessors)\n const config = formatConfig[format]\n downloadFile(csv, `${filename}.${config.extension}`, config.mimeType)\n } else if (format === 'xlsx') {\n // Para XLSX, seria necessário uma lib como xlsx\n console.warn('XLSX export requires xlsx library. Falling back to CSV.')\n const csv = generateCSV(headers, data, accessors)\n downloadFile(csv, `${filename}.csv`, 'text/csv')\n } else if (format === 'pdf') {\n console.warn('PDF export not implemented yet.')\n }\n\n setOpen(false)\n }, [table, filename])\n\n // Se só tem um formato, renderiza botão direto\n if (formats.length === 1) {\n const format = formats[0]\n const config = formatConfig[format]\n const Icon = config.icon\n\n return (\n <Button\n variant=\"outline\"\n size=\"sm\"\n className={cn('h-8', className)}\n onClick={() => handleExport(format)}\n >\n <Icon className=\"mr-2 h-4 w-4\" />\n Exportar {config.label}\n </Button>\n )\n }\n\n // Múltiplos formatos: dropdown\n return (\n <div className={cn('relative', className)} ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8\"\n onClick={() => setOpen(!open)}\n aria-expanded={open}\n aria-haspopup=\"true\"\n >\n <Download className=\"mr-2 h-4 w-4\" />\n Exportar\n </Button>\n\n {open && (\n <div\n className={cn(\n 'absolute right-0 top-full z-50 mt-1 w-36',\n 'rounded-md border bg-popover p-1 shadow-md',\n 'animate-in fade-in-0 zoom-in-95'\n )}\n >\n {formats.map((format) => {\n const config = formatConfig[format]\n const Icon = config.icon\n\n return (\n <button\n key={format}\n className={cn(\n 'flex w-full items-center gap-2 px-2 py-1.5 rounded-sm cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground',\n 'text-sm text-left'\n )}\n onClick={() => handleExport(format)}\n >\n <Icon className=\"h-4 w-4\" />\n <span>{config.label}</span>\n </button>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n\nDataTableExport.displayName = 'DataTable.Export'\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport type { DataTableTabsProps } from './types'\r\n\r\n// ============================================================================\r\n// TABS COMPONENT - Tabs de filtro rápido acima da tabela\r\n// ============================================================================\r\n//\r\n// Uso:\r\n// <DataTable data={filteredData} columns={columns}>\r\n// <DataTable.Tabs\r\n// tabs={[\r\n// { value: 'all', label: 'Todas', count: 85 },\r\n// { value: 'active', label: 'Ativas', count: 24 },\r\n// { value: 'inactive', label: 'Inativas', count: 12 },\r\n// ]}\r\n// value={activeTab}\r\n// onValueChange={setActiveTab}\r\n// />\r\n// <DataTable.Toolbar>...</DataTable.Toolbar>\r\n// <DataTable.Content />\r\n// </DataTable>\r\n//\r\n// Nota: O DataTable.Tabs NÃO filtra os dados automaticamente.\r\n// Você deve filtrar os dados externamente e passar para o DataTable.\r\n// Isso permite flexibilidade para server-side filtering.\r\n//\r\n// ============================================================================\r\n\r\nexport function DataTableTabs({\r\n tabs,\r\n value,\r\n defaultValue,\r\n onValueChange,\r\n className,\r\n}: DataTableTabsProps) {\r\n // Estado interno para modo uncontrolled\r\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? tabs[0]?.value)\r\n\r\n // Usa valor controlado se fornecido, senão usa interno\r\n const activeValue = value ?? internalValue\r\n\r\n const handleTabClick = (tabValue: string) => {\r\n if (value === undefined) {\r\n // Modo uncontrolled\r\n setInternalValue(tabValue)\r\n }\r\n onValueChange?.(tabValue)\r\n }\r\n\r\n return (\r\n <div\r\n className={cn('flex items-center gap-1 border-b', className)}\r\n role=\"tablist\"\r\n aria-label=\"Filtros\"\r\n >\r\n {tabs.map((tab) => {\r\n const isActive = activeValue === tab.value\r\n\r\n return (\r\n <button\r\n key={tab.value}\r\n role=\"tab\"\r\n aria-selected={isActive}\r\n aria-controls={`tabpanel-${tab.value}`}\r\n className={cn(\r\n 'relative px-4 py-2.5 text-sm font-medium transition-colors',\r\n 'hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\r\n isActive\r\n ? 'text-primary'\r\n : 'text-muted-foreground hover:text-foreground/80'\r\n )}\r\n onClick={() => handleTabClick(tab.value)}\r\n >\r\n <span className=\"flex items-center gap-2\">\r\n {tab.label}\r\n {tab.count !== undefined && (\r\n <span\r\n className={cn(\r\n 'inline-flex items-center justify-center min-w-[1.25rem] h-5 px-1.5 rounded text-xs font-medium',\r\n isActive\r\n ? 'bg-primary/10 text-primary'\r\n : 'bg-muted text-muted-foreground'\r\n )}\r\n >\r\n {tab.count}\r\n </span>\r\n )}\r\n </span>\r\n\r\n {/* Indicador ativo */}\r\n {isActive && (\r\n <span\r\n className=\"absolute bottom-0 left-0 right-0 h-0.5 bg-primary\"\r\n aria-hidden=\"true\"\r\n />\r\n )}\r\n </button>\r\n )\r\n })}\r\n </div>\r\n )\r\n}\r\n\r\nDataTableTabs.displayName = 'DataTable.Tabs'\r\n","// ============================================================================\r\n// COMPOUND COMPONENT PATTERN - Enterprise DataTable\r\n// ============================================================================\r\n//\r\n// Uso com Composição Explícita:\r\n//\r\n// <DataTable data={data} columns={columns}>\r\n// <DataTable.Loading visible={isLoading} />\r\n// <DataTable.Toolbar>\r\n// <DataTable.Search placeholder=\"Buscar...\" />\r\n// <DataTable.Filters>\r\n// <DataTable.Filter column=\"status\" options={statusOptions} />\r\n// </DataTable.Filters>\r\n// <DataTable.ColumnVisibility />\r\n// <DataTable.DensityToggle />\r\n// <DataTable.Export formats={['csv']} />\r\n// </DataTable.Toolbar>\r\n// <DataTable.BulkActions>\r\n// {(selectedRows) => <Button>Deletar {selectedRows.length}</Button>}\r\n// </DataTable.BulkActions>\r\n// <DataTable.Content />\r\n// <DataTable.Pagination mode=\"server\" pageCount={10} />\r\n// </DataTable>\r\n//\r\n// ============================================================================\r\n\r\nimport { DataTableRoot } from './DataTable'\r\nimport { DataTableContent } from './DataTableContent'\r\nimport { DataTableToolbar } from './DataTableToolbar'\r\nimport { DataTableSearch } from './DataTableSearch'\r\nimport { DataTableFilters, DataTableFilter } from './DataTableFilters'\r\nimport { DataTablePagination } from './DataTablePagination'\r\nimport { DataTableEmptyState } from './DataTableEmptyState'\r\nimport { DataTableLoading } from './DataTableLoading'\r\nimport { DataTableColumnHeader } from './DataTableColumnHeader'\r\nimport { DataTableColumnVisibility } from './DataTableColumnVisibility'\r\nimport { DataTableDensityToggle } from './DataTableDensityToggle'\r\nimport { DataTableBulkActions } from './DataTableBulkActions'\r\nimport { DataTableExport } from './DataTableExport'\r\nimport { DataTableTabs } from './DataTableTabs'\r\n\r\n// ============================================================================\r\n// COMPOUND COMPONENT - Use como: <DataTable><DataTable.Content /></DataTable>\r\n// ============================================================================\r\n\r\nexport const DataTable = Object.assign(DataTableRoot, {\r\n // Estado\r\n Loading: DataTableLoading,\r\n EmptyState: DataTableEmptyState,\r\n\r\n // Layout\r\n Tabs: DataTableTabs,\r\n Toolbar: DataTableToolbar,\r\n Content: DataTableContent,\r\n\r\n // Search & Filter\r\n Search: DataTableSearch,\r\n Filters: DataTableFilters,\r\n Filter: DataTableFilter,\r\n\r\n // Pagination\r\n Pagination: DataTablePagination,\r\n\r\n // Actions\r\n BulkActions: DataTableBulkActions,\r\n\r\n // Preferences\r\n ColumnVisibility: DataTableColumnVisibility,\r\n DensityToggle: DataTableDensityToggle,\r\n Export: DataTableExport,\r\n\r\n // Column utilities (para uso em column definitions)\r\n ColumnHeader: DataTableColumnHeader,\r\n})\r\n\r\n// ============================================================================\r\n// PRIMITIVE TABLE COMPONENTS - Base table components\r\n// ============================================================================\r\n\r\nexport {\r\n Table,\r\n TableHeader,\r\n TableBody,\r\n TableFooter,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableCaption,\r\n} from './Table'\r\n\r\n// ============================================================================\r\n// CONTEXT & HOOKS - Acesso aos dados da tabela\r\n// ============================================================================\r\n\r\nexport {\r\n // Hooks principais\r\n useDataTable,\r\n useDataTableMeta,\r\n useDataTableDensity,\r\n\r\n // Hooks especializados\r\n useDataTableLoading,\r\n useDataTableEmpty,\r\n useDataTableSelection,\r\n useDataTablePagination,\r\n useDataTableSorting,\r\n useDataTableColumnVisibility,\r\n\r\n // Aliases para compatibilidade\r\n useDataTableInstance,\r\n useDataTableState,\r\n} from './DataTableContext'\r\n\r\n// Re-exports from @tanstack/react-table\r\nexport { flexRender } from './hooks/useDataTable'\r\nexport type { ColumnDef } from '@tanstack/react-table'\r\n\r\n// Utilities\r\nexport { useDebounce, useDebouncedCallback } from './hooks/useDebounce'\r\n\r\n// ============================================================================\r\n// TYPES\r\n// ============================================================================\r\n\r\nexport type {\r\n // Root props\r\n DataTableProps,\r\n\r\n // State types\r\n DataTableState,\r\n DataTableMeta,\r\n DataTableDensity,\r\n\r\n // Component props\r\n DataTableContentProps,\r\n DataTableToolbarProps,\r\n DataTableSearchProps,\r\n DataTableFiltersProps,\r\n DataTableFilterProps,\r\n DataTableFilterOption,\r\n DataTablePaginationProps,\r\n DataTablePaginationMode,\r\n DataTableEmptyStateProps,\r\n DataTableLoadingProps,\r\n DataTableColumnHeaderProps,\r\n DataTableBulkActionsProps,\r\n DataTableColumnVisibilityProps,\r\n DataTableDensityToggleProps,\r\n DataTableExportProps,\r\n DataTableExportFormat,\r\n DataTableRowActionsProps,\r\n DataTableTabsProps,\r\n DataTableTab,\r\n\r\n // Context types\r\n DataTableContextValue,\r\n\r\n // Hook config types\r\n UseDataTableConfig,\r\n\r\n // Pagination types (para integração com API)\r\n PaginationMeta,\r\n PaginatedResponse,\r\n PaginationParams,\r\n} from './types'\r\n\r\n// Constante exportada separadamente (não é tipo)\r\nexport { DENSITY_CONFIG } from './types'\r\n","import * as React from 'react'\r\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\r\nimport { X } from 'lucide-react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\n// Primitivos básicos\r\nconst Dialog = DialogPrimitive.Root\r\nconst DialogTrigger = DialogPrimitive.Trigger\r\nconst DialogPortal = DialogPrimitive.Portal\r\nconst DialogClose = DialogPrimitive.Close\r\n\r\n// Overlay com animações\r\nconst DialogOverlay = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n >(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n 'fixed inset-0 z-50 bg-black/80',\r\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\r\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\r\n className\r\n )}\r\n {...props}\r\n />\r\n ))\r\n)\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\r\n\r\n// Variantes do DialogContent\r\nconst dialogContentVariants = cva(\r\n [\r\n 'fixed left-[50%] top-[50%] z-50',\r\n 'translate-x-[-50%] translate-y-[-50%]',\r\n 'grid w-full gap-4',\r\n 'border bg-background p-6 shadow-lg',\r\n 'duration-200',\r\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\r\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\r\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\r\n 'data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]',\r\n 'data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',\r\n 'sm:rounded-lg',\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n sm: 'max-w-sm',\r\n md: 'max-w-md',\r\n lg: 'max-w-lg',\r\n xl: 'max-w-xl',\r\n '2xl': 'max-w-2xl',\r\n '3xl': 'max-w-3xl',\r\n '4xl': 'max-w-4xl',\r\n full: 'max-w-[95vw] max-h-[95vh]',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'lg',\r\n },\r\n }\r\n)\r\n\r\nexport interface DialogContentProps\r\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\r\n VariantProps<typeof dialogContentVariants> {\r\n showCloseButton?: boolean\r\n}\r\n\r\nconst DialogContent = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n DialogContentProps\r\n >(({ className, children, showCloseButton = true, size, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(dialogContentVariants({ size, className }))}\r\n {...props}\r\n >\r\n {children}\r\n {showCloseButton && (\r\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\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Fechar</span>\r\n </DialogPrimitive.Close>\r\n )}\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n ))\r\n)\r\nDialogContent.displayName = DialogPrimitive.Content.displayName\r\n\r\n// DialogHeader\r\nconst DialogHeader = React.memo<React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }) => (\r\n <div\r\n className={cn(\r\n 'flex flex-col space-y-1.5 text-center sm:text-left',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nDialogHeader.displayName = 'DialogHeader'\r\n\r\n// DialogFooter\r\nconst DialogFooter = React.memo<React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }) => (\r\n <div\r\n className={cn(\r\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nDialogFooter.displayName = 'DialogFooter'\r\n\r\n// DialogTitle\r\nconst DialogTitle = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n >(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n 'text-2xl font-semibold leading-none tracking-tight',\r\n className\r\n )}\r\n {...props}\r\n />\r\n ))\r\n)\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName\r\n\r\n// DialogDescription\r\nconst DialogDescription = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n >(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn('text-[0.920rem] text-muted-foreground', className)}\r\n {...props}\r\n />\r\n ))\r\n)\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName\r\n\r\n// DialogBody - novo componente para o conteúdo do dialog\r\nconst DialogBody = React.memo<React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }) => (\r\n <div className={cn('flex-1 overflow-y-auto py-2', className)} {...props} />\r\n )\r\n)\r\nDialogBody.displayName = 'DialogBody'\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n DialogBody,\r\n}\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport interface RippleEffectProps {\r\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl'\r\n color?: 'primary' | 'secondary' | 'accent' | 'muted'\r\n intensity?: 'light' | 'medium' | 'strong'\r\n rings?: number\r\n position?:\r\n | 'center'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-right'\r\n | 'top-center'\r\n | 'bottom-center'\r\n className?: string\r\n}\r\n\r\n// Configurações memoizadas\r\nconst SIZE_CONFIG = {\r\n sm: { base: 8, increment: 2 },\r\n md: { base: 12, increment: 4 },\r\n lg: { base: 16, increment: 6 },\r\n xl: { base: 28, increment: 14 },\r\n xxl: { base: 36, increment: 16 },\r\n} as const\r\n\r\nconst INTENSITY_CONFIG = {\r\n light: [4, 6, 8, 10, 12],\r\n medium: [6, 8, 10, 12, 16],\r\n strong: [8, 12, 16, 20, 25],\r\n} as const\r\n\r\nconst POSITION_CONFIG = {\r\n center: 'items-center justify-center',\r\n 'top-left': 'items-start justify-start',\r\n 'top-right': 'items-start justify-end',\r\n 'bottom-left': 'items-end justify-start',\r\n 'bottom-right': 'items-end justify-end',\r\n 'top-center': 'items-start justify-center',\r\n 'bottom-center': 'items-end justify-center',\r\n} as const\r\n\r\n// Mapa de cores para classes Tailwind\r\nconst COLOR_MAP = {\r\n primary: 'border-primary',\r\n secondary: 'border-secondary',\r\n accent: 'border-accent',\r\n muted: 'border-muted',\r\n} as const\r\n\r\n// Componente interno memoizado para cada anel\r\nconst RippleRing = React.memo<{\r\n size: number\r\n color: string\r\n opacity: number\r\n}>(({ size, color, opacity }) => {\r\n const borderColorClass = COLOR_MAP[color as keyof typeof COLOR_MAP] || COLOR_MAP.primary\r\n\r\n return (\r\n <div\r\n className={cn('absolute rounded-full', borderColorClass)}\r\n style={{\r\n width: `${size * 4}px`,\r\n height: `${size * 4}px`,\r\n borderWidth: '1px',\r\n opacity: opacity / 100,\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n }}\r\n />\r\n )\r\n})\r\nRippleRing.displayName = 'RippleRing'\r\n\r\nexport const RippleEffect = React.memo<RippleEffectProps>(\r\n ({\r\n size = 'md',\r\n color = 'primary',\r\n intensity = 'medium',\r\n rings = 5,\r\n position = 'center',\r\n className,\r\n }) => {\r\n const { base, increment } = SIZE_CONFIG[size]\r\n const opacities = INTENSITY_CONFIG[intensity]\r\n const positionClasses = POSITION_CONFIG[position]\r\n\r\n // Memoizar os anéis para evitar recriação\r\n const rippleRings = React.useMemo(\r\n () =>\r\n Array.from({ length: rings }).map((_, index) => {\r\n const ringSize = base + increment * (rings - index - 1)\r\n const opacity = opacities[index] || opacities[opacities.length - 1]\r\n\r\n return (\r\n <RippleRing\r\n key={index}\r\n size={ringSize}\r\n color={color}\r\n opacity={opacity}\r\n />\r\n )\r\n }),\r\n [base, increment, rings, opacities, color]\r\n )\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'absolute inset-0 flex pointer-events-none',\r\n positionClasses,\r\n className\r\n )}\r\n >\r\n <div className=\"relative\">{rippleRings}</div>\r\n </div>\r\n )\r\n }\r\n)\r\nRippleEffect.displayName = 'RippleEffect'\r\n\r\nexport interface RippleWrapperProps {\r\n children: React.ReactNode\r\n rippleProps?: RippleEffectProps\r\n className?: string\r\n}\r\n\r\nexport const RippleWrapper = React.memo<RippleWrapperProps>(\r\n ({ children, rippleProps, className }) => {\r\n return (\r\n <div className={cn('relative', className)}>\r\n {rippleProps && <RippleEffect {...rippleProps} />}\r\n <div className=\"relative z-10\">{children}</div>\r\n </div>\r\n )\r\n }\r\n)\r\nRippleWrapper.displayName = 'RippleWrapper'\r\n\r\nexport interface RippleBackgroundProps extends RippleEffectProps {\r\n containerClassName?: string\r\n}\r\n\r\nexport const RippleBackground = React.memo<RippleBackgroundProps>(\r\n ({ containerClassName, ...rippleProps }) => {\r\n return (\r\n <div\r\n className={cn(\r\n 'absolute inset-0 overflow-hidden pointer-events-none',\r\n containerClassName\r\n )}\r\n >\r\n <RippleEffect {...rippleProps} />\r\n </div>\r\n )\r\n }\r\n)\r\nRippleBackground.displayName = 'RippleBackground'\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\nimport { DialogHeader } from './Dialog'\r\nimport {\r\n RippleBackground,\r\n RippleWrapper,\r\n type RippleEffectProps,\r\n} from '../RippleEffect'\r\n\r\n// Variantes do ícone\r\nconst iconWrapperVariants = cva(\r\n 'p-3 rounded-2xl shadow-lg transition-all duration-200',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'bg-primary shadow-primary/25',\r\n secondary: 'bg-secondary shadow-secondary/25',\r\n accent: 'bg-accent shadow-accent/25',\r\n destructive: 'bg-red-600 shadow-red-600/25',\r\n success: 'bg-green-600 shadow-green-600/25',\r\n },\r\n size: {\r\n sm: 'p-2',\r\n md: 'p-3',\r\n lg: 'p-4',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'md',\r\n },\r\n }\r\n)\r\n\r\nconst iconVariants = cva('text-white', {\r\n variants: {\r\n size: {\r\n sm: 'h-4 w-4',\r\n md: 'h-5 w-5',\r\n lg: 'h-6 w-6',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n },\r\n})\r\n\r\n// Status indicator\r\nconst statusIndicatorVariants = cva(\r\n 'absolute -top-1 -right-0 w-4 h-4 rounded-full border-2 border-white/70 shadow-sm z-20',\r\n {\r\n variants: {\r\n status: {\r\n active: 'bg-green-500',\r\n inactive: 'bg-slate-500',\r\n warning: 'bg-yellow-500',\r\n error: 'bg-red-500',\r\n },\r\n },\r\n defaultVariants: {\r\n status: 'active',\r\n },\r\n }\r\n)\r\n\r\nexport interface DialogWrapperProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof iconWrapperVariants> {\r\n children?: React.ReactNode\r\n icon?: React.ElementType<{ className?: string }>\r\n status?: 'active' | 'inactive' | 'warning' | 'error' | null\r\n showRipple?: boolean\r\n rippleProps?: Partial<RippleEffectProps>\r\n iconSize?: 'sm' | 'md' | 'lg'\r\n}\r\n\r\nexport const DialogWrapper = React.memo<DialogWrapperProps>(\r\n ({\r\n children,\r\n className,\r\n icon: Icon,\r\n status,\r\n variant = 'default',\r\n size = 'md',\r\n iconSize = 'md',\r\n showRipple = true,\r\n rippleProps,\r\n ...props\r\n }) => {\r\n // Props padrão do ripple baseado na variante\r\n const defaultRippleProps: RippleEffectProps = React.useMemo(\r\n () => ({\r\n size: size === 'sm' ? 'md' : size === 'lg' ? 'xl' : 'lg',\r\n color:\r\n variant === 'secondary'\r\n ? 'secondary'\r\n : variant === 'accent'\r\n ? 'accent'\r\n : 'primary',\r\n intensity: 'light',\r\n rings: 3,\r\n ...rippleProps,\r\n }),\r\n [size, variant, rippleProps]\r\n )\r\n\r\n const backgroundRippleProps: RippleEffectProps = React.useMemo(\r\n () => ({\r\n position: 'top-right',\r\n size: 'xl',\r\n color:\r\n variant === 'secondary'\r\n ? 'secondary'\r\n : variant === 'accent'\r\n ? 'accent'\r\n : 'primary',\r\n intensity: 'light',\r\n rings: 5,\r\n }),\r\n [variant]\r\n )\r\n\r\n // Sem ícone: apenas background ripple\r\n if (!Icon) {\r\n return (\r\n <DialogHeader\r\n className={cn('flex flex-col justify-between px-0', className)}\r\n {...props}\r\n >\r\n {showRipple && <RippleBackground {...backgroundRippleProps} />}\r\n <div className=\"flex items-center gap-3 w-full\">\r\n <div className=\"w-full\">{children}</div>\r\n </div>\r\n </DialogHeader>\r\n )\r\n }\r\n\r\n // Com ícone: ripple wrapper + background\r\n return (\r\n <DialogHeader\r\n className={cn('flex flex-col justify-between px-0 pb-3', className)}\r\n {...props}\r\n >\r\n {showRipple && <RippleBackground {...backgroundRippleProps} />}\r\n <div className=\"flex items-center gap-2 w-full\">\r\n <RippleWrapper\r\n rippleProps={showRipple ? defaultRippleProps : undefined}\r\n >\r\n <div className={cn(iconWrapperVariants({ variant, size }), 'mr-2')}>\r\n <Icon className={iconVariants({ size: iconSize })} />\r\n </div>\r\n {status && (\r\n <div className={statusIndicatorVariants({ status })} />\r\n )}\r\n </RippleWrapper>\r\n <div className=\"w-full\">{children}</div>\r\n </div>\r\n </DialogHeader>\r\n )\r\n }\r\n)\r\nDialogWrapper.displayName = 'DialogWrapper'\r\n","import * as React from 'react'\r\nimport { Toaster as Sonner, toast as sonnerToast } from 'sonner'\r\nimport { AlertTriangle, CheckCircle2, Info, X, XCircle } from 'lucide-react'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport type ToasterProps = React.ComponentProps<typeof Sonner>\r\n\r\nconst toastVariants = {\r\n default: {\r\n bg: 'bg-card',\r\n border: 'border-border',\r\n barColor: 'bg-muted-foreground',\r\n icon: <Info className=\"h-5 w-5 text-muted-foreground\" />,\r\n textColor: 'text-foreground',\r\n },\r\n success: {\r\n bg: 'bg-card',\r\n border: 'border-green-300 dark:border-green-700',\r\n barColor: 'bg-green-500',\r\n icon: <CheckCircle2 className=\"h-5 w-5 text-green-600 dark:text-green-500\" />,\r\n textColor: 'text-foreground',\r\n },\r\n error: {\r\n bg: 'bg-card',\r\n border: 'border-red-300 dark:border-red-700',\r\n barColor: 'bg-red-500',\r\n icon: <XCircle className=\"h-5 w-5 text-red-600 dark:text-red-500\" />,\r\n textColor: 'text-foreground',\r\n },\r\n warning: {\r\n bg: 'bg-card',\r\n border: 'border-yellow-400 dark:border-yellow-700',\r\n barColor: 'bg-yellow-500',\r\n icon: <AlertTriangle className=\"h-5 w-5 text-yellow-600 dark:text-yellow-500\" />,\r\n textColor: 'text-foreground',\r\n },\r\n info: {\r\n bg: 'bg-card',\r\n border: 'border-blue-300 dark:border-blue-700',\r\n barColor: 'bg-blue-500',\r\n icon: <Info className=\"h-5 w-5 text-blue-600 dark:text-blue-500\" />,\r\n textColor: 'text-foreground',\r\n },\r\n}\r\n\r\nexport const Toaster = ({ ...props }: ToasterProps) => {\r\n return (\r\n <Sonner\r\n position=\"top-right\"\r\n expand={false}\r\n closeButton={false}\r\n toastOptions={{\r\n unstyled: true,\r\n classNames: {\r\n toast: 'w-full',\r\n },\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ninterface ToastProps {\r\n title: string\r\n description?: string\r\n variant?: keyof typeof toastVariants\r\n action?: {\r\n label: string\r\n onClick: () => void\r\n }\r\n onClose?: () => void\r\n}\r\n\r\nconst CustomToast = React.memo<ToastProps>(\r\n ({ title, description, variant = 'default', action, onClose }) => {\r\n const variantStyles = toastVariants[variant]\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex items-start gap-3 p-4 pr-3 rounded-lg shadow-lg border min-w-[350px] max-w-[450px] relative overflow-hidden',\r\n variantStyles.bg,\r\n variantStyles.border\r\n )}\r\n >\r\n {/* Barra lateral colorida */}\r\n <div\r\n className={cn(\r\n 'absolute left-0 top-0 bottom-0 w-1.5',\r\n variantStyles.barColor\r\n )}\r\n />\r\n\r\n {/* Ícone */}\r\n <div className=\"flex-shrink-0 ml-2\">{variantStyles.icon}</div>\r\n\r\n {/* Conteúdo */}\r\n <div className=\"flex-1 min-w-0\">\r\n <p className={cn('text-sm font-medium', variantStyles.textColor)}>\r\n {title}\r\n </p>\r\n {description && (\r\n <p className=\"text-sm text-muted-foreground mt-0.5\">{description}</p>\r\n )}\r\n </div>\r\n\r\n {/* Ações */}\r\n <div className=\"flex items-center gap-1 flex-shrink-0\">\r\n {action && (\r\n <button\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n action.onClick()\r\n }}\r\n className={cn(\r\n 'text-sm font-medium px-2 py-1 rounded hover:bg-accent transition-colors',\r\n variant === 'error' || variant === 'warning'\r\n ? 'text-red-700 dark:text-red-400'\r\n : variant === 'success'\r\n ? 'text-green-700 dark:text-green-400'\r\n : variant === 'info'\r\n ? 'text-blue-700 dark:text-blue-400'\r\n : 'text-foreground'\r\n )}\r\n >\r\n {action.label}\r\n </button>\r\n )}\r\n <button\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n onClose?.()\r\n }}\r\n className=\"p-1 rounded hover:bg-accent transition-colors\"\r\n >\r\n <X className=\"h-4 w-4 text-muted-foreground\" />\r\n </button>\r\n </div>\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nCustomToast.displayName = 'CustomToast'\r\n\r\n// Helper functions para criar toasts\r\nconst createToast = (\r\n message: string | ToastProps,\r\n variant: keyof typeof toastVariants = 'default'\r\n) => {\r\n const props: ToastProps =\r\n typeof message === 'string' ? { title: message, variant } : message\r\n\r\n return sonnerToast.custom(\r\n (t) => <CustomToast {...props} onClose={() => sonnerToast.dismiss(t)} />,\r\n {\r\n duration: props.action ? 10000 : 4000,\r\n }\r\n )\r\n}\r\n\r\nexport const toast = Object.assign(\r\n (message: string) => createToast(message, 'default'),\r\n {\r\n success: (message: string | ToastProps) =>\r\n createToast(\r\n typeof message === 'string' ? { title: message } : message,\r\n 'success'\r\n ),\r\n error: (message: string | ToastProps) =>\r\n createToast(\r\n typeof message === 'string' ? { title: message } : message,\r\n 'error'\r\n ),\r\n warning: (message: string | ToastProps) =>\r\n createToast(\r\n typeof message === 'string' ? { title: message } : message,\r\n 'warning'\r\n ),\r\n info: (message: string | ToastProps) =>\r\n createToast(\r\n typeof message === 'string' ? { title: message } : message,\r\n 'info'\r\n ),\r\n custom: (component: Parameters<typeof sonnerToast.custom>[0], options?: Parameters<typeof sonnerToast.custom>[1]) =>\r\n sonnerToast.custom(component, options),\r\n dismiss: (id?: string | number) => sonnerToast.dismiss(id),\r\n promise: <T,>(\r\n promise: Promise<T> | (() => Promise<T>),\r\n options: {\r\n loading: string\r\n success: string | ((data: T) => string)\r\n error: string | ((error: any) => string)\r\n }\r\n ) => sonnerToast.promise(promise, options),\r\n }\r\n)\r\n","import * as React from 'react'\r\nimport * as SwitchPrimitives from '@radix-ui/react-switch'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst switchVariants = cva(\r\n [\r\n 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent',\r\n 'transition-colors',\r\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\r\n 'disabled:cursor-not-allowed disabled:opacity-50',\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n default: 'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\r\n secondary:\r\n 'data-[state=checked]:bg-secondary data-[state=unchecked]:bg-input',\r\n success:\r\n 'data-[state=checked]:bg-green-600 data-[state=unchecked]:bg-input',\r\n },\r\n size: {\r\n sm: 'h-5 w-9',\r\n md: 'h-6 w-11',\r\n lg: 'h-7 w-14',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'md',\r\n },\r\n }\r\n)\r\n\r\nconst thumbVariants = cva(\r\n [\r\n 'pointer-events-none block rounded-full bg-background shadow-lg ring-0',\r\n 'transition-transform',\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n sm: 'h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\r\n md: 'h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0',\r\n lg: 'h-6 w-6 data-[state=checked]:translate-x-7 data-[state=unchecked]:translate-x-0',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n },\r\n }\r\n)\r\n\r\nexport interface SwitchProps\r\n extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>,\r\n VariantProps<typeof switchVariants> {}\r\n\r\nexport const Switch = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof SwitchPrimitives.Root>,\r\n SwitchProps\r\n >(({ className, variant, size = 'md', ...props }, ref) => (\r\n <SwitchPrimitives.Root\r\n className={cn(switchVariants({ variant, size, className }))}\r\n {...props}\r\n ref={ref}\r\n >\r\n <SwitchPrimitives.Thumb className={cn(thumbVariants({ size }))} />\r\n </SwitchPrimitives.Root>\r\n ))\r\n)\r\nSwitch.displayName = SwitchPrimitives.Root.displayName\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst textareaVariants = cva(\r\n 'w-full px-3 pt-4 pb-2 text-sm bg-background rounded-md border-2 transition-colors focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50 resize-none',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'border-border focus:border-primary',\r\n error: 'border-red-500 focus:border-red-600',\r\n },\r\n textareaSize: {\r\n sm: 'min-h-[80px] pt-3 pb-1',\r\n default: 'min-h-[100px]',\r\n lg: 'min-h-[120px] pt-5 pb-2',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n textareaSize: 'default',\r\n },\r\n }\r\n)\r\n\r\nexport interface TextareaProps\r\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>,\r\n VariantProps<typeof textareaVariants> {\r\n label?: string\r\n error?: boolean\r\n icon?: React.ComponentType<any>\r\n containerClassName?: string\r\n labelClassName?: string\r\n autoResize?: boolean\r\n}\r\n\r\nexport const Textarea = React.memo(\r\n React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n textareaSize,\r\n error,\r\n label,\r\n icon: Icon,\r\n required,\r\n containerClassName,\r\n labelClassName,\r\n autoResize = false,\r\n onChange,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const textareaRef = React.useRef<HTMLTextAreaElement | null>(null)\r\n\r\n React.useImperativeHandle(ref, () => textareaRef.current!, [])\r\n\r\n const focusTextarea = React.useCallback(() => {\r\n textareaRef.current?.focus()\r\n }, [])\r\n\r\n // Auto-resize functionality\r\n const handleChange = React.useCallback(\r\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n if (autoResize && textareaRef.current) {\r\n textareaRef.current.style.height = 'auto'\r\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`\r\n }\r\n onChange?.(e)\r\n },\r\n [autoResize, onChange]\r\n )\r\n\r\n // Set initial height for auto-resize\r\n React.useEffect(() => {\r\n if (autoResize && textareaRef.current) {\r\n textareaRef.current.style.height = 'auto'\r\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`\r\n }\r\n }, [autoResize])\r\n\r\n return (\r\n <div className={cn('relative', containerClassName)}>\r\n {/* Icon */}\r\n {Icon && (\r\n <Icon\r\n className=\"absolute left-3 top-4 text-muted-foreground h-4 w-4 cursor-pointer z-10\"\r\n onClick={focusTextarea}\r\n />\r\n )}\r\n\r\n {/* Textarea */}\r\n <textarea\r\n className={cn(\r\n textareaVariants({\r\n variant: error ? 'error' : variant,\r\n textareaSize,\r\n }),\r\n Icon && 'pl-10',\r\n className\r\n )}\r\n ref={textareaRef}\r\n onChange={handleChange}\r\n {...props}\r\n />\r\n\r\n {/* Floating Label */}\r\n {label && (\r\n <label\r\n className={cn(\r\n 'absolute left-3 top-[-6px] text-xs font-medium bg-background px-1 cursor-pointer',\r\n error ? 'text-red-500' : 'text-foreground',\r\n Icon && 'left-10',\r\n labelClassName\r\n )}\r\n onClick={focusTextarea}\r\n >\r\n {label}\r\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\r\n </label>\r\n )}\r\n </div>\r\n )\r\n }\r\n )\r\n)\r\n\r\nTextarea.displayName = 'Textarea'\r\n","'use client'\r\n\r\nimport * as React from 'react'\r\nimport type { FieldValues, UseFormReturn } from 'react-hook-form'\r\nimport type { FormFieldContextValue } from './types'\r\n\r\n// ============================================\r\n// FORM CONTEXT (para acessar o form)\r\n// ============================================\r\n\r\ninterface FormContextValue<T extends FieldValues = FieldValues> {\r\n form: UseFormReturn<T>\r\n}\r\n\r\nconst FormContext = React.createContext<FormContextValue | null>(null)\r\n\r\nexport function useFormContext<T extends FieldValues = FieldValues>(): UseFormReturn<T> {\r\n const context = React.useContext(FormContext)\r\n\r\n if (!context) {\r\n throw new Error('useFormContext must be used within a Form provider')\r\n }\r\n\r\n return context.form as UseFormReturn<T>\r\n}\r\n\r\ninterface FormProviderProps<T extends FieldValues = FieldValues> {\r\n form: UseFormReturn<T>\r\n children: React.ReactNode\r\n}\r\n\r\nexport function FormProvider<T extends FieldValues = FieldValues>({\r\n form,\r\n children,\r\n}: FormProviderProps<T>) {\r\n const value = React.useMemo(() => ({ form }), [form])\r\n\r\n return (\r\n <FormContext.Provider value={value as FormContextValue}>\r\n {children}\r\n </FormContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================\r\n// FIELD CONTEXT (para acessar o campo atual)\r\n// ============================================\r\n\r\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(null)\r\n\r\nexport function useFormFieldContext(): FormFieldContextValue {\r\n const context = React.useContext(FormFieldContext)\r\n\r\n if (!context) {\r\n throw new Error('useFormFieldContext must be used within a Form.Field')\r\n }\r\n\r\n return context\r\n}\r\n\r\nexport function useFormFieldContextOptional(): FormFieldContextValue | null {\r\n return React.useContext(FormFieldContext)\r\n}\r\n\r\ninterface FormFieldProviderProps {\r\n name: string\r\n children: React.ReactNode\r\n}\r\n\r\nexport function FormFieldProvider({ name, children }: FormFieldProviderProps) {\r\n const form = useFormContext()\r\n const id = React.useId()\r\n\r\n const fieldState = form.getFieldState(name, form.formState)\r\n const error = fieldState.error?.message\r\n\r\n // Detectar se é required pelo schema (verificar se tem regra required)\r\n const isRequired = false // Pode ser inferido do schema se necessário\r\n\r\n const value = React.useMemo<FormFieldContextValue>(\r\n () => ({\r\n name,\r\n id,\r\n error,\r\n isRequired,\r\n }),\r\n [name, id, error, isRequired]\r\n )\r\n\r\n return (\r\n <FormFieldContext.Provider value={value}>\r\n {children}\r\n </FormFieldContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================\r\n// EXPORTS\r\n// ============================================\r\n\r\nexport { FormContext, FormFieldContext }\r\n","'use client'\r\n\r\nimport * as React from 'react'\r\nimport { Controller } from 'react-hook-form'\r\nimport type { FieldValues } from 'react-hook-form'\r\nimport { Input } from '../Input'\r\nimport { useFormContext, FormFieldProvider } from './FormContext'\r\nimport type { FormInputProps, MaskType } from './types'\r\nimport { cn } from '../../utils/cn'\r\n\r\n// ============================================\r\n// MÁSCARAS\r\n// ============================================\r\n\r\nfunction applyMask(value: string, mask: MaskType): string {\r\n const digits = value.replace(/\\D/g, '')\r\n\r\n switch (mask) {\r\n case 'phone':\r\n if (digits.length <= 10) {\r\n return digits.replace(/(\\d{2})(\\d{4})(\\d{0,4})/, '($1) $2-$3').trim()\r\n }\r\n return digits.replace(/(\\d{2})(\\d{5})(\\d{0,4})/, '($1) $2-$3').trim()\r\n\r\n case 'cpf':\r\n return digits\r\n .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d{1,2})$/, '$1-$2')\r\n\r\n case 'cnpj':\r\n return digits\r\n .replace(/(\\d{2})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d)/, '$1/$2')\r\n .replace(/(\\d{4})(\\d{1,2})$/, '$1-$2')\r\n\r\n case 'cep':\r\n return digits.replace(/(\\d{5})(\\d{0,3})/, '$1-$2')\r\n\r\n case 'money':\r\n if (!digits) return ''\r\n const cents = parseInt(digits, 10) / 100\r\n return new Intl.NumberFormat('pt-BR', {\r\n style: 'currency',\r\n currency: 'BRL',\r\n }).format(cents)\r\n\r\n case 'percent':\r\n if (!digits) return ''\r\n const percent = parseInt(digits, 10) / 100\r\n return `${percent.toFixed(2)}%`\r\n\r\n case 'plate':\r\n const upper = value.toUpperCase().replace(/[^A-Z0-9]/g, '')\r\n if (upper.length <= 3) return upper\r\n if (upper.length <= 7) {\r\n // Placa antiga: ABC-1234 ou Mercosul: ABC1D23\r\n return upper.replace(/([A-Z]{3})(\\d{0,1})([A-Z0-9]{0,1})(\\d{0,2})/, '$1-$2$3$4')\r\n }\r\n return upper.slice(0, 7).replace(/([A-Z]{3})(\\d{0,1})([A-Z0-9]{0,1})(\\d{0,2})/, '$1-$2$3$4')\r\n\r\n case 'date':\r\n return digits\r\n .replace(/(\\d{2})(\\d)/, '$1/$2')\r\n .replace(/(\\d{2})(\\d)/, '$1/$2')\r\n .slice(0, 10)\r\n\r\n case 'time':\r\n return digits.replace(/(\\d{2})(\\d{0,2})/, '$1:$2').slice(0, 5)\r\n\r\n case 'datetime':\r\n const dateTime = digits\r\n .replace(/(\\d{2})(\\d)/, '$1/$2')\r\n .replace(/(\\d{2})(\\d)/, '$1/$2')\r\n .replace(/(\\d{4})(\\d)/, '$1 $2')\r\n .replace(/(\\d{2})(\\d{0,2})$/, '$1:$2')\r\n return dateTime.slice(0, 16)\r\n\r\n default:\r\n return value\r\n }\r\n}\r\n\r\nfunction getMaxLength(mask?: MaskType): number | undefined {\r\n switch (mask) {\r\n case 'phone':\r\n return 15\r\n case 'cpf':\r\n return 14\r\n case 'cnpj':\r\n return 18\r\n case 'cep':\r\n return 9\r\n case 'plate':\r\n return 8\r\n case 'date':\r\n return 10\r\n case 'time':\r\n return 5\r\n case 'datetime':\r\n return 16\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\nfunction parseValue(displayValue: string, mask?: MaskType): any {\r\n if (!displayValue) return undefined\r\n\r\n switch (mask) {\r\n case 'money':\r\n const moneyDigits = displayValue.replace(/\\D/g, '')\r\n return moneyDigits ? parseInt(moneyDigits, 10) / 100 : undefined\r\n\r\n case 'percent':\r\n const percentDigits = displayValue.replace(/\\D/g, '')\r\n return percentDigits ? parseInt(percentDigits, 10) / 100 : undefined\r\n\r\n default:\r\n return displayValue || undefined\r\n }\r\n}\r\n\r\n// ============================================\r\n// FORM INPUT COMPONENT\r\n// ============================================\r\n\r\nexport function FormInput<T extends FieldValues = FieldValues>({\r\n name,\r\n label,\r\n description,\r\n required,\r\n disabled,\r\n className,\r\n mask,\r\n icon,\r\n showPasswordToggle = true,\r\n inputSize = 'default',\r\n hideError = false,\r\n type = 'text',\r\n maxLength,\r\n ...inputProps\r\n}: FormInputProps<T>) {\r\n const form = useFormContext<T>()\r\n const fieldState = form.getFieldState(name, form.formState)\r\n const error = fieldState.error?.message\r\n\r\n const getInputType = React.useCallback(() => {\r\n if (['money', 'percent', 'phone', 'cpf', 'cnpj', 'cep'].includes(mask || '')) {\r\n return 'tel'\r\n }\r\n return type\r\n }, [mask, type])\r\n\r\n return (\r\n <FormFieldProvider name={name as string}>\r\n <Controller\r\n control={form.control}\r\n name={name}\r\n render={({ field }) => {\r\n // Formatação do valor para exibição\r\n const getDisplayValue = (): string => {\r\n if (field.value === undefined || field.value === null) return ''\r\n if (mask) {\r\n return applyMask(String(field.value), mask)\r\n }\r\n return String(field.value)\r\n }\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n let newValue = e.target.value\r\n\r\n if (mask) {\r\n newValue = applyMask(newValue, mask)\r\n const parsed = parseValue(newValue, mask)\r\n field.onChange(parsed)\r\n } else {\r\n field.onChange(newValue || undefined)\r\n }\r\n }\r\n\r\n return (\r\n <div className={cn('space-y-1', className)}>\r\n <Input\r\n {...inputProps}\r\n ref={field.ref}\r\n name={field.name}\r\n value={getDisplayValue()}\r\n onChange={handleChange}\r\n onBlur={field.onBlur}\r\n disabled={disabled}\r\n type={getInputType()}\r\n label={label}\r\n required={required}\r\n error={!!error}\r\n icon={icon}\r\n inputSize={inputSize}\r\n maxLength={maxLength ?? getMaxLength(mask)}\r\n />\r\n\r\n {description && !error && (\r\n <p className=\"text-xs text-muted-foreground px-1\">{description}</p>\r\n )}\r\n\r\n {!hideError && error && (\r\n <p className=\"text-xs text-red-500 px-1\">{error}</p>\r\n )}\r\n </div>\r\n )\r\n }}\r\n />\r\n </FormFieldProvider>\r\n )\r\n}\r\n\r\nFormInput.displayName = 'Form.Input'\r\n","'use client'\r\n\r\nimport { Controller } from 'react-hook-form'\r\nimport type { FieldValues } from 'react-hook-form'\r\nimport { Select, SelectItem } from '../Select'\r\nimport { useFormContext, FormFieldProvider } from './FormContext'\r\nimport type { FormSelectProps } from './types'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport function FormSelect<T extends FieldValues = FieldValues>({\r\n name,\r\n label,\r\n description,\r\n required,\r\n disabled,\r\n className,\r\n options,\r\n placeholder = 'Selecione...',\r\n icon,\r\n hideError = false,\r\n selectSize = 'default',\r\n emptyText = 'Nenhuma opção disponível',\r\n loading = false,\r\n}: FormSelectProps<T>) {\r\n const form = useFormContext<T>()\r\n const fieldState = form.getFieldState(name, form.formState)\r\n const error = fieldState.error?.message\r\n\r\n return (\r\n <FormFieldProvider name={name as string}>\r\n <Controller\r\n control={form.control}\r\n name={name}\r\n render={({ field }) => (\r\n <div className={cn('space-y-1', className)}>\r\n <Select\r\n value={field.value ?? ''}\r\n onValueChange={(value) => {\r\n field.onChange(value || undefined)\r\n }}\r\n disabled={disabled || loading}\r\n label={label}\r\n required={required}\r\n error={!!error}\r\n icon={icon}\r\n selectSize={selectSize}\r\n placeholder={placeholder}\r\n >\r\n {loading ? (\r\n <SelectItem value=\"__loading__\" disabled>\r\n Carregando...\r\n </SelectItem>\r\n ) : options.length === 0 ? (\r\n <SelectItem value=\"__empty__\" disabled>\r\n {emptyText}\r\n </SelectItem>\r\n ) : (\r\n options.map((option) => (\r\n <SelectItem\r\n key={option.value}\r\n value={option.value}\r\n disabled={option.disabled}\r\n >\r\n <div className=\"flex items-center gap-2\">\r\n {option.icon && (\r\n <option.icon className=\"h-4 w-4 text-muted-foreground\" />\r\n )}\r\n <div>\r\n <span>{option.label}</span>\r\n {option.description && (\r\n <span className=\"text-xs text-muted-foreground ml-2\">\r\n {option.description}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n </SelectItem>\r\n ))\r\n )}\r\n </Select>\r\n\r\n {description && !error && (\r\n <p className=\"text-xs text-muted-foreground px-1\">{description}</p>\r\n )}\r\n\r\n {!hideError && error && (\r\n <p className=\"text-xs text-red-500 px-1\">{error}</p>\r\n )}\r\n </div>\r\n )}\r\n />\r\n </FormFieldProvider>\r\n )\r\n}\r\n\r\nFormSelect.displayName = 'Form.Select'\r\n","'use client'\n\nimport { Controller } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { Textarea } from '../Textarea'\nimport { useFormContext, FormFieldProvider } from './FormContext'\nimport type { FormTextareaProps } from './types'\nimport { cn } from '../../utils/cn'\n\nexport function FormTextarea<T extends FieldValues = FieldValues>({\n name,\n label,\n description,\n required,\n disabled,\n className,\n hideError = false,\n showCount = false,\n maxLength,\n ...textareaProps\n}: FormTextareaProps<T>) {\n const form = useFormContext<T>()\n const fieldState = form.getFieldState(name, form.formState)\n const error = fieldState.error?.message\n\n return (\n <FormFieldProvider name={name as string}>\n <Controller\n control={form.control}\n name={name}\n render={({ field }) => {\n const charCount = field.value?.length ?? 0\n\n return (\n <div className={cn('space-y-1', className)}>\n <Textarea\n {...textareaProps}\n ref={field.ref}\n name={field.name}\n value={field.value ?? ''}\n onChange={(e) => field.onChange(e.target.value || undefined)}\n onBlur={field.onBlur}\n disabled={disabled}\n label={label}\n required={required}\n error={!!error}\n maxLength={maxLength}\n />\n\n <div className=\"flex justify-between px-1\">\n <div>\n {description && !error && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n\n {!hideError && error && (\n <p className=\"text-xs text-red-500\">{error}</p>\n )}\n </div>\n\n {showCount && maxLength && (\n <p\n className={cn(\n 'text-xs',\n charCount > maxLength ? 'text-red-500' : 'text-muted-foreground'\n )}\n >\n {charCount}/{maxLength}\n </p>\n )}\n </div>\n </div>\n )\n }}\n />\n </FormFieldProvider>\n )\n}\n\nFormTextarea.displayName = 'Form.Textarea'\n","'use client'\n\nimport * as React from 'react'\nimport { Controller } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { Checkbox } from '../Checkbox'\nimport { useFormContext, FormFieldProvider } from './FormContext'\nimport type { FormCheckboxProps } from './types'\nimport { cn } from '../../utils/cn'\n\nexport function FormCheckbox<T extends FieldValues = FieldValues>({\n name,\n label,\n description,\n required,\n disabled,\n className,\n hideError = false,\n}: FormCheckboxProps<T>) {\n const form = useFormContext<T>()\n const fieldState = form.getFieldState(name, form.formState)\n const error = fieldState.error?.message\n const id = React.useId()\n\n return (\n <FormFieldProvider name={name as string}>\n <Controller\n control={form.control}\n name={name}\n render={({ field }) => (\n <div className={cn('space-y-1', className)}>\n <div className=\"flex items-start gap-3\">\n <Checkbox\n id={id}\n ref={field.ref}\n checked={field.value ?? false}\n onCheckedChange={(checked) => field.onChange(checked)}\n onBlur={field.onBlur}\n disabled={disabled}\n />\n\n {(label || description) && (\n <div className=\"grid gap-0.5 leading-none\">\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'text-sm font-medium leading-none cursor-pointer',\n disabled && 'cursor-not-allowed opacity-50'\n )}\n >\n {label}\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\n </label>\n )}\n\n {description && (\n <p className=\"text-xs text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n )}\n </div>\n\n {!hideError && error && (\n <p className=\"text-xs text-red-500 pl-8\">{error}</p>\n )}\n </div>\n )}\n />\n </FormFieldProvider>\n )\n}\n\nFormCheckbox.displayName = 'Form.Checkbox'\n","'use client'\n\nimport * as React from 'react'\nimport { Controller } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { Switch } from '../Switch'\nimport { useFormContext, FormFieldProvider } from './FormContext'\nimport type { FormSwitchProps } from './types'\nimport { cn } from '../../utils/cn'\n\nexport function FormSwitch<T extends FieldValues = FieldValues>({\n name,\n label,\n description,\n required,\n disabled,\n className,\n hideError = false,\n}: FormSwitchProps<T>) {\n const form = useFormContext<T>()\n const fieldState = form.getFieldState(name, form.formState)\n const error = fieldState.error?.message\n const id = React.useId()\n\n return (\n <FormFieldProvider name={name as string}>\n <Controller\n control={form.control}\n name={name}\n render={({ field }) => (\n <div className={cn('space-y-1', className)}>\n <div className=\"flex items-center justify-between gap-4\">\n {(label || description) && (\n <div className=\"grid gap-0.5 leading-none\">\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'text-sm font-medium leading-none cursor-pointer',\n disabled && 'cursor-not-allowed opacity-50'\n )}\n >\n {label}\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\n </label>\n )}\n\n {description && (\n <p className=\"text-xs text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n )}\n\n <Switch\n id={id}\n ref={field.ref}\n checked={field.value ?? false}\n onCheckedChange={(checked) => field.onChange(checked)}\n onBlur={field.onBlur}\n disabled={disabled}\n />\n </div>\n\n {!hideError && error && (\n <p className=\"text-xs text-red-500\">{error}</p>\n )}\n </div>\n )}\n />\n </FormFieldProvider>\n )\n}\n\nFormSwitch.displayName = 'Form.Switch'\n","'use client'\r\n\r\nimport { Controller } from 'react-hook-form'\r\nimport type { FieldValues } from 'react-hook-form'\r\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\r\nimport { Circle } from 'lucide-react'\r\nimport { useFormContext, FormFieldProvider } from './FormContext'\r\nimport type { FormRadioGroupProps } from './types'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport function FormRadioGroup<T extends FieldValues = FieldValues>({\r\n name,\r\n label,\r\n description,\r\n required,\r\n disabled,\r\n className,\r\n options,\r\n orientation = 'vertical',\r\n hideError = false,\r\n}: FormRadioGroupProps<T>) {\r\n const form = useFormContext<T>()\r\n const fieldState = form.getFieldState(name, form.formState)\r\n const error = fieldState.error?.message\r\n\r\n return (\r\n <FormFieldProvider name={name as string}>\r\n <Controller\r\n control={form.control}\r\n name={name}\r\n render={({ field }) => (\r\n <div className={cn('space-y-2', className)}>\r\n {label && (\r\n <label className=\"text-sm font-medium\">\r\n {label}\r\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\r\n </label>\r\n )}\r\n\r\n {description && !error && (\r\n <p className=\"text-xs text-muted-foreground\">{description}</p>\r\n )}\r\n\r\n <RadioGroupPrimitive.Root\r\n ref={field.ref}\r\n value={field.value}\r\n onValueChange={(value) => field.onChange(value || undefined)}\r\n disabled={disabled}\r\n className={cn(\r\n 'grid gap-2',\r\n orientation === 'horizontal' && 'flex flex-wrap gap-4'\r\n )}\r\n >\r\n {options.map((option) => {\r\n const optionId = `${name}-${option.value}`\r\n const isSelected = field.value === option.value\r\n\r\n return (\r\n <div\r\n key={option.value}\r\n className={cn(\r\n 'flex items-center gap-3 border-2 py-2 px-4 rounded-lg transition-colors cursor-pointer',\r\n isSelected\r\n ? 'border-primary bg-primary/5'\r\n : 'border-border hover:border-muted-foreground/50',\r\n option.disabled && 'opacity-50 cursor-not-allowed'\r\n )}\r\n onClick={() => {\r\n if (!option.disabled && !disabled) {\r\n field.onChange(option.value)\r\n }\r\n }}\r\n >\r\n <RadioGroupPrimitive.Item\r\n id={optionId}\r\n value={option.value}\r\n disabled={option.disabled}\r\n className={cn(\r\n 'aspect-square h-4 w-4 rounded-full border border-primary text-primary',\r\n 'ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\r\n 'disabled:cursor-not-allowed disabled:opacity-50'\r\n )}\r\n >\r\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\r\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\r\n </RadioGroupPrimitive.Indicator>\r\n </RadioGroupPrimitive.Item>\r\n\r\n <div className=\"grid gap-0.5 leading-none\">\r\n <label\r\n htmlFor={optionId}\r\n className={cn(\r\n 'text-sm font-medium leading-none cursor-pointer',\r\n isSelected && 'text-primary',\r\n option.disabled && 'cursor-not-allowed'\r\n )}\r\n >\r\n {option.label}\r\n </label>\r\n\r\n {option.description && (\r\n <p className=\"text-xs text-muted-foreground\">\r\n {option.description}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n })}\r\n </RadioGroupPrimitive.Root>\r\n\r\n {!hideError && error && (\r\n <p className=\"text-xs text-red-500\">{error}</p>\r\n )}\r\n </div>\r\n )}\r\n />\r\n </FormFieldProvider>\r\n )\r\n}\r\n\r\nFormRadioGroup.displayName = 'Form.RadioGroup'\r\n","import * as React from 'react'\r\nimport { useFormFieldContextOptional } from './FormContext'\r\nimport { cn } from '../../utils/cn'\r\n\r\n// ============================================\r\n// FORM LABEL\r\n// ============================================\r\n\r\nexport interface FormLabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\r\n required?: boolean\r\n}\r\n\r\nexport const FormLabel = React.forwardRef<HTMLLabelElement, FormLabelProps>(\r\n ({ className, required, children, ...props }, ref) => {\r\n const fieldContext = useFormFieldContextOptional()\r\n\r\n return (\r\n <label\r\n ref={ref}\r\n htmlFor={fieldContext?.id}\r\n className={cn(\r\n 'text-sm font-medium leading-none',\r\n fieldContext?.error && 'text-red-500',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {(required || fieldContext?.isRequired) && (\r\n <span className=\"text-red-500 ml-0.5\">*</span>\r\n )}\r\n </label>\r\n )\r\n }\r\n)\r\n\r\nFormLabel.displayName = 'Form.Label'\r\n\r\n// ============================================\r\n// FORM DESCRIPTION\r\n// ============================================\r\n\r\nexport interface FormDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\r\n\r\nexport const FormDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n FormDescriptionProps\r\n>(({ className, ...props }, ref) => {\r\n const fieldContext = useFormFieldContextOptional()\r\n\r\n // Não mostra descrição se tem erro\r\n if (fieldContext?.error) {\r\n return null\r\n }\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n className={cn('text-xs text-muted-foreground', className)}\r\n {...props}\r\n />\r\n )\r\n})\r\n\r\nFormDescription.displayName = 'Form.Description'\r\n\r\n// ============================================\r\n// FORM ERROR\r\n// ============================================\r\n\r\nexport interface FormErrorProps extends React.HTMLAttributes<HTMLParagraphElement> {\r\n message?: string\r\n}\r\n\r\nexport const FormError = React.forwardRef<HTMLParagraphElement, FormErrorProps>(\r\n ({ className, message, children, ...props }, ref) => {\r\n const fieldContext = useFormFieldContextOptional()\r\n const errorMessage = message ?? fieldContext?.error\r\n\r\n if (!errorMessage && !children) {\r\n return null\r\n }\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n className={cn('text-xs text-red-500', className)}\r\n {...props}\r\n >\r\n {children || errorMessage}\r\n </p>\r\n )\r\n }\r\n)\r\n\r\nFormError.displayName = 'Form.Error'\r\n\r\n// ============================================\r\n// FORM FIELD WRAPPER\r\n// ============================================\r\n\r\nexport interface FormFieldWrapperProps extends React.HTMLAttributes<HTMLDivElement> {\r\n label?: string\r\n description?: string\r\n required?: boolean\r\n error?: string\r\n}\r\n\r\nexport const FormFieldWrapper = React.forwardRef<\r\n HTMLDivElement,\r\n FormFieldWrapperProps\r\n>(({ className, label, description, required, error, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('space-y-1', className)} {...props}>\r\n {label && <FormLabel required={required}>{label}</FormLabel>}\r\n {children}\r\n {description && <FormDescription>{description}</FormDescription>}\r\n {error && <FormError message={error} />}\r\n </div>\r\n )\r\n})\r\n\r\nFormFieldWrapper.displayName = 'Form.FieldWrapper'\r\n","'use client'\r\n\r\nimport * as React from 'react'\r\nimport type { FieldValues, UseFormReturn, SubmitHandler, SubmitErrorHandler } from 'react-hook-form'\r\nimport { FormProvider } from './FormContext'\r\nimport { cn } from '../../utils/cn'\r\n\r\n// ============================================\r\n// FORM ROOT COMPONENT\r\n// ============================================\r\n\r\ninterface FormRootProps<T extends FieldValues = FieldValues>\r\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit' | 'onError'> {\r\n form: UseFormReturn<T>\r\n onSubmit: SubmitHandler<T>\r\n onError?: SubmitErrorHandler<T>\r\n}\r\n\r\nfunction FormRoot<T extends FieldValues = FieldValues>({\r\n form,\r\n onSubmit,\r\n onError,\r\n children,\r\n className,\r\n ...props\r\n}: FormRootProps<T>) {\r\n return (\r\n <FormProvider form={form}>\r\n <form\r\n onSubmit={form.handleSubmit(onSubmit, onError)}\r\n className={cn('space-y-4', className)}\r\n {...props}\r\n >\r\n {children}\r\n </form>\r\n </FormProvider>\r\n )\r\n}\r\n\r\nFormRoot.displayName = 'Form'\r\n\r\n// ============================================\r\n// COMPOUND COMPONENT EXPORTS\r\n// ============================================\r\n\r\nimport { FormInput } from './FormInput'\r\nimport { FormSelect } from './FormSelect'\r\nimport { FormTextarea } from './FormTextarea'\r\nimport { FormCheckbox } from './FormCheckbox'\r\nimport { FormSwitch } from './FormSwitch'\r\nimport { FormRadioGroup } from './FormRadioGroup'\r\nimport { FormLabel, FormDescription, FormError, FormFieldWrapper } from './FormParts'\r\nimport { FormFieldProvider, useFormContext, useFormFieldContext } from './FormContext'\r\n\r\n// Compound component\r\nexport const Form = Object.assign(FormRoot, {\r\n // Campos com auto-bind\r\n Input: FormInput,\r\n Select: FormSelect,\r\n Textarea: FormTextarea,\r\n Checkbox: FormCheckbox,\r\n Switch: FormSwitch,\r\n RadioGroup: FormRadioGroup,\r\n\r\n // Partes auxiliares\r\n Label: FormLabel,\r\n Description: FormDescription,\r\n Error: FormError,\r\n FieldWrapper: FormFieldWrapper,\r\n Field: FormFieldProvider,\r\n})\r\n\r\n// Export hooks\r\nexport { useFormContext, useFormFieldContext }\r\n\r\n// Export types\r\nexport type { FormRootProps }\r\n","import * as React from 'react'\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\nimport { cn } from '../../utils/cn'\n\nexport interface AvatarProps extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root> {\n className?: string\n}\n\nexport interface AvatarImageProps extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image> {\n className?: string\n}\n\nexport interface AvatarFallbackProps extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback> {\n className?: string\n}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\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 AvatarImageProps\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 AvatarFallbackProps\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n 'flex h-full w-full items-center justify-center rounded-full bg-primary/10 text-primary font-semibold',\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { Check, ChevronRight, Circle } from 'lucide-react'\nimport { cn } from '../../utils/cn'\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 h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName = 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 = 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=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName = 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 PopoverPrimitive from '@radix-ui/react-popover'\nimport { cn } from '../../utils/cn'\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-auto rounded-md border bg-popover p-4 text-popover-foreground shadow-lg 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'\r\nimport { cn } from '../../../utils/cn'\r\nimport type {\r\n AuthLayoutProps,\r\n AuthLayoutImageProps,\r\n AuthLayoutContentProps,\r\n AuthLayoutHeaderProps,\r\n AuthLayoutBodyProps,\r\n AuthLayoutFooterProps,\r\n AuthLayoutLinkProps,\r\n AuthLayoutDividerProps,\r\n} from './types'\r\n\r\n// Context para compartilhar estado entre componentes\r\ninterface AuthLayoutContextValue {\r\n imagePosition: 'left' | 'right'\r\n}\r\n\r\nconst AuthLayoutContext = React.createContext<AuthLayoutContextValue>({\r\n imagePosition: 'left',\r\n})\r\n\r\n// ============================================================================\r\n// AuthLayout Root\r\n// ============================================================================\r\nfunction AuthLayoutRoot({ children, className }: AuthLayoutProps) {\r\n const [imagePosition, setImagePosition] = React.useState<'left' | 'right'>('left')\r\n\r\n // Detecta a posição da imagem baseado nos children\r\n React.useEffect(() => {\r\n React.Children.forEach(children, (child) => {\r\n if (React.isValidElement<AuthLayoutImageProps>(child) && child.type === AuthLayoutImage) {\r\n setImagePosition(child.props.position || 'left')\r\n }\r\n })\r\n }, [children])\r\n\r\n return (\r\n <AuthLayoutContext.Provider value={{ imagePosition }}>\r\n <div\r\n className={cn(\r\n 'min-h-screen flex flex-col xl:flex-row max-xl:justify-center',\r\n imagePosition === 'right' && 'xl:flex-row-reverse',\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </AuthLayoutContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Image\r\n// ============================================================================\r\nfunction AuthLayoutImage({\r\n src,\r\n alt,\r\n position: _position = 'left',\r\n className,\r\n priority = true,\r\n showPattern = false,\r\n}: AuthLayoutImageProps) {\r\n // _position is used by parent (AuthLayoutRoot) via child.props.position\r\n void _position\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'hidden xl:block relative w-full xl:w-3/6 h-64 xl:h-screen overflow-hidden bg-muted',\r\n className\r\n )}\r\n >\r\n {src ? (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className=\"absolute inset-0 w-full h-full object-cover object-top\"\r\n loading={priority ? 'eager' : 'lazy'}\r\n />\r\n ) : null}\r\n\r\n {/* Pattern overlay */}\r\n {showPattern && (\r\n <div className=\"absolute inset-0 flex items-center justify-center\">\r\n {/* Geometric patterns */}\r\n <svg\r\n className=\"absolute inset-0 w-full h-full opacity-10\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <defs>\r\n <pattern\r\n id=\"auth-grid\"\r\n width=\"40\"\r\n height=\"40\"\r\n patternUnits=\"userSpaceOnUse\"\r\n >\r\n <path\r\n d=\"M 40 0 L 0 0 0 40\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"0.5\"\r\n />\r\n </pattern>\r\n </defs>\r\n <rect width=\"100%\" height=\"100%\" fill=\"url(#auth-grid)\" />\r\n </svg>\r\n\r\n {/* Center decorative elements */}\r\n <div className=\"relative z-10\">\r\n {/* Large circle */}\r\n <div className=\"w-64 h-64 rounded-full border border-muted-foreground/20\" />\r\n {/* Inner circle with icon */}\r\n <div className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-24 h-24 rounded-full border border-muted-foreground/30 flex items-center justify-center\">\r\n <svg\r\n className=\"w-10 h-10 text-muted-foreground/40\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={1}\r\n d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\r\n />\r\n </svg>\r\n </div>\r\n {/* Decorative lines */}\r\n <div className=\"absolute top-1/2 left-full ml-4 w-32 h-px bg-gradient-to-r from-muted-foreground/20 to-transparent\" />\r\n <div className=\"absolute top-1/2 right-full mr-4 w-32 h-px bg-gradient-to-l from-muted-foreground/20 to-transparent\" />\r\n <div className=\"absolute top-full left-1/2 -translate-x-1/2 mt-4 w-px h-32 bg-gradient-to-b from-muted-foreground/20 to-transparent\" />\r\n <div className=\"absolute bottom-full left-1/2 -translate-x-1/2 mb-4 w-px h-32 bg-gradient-to-t from-muted-foreground/20 to-transparent\" />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Content\r\n// ============================================================================\r\nfunction AuthLayoutContent({\r\n children,\r\n className,\r\n maxWidth = 'md',\r\n}: AuthLayoutContentProps) {\r\n const maxWidthClasses = {\r\n sm: 'max-w-sm',\r\n md: 'max-w-md',\r\n lg: 'max-w-lg',\r\n }\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'relative w-full lg:w-3/6 flex items-center justify-center p-6 lg:p-12 bg-background',\r\n className\r\n )}\r\n >\r\n <div className={cn('w-full space-y-8', maxWidthClasses[maxWidth])}>\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Header\r\n// ============================================================================\r\nfunction AuthLayoutHeader({\r\n children,\r\n className,\r\n logo,\r\n title,\r\n description,\r\n centered = true,\r\n position = 'top-right',\r\n}: AuthLayoutHeaderProps) {\r\n // Logo positioned at top-left corner (absolute)\r\n if (position === 'top-left' && logo) {\r\n return (\r\n <div className={cn('absolute top-6 left-6 lg:top-8 lg:left-8', className)}>\r\n {logo}\r\n </div>\r\n )\r\n }\r\n\r\n // Logo positioned at top-right corner (absolute)\r\n if (position === 'top-right' && logo) {\r\n return (\r\n <div className={cn('absolute top-6 right-6 lg:top-8 lg:right-8', className)}>\r\n {logo}\r\n </div>\r\n )\r\n }\r\n\r\n // Se children fornecido, renderiza diretamente\r\n if (children) {\r\n return (\r\n <div className={cn('space-y-2', centered && 'text-center', className)}>\r\n {children}\r\n </div>\r\n )\r\n }\r\n\r\n // Renderização padrão com props\r\n return (\r\n <div\r\n className={cn(\r\n 'flex flex-col gap-2',\r\n centered && 'items-center text-center',\r\n className\r\n )}\r\n >\r\n {logo && <div className=\"mb-2\">{logo}</div>}\r\n {title && <h1 className=\"text-2xl font-bold\">{title}</h1>}\r\n {description && (\r\n <p className=\"text-balance text-sm text-muted-foreground\">{description}</p>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Body\r\n// ============================================================================\r\nfunction AuthLayoutBody({ children, className }: AuthLayoutBodyProps) {\r\n return <div className={cn('space-y-6', className)}>{children}</div>\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Footer\r\n// ============================================================================\r\nfunction AuthLayoutFooter({ children, className }: AuthLayoutFooterProps) {\r\n return (\r\n <div className={cn('text-center text-sm text-muted-foreground', className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Link\r\n// ============================================================================\r\nfunction AuthLayoutLink({ children, className, ...props }: AuthLayoutLinkProps) {\r\n return (\r\n <a\r\n className={cn(\r\n 'text-sm text-primary hover:underline cursor-pointer',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </a>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Divider\r\n// ============================================================================\r\nfunction AuthLayoutDivider({ text = 'ou', className }: AuthLayoutDividerProps) {\r\n return (\r\n <div className={cn('relative', className)}>\r\n <div className=\"absolute inset-0 flex items-center\">\r\n <span className=\"w-full border-t\" />\r\n </div>\r\n <div className=\"relative flex justify-center text-xs uppercase\">\r\n <span className=\"bg-background px-2 text-muted-foreground\">{text}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Compound Component Export\r\n// ============================================================================\r\nAuthLayoutRoot.displayName = 'AuthLayout'\r\nAuthLayoutImage.displayName = 'AuthLayout.Image'\r\nAuthLayoutContent.displayName = 'AuthLayout.Content'\r\nAuthLayoutHeader.displayName = 'AuthLayout.Header'\r\nAuthLayoutBody.displayName = 'AuthLayout.Body'\r\nAuthLayoutFooter.displayName = 'AuthLayout.Footer'\r\nAuthLayoutLink.displayName = 'AuthLayout.Link'\r\nAuthLayoutDivider.displayName = 'AuthLayout.Divider'\r\n\r\nexport const AuthLayout = Object.assign(AuthLayoutRoot, {\r\n Image: AuthLayoutImage,\r\n Content: AuthLayoutContent,\r\n Header: AuthLayoutHeader,\r\n Body: AuthLayoutBody,\r\n Footer: AuthLayoutFooter,\r\n Link: AuthLayoutLink,\r\n Divider: AuthLayoutDivider,\r\n})\r\n","import * as React from 'react'\r\nimport { Search, Star, ArrowRight, Building2 } from 'lucide-react'\r\nimport { cn } from '../../../utils/cn'\r\nimport type {\r\n SelectionLayoutProps,\r\n SelectionLayoutSidebarProps,\r\n SelectionLayoutLogoProps,\r\n SelectionLayoutHeadlineProps,\r\n SelectionLayoutStatsProps,\r\n SelectionLayoutMainProps,\r\n SelectionLayoutHeaderProps,\r\n SelectionLayoutSearchProps,\r\n SelectionLayoutTabsProps,\r\n SelectionLayoutTabProps,\r\n SelectionLayoutListProps,\r\n SelectionLayoutCardProps,\r\n SelectionLayoutEmptyProps,\r\n} from './types'\r\n\r\n// Context para tabs\r\ninterface TabsContextValue {\r\n value: string\r\n onValueChange: (value: string) => void\r\n}\r\n\r\nconst TabsContext = React.createContext<TabsContextValue | null>(null)\r\n\r\n// ============================================================================\r\n// SelectionLayout Root\r\n// ============================================================================\r\nfunction SelectionLayoutRoot({ children, className }: SelectionLayoutProps) {\r\n return (\r\n <div className={cn('min-h-screen bg-muted/30 flex flex-col lg:flex-row', className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Sidebar\r\n// ============================================================================\r\nfunction SelectionLayoutSidebar({ children, className }: SelectionLayoutSidebarProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'lg:w-2/5 bg-gradient-to-br from-primary/90 to-primary p-6 lg:p-12',\r\n 'flex flex-col justify-between text-white relative overflow-hidden',\r\n 'min-h-[50vh] lg:min-h-screen',\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Logo\r\n// ============================================================================\r\nfunction SelectionLayoutLogo({ children, className }: SelectionLayoutLogoProps) {\r\n return (\r\n <div className={cn('flex items-center gap-3 mb-8 lg:mb-16', className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Headline\r\n// ============================================================================\r\nfunction SelectionLayoutHeadline({\r\n title,\r\n bullets,\r\n className,\r\n}: SelectionLayoutHeadlineProps) {\r\n return (\r\n <div className={cn('space-y-4 lg:space-y-6 flex-1', className)}>\r\n <h1 className=\"text-3xl lg:text-5xl font-bold leading-tight\">{title}</h1>\r\n {bullets && bullets.length > 0 && (\r\n <div className=\"space-y-2 text-white/80\">\r\n {bullets.map((bullet, index) => (\r\n <p key={index} className=\"text-base lg:text-lg\">\r\n {bullet}\r\n </p>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Stats\r\n// ============================================================================\r\nfunction SelectionLayoutStats({ label, value, className }: SelectionLayoutStatsProps) {\r\n return (\r\n <div className={cn('bg-white/10 rounded-lg p-4 backdrop-blur-sm', className)}>\r\n <div className=\"flex items-center justify-between text-sm lg:text-base\">\r\n <span>{label}</span>\r\n <span className=\"font-bold\">{value}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Main\r\n// ============================================================================\r\nfunction SelectionLayoutMain({ children, className }: SelectionLayoutMainProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'lg:w-3/5 bg-background flex flex-col min-h-[50vh] lg:min-h-screen',\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Header\r\n// ============================================================================\r\nfunction SelectionLayoutHeader({\r\n title,\r\n subtitle,\r\n action,\r\n className,\r\n}: SelectionLayoutHeaderProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'flex justify-between items-center p-6 lg:p-8 border-b border-border',\r\n className\r\n )}\r\n >\r\n <div>\r\n <h2 className=\"text-xl lg:text-2xl font-bold\">{title}</h2>\r\n {subtitle && <p className=\"text-sm text-muted-foreground mt-1\">{subtitle}</p>}\r\n </div>\r\n {action && <div>{action}</div>}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Search\r\n// ============================================================================\r\nfunction SelectionLayoutSearch({\r\n value,\r\n onChange,\r\n placeholder = 'Buscar...',\r\n className,\r\n}: SelectionLayoutSearchProps) {\r\n return (\r\n <div className={cn('p-6 lg:p-8 pb-4 lg:pb-6', className)}>\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground w-4 h-4\" />\r\n <input\r\n type=\"text\"\r\n placeholder={placeholder}\r\n value={value}\r\n onChange={(e) => onChange(e.target.value)}\r\n className={cn(\r\n 'w-full pl-10 h-11 rounded-md border border-input bg-muted/50',\r\n 'focus:bg-background focus:outline-none focus:ring-2 focus:ring-ring',\r\n 'text-sm placeholder:text-muted-foreground'\r\n )}\r\n />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Tabs\r\n// ============================================================================\r\nfunction SelectionLayoutTabs({\r\n children,\r\n value,\r\n onValueChange,\r\n className,\r\n}: SelectionLayoutTabsProps) {\r\n return (\r\n <TabsContext.Provider value={{ value, onValueChange }}>\r\n <div className={cn('px-6 lg:px-8', className)}>\r\n <div className=\"flex space-x-1 bg-muted p-1 rounded-lg\">{children}</div>\r\n </div>\r\n </TabsContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Tab\r\n// ============================================================================\r\nfunction SelectionLayoutTab({\r\n value,\r\n label,\r\n icon: Icon,\r\n badge,\r\n className,\r\n}: SelectionLayoutTabProps) {\r\n const context = React.useContext(TabsContext)\r\n if (!context) {\r\n throw new Error('SelectionLayout.Tab must be used within SelectionLayout.Tabs')\r\n }\r\n\r\n const isActive = context.value === value\r\n\r\n return (\r\n <button\r\n onClick={() => context.onValueChange(value)}\r\n className={cn(\r\n 'flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-all',\r\n isActive\r\n ? 'bg-background text-foreground shadow-sm'\r\n : 'text-muted-foreground hover:text-foreground',\r\n className\r\n )}\r\n >\r\n {Icon && <Icon className=\"w-4 h-4\" />}\r\n <span className=\"hidden sm:inline\">{label}</span>\r\n {badge !== undefined && (\r\n <span\r\n className={cn(\r\n 'text-xs px-2 py-0.5 rounded-full',\r\n isActive ? 'bg-primary/10 text-primary' : 'bg-muted-foreground/20'\r\n )}\r\n >\r\n {badge}\r\n </span>\r\n )}\r\n </button>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.List\r\n// ============================================================================\r\nfunction SelectionLayoutList({ children, className }: SelectionLayoutListProps) {\r\n return (\r\n <div className={cn('flex-1 p-6 lg:p-8 pt-6', className)}>\r\n <div\r\n className={cn(\r\n 'space-y-3 max-h-[50vh] lg:max-h-[55vh] overflow-y-auto pr-2',\r\n 'scrollbar-thin scrollbar-thumb-muted-foreground/20 scrollbar-track-transparent'\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Card\r\n// ============================================================================\r\nfunction SelectionLayoutCard({\r\n children,\r\n className,\r\n onClick,\r\n icon,\r\n title,\r\n description,\r\n badge,\r\n favorite,\r\n onFavoriteClick,\r\n}: SelectionLayoutCardProps) {\r\n // Check if icon is a React component (function or forwardRef object)\r\n const isIconComponent =\r\n typeof icon === 'function' ||\r\n (icon && typeof icon === 'object' && '$$typeof' in icon)\r\n\r\n const IconComponent = isIconComponent\r\n ? (icon as React.ComponentType<{ className?: string }>)\r\n : null\r\n\r\n return (\r\n <div\r\n onClick={onClick}\r\n className={cn(\r\n 'cursor-pointer transition-all duration-200 rounded-lg border-2 bg-card',\r\n 'hover:shadow-lg hover:border-primary/20 active:scale-[0.98] group',\r\n className\r\n )}\r\n >\r\n <div className=\"p-4 lg:p-5\">\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center gap-3 lg:gap-4 flex-1 min-w-0\">\r\n {/* Icon */}\r\n {icon && (\r\n <div className=\"w-10 h-10 lg:w-12 lg:h-12 bg-primary/10 rounded-lg flex items-center justify-center flex-shrink-0\">\r\n {IconComponent ? (\r\n <IconComponent className=\"w-5 h-5 lg:w-6 lg:h-6 text-primary\" />\r\n ) : (\r\n icon as React.ReactNode\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Content */}\r\n <div className=\"min-w-0 flex-1\">\r\n <div className=\"flex items-center gap-2\">\r\n <h3 className=\"font-semibold text-sm lg:text-base truncate\">{title}</h3>\r\n {favorite && (\r\n <Star className=\"w-4 h-4 text-yellow-500 fill-current flex-shrink-0\" />\r\n )}\r\n {badge}\r\n </div>\r\n {description && (\r\n <p className=\"text-muted-foreground text-xs lg:text-sm truncate\">\r\n {description}\r\n </p>\r\n )}\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Actions */}\r\n <div className=\"flex items-center gap-2 flex-shrink-0 ml-2\">\r\n {onFavoriteClick && (\r\n <button\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n onFavoriteClick()\r\n }}\r\n className=\"p-2 hover:bg-muted rounded-md transition-colors\"\r\n >\r\n <Star\r\n className={cn(\r\n 'w-4 h-4',\r\n favorite ? 'text-yellow-500 fill-current' : 'text-muted-foreground'\r\n )}\r\n />\r\n </button>\r\n )}\r\n <ArrowRight className=\"w-5 h-5 text-muted-foreground group-hover:text-foreground transition-colors\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Empty\r\n// ============================================================================\r\nfunction SelectionLayoutEmpty({\r\n icon: Icon = Building2,\r\n title,\r\n description,\r\n action,\r\n className,\r\n}: SelectionLayoutEmptyProps) {\r\n return (\r\n <div className={cn('text-center py-12', className)}>\r\n <Icon className=\"w-12 h-12 text-muted-foreground/50 mx-auto mb-4\" />\r\n <h3 className=\"text-lg font-medium mb-2\">{title}</h3>\r\n {description && <p className=\"text-muted-foreground mb-4\">{description}</p>}\r\n {action}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Compound Component Export\r\n// ============================================================================\r\nSelectionLayoutRoot.displayName = 'SelectionLayout'\r\nSelectionLayoutSidebar.displayName = 'SelectionLayout.Sidebar'\r\nSelectionLayoutLogo.displayName = 'SelectionLayout.Logo'\r\nSelectionLayoutHeadline.displayName = 'SelectionLayout.Headline'\r\nSelectionLayoutStats.displayName = 'SelectionLayout.Stats'\r\nSelectionLayoutMain.displayName = 'SelectionLayout.Main'\r\nSelectionLayoutHeader.displayName = 'SelectionLayout.Header'\r\nSelectionLayoutSearch.displayName = 'SelectionLayout.Search'\r\nSelectionLayoutTabs.displayName = 'SelectionLayout.Tabs'\r\nSelectionLayoutTab.displayName = 'SelectionLayout.Tab'\r\nSelectionLayoutList.displayName = 'SelectionLayout.List'\r\nSelectionLayoutCard.displayName = 'SelectionLayout.Card'\r\nSelectionLayoutEmpty.displayName = 'SelectionLayout.Empty'\r\n\r\nexport const SelectionLayout = Object.assign(SelectionLayoutRoot, {\r\n Sidebar: SelectionLayoutSidebar,\r\n Logo: SelectionLayoutLogo,\r\n Headline: SelectionLayoutHeadline,\r\n Stats: SelectionLayoutStats,\r\n Main: SelectionLayoutMain,\r\n Header: SelectionLayoutHeader,\r\n Search: SelectionLayoutSearch,\r\n Tabs: SelectionLayoutTabs,\r\n Tab: SelectionLayoutTab,\r\n List: SelectionLayoutList,\r\n Card: SelectionLayoutCard,\r\n Empty: SelectionLayoutEmpty,\r\n})\r\n","import * as React from 'react'\r\nimport {\r\n ChevronDown,\r\n ChevronRight,\r\n Menu,\r\n X,\r\n Pin,\r\n PinOff,\r\n LogOut,\r\n User,\r\n} from 'lucide-react'\r\nimport { cn } from '../../../utils/cn'\r\nimport type {\r\n DashboardLayoutProps,\r\n DashboardLayoutContextValue,\r\n DashboardLayoutSidebarProps,\r\n DashboardLayoutSidebarHeaderProps,\r\n DashboardLayoutSidebarNavProps,\r\n DashboardLayoutSidebarNavItemProps,\r\n DashboardLayoutSidebarNavGroupProps,\r\n DashboardLayoutSidebarSectionProps,\r\n DashboardLayoutSidebarFooterProps,\r\n DashboardLayoutHeaderProps,\r\n DashboardLayoutHeaderTitleProps,\r\n DashboardLayoutHeaderActionsProps,\r\n DashboardLayoutHeaderUserProps,\r\n DashboardLayoutContentProps,\r\n DashboardLayoutBreadcrumbsProps,\r\n DashboardLayoutMobileNavProps,\r\n DashboardLayoutMobileNavItemProps,\r\n} from './types'\r\n\r\n// ============================================================================\r\n// Context\r\n// ============================================================================\r\nconst DashboardLayoutContext = React.createContext<DashboardLayoutContextValue | null>(null)\r\n\r\nexport function useDashboardLayout() {\r\n const context = React.useContext(DashboardLayoutContext)\r\n if (!context) {\r\n throw new Error('useDashboardLayout must be used within DashboardLayout')\r\n }\r\n return context\r\n}\r\n\r\n// Hook for media query\r\nfunction useMediaQuery(query: string): boolean {\r\n const [matches, setMatches] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const media = window.matchMedia(query)\r\n if (media.matches !== matches) {\r\n setMatches(media.matches)\r\n }\r\n const listener = () => setMatches(media.matches)\r\n media.addEventListener('change', listener)\r\n return () => media.removeEventListener('change', listener)\r\n }, [matches, query])\r\n\r\n return matches\r\n}\r\n\r\n// ============================================================================\r\n// DashboardLayout Root\r\n// ============================================================================\r\nfunction DashboardLayoutRoot({\r\n children,\r\n className,\r\n defaultExpanded = false,\r\n defaultPinned = false,\r\n}: DashboardLayoutProps) {\r\n // When pinned, sidebar should also be expanded\r\n const [sidebarExpanded, setSidebarExpanded] = React.useState(defaultExpanded || defaultPinned)\r\n const [sidebarPinned, setSidebarPinned] = React.useState(defaultPinned)\r\n const [mobileMenuOpen, setMobileMenuOpen] = React.useState(false)\r\n const isMobile = useMediaQuery('(max-width: 1024px)')\r\n\r\n // Close mobile menu when switching to desktop\r\n React.useEffect(() => {\r\n if (!isMobile) {\r\n setMobileMenuOpen(false)\r\n }\r\n }, [isMobile])\r\n\r\n const value: DashboardLayoutContextValue = {\r\n sidebarExpanded,\r\n setSidebarExpanded,\r\n sidebarPinned,\r\n setSidebarPinned,\r\n isMobile,\r\n mobileMenuOpen,\r\n setMobileMenuOpen,\r\n }\r\n\r\n return (\r\n <DashboardLayoutContext.Provider value={value}>\r\n <div className={cn('min-h-screen bg-muted/30 flex', className)}>\r\n {children}\r\n </div>\r\n </DashboardLayoutContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar\r\n// ============================================================================\r\nfunction DashboardLayoutSidebar({\r\n children,\r\n className,\r\n collapsedWidth = 64,\r\n expandedWidth = 256,\r\n}: DashboardLayoutSidebarProps) {\r\n const {\r\n sidebarExpanded,\r\n setSidebarExpanded,\r\n sidebarPinned,\r\n isMobile,\r\n mobileMenuOpen,\r\n setMobileMenuOpen,\r\n } = useDashboardLayout()\r\n\r\n const handleMouseEnter = () => {\r\n if (!sidebarPinned && !isMobile) {\r\n setSidebarExpanded(true)\r\n }\r\n }\r\n\r\n const handleMouseLeave = () => {\r\n if (!sidebarPinned && !isMobile) {\r\n setSidebarExpanded(false)\r\n }\r\n }\r\n\r\n // Mobile overlay\r\n if (isMobile) {\r\n return (\r\n <>\r\n {/* Overlay */}\r\n {mobileMenuOpen && (\r\n <div\r\n className=\"fixed inset-0 bg-black/50 z-40 lg:hidden\"\r\n onClick={() => setMobileMenuOpen(false)}\r\n />\r\n )}\r\n\r\n {/* Mobile Sidebar */}\r\n <aside\r\n className={cn(\r\n 'fixed top-0 left-0 h-full bg-card z-50 shadow-xl',\r\n 'transform transition-transform duration-300 ease-in-out',\r\n mobileMenuOpen ? 'translate-x-0' : '-translate-x-full',\r\n 'w-[280px]',\r\n className\r\n )}\r\n >\r\n <div className=\"flex flex-col h-full\">\r\n {/* Close button */}\r\n <button\r\n onClick={() => setMobileMenuOpen(false)}\r\n className=\"absolute top-4 right-4 p-2 hover:bg-muted rounded-md\"\r\n >\r\n <X className=\"w-5 h-5\" />\r\n </button>\r\n {children}\r\n </div>\r\n </aside>\r\n </>\r\n )\r\n }\r\n\r\n // Desktop Sidebar\r\n return (\r\n <aside\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n style={{\r\n width: sidebarExpanded ? expandedWidth : collapsedWidth,\r\n }}\r\n className={cn(\r\n 'fixed top-0 left-0 h-screen bg-card z-40',\r\n 'flex flex-col shadow-[0_0_20px_rgba(0,0,0,0.06)]',\r\n 'transition-[width] duration-300 ease-in-out',\r\n className\r\n )}\r\n >\r\n {children}\r\n </aside>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Header\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarHeader({\r\n children,\r\n className,\r\n logo,\r\n collapsedLogo,\r\n title,\r\n}: DashboardLayoutSidebarHeaderProps) {\r\n const { sidebarExpanded, sidebarPinned, setSidebarPinned, isMobile } = useDashboardLayout()\r\n\r\n if (children) {\r\n return (\r\n <div className={cn('p-4 border-b border-border', className)}>\r\n {children}\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div className={cn('p-4 border-b border-border', className)}>\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center gap-3 min-w-0\">\r\n {/* Logo */}\r\n <div className=\"flex-shrink-0\">\r\n {sidebarExpanded ? logo : (collapsedLogo || logo)}\r\n </div>\r\n\r\n {/* Title */}\r\n {sidebarExpanded && title && (\r\n <span className=\"font-semibold text-lg truncate\">{title}</span>\r\n )}\r\n </div>\r\n\r\n {/* Pin button (desktop only) */}\r\n {sidebarExpanded && !isMobile && (\r\n <button\r\n onClick={() => setSidebarPinned(!sidebarPinned)}\r\n className=\"p-1.5 hover:bg-muted rounded-md transition-colors\"\r\n title={sidebarPinned ? 'Unpin sidebar' : 'Pin sidebar'}\r\n >\r\n {sidebarPinned ? (\r\n <PinOff className=\"w-4 h-4 text-muted-foreground\" />\r\n ) : (\r\n <Pin className=\"w-4 h-4 text-muted-foreground\" />\r\n )}\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Nav\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarNav({ children, className }: DashboardLayoutSidebarNavProps) {\r\n return (\r\n <nav className={cn('flex-1 overflow-y-auto overflow-x-hidden py-2', className)}>\r\n {children}\r\n </nav>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Nav Item\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarNavItem({\r\n icon,\r\n label,\r\n href,\r\n onClick,\r\n isActive,\r\n badge,\r\n badgeVariant = 'default',\r\n className,\r\n disabled,\r\n}: DashboardLayoutSidebarNavItemProps) {\r\n const { sidebarExpanded } = useDashboardLayout()\r\n\r\n const badgeColors = {\r\n default: 'bg-muted text-muted-foreground',\r\n primary: 'bg-primary/10 text-primary',\r\n destructive: 'bg-destructive/10 text-destructive',\r\n }\r\n\r\n // Render icon - handles both LucideIcon components and ReactNode elements\r\n const renderIcon = () => {\r\n if (!icon) return null\r\n // Already a React element\r\n if (React.isValidElement(icon)) {\r\n return icon\r\n }\r\n // Function component or forwardRef component (Lucide icons)\r\n if (typeof icon === 'function' || (typeof icon === 'object' && '$$typeof' in icon)) {\r\n const IconComponent = icon as React.ComponentType<{ className?: string }>\r\n return <IconComponent className=\"w-5 h-5 flex-shrink-0\" />\r\n }\r\n return null\r\n }\r\n\r\n const content = (\r\n <div\r\n className={cn(\r\n 'flex items-center gap-3 px-3 py-2.5 mx-2 rounded-md transition-colors',\r\n 'hover:bg-muted cursor-pointer',\r\n isActive && 'bg-primary/10 text-primary hover:bg-primary/15',\r\n disabled && 'opacity-50 cursor-not-allowed pointer-events-none',\r\n className\r\n )}\r\n onClick={disabled ? undefined : onClick}\r\n >\r\n {renderIcon()}\r\n\r\n {sidebarExpanded && (\r\n <>\r\n <span className=\"flex-1 truncate text-sm\">{label}</span>\r\n {badge !== undefined && (\r\n <span\r\n className={cn(\r\n 'text-xs px-2 py-0.5 rounded-full',\r\n badgeColors[badgeVariant]\r\n )}\r\n >\r\n {badge}\r\n </span>\r\n )}\r\n </>\r\n )}\r\n\r\n {/* Badge dot when collapsed */}\r\n {!sidebarExpanded && badge !== undefined && (\r\n <span className=\"absolute top-1 right-1 w-2 h-2 bg-primary rounded-full\" />\r\n )}\r\n </div>\r\n )\r\n\r\n if (href && !disabled) {\r\n return (\r\n <a href={href} className=\"block relative\">\r\n {content}\r\n </a>\r\n )\r\n }\r\n\r\n return <div className=\"relative\">{content}</div>\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Nav Group\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarNavGroup({\r\n icon,\r\n label,\r\n children,\r\n defaultOpen = false,\r\n isActive,\r\n badge,\r\n badgeVariant = 'default',\r\n className,\r\n}: DashboardLayoutSidebarNavGroupProps) {\r\n const { sidebarExpanded } = useDashboardLayout()\r\n const [isOpen, setIsOpen] = React.useState(defaultOpen)\r\n\r\n const badgeColors = {\r\n default: 'bg-muted text-muted-foreground',\r\n primary: 'bg-primary/10 text-primary',\r\n destructive: 'bg-destructive/10 text-destructive',\r\n }\r\n\r\n // Render icon - handles both LucideIcon components and ReactNode elements\r\n const renderIcon = () => {\r\n if (!icon) return null\r\n // Already a React element\r\n if (React.isValidElement(icon)) {\r\n return icon\r\n }\r\n // Function component or forwardRef component (Lucide icons)\r\n if (typeof icon === 'function' || (typeof icon === 'object' && '$$typeof' in icon)) {\r\n const IconComponent = icon as React.ComponentType<{ className?: string }>\r\n return <IconComponent className=\"w-5 h-5 flex-shrink-0\" />\r\n }\r\n return null\r\n }\r\n\r\n // Auto expand when sidebar expands if group is active\r\n React.useEffect(() => {\r\n if (isActive && sidebarExpanded) {\r\n setIsOpen(true)\r\n }\r\n }, [isActive, sidebarExpanded])\r\n\r\n return (\r\n <div className={className}>\r\n {/* Group Header */}\r\n <div\r\n onClick={() => sidebarExpanded && setIsOpen(!isOpen)}\r\n className={cn(\r\n 'flex items-center gap-3 px-3 py-2.5 mx-2 rounded-md transition-colors',\r\n 'hover:bg-muted cursor-pointer',\r\n isActive && 'text-primary'\r\n )}\r\n >\r\n {renderIcon()}\r\n\r\n {sidebarExpanded && (\r\n <>\r\n <span className=\"flex-1 truncate text-sm\">{label}</span>\r\n {badge !== undefined && (\r\n <span\r\n className={cn(\r\n 'text-xs px-2 py-0.5 rounded-full',\r\n badgeColors[badgeVariant]\r\n )}\r\n >\r\n {badge}\r\n </span>\r\n )}\r\n {isOpen ? (\r\n <ChevronDown className=\"w-4 h-4 text-muted-foreground\" />\r\n ) : (\r\n <ChevronRight className=\"w-4 h-4 text-muted-foreground\" />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n {/* Group Items */}\r\n {sidebarExpanded && isOpen && (\r\n <div className=\"ml-4 mt-1 space-y-0.5\">{children}</div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Section\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarSection({\r\n title,\r\n children,\r\n className,\r\n}: DashboardLayoutSidebarSectionProps) {\r\n const { sidebarExpanded } = useDashboardLayout()\r\n\r\n return (\r\n <div className={cn('mb-2', className)}>\r\n {title && sidebarExpanded && (\r\n <div className=\"px-5 py-2\">\r\n <span className=\"text-[10px] font-medium uppercase tracking-wider text-muted-foreground\">\r\n {title}\r\n </span>\r\n </div>\r\n )}\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Footer\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarFooter({ children, className }: DashboardLayoutSidebarFooterProps) {\r\n return (\r\n <div className={cn('p-4 border-t border-border mt-auto', className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Header\r\n// ============================================================================\r\nfunction DashboardLayoutHeader({ children, className }: DashboardLayoutHeaderProps) {\r\n const { isMobile, setMobileMenuOpen, sidebarPinned } = useDashboardLayout()\r\n\r\n // Calculate left margin based on sidebar state (only pinned affects content position)\r\n const marginLeft = isMobile ? 0 : sidebarPinned ? 256 : 64\r\n\r\n return (\r\n <header\r\n style={{ marginLeft }}\r\n className={cn(\r\n 'h-16 bg-background border-b border-border',\r\n 'flex items-center px-4 lg:px-6',\r\n 'sticky top-0 z-30',\r\n !isMobile && 'transition-[margin-left] duration-300',\r\n className\r\n )}\r\n >\r\n {/* Mobile menu button */}\r\n {isMobile && (\r\n <button\r\n onClick={() => setMobileMenuOpen(true)}\r\n className=\"p-2 hover:bg-muted rounded-md mr-2\"\r\n >\r\n <Menu className=\"w-5 h-5\" />\r\n </button>\r\n )}\r\n\r\n {children}\r\n </header>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Header Title\r\n// ============================================================================\r\nfunction DashboardLayoutHeaderTitle({\r\n children,\r\n className,\r\n title,\r\n subtitle,\r\n}: DashboardLayoutHeaderTitleProps) {\r\n if (children) {\r\n return <div className={cn('flex-1', className)}>{children}</div>\r\n }\r\n\r\n return (\r\n <div className={cn('flex-1 min-w-0', className)}>\r\n {title && <h1 className=\"font-semibold text-lg truncate\">{title}</h1>}\r\n {subtitle && (\r\n <p className=\"text-sm text-muted-foreground truncate\">{subtitle}</p>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Header Actions\r\n// ============================================================================\r\nfunction DashboardLayoutHeaderActions({ children, className }: DashboardLayoutHeaderActionsProps) {\r\n return (\r\n <div className={cn('flex items-center gap-2', className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Header User\r\n// ============================================================================\r\nfunction DashboardLayoutHeaderUser({\r\n name,\r\n email,\r\n avatar,\r\n className,\r\n children,\r\n onLogout,\r\n}: DashboardLayoutHeaderUserProps) {\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n\r\n return (\r\n <div className={cn('relative', className)}>\r\n <button\r\n onClick={() => setIsOpen(!isOpen)}\r\n className=\"flex items-center gap-2 p-1.5 hover:bg-muted rounded-md transition-colors\"\r\n >\r\n {avatar ? (\r\n <img\r\n src={avatar}\r\n alt={name}\r\n className=\"w-8 h-8 rounded-full object-cover\"\r\n />\r\n ) : (\r\n <div className=\"w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center\">\r\n <User className=\"w-4 h-4 text-primary\" />\r\n </div>\r\n )}\r\n <div className=\"hidden sm:block text-left\">\r\n <p className=\"text-sm font-medium truncate max-w-[120px]\">{name}</p>\r\n {email && (\r\n <p className=\"text-xs text-muted-foreground truncate max-w-[120px]\">\r\n {email}\r\n </p>\r\n )}\r\n </div>\r\n <ChevronDown className=\"w-4 h-4 text-muted-foreground hidden sm:block\" />\r\n </button>\r\n\r\n {/* Dropdown */}\r\n {isOpen && (\r\n <>\r\n <div\r\n className=\"fixed inset-0 z-40\"\r\n onClick={() => setIsOpen(false)}\r\n />\r\n <div className=\"absolute right-0 top-full mt-1 w-56 bg-card border border-border rounded-md shadow-lg z-50\">\r\n <div className=\"p-3 border-b border-border\">\r\n <p className=\"font-medium truncate\">{name}</p>\r\n {email && (\r\n <p className=\"text-sm text-muted-foreground truncate\">{email}</p>\r\n )}\r\n </div>\r\n\r\n {children && <div className=\"p-1\">{children}</div>}\r\n\r\n {onLogout && (\r\n <div className=\"p-1 border-t border-border\">\r\n <button\r\n onClick={() => {\r\n setIsOpen(false)\r\n onLogout()\r\n }}\r\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm hover:bg-muted rounded-md transition-colors text-destructive\"\r\n >\r\n <LogOut className=\"w-4 h-4\" />\r\n Sair\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Content\r\n// ============================================================================\r\nfunction DashboardLayoutContent({ children, className }: DashboardLayoutContentProps) {\r\n const { isMobile, sidebarPinned } = useDashboardLayout()\r\n\r\n // Calculate left margin based on sidebar state\r\n const marginLeft = isMobile ? 0 : sidebarPinned ? 256 : 64\r\n\r\n return (\r\n <main\r\n style={{ marginLeft }}\r\n className={cn(\r\n 'flex-1 flex flex-col min-h-screen',\r\n 'transition-[margin-left] duration-300',\r\n className\r\n )}\r\n >\r\n {children}\r\n </main>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Breadcrumbs\r\n// ============================================================================\r\nfunction DashboardLayoutBreadcrumbs({\r\n items,\r\n className,\r\n separator,\r\n}: DashboardLayoutBreadcrumbsProps) {\r\n const defaultSeparator = <ChevronRight className=\"w-4 h-4 text-muted-foreground\" />\r\n\r\n return (\r\n <nav className={cn('flex items-center gap-1 text-sm', className)}>\r\n {items.map((item, index) => {\r\n const Icon = item.icon\r\n const isLast = index === items.length - 1\r\n\r\n return (\r\n <React.Fragment key={index}>\r\n {item.href && !isLast ? (\r\n <a\r\n href={item.href}\r\n className=\"flex items-center gap-1 text-muted-foreground hover:text-foreground transition-colors\"\r\n >\r\n {Icon && <Icon className=\"w-4 h-4\" />}\r\n <span>{item.label}</span>\r\n </a>\r\n ) : (\r\n <span\r\n className={cn(\r\n 'flex items-center gap-1',\r\n isLast ? 'text-foreground font-medium' : 'text-muted-foreground'\r\n )}\r\n >\r\n {Icon && <Icon className=\"w-4 h-4\" />}\r\n <span>{item.label}</span>\r\n </span>\r\n )}\r\n\r\n {!isLast && (\r\n <span className=\"mx-1\">{separator || defaultSeparator}</span>\r\n )}\r\n </React.Fragment>\r\n )\r\n })}\r\n </nav>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Mobile Nav\r\n// ============================================================================\r\nfunction DashboardLayoutMobileNav({ children, className }: DashboardLayoutMobileNavProps) {\r\n return (\r\n <nav\r\n className={cn(\r\n 'fixed bottom-0 left-0 right-0 h-16 bg-card border-t border-border',\r\n 'flex items-center justify-around px-2 z-50 lg:hidden',\r\n className\r\n )}\r\n >\r\n {children}\r\n </nav>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Mobile Nav Item\r\n// ============================================================================\r\nfunction DashboardLayoutMobileNavItem({\r\n icon: Icon,\r\n label,\r\n href,\r\n onClick,\r\n isActive,\r\n badge,\r\n}: DashboardLayoutMobileNavItemProps) {\r\n const content = (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center gap-1 p-2 rounded-md transition-colors relative',\r\n 'hover:bg-muted',\r\n isActive && 'text-primary'\r\n )}\r\n onClick={onClick}\r\n >\r\n <Icon className=\"w-5 h-5\" />\r\n <span className=\"text-[10px]\">{label}</span>\r\n\r\n {badge !== undefined && (\r\n <span className=\"absolute -top-1 -right-1 min-w-[18px] h-[18px] flex items-center justify-center text-[10px] font-medium bg-destructive text-destructive-foreground rounded-full px-1\">\r\n {badge}\r\n </span>\r\n )}\r\n </div>\r\n )\r\n\r\n if (href) {\r\n return <a href={href}>{content}</a>\r\n }\r\n\r\n return content\r\n}\r\n\r\n// ============================================================================\r\n// Display Names\r\n// ============================================================================\r\nDashboardLayoutRoot.displayName = 'DashboardLayout'\r\nDashboardLayoutSidebar.displayName = 'DashboardLayout.Sidebar'\r\nDashboardLayoutSidebarHeader.displayName = 'DashboardLayout.SidebarHeader'\r\nDashboardLayoutSidebarNav.displayName = 'DashboardLayout.SidebarNav'\r\nDashboardLayoutSidebarNavItem.displayName = 'DashboardLayout.SidebarNavItem'\r\nDashboardLayoutSidebarNavGroup.displayName = 'DashboardLayout.SidebarNavGroup'\r\nDashboardLayoutSidebarSection.displayName = 'DashboardLayout.SidebarSection'\r\nDashboardLayoutSidebarFooter.displayName = 'DashboardLayout.SidebarFooter'\r\nDashboardLayoutHeader.displayName = 'DashboardLayout.Header'\r\nDashboardLayoutHeaderTitle.displayName = 'DashboardLayout.HeaderTitle'\r\nDashboardLayoutHeaderActions.displayName = 'DashboardLayout.HeaderActions'\r\nDashboardLayoutHeaderUser.displayName = 'DashboardLayout.HeaderUser'\r\nDashboardLayoutContent.displayName = 'DashboardLayout.Content'\r\nDashboardLayoutBreadcrumbs.displayName = 'DashboardLayout.Breadcrumbs'\r\nDashboardLayoutMobileNav.displayName = 'DashboardLayout.MobileNav'\r\nDashboardLayoutMobileNavItem.displayName = 'DashboardLayout.MobileNavItem'\r\n\r\n// ============================================================================\r\n// Compound Component Export\r\n// ============================================================================\r\nexport const DashboardLayout = Object.assign(DashboardLayoutRoot, {\r\n Sidebar: DashboardLayoutSidebar,\r\n SidebarHeader: DashboardLayoutSidebarHeader,\r\n SidebarNav: DashboardLayoutSidebarNav,\r\n SidebarNavItem: DashboardLayoutSidebarNavItem,\r\n SidebarNavGroup: DashboardLayoutSidebarNavGroup,\r\n SidebarSection: DashboardLayoutSidebarSection,\r\n SidebarFooter: DashboardLayoutSidebarFooter,\r\n Header: DashboardLayoutHeader,\r\n HeaderTitle: DashboardLayoutHeaderTitle,\r\n HeaderActions: DashboardLayoutHeaderActions,\r\n HeaderUser: DashboardLayoutHeaderUser,\r\n Content: DashboardLayoutContent,\r\n Breadcrumbs: DashboardLayoutBreadcrumbs,\r\n MobileNav: DashboardLayoutMobileNav,\r\n MobileNavItem: DashboardLayoutMobileNavItem,\r\n})\r\n","import * as React from 'react'\r\nimport type { SidebarContextValue } from './types'\r\n\r\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null)\r\n\r\nexport function useSidebar(): SidebarContextValue {\r\n const context = React.useContext(SidebarContext)\r\n if (!context) {\r\n throw new Error('useSidebar must be used within a Sidebar component')\r\n }\r\n return context\r\n}\r\n\r\nexport function useSidebarOptional(): SidebarContextValue | null {\r\n return React.useContext(SidebarContext)\r\n}\r\n\r\ninterface SidebarProviderProps {\r\n children: React.ReactNode\r\n value: SidebarContextValue\r\n}\r\n\r\nexport function SidebarProvider({ children, value }: SidebarProviderProps) {\r\n return (\r\n <SidebarContext.Provider value={value}>\r\n {children}\r\n </SidebarContext.Provider>\r\n )\r\n}\r\n\r\n// Custom hook for media query\r\nexport function useMediaQuery(query: string): boolean {\r\n const [matches, setMatches] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n if (typeof window === 'undefined') return\r\n\r\n const mediaQuery = window.matchMedia(query)\r\n setMatches(mediaQuery.matches)\r\n\r\n const handler = (event: MediaQueryListEvent) => {\r\n setMatches(event.matches)\r\n }\r\n\r\n mediaQuery.addEventListener('change', handler)\r\n return () => mediaQuery.removeEventListener('change', handler)\r\n }, [query])\r\n\r\n return matches\r\n}\r\n\r\nexport { SidebarContext }\r\n","import * as React from 'react'\r\nimport { motion, AnimatePresence } from 'framer-motion'\r\nimport { Pin, PinOff } from 'lucide-react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useSidebar } from './SidebarContext'\r\nimport type { SidebarHeaderProps } from './types'\r\n\r\nexport const SidebarHeader = React.memo<SidebarHeaderProps>(function SidebarHeader({\r\n logo,\r\n collapsedLogo,\r\n title,\r\n showPinButton = true,\r\n className,\r\n}) {\r\n const { expanded, pinned, setPinned } = useSidebar()\r\n\r\n const handleTogglePin = React.useCallback(() => {\r\n setPinned(!pinned)\r\n }, [pinned, setPinned])\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex items-center justify-between h-[60px] border-b border-border bg-primary px-3',\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center gap-2 overflow-hidden\">\r\n {/* Collapsed Logo */}\r\n <AnimatePresence mode=\"wait\">\r\n {!expanded && collapsedLogo && (\r\n <motion.div\r\n key=\"collapsed-logo\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.8 }}\r\n transition={{ duration: 0.15 }}\r\n className=\"flex items-center justify-center\"\r\n >\r\n {collapsedLogo}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Expanded Logo + Title */}\r\n <AnimatePresence>\r\n {expanded && (\r\n <motion.div\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n exit={{ opacity: 0, x: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"flex items-center gap-2\"\r\n >\r\n {logo && <div className=\"flex-shrink-0\">{logo}</div>}\r\n {title && (\r\n <span className=\"text-sm font-semibold text-primary-foreground whitespace-nowrap\">\r\n {title}\r\n </span>\r\n )} \r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Fallback: Show collapsed logo if no expanded logo */}\r\n {expanded && !logo && collapsedLogo && (\r\n <div className=\"flex items-center gap-2\">\r\n {collapsedLogo}\r\n {title && (\r\n <motion.span\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n exit={{ opacity: 0, x: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"text-sm font-semibold text-primary-foreground whitespace-nowrap\"\r\n >\r\n {title}\r\n </motion.span>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Pin Button */}\r\n <AnimatePresence>\r\n {showPinButton && expanded && (\r\n <motion.button\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.8 }}\r\n transition={{ duration: 0.15 }}\r\n onClick={handleTogglePin}\r\n className={cn(\r\n 'flex h-6 w-6 items-center justify-center rounded-md transition-colors',\r\n 'hover:bg-primary-foreground/10',\r\n // pinned ? '' : 'text-primary-foreground/60'\r\n )}\r\n title={pinned ? 'Unpin sidebar' : 'Pin sidebar'}\r\n >\r\n {pinned ? (\r\n <PinOff className=\"h-3.5 w-3.5\" />\r\n ) : (\r\n <Pin className=\"h-3.5 w-3.5\" />\r\n )}\r\n </motion.button>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n )\r\n})\r\n\r\nSidebarHeader.displayName = 'Sidebar.Header'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport type { SidebarNavProps } from './types'\r\n\r\nexport const SidebarNav = React.memo<SidebarNavProps>(function SidebarNav({\r\n children,\r\n className,\r\n}) {\r\n return (\r\n <nav\r\n className={cn(\r\n 'flex-1 overflow-y-auto overflow-x-hidden py-1 custom-scrollbar',\r\n className\r\n )}\r\n >\r\n <div className=\"space-y-0.5 px-2\">\r\n {children}\r\n </div>\r\n </nav>\r\n )\r\n})\r\n\r\nSidebarNav.displayName = 'Sidebar.Nav'\r\n","import * as React from 'react'\r\nimport { AnimatePresence, motion } from 'framer-motion'\r\nimport { cn } from '../../utils/cn'\r\nimport { useSidebar } from './SidebarContext'\r\nimport type { SidebarSectionProps } from './types'\r\n\r\nexport const SidebarSection = React.memo<SidebarSectionProps>(function SidebarSection({\r\n title,\r\n children,\r\n className,\r\n}) {\r\n const { expanded } = useSidebar()\r\n\r\n return (\r\n <div className={cn('space-y-0.5', className)}>\r\n {/* Section Title - only shown when expanded */}\r\n <AnimatePresence>\r\n {title && expanded && (\r\n <motion.div\r\n initial={{ opacity: 0, height: 0 }}\r\n animate={{ opacity: 1, height: 'auto' }}\r\n exit={{ opacity: 0, height: 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"mb-1 px-2 py-1\"\r\n >\r\n <p className=\"text-[10px] font-medium uppercase tracking-wider text-muted-foreground\">\r\n {title}\r\n </p>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Section Items */}\r\n {children}\r\n </div>\r\n )\r\n})\r\n\r\nSidebarSection.displayName = 'Sidebar.Section'\r\n","import * as React from 'react'\r\nimport { motion, AnimatePresence } from 'framer-motion'\r\nimport { cn } from '../../utils/cn'\r\nimport { useSidebar } from './SidebarContext'\r\nimport type { SidebarNavItemProps, BadgeVariant } from './types'\r\n\r\n// Helper to render icon - handles Lucide icons, forwardRef, memo, and React elements\r\nfunction renderIcon(icon: unknown, className: string): React.ReactNode {\r\n if (!icon) return null\r\n\r\n // If it's a valid React element, render it directly\r\n if (React.isValidElement(icon)) {\r\n return React.cloneElement(icon as React.ReactElement<{ className?: string }>, { className })\r\n }\r\n\r\n // If it's a component (function, forwardRef, memo), render it\r\n if (\r\n typeof icon === 'function' ||\r\n (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\r\n ) {\r\n const IconComponent = icon as React.ComponentType<{ className?: string }>\r\n return <IconComponent className={className} />\r\n }\r\n\r\n return null\r\n}\r\n\r\n// Badge variant styles\r\nconst badgeVariantStyles: Record<BadgeVariant, string> = {\r\n default: 'bg-primary/10 text-primary',\r\n notification: 'bg-destructive/20 text-destructive',\r\n success: 'bg-green-100 text-green-600',\r\n warning: 'bg-amber-100 text-amber-600',\r\n}\r\n\r\nexport const SidebarNavItem = React.memo<SidebarNavItemProps>(function SidebarNavItem({\r\n icon,\r\n label,\r\n href,\r\n onClick,\r\n isActive = false,\r\n badge,\r\n badgeVariant = 'default',\r\n disabled = false,\r\n className,\r\n}) {\r\n const { expanded } = useSidebar()\r\n\r\n const handleClick = React.useCallback(() => {\r\n if (disabled) return\r\n\r\n if (onClick) {\r\n onClick()\r\n } else if (href && typeof window !== 'undefined') {\r\n window.location.href = href\r\n }\r\n }, [disabled, onClick, href])\r\n\r\n const iconSize = expanded ? 'h-3.5 w-3.5' : 'h-4 w-4'\r\n\r\n return (\r\n <button\r\n onClick={handleClick}\r\n disabled={disabled}\r\n className={cn(\r\n 'group relative flex w-full items-center rounded-md px-2 py-1.5 transition-all duration-200',\r\n isActive\r\n ? 'bg-primary/10 text-primary'\r\n : 'hover:bg-primary/5 hover:text-primary',\r\n disabled && 'opacity-50 cursor-not-allowed',\r\n className\r\n )}\r\n >\r\n {/* Active indicator - left border */}\r\n {isActive && (\r\n <motion.div\r\n layoutId=\"sidebarActiveIndicator\"\r\n className=\"absolute left-0 top-0 bottom-0 w-0.5 rounded-r-full bg-primary\"\r\n transition={{ type: 'spring', stiffness: 300, damping: 30 }}\r\n />\r\n )}\r\n\r\n {/* Icon */}\r\n <div\r\n className={cn(\r\n 'flex h-6 w-6 items-center justify-center rounded-md transition-all duration-200',\r\n isActive\r\n ? 'text-primary bg-primary/10 group-hover:bg-primary/20'\r\n : 'text-muted-foreground group-hover:text-foreground'\r\n )}\r\n >\r\n {renderIcon(icon, iconSize)}\r\n </div>\r\n\r\n {/* Label */}\r\n <AnimatePresence>\r\n {expanded && (\r\n <motion.span\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n exit={{ opacity: 0, x: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"ml-2 flex-1 text-left text-xs font-medium truncate\"\r\n >\r\n {label}\r\n </motion.span>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Badge - Full when expanded */}\r\n <AnimatePresence>\r\n {badge !== undefined && expanded && (\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.8 }}\r\n transition={{ duration: 0.2 }}\r\n className={cn(\r\n 'ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full px-1 text-[10px] font-medium',\r\n badgeVariantStyles[badgeVariant]\r\n )}\r\n >\r\n {badge}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Badge dot - When collapsed */}\r\n {badge !== undefined && !expanded && (\r\n <div\r\n className={cn(\r\n 'absolute top-1 right-1 h-2 w-2 rounded-full',\r\n badgeVariant === 'notification' && 'bg-destructive',\r\n badgeVariant === 'success' && 'bg-green-500',\r\n badgeVariant === 'warning' && 'bg-amber-500',\r\n badgeVariant === 'default' && 'bg-primary'\r\n )}\r\n />\r\n )}\r\n </button>\r\n )\r\n})\r\n\r\nSidebarNavItem.displayName = 'Sidebar.NavItem'\r\n","import * as React from 'react'\r\nimport { motion, AnimatePresence } from 'framer-motion'\r\nimport { ChevronRight } from 'lucide-react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useSidebar } from './SidebarContext'\r\nimport type { SidebarNavGroupProps, BadgeVariant } from './types'\r\n\r\n// Helper to render icon - handles Lucide icons, forwardRef, memo, and React elements\r\nfunction renderIcon(icon: unknown, className: string): React.ReactNode {\r\n if (!icon) return null\r\n\r\n // If it's a valid React element, render it directly\r\n if (React.isValidElement(icon)) {\r\n return React.cloneElement(icon as React.ReactElement<{ className?: string }>, { className })\r\n }\r\n\r\n // If it's a component (function, forwardRef, memo), render it\r\n if (\r\n typeof icon === 'function' ||\r\n (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\r\n ) {\r\n const IconComponent = icon as React.ComponentType<{ className?: string }>\r\n return <IconComponent className={className} />\r\n }\r\n\r\n return null\r\n}\r\n\r\n// Badge variant styles\r\nconst badgeVariantStyles: Record<BadgeVariant, string> = {\r\n default: 'bg-primary/10 text-primary',\r\n notification: 'bg-destructive/20 text-destructive',\r\n success: 'bg-green-100 text-green-600',\r\n warning: 'bg-amber-100 text-amber-600',\r\n}\r\n\r\nexport const SidebarNavGroup = React.memo<SidebarNavGroupProps>(function SidebarNavGroup({\r\n icon,\r\n label,\r\n children,\r\n id,\r\n defaultOpen = false,\r\n isActive = false,\r\n badge,\r\n badgeVariant = 'default',\r\n className,\r\n}) {\r\n const { expanded, activeSection, setActiveSection } = useSidebar()\r\n const [isOpen, setIsOpen] = React.useState(defaultOpen)\r\n const groupId = id || label.toLowerCase().replace(/\\s+/g, '-')\r\n\r\n // Sync with context activeSection\r\n const isExpanded = expanded && (activeSection === groupId || isOpen)\r\n\r\n const handleClick = React.useCallback(() => {\r\n if (activeSection === groupId) {\r\n setActiveSection(null)\r\n setIsOpen(false)\r\n } else {\r\n setActiveSection(groupId)\r\n setIsOpen(true)\r\n }\r\n }, [activeSection, groupId, setActiveSection])\r\n\r\n // Auto-expand when sidebar expands and group is active\r\n React.useEffect(() => {\r\n if (expanded && isActive && !isOpen) {\r\n setIsOpen(true)\r\n setActiveSection(groupId)\r\n }\r\n }, [expanded, isActive, isOpen, setActiveSection, groupId])\r\n\r\n const iconSize = expanded ? 'h-3.5 w-3.5' : 'h-4 w-4'\r\n\r\n return (\r\n <div className={cn('relative', className)}>\r\n {/* Group Header Button */}\r\n <button\r\n onClick={handleClick}\r\n className={cn(\r\n 'group relative flex w-full items-center rounded-md px-2 py-1.5 transition-all duration-200',\r\n isActive\r\n ? 'bg-primary/10 text-primary'\r\n : 'hover:bg-primary/5 hover:text-primary'\r\n )}\r\n >\r\n {/* Active indicator - left border */}\r\n {isActive && (\r\n <motion.div\r\n layoutId=\"sidebarGroupActiveIndicator\"\r\n className=\"absolute left-0 top-0 bottom-0 w-0.5 rounded-r-full bg-primary\"\r\n transition={{ type: 'spring', stiffness: 300, damping: 30 }}\r\n />\r\n )}\r\n\r\n {/* Icon */}\r\n <div\r\n className={cn(\r\n 'flex h-6 w-6 items-center justify-center rounded-md transition-all duration-200',\r\n isActive\r\n ? 'text-primary bg-primary/10 group-hover:bg-primary/20'\r\n : 'text-muted-foreground group-hover:text-foreground'\r\n )}\r\n >\r\n {renderIcon(icon, iconSize)}\r\n </div>\r\n\r\n {/* Label */}\r\n <AnimatePresence>\r\n {expanded && (\r\n <motion.span\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n exit={{ opacity: 0, x: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"ml-2 flex-1 text-left text-xs font-medium truncate\"\r\n >\r\n {label}\r\n </motion.span>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Badge - Full when expanded */}\r\n <AnimatePresence>\r\n {badge !== undefined && expanded && (\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.8 }}\r\n transition={{ duration: 0.2 }}\r\n className={cn(\r\n 'ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full px-1 text-[10px] font-medium',\r\n badgeVariantStyles[badgeVariant]\r\n )}\r\n >\r\n {badge}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Chevron - Rotates when expanded */}\r\n {expanded && (\r\n <motion.div\r\n animate={{ rotate: isExpanded ? 90 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"ml-1\"\r\n >\r\n <ChevronRight className=\"h-3 w-3 text-muted-foreground\" />\r\n </motion.div>\r\n )}\r\n\r\n {/* Badge dot - When collapsed */}\r\n {badge !== undefined && !expanded && (\r\n <div\r\n className={cn(\r\n 'absolute top-1 right-1 h-2 w-2 rounded-full',\r\n badgeVariant === 'notification' && 'bg-destructive',\r\n badgeVariant === 'success' && 'bg-green-500',\r\n badgeVariant === 'warning' && 'bg-amber-500',\r\n badgeVariant === 'default' && 'bg-primary'\r\n )}\r\n />\r\n )}\r\n </button>\r\n\r\n {/* Submenu Items */}\r\n <AnimatePresence>\r\n {isExpanded && (\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: 'auto', opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{ duration: 0.2, ease: 'easeInOut' }}\r\n className=\"overflow-hidden\"\r\n >\r\n <div className=\"mt-0.5 space-y-0.5 pl-4 pr-2\">\r\n {children}\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n )\r\n})\r\n\r\nSidebarNavGroup.displayName = 'Sidebar.NavGroup'\r\n","import * as React from 'react'\r\nimport { motion, AnimatePresence } from 'framer-motion'\r\nimport { ChevronDown } from 'lucide-react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useSidebar } from './SidebarContext'\r\nimport type { SidebarFooterProps } from './types'\r\n\r\n// Helper to check if icon is a Lucide icon\r\nfunction isLucideIcon(icon: unknown): icon is React.ComponentType<{ className?: string }> {\r\n return typeof icon === 'function'\r\n}\r\n\r\n// Get initials from name\r\nfunction getInitials(name: string): string {\r\n return name\r\n .split(' ')\r\n .map((part) => part.charAt(0))\r\n .slice(0, 2)\r\n .join('')\r\n .toUpperCase()\r\n}\r\n\r\nexport const SidebarFooter = React.memo<SidebarFooterProps>(function SidebarFooter({\r\n user,\r\n menuItems,\r\n children,\r\n className,\r\n}) {\r\n const { expanded } = useSidebar()\r\n const [menuOpen, setMenuOpen] = React.useState(false)\r\n\r\n const handleToggleMenu = React.useCallback(() => {\r\n setMenuOpen((prev) => !prev)\r\n }, [])\r\n\r\n // Close menu when clicking outside\r\n React.useEffect(() => {\r\n if (!menuOpen) return\r\n\r\n const handleClickOutside = (event: MouseEvent) => {\r\n const target = event.target as HTMLElement\r\n if (!target.closest('[data-sidebar-footer]')) {\r\n setMenuOpen(false)\r\n }\r\n }\r\n\r\n document.addEventListener('click', handleClickOutside)\r\n return () => document.removeEventListener('click', handleClickOutside)\r\n }, [menuOpen])\r\n\r\n // If children provided, render them directly\r\n if (children) {\r\n return (\r\n <div className={cn('border-t border-border p-2', className)}>\r\n {children}\r\n </div>\r\n )\r\n }\r\n\r\n // Structured footer with user and menu\r\n if (!user) return null\r\n\r\n return (\r\n <div\r\n data-sidebar-footer\r\n className={cn('group cursor-pointer border-t border-border p-2', className)}\r\n >\r\n <div className=\"relative\">\r\n <button\r\n onClick={handleToggleMenu}\r\n className={cn(\r\n 'flex w-full items-center gap-2 rounded-md p-1.5 transition-all',\r\n 'hover:bg-muted',\r\n menuOpen && 'bg-muted'\r\n )}\r\n >\r\n {/* Avatar */}\r\n <div className=\"relative flex-shrink-0\">\r\n {user.avatar ? (\r\n <img\r\n src={user.avatar}\r\n alt={user.name}\r\n className=\"h-8 w-8 rounded-full object-cover\"\r\n />\r\n ) : (\r\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-primary/10 text-xs font-medium text-primary\">\r\n {getInitials(user.name)}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* User Info - Only when expanded */}\r\n <AnimatePresence>\r\n {expanded && (\r\n <motion.div\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n exit={{ opacity: 0, x: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"flex flex-1 items-center justify-between\"\r\n >\r\n <div className=\"flex flex-col items-start\">\r\n <span className=\"text-xs font-medium truncate max-w-[120px]\">\r\n {user.name}\r\n </span>\r\n {user.email && (\r\n <span className=\"text-[10px] text-muted-foreground truncate max-w-[120px]\">\r\n {user.email}\r\n </span>\r\n )}\r\n </div>\r\n <ChevronDown\r\n className={cn(\r\n 'h-3 w-3 text-muted-foreground transition-transform',\r\n menuOpen && 'rotate-180'\r\n )}\r\n />\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </button>\r\n\r\n {/* Dropdown Menu */}\r\n <AnimatePresence>\r\n {menuOpen && expanded && menuItems && menuItems.length > 0 && (\r\n <motion.div\r\n initial={{ opacity: 0, y: -10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.15 }}\r\n className=\"absolute bottom-full left-0 right-0 mb-1 overflow-hidden rounded-md border border-border bg-card shadow-lg\"\r\n >\r\n <div className=\"py-1\">\r\n {menuItems.map((item, index) => {\r\n const IconComponent = item.icon && isLucideIcon(item.icon) ? item.icon : null\r\n const isDestructive = item.variant === 'destructive'\r\n\r\n return (\r\n <React.Fragment key={item.label}>\r\n {/* Separator before destructive items */}\r\n {isDestructive && index > 0 && (\r\n <div className=\"my-1 border-t border-border\" />\r\n )}\r\n <button\r\n onClick={() => {\r\n item.onClick()\r\n setMenuOpen(false)\r\n }}\r\n className={cn(\r\n 'flex w-full items-center gap-2 px-3 py-1.5 text-xs transition-colors',\r\n isDestructive\r\n ? 'text-destructive hover:bg-destructive/10'\r\n : 'text-foreground hover:bg-muted'\r\n )}\r\n >\r\n {IconComponent && <IconComponent className=\"h-3 w-3\" />}\r\n <span>{item.label}</span>\r\n </button>\r\n </React.Fragment>\r\n )\r\n })}\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n </div>\r\n )\r\n})\r\n\r\nSidebarFooter.displayName = 'Sidebar.Footer'\r\n","import * as React from 'react'\r\nimport { motion } from 'framer-motion'\r\nimport { cn } from '../../utils/cn'\r\nimport { SidebarProvider, useMediaQuery, useSidebar, useSidebarOptional } from './SidebarContext'\r\nimport { SidebarHeader } from './SidebarHeader'\r\nimport { SidebarNav } from './SidebarNav'\r\nimport { SidebarSection } from './SidebarSection'\r\nimport { SidebarNavItem } from './SidebarNavItem'\r\nimport { SidebarNavGroup } from './SidebarNavGroup'\r\nimport { SidebarFooter } from './SidebarFooter'\r\nimport type { SidebarProps, SidebarContextValue } from './types'\r\n\r\nconst COLLAPSED_WIDTH = 60\r\nconst EXPANDED_WIDTH = 250\r\n\r\n// ============================================================================\r\n// SidebarRoot - Provider with state management\r\n// ============================================================================\r\n\r\ninterface SidebarRootProps {\r\n children: React.ReactNode\r\n defaultExpanded?: boolean\r\n defaultPinned?: boolean\r\n collapsedWidth?: number\r\n expandedWidth?: number\r\n}\r\n\r\nfunction SidebarRoot({\r\n children,\r\n defaultExpanded = false,\r\n defaultPinned = false,\r\n collapsedWidth = COLLAPSED_WIDTH,\r\n expandedWidth = EXPANDED_WIDTH,\r\n}: SidebarRootProps) {\r\n // If pinned, sidebar should also be expanded\r\n const [expanded, setExpanded] = React.useState(defaultExpanded || defaultPinned)\r\n const [pinned, setPinned] = React.useState(defaultPinned)\r\n const [activeSection, setActiveSection] = React.useState<string | null>(null)\r\n const isMobile = useMediaQuery('(max-width: 768px)')\r\n\r\n const handleSetPinned = React.useCallback((value: boolean) => {\r\n setPinned(value)\r\n if (value) {\r\n setExpanded(true)\r\n }\r\n }, [])\r\n\r\n const contextValue = React.useMemo<SidebarContextValue>(\r\n () => ({\r\n expanded,\r\n setExpanded,\r\n pinned,\r\n setPinned: handleSetPinned,\r\n activeSection,\r\n setActiveSection,\r\n isMobile,\r\n collapsedWidth,\r\n expandedWidth,\r\n }),\r\n [expanded, pinned, handleSetPinned, activeSection, isMobile, collapsedWidth, expandedWidth]\r\n )\r\n\r\n return (\r\n <SidebarProvider value={contextValue}>\r\n {children}\r\n </SidebarProvider>\r\n )\r\n}\r\n\r\nSidebarRoot.displayName = 'SidebarRoot'\r\n\r\n// ============================================================================\r\n// SidebarAside - The actual sidebar UI\r\n// ============================================================================\r\n\r\ninterface SidebarAsideProps {\r\n children: React.ReactNode\r\n className?: string\r\n}\r\n\r\nfunction SidebarAside({ children, className }: SidebarAsideProps) {\r\n const { expanded, pinned, setExpanded, isMobile, collapsedWidth, expandedWidth } = useSidebar()\r\n const sidebarRef = React.useRef<HTMLDivElement>(null)\r\n\r\n const handleMouseEnter = React.useCallback(() => {\r\n if (!pinned && !isMobile) {\r\n setExpanded(true)\r\n }\r\n }, [pinned, isMobile, setExpanded])\r\n\r\n const handleMouseLeave = React.useCallback(() => {\r\n if (!pinned && !isMobile) {\r\n setExpanded(false)\r\n }\r\n }, [pinned, isMobile, setExpanded])\r\n\r\n // Don't render desktop sidebar on mobile\r\n if (isMobile) {\r\n return null\r\n }\r\n\r\n return (\r\n <motion.aside\r\n ref={sidebarRef}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n initial={{ width: collapsedWidth }}\r\n animate={{ width: expanded ? expandedWidth : collapsedWidth }}\r\n transition={{\r\n type: 'spring',\r\n stiffness: 300,\r\n damping: 30,\r\n mass: 1,\r\n }}\r\n className={cn(\r\n 'relative flex h-screen flex-col bg-card',\r\n 'shadow-[0_0_20px_rgba(0,0,0,0.06)]',\r\n 'fixed top-0 left-0 z-50',\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.aside>\r\n )\r\n}\r\n\r\nSidebarAside.displayName = 'SidebarAside'\r\n\r\n// ============================================================================\r\n// SidebarContent - Main content wrapper that responds to sidebar\r\n// ============================================================================\r\n\r\ninterface SidebarContentProps {\r\n children: React.ReactNode\r\n className?: string\r\n}\r\n\r\nfunction SidebarContent({ children, className }: SidebarContentProps) {\r\n const sidebar = useSidebarOptional()\r\n\r\n // If no sidebar context, render without margin\r\n if (!sidebar) {\r\n return <div className={className}>{children}</div>\r\n }\r\n\r\n const { expanded, pinned, isMobile, collapsedWidth, expandedWidth } = sidebar\r\n\r\n // On mobile, no margin needed\r\n if (isMobile) {\r\n return <div className={className}>{children}</div>\r\n }\r\n\r\n // Calculate margin based on sidebar state\r\n const marginLeft = pinned && expanded ? expandedWidth : collapsedWidth\r\n\r\n return (\r\n <motion.div\r\n initial={{ marginLeft: collapsedWidth }}\r\n animate={{ marginLeft }}\r\n transition={{\r\n type: 'spring',\r\n stiffness: 300,\r\n damping: 30,\r\n mass: 1,\r\n }}\r\n className={cn('min-h-screen flex flex-col', className)}\r\n >\r\n {children}\r\n </motion.div>\r\n )\r\n}\r\n\r\nSidebarContent.displayName = 'SidebarContent'\r\n\r\n// ============================================================================\r\n// Legacy Sidebar - Backwards compatible wrapper (for existing usage)\r\n// ============================================================================\r\n\r\nfunction LegacySidebar({\r\n children,\r\n defaultExpanded = false,\r\n defaultPinned = false,\r\n collapsedWidth = COLLAPSED_WIDTH,\r\n expandedWidth = EXPANDED_WIDTH,\r\n className,\r\n}: SidebarProps) {\r\n // If pinned, sidebar should also be expanded\r\n const [expanded, setExpanded] = React.useState(defaultExpanded || defaultPinned)\r\n const [pinned, setPinned] = React.useState(defaultPinned)\r\n const [activeSection, setActiveSection] = React.useState<string | null>(null)\r\n const isMobile = useMediaQuery('(max-width: 768px)')\r\n\r\n const sidebarRef = React.useRef<HTMLDivElement>(null)\r\n\r\n const handleMouseEnter = React.useCallback(() => {\r\n if (!pinned && !isMobile) {\r\n setExpanded(true)\r\n }\r\n }, [pinned, isMobile])\r\n\r\n const handleMouseLeave = React.useCallback(() => {\r\n if (!pinned && !isMobile) {\r\n setExpanded(false)\r\n }\r\n }, [pinned, isMobile])\r\n\r\n const handleSetPinned = React.useCallback((value: boolean) => {\r\n setPinned(value)\r\n if (value) {\r\n setExpanded(true)\r\n }\r\n }, [])\r\n\r\n const contextValue = React.useMemo<SidebarContextValue>(\r\n () => ({\r\n expanded,\r\n setExpanded,\r\n pinned,\r\n setPinned: handleSetPinned,\r\n activeSection,\r\n setActiveSection,\r\n isMobile,\r\n collapsedWidth,\r\n expandedWidth,\r\n }),\r\n [expanded, pinned, handleSetPinned, activeSection, isMobile, collapsedWidth, expandedWidth]\r\n )\r\n\r\n // Don't render desktop sidebar on mobile\r\n if (isMobile) {\r\n return (\r\n <SidebarProvider value={contextValue}>\r\n {children}\r\n </SidebarProvider>\r\n )\r\n }\r\n\r\n return (\r\n <SidebarProvider value={contextValue}>\r\n <motion.aside\r\n ref={sidebarRef}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n initial={{ width: collapsedWidth }}\r\n animate={{ width: expanded ? expandedWidth : collapsedWidth }}\r\n transition={{\r\n type: 'spring',\r\n stiffness: 300,\r\n damping: 30,\r\n mass: 1,\r\n }}\r\n className={cn(\r\n 'relative flex h-screen flex-col bg-card',\r\n 'shadow-[0_0_20px_rgba(0,0,0,0.06)]',\r\n 'fixed top-0 left-0 z-50',\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.aside>\r\n </SidebarProvider>\r\n )\r\n}\r\n\r\nLegacySidebar.displayName = 'Sidebar'\r\n\r\n// ============================================================================\r\n// Compound component pattern\r\n// ============================================================================\r\n\r\nexport const Sidebar = Object.assign(LegacySidebar, {\r\n // Layout components\r\n Root: SidebarRoot,\r\n Aside: SidebarAside,\r\n Content: SidebarContent,\r\n // Sidebar content components\r\n Header: SidebarHeader,\r\n Nav: SidebarNav,\r\n Section: SidebarSection,\r\n NavItem: SidebarNavItem,\r\n NavGroup: SidebarNavGroup,\r\n Footer: SidebarFooter,\r\n})\r\n","import * as React from 'react'\r\nimport { motion } from 'framer-motion'\r\nimport { cn } from '../../utils/cn'\r\nimport type { MobileNavItemProps } from './types'\r\n\r\n// Helper to render icon - handles Lucide icons, forwardRef, memo, and React elements\r\nfunction renderIcon(icon: unknown, className: string): React.ReactNode {\r\n if (!icon) return null\r\n\r\n // If it's a valid React element, render it directly\r\n if (React.isValidElement(icon)) {\r\n return React.cloneElement(icon as React.ReactElement<{ className?: string }>, { className })\r\n }\r\n\r\n // If it's a component (function, forwardRef, memo), render it\r\n if (\r\n typeof icon === 'function' ||\r\n (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\r\n ) {\r\n const IconComponent = icon as React.ComponentType<{ className?: string }>\r\n return <IconComponent className={className} />\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const MobileNavItem = React.memo<MobileNavItemProps>(function MobileNavItem({\r\n icon,\r\n label,\r\n isActive = false,\r\n onClick,\r\n}) {\r\n return (\r\n <button onClick={onClick} className=\"group flex flex-col items-center\">\r\n <div\r\n className={cn(\r\n 'flex items-center justify-center rounded-full p-1.5 transition-colors',\r\n isActive ? 'text-primary' : 'text-muted-foreground group-hover:text-foreground'\r\n )}\r\n >\r\n {renderIcon(icon, 'h-5 w-5')}\r\n </div>\r\n <span\r\n className={cn(\r\n 'mt-0.5 text-[10px] font-medium',\r\n isActive ? 'text-primary' : 'text-muted-foreground group-hover:text-foreground'\r\n )}\r\n >\r\n {label}\r\n </span>\r\n {isActive && (\r\n <motion.div\r\n layoutId=\"mobileNavActiveIndicator\"\r\n className=\"mt-1 h-1 w-8 rounded-full bg-primary\"\r\n transition={{ type: 'spring', stiffness: 500, damping: 30 }}\r\n />\r\n )}\r\n </button>\r\n )\r\n})\r\n\r\nMobileNavItem.displayName = 'MobileNavItem'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { MobileNavItem } from './MobileNavItem'\r\nimport type { MobileNavProps } from './types'\r\n\r\nexport const MobileNav = React.memo<MobileNavProps>(function MobileNav({\r\n items,\r\n fabAction,\r\n className,\r\n}) {\r\n // Split items for FAB placement (if FAB is provided)\r\n const leftItems = fabAction ? items.slice(0, Math.ceil(items.length / 2)) : items\r\n const rightItems = fabAction ? items.slice(Math.ceil(items.length / 2)) : []\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'fixed bottom-0 left-0 right-0 z-50 bg-card px-2 pb-2 pt-1.5 md:hidden',\r\n 'border-t border-border',\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center justify-around\">\r\n {/* Left Items */}\r\n {leftItems.map((item, index) => (\r\n <MobileNavItem\r\n key={`left-${index}-${item.label}`}\r\n icon={item.icon}\r\n label={item.label}\r\n isActive={item.isActive}\r\n onClick={() => {\r\n if (item.onClick) {\r\n item.onClick()\r\n } else if (item.href && typeof window !== 'undefined') {\r\n window.location.href = item.href\r\n }\r\n }}\r\n />\r\n ))}\r\n\r\n {/* FAB Button (Center) */}\r\n {fabAction && (\r\n <div className=\"relative -mt-5\">\r\n <button\r\n onClick={fabAction.onClick}\r\n className={cn(\r\n 'flex h-14 w-14 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg',\r\n 'transition-transform hover:bg-primary/90 active:scale-95'\r\n )}\r\n aria-label={fabAction.label}\r\n >\r\n {fabAction.icon}\r\n </button>\r\n <span className=\"mt-1 block text-center text-[10px] font-medium text-muted-foreground\">\r\n {fabAction.label}\r\n </span>\r\n </div>\r\n )}\r\n\r\n {/* Right Items */}\r\n {rightItems.map((item, index) => (\r\n <MobileNavItem\r\n key={`right-${index}-${item.label}`}\r\n icon={item.icon}\r\n label={item.label}\r\n isActive={item.isActive}\r\n onClick={() => {\r\n if (item.onClick) {\r\n item.onClick()\r\n } else if (item.href && typeof window !== 'undefined') {\r\n window.location.href = item.href\r\n }\r\n }}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n )\r\n})\r\n\r\nMobileNav.displayName = 'MobileNav'\r\n","import * as React from 'react'\nimport { cn } from '../../utils/cn'\n\nexport interface NavbarProps {\n children: React.ReactNode\n className?: string\n style?: React.CSSProperties\n}\n\nexport const Navbar = React.memo<NavbarProps>(function Navbar({\n children,\n className,\n style,\n}) {\n return (\n <nav\n className={cn(\n 'fixed top-0 right-0 bg-card border-b/50 h-16 z-40 w-full shadow-sm',\n className\n )}\n style={style}\n >\n <div className=\"h-full px-4 sm:px-6 lg:pr-8 lg:pl-20\">\n <div className=\"flex justify-between items-center h-full\">\n {children}\n </div>\n </div>\n </nav>\n )\n})\n\nNavbar.displayName = 'Navbar'\n","import * as React from 'react'\nimport { Moon, Sun } from 'lucide-react'\nimport { Button } from '../Button'\n\nexport interface ThemeToggleProps {\n className?: string\n}\n\nexport function ThemeToggle({ className }: ThemeToggleProps) {\n const [isDark, setIsDark] = React.useState(false)\n\n React.useEffect(() => {\n const isDarkMode = document.documentElement.classList.contains('dark')\n setIsDark(isDarkMode)\n }, [])\n\n const toggleTheme = () => {\n setIsDark(!isDark)\n if (isDark) {\n document.documentElement.classList.remove('dark')\n document.documentElement.style.colorScheme = 'light'\n } else {\n document.documentElement.classList.add('dark')\n document.documentElement.style.colorScheme = 'dark'\n }\n }\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={toggleTheme}\n aria-label=\"Alternar tema\"\n className={className}\n >\n {isDark ? (\n <Sun className=\"h-[1.2rem] w-[1.2rem] text-muted-foreground transition-all\" />\n ) : (\n <Moon className=\"h-[1.2rem] w-[1.2rem] text-muted-foreground transition-all\" />\n )}\n <span className=\"sr-only\">Alternar tema</span>\n </Button>\n )\n}\n\nThemeToggle.displayName = 'ThemeToggle'\n","import * as React from 'react'\nimport { Bell } from 'lucide-react'\nimport { Button } from '../Button'\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover'\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '../Card'\n\nexport interface NotificationItem {\n id: string\n icon?: React.ReactNode\n title: string\n description: string\n time: string\n isHighlighted?: boolean\n}\n\nexport interface NavbarNotificationProps {\n notifications?: NotificationItem[]\n onMarkAllAsRead?: () => void\n onViewAll?: () => void\n}\n\nexport function NavbarNotification({\n notifications = [],\n onMarkAllAsRead,\n onViewAll,\n}: NavbarNotificationProps) {\n const hasNotifications = notifications.length > 0\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"rounded-full relative\">\n <Bell className=\"h-5 w-5 text-muted-foreground\" />\n {hasNotifications && (\n <span className=\"absolute top-0 right-0 h-2 w-2 rounded-full bg-red-500\" />\n )}\n <span className=\"sr-only\">Abrir notificações</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[400px] p-0\" align=\"end\">\n <Card className=\"border-0 shadow-none\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-xl font-bold\">Notificações</CardTitle>\n {onMarkAllAsRead && (\n <Button\n variant=\"link\"\n className=\"text-primary hover:text-primary/80\"\n onClick={onMarkAllAsRead}\n >\n Marcar todas como lidas\n </Button>\n )}\n </CardHeader>\n <CardContent className=\"px-0\">\n {notifications.length === 0 ? (\n <div className=\"py-8 text-center text-muted-foreground\">\n Nenhuma notificação\n </div>\n ) : (\n <>\n <div className=\"bg-background/30 px-6 py-2 text-sm font-medium text-gray-500\">\n Hoje\n </div>\n <div className=\"space-y-4 px-6 py-3\">\n {notifications.map((notification) => (\n <div\n key={notification.id}\n className={`flex items-start space-x-4 ${\n notification.isHighlighted\n ? 'rounded-lg bg-primary/5 p-3'\n : ''\n }`}\n >\n {notification.icon && (\n <div\n className={`mt-1 rounded-full p-2 ${\n notification.isHighlighted\n ? 'bg-primary/25'\n : 'bg-gray-500/20'\n }`}\n >\n {notification.icon}\n </div>\n )}\n <div className=\"flex-1\">\n <p className=\"text-sm font-medium\">\n {notification.title}\n </p>\n <p className=\"text-sm text-gray-500\">\n {notification.description}\n </p>\n <p className=\"mt-1 text-xs text-gray-400\">\n {notification.time}\n </p>\n </div>\n </div>\n ))}\n </div>\n </>\n )}\n </CardContent>\n {onViewAll && (\n <CardFooter className=\"justify-center\">\n <Button\n variant=\"link\"\n className=\"text-primary hover:text-primary/80\"\n onClick={onViewAll}\n >\n Ver todas notificações\n </Button>\n </CardFooter>\n )}\n </Card>\n </PopoverContent>\n </Popover>\n )\n}\n\nNavbarNotification.displayName = 'NavbarNotification'\n","import * as React from 'react'\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area'\nimport { cn } from '../../utils/cn'\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 * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\nimport { cn } from '../../utils/cn'\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 React from 'react'\nimport { ChevronDown, CheckCircle2 } from 'lucide-react'\nimport { Button } from '../Button'\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover'\nimport { ScrollArea } from '../ScrollArea'\nimport { Avatar, AvatarFallback } from '../Avatar'\nimport { Separator } from '../Separator'\nimport { Loader } from '../Loader'\n\nexport interface Company {\n id: string\n name: string\n cnpj?: string\n}\n\nexport interface NavbarCompanyProfileProps {\n /** Lista de empresas vinculadas */\n companies: Company[]\n /** ID da empresa ativa */\n activeCompanyId?: string\n /** Callback quando uma empresa é selecionada */\n onCompanySelect?: (companyId: string) => void\n /** Se está carregando as empresas */\n isLoading?: boolean\n /** Função para formatar CNPJ (opcional) */\n formatCnpj?: (cnpj: string) => string\n}\n\nfunction getInitials(name: string): string {\n return name.slice(0, 2).toUpperCase()\n}\n\nfunction defaultFormatCnpj(cnpj: string): string {\n // Format: 00.000.000/0000-00\n return cnpj\n .replace(/\\D/g, '')\n .replace(/^(\\d{2})(\\d)/, '$1.$2')\n .replace(/^(\\d{2})\\.(\\d{3})(\\d)/, '$1.$2.$3')\n .replace(/\\.(\\d{3})(\\d)/, '.$1/$2')\n .replace(/(\\d{4})(\\d)/, '$1-$2')\n .slice(0, 18)\n}\n\nexport function NavbarCompanyProfile({\n companies,\n activeCompanyId,\n onCompanySelect,\n isLoading = false,\n formatCnpj = defaultFormatCnpj,\n}: NavbarCompanyProfileProps) {\n const currentCompany = companies.find(\n (company) => company.id === activeCompanyId\n )\n\n if (!currentCompany) {\n return isLoading ? <Loader variant=\"dots\" /> : null\n }\n\n const handleCompanyClick = (companyId: string) => {\n if (onCompanySelect) {\n onCompanySelect(companyId)\n }\n }\n\n return (\n <div className=\"relative\">\n <div className=\"flex items-center space-x-3 bg-primary/5 text-primary px-2 py-1 rounded-md\">\n <Avatar className=\"h-10 w-10 bg-primary/20\">\n <AvatarFallback className=\"font-semibold\">\n {getInitials(currentCompany.name)}\n </AvatarFallback>\n </Avatar>\n <div className=\"hidden sm:flex sm:flex-col sm:flex-grow\">\n <h3 className=\"font-semibold text-sm\">{currentCompany.name}</h3>\n {currentCompany.cnpj && (\n <p className=\"text-xs text-primary/70\">\n {formatCnpj(currentCompany.cnpj)}\n </p>\n )}\n </div>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 px-2 text-primary hover:bg-primary/20\"\n >\n <span className=\"sr-only\">Abrir menu de empresas</span>\n <ChevronDown className=\"h-4 w-4\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-0\" align=\"end\">\n <div className=\"bg-primary/5 p-4 rounded-t-lg\">\n <h4 className=\"font-semibold text-sm mb-1\">\n Empresas Vinculadas\n </h4>\n <p className=\"text-xs text-muted-foreground\">\n Selecione para mudar de empresa\n </p>\n </div>\n <ScrollArea className=\"h-64\">\n <div className=\"p-4\">\n {isLoading && (\n <div className=\"flex justify-center py-4\">\n <Loader variant=\"spinner\" />\n </div>\n )}\n {!isLoading && companies.length === 0 && (\n <p className=\"text-center text-muted-foreground\">\n Nenhuma empresa encontrada.\n </p>\n )}\n {companies.map((company, index) => (\n <React.Fragment key={company.id}>\n <Button\n variant=\"ghost\"\n className=\"w-full justify-start text-sm mb-1 hover:bg-primary/10\"\n onClick={() => handleCompanyClick(company.id)}\n >\n <div className=\"flex items-center w-full\">\n <Avatar className=\"h-8 w-8 mr-3\">\n <AvatarFallback className=\"bg-primary/20 text-primary text-xs\">\n {getInitials(company.name)}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex-grow text-left\">\n <div className=\"font-medium\">{company.name}</div>\n {company.cnpj && (\n <div className=\"text-xs text-muted-foreground\">\n {formatCnpj(company.cnpj)}\n </div>\n )}\n </div>\n {company.id === activeCompanyId && (\n <CheckCircle2 className=\"h-4 w-4 text-primary ml-2\" />\n )}\n </div>\n </Button>\n {index < companies.length - 1 && (\n <Separator className=\"my-2\" />\n )}\n </React.Fragment>\n ))}\n </div>\n </ScrollArea>\n </PopoverContent>\n </Popover>\n </div>\n </div>\n )\n}\n\nNavbarCompanyProfile.displayName = 'NavbarCompanyProfile'\n","import * as React from 'react'\nimport { Bell, LogOut, Settings, User } from 'lucide-react'\nimport { Avatar, AvatarFallback, AvatarImage } from '../Avatar'\nimport { Button } from '../Button'\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover'\n\nexport interface UserMenuItemConfig {\n icon?: React.ReactNode\n label: string\n onClick?: () => void\n href?: string\n variant?: 'default' | 'destructive'\n}\n\nexport interface NavbarUserMenuProps {\n /** Nome do usuário */\n name: string\n /** Email do usuário */\n email?: string\n /** URL do avatar */\n avatarUrl?: string\n /** Se está no modo colapsado (só mostra avatar) */\n isCollapsed?: boolean\n /** Itens do menu */\n menuItems?: UserMenuItemConfig[]\n /** Children customizado para o menu */\n children?: React.ReactNode\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase()\n .slice(0, 2)\n}\n\nconst defaultMenuItems: UserMenuItemConfig[] = [\n { icon: <User className=\"h-4 w-4\" />, label: 'Ver Perfil' },\n { icon: <Settings className=\"h-4 w-4\" />, label: 'Configurações' },\n { icon: <Bell className=\"h-4 w-4\" />, label: 'Atualizações' },\n { icon: <LogOut className=\"h-4 w-4\" />, label: 'Sair', variant: 'destructive' },\n]\n\nexport function NavbarUserMenu({\n name,\n email,\n avatarUrl,\n isCollapsed = false,\n menuItems = defaultMenuItems,\n children,\n}: NavbarUserMenuProps) {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"ghost\" className=\"w-full justify-start p-2\">\n <Avatar className=\"h-8 w-8\">\n {avatarUrl && <AvatarImage src={avatarUrl} alt={name} />}\n <AvatarFallback>{getInitials(name)}</AvatarFallback>\n </Avatar>\n {!isCollapsed && (\n <div className=\"ml-2 text-left\">\n <p className=\"text-sm font-medium\">{name}</p>\n {email && (\n <p className=\"text-xs text-muted-foreground\">{email}</p>\n )}\n </div>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-56 p-2\" align=\"end\">\n {children ? (\n children\n ) : (\n <div className=\"space-y-1\">\n {menuItems.map((item, index) => {\n const content = (\n <Button\n key={index}\n variant=\"ghost\"\n className={`w-full justify-start text-sm ${\n item.variant === 'destructive' ? 'text-red-500' : ''\n }`}\n onClick={item.onClick}\n >\n {item.icon && (\n <span className=\"mr-2\">{item.icon}</span>\n )}\n {item.label}\n </Button>\n )\n\n if (item.href) {\n return (\n <a\n key={index}\n href={item.href}\n className=\"flex flex-col items-center text-center\"\n >\n {content}\n </a>\n )\n }\n\n return content\n })}\n </div>\n )}\n </PopoverContent>\n </Popover>\n )\n}\n\nNavbarUserMenu.displayName = 'NavbarUserMenu'\n","import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { ChevronRight, MoreHorizontal } from 'lucide-react'\nimport { cn } from '../../utils/cn'\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-semibold text-primary', 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=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis'\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","'use client'\r\n\r\nimport * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { LucideIcon } from 'lucide-react'\r\n\r\n// ============================================\r\n// ROOT COMPONENT\r\n// ============================================\r\n\r\ninterface SectionHeaderRootProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * Adds a gradient from primary color on the left side\r\n * @default true\r\n */\r\n gradient?: boolean\r\n /**\r\n * Adds bottom border\r\n * @default true\r\n */\r\n bordered?: boolean\r\n}\r\n\r\nfunction SectionHeaderRoot({\r\n children,\r\n className,\r\n gradient = true,\r\n bordered = true,\r\n ...props\r\n}: SectionHeaderRootProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'px-6 py-4',\r\n gradient && 'bg-gradient-to-r from-primary/5 to-transparent',\r\n bordered && 'border-b border-border/50',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"flex items-center justify-between gap-4\">\r\n <div className=\"flex items-center gap-3 min-w-0 flex-1\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nSectionHeaderRoot.displayName = 'SectionHeader'\r\n\r\n// ============================================\r\n// ICON COMPONENT\r\n// ============================================\r\n\r\ninterface SectionHeaderIconProps {\r\n icon: LucideIcon\r\n className?: string\r\n}\r\n\r\nfunction SectionHeaderIcon({ icon: Icon, className }: SectionHeaderIconProps) {\r\n return (\r\n <div className={cn('p-2.5 rounded-xl bg-primary/10 shrink-0', className)}>\r\n <Icon className=\"h-5 w-5 text-primary\" />\r\n </div>\r\n )\r\n}\r\n\r\nSectionHeaderIcon.displayName = 'SectionHeader.Icon'\r\n\r\n// ============================================\r\n// CONTENT WRAPPER (for title + subtitle)\r\n// ============================================\r\n\r\ninterface SectionHeaderContentProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nfunction SectionHeaderContent({ children, className, ...props }: SectionHeaderContentProps) {\r\n return (\r\n <div className={cn('min-w-0 flex-1', className)} {...props}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nSectionHeaderContent.displayName = 'SectionHeader.Content'\r\n\r\n// ============================================\r\n// TITLE COMPONENT\r\n// ============================================\r\n\r\ninterface SectionHeaderTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\r\n\r\nfunction SectionHeaderTitle({ children, className, ...props }: SectionHeaderTitleProps) {\r\n return (\r\n <h3\r\n className={cn('font-semibold text-foreground truncate', className)}\r\n {...props}\r\n >\r\n {children}\r\n </h3>\r\n )\r\n}\r\n\r\nSectionHeaderTitle.displayName = 'SectionHeader.Title'\r\n\r\n// ============================================\r\n// SUBTITLE COMPONENT\r\n// ============================================\r\n\r\ninterface SectionHeaderSubtitleProps extends React.HTMLAttributes<HTMLParagraphElement> {}\r\n\r\nfunction SectionHeaderSubtitle({ children, className, ...props }: SectionHeaderSubtitleProps) {\r\n return (\r\n <p\r\n className={cn('text-sm text-muted-foreground truncate', className)}\r\n {...props}\r\n >\r\n {children}\r\n </p>\r\n )\r\n}\r\n\r\nSectionHeaderSubtitle.displayName = 'SectionHeader.Subtitle'\r\n\r\n// ============================================\r\n// ACTIONS COMPONENT\r\n// ============================================\r\n\r\ninterface SectionHeaderActionsProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nfunction SectionHeaderActions({ children, className, ...props }: SectionHeaderActionsProps) {\r\n return (\r\n <div\r\n className={cn('flex items-center gap-2 shrink-0 ml-auto', className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nSectionHeaderActions.displayName = 'SectionHeader.Actions'\r\n\r\n// ============================================\r\n// BADGE COMPONENT (for count display)\r\n// ============================================\r\n\r\ninterface SectionHeaderBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n variant?: 'default' | 'muted'\r\n}\r\n\r\nfunction SectionHeaderBadge({\r\n children,\r\n className,\r\n variant = 'muted',\r\n ...props\r\n}: SectionHeaderBadgeProps) {\r\n return (\r\n <span\r\n className={cn(\r\n 'text-xs px-2 py-1 rounded-full shrink-0',\r\n variant === 'muted' && 'bg-muted text-muted-foreground',\r\n variant === 'default' && 'bg-primary/10 text-primary',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </span>\r\n )\r\n}\r\n\r\nSectionHeaderBadge.displayName = 'SectionHeader.Badge'\r\n\r\n// ============================================\r\n// COMPOUND COMPONENT EXPORT\r\n// ============================================\r\n\r\nexport const SectionHeader = Object.assign(SectionHeaderRoot, {\r\n Icon: SectionHeaderIcon,\r\n Content: SectionHeaderContent,\r\n Title: SectionHeaderTitle,\r\n Subtitle: SectionHeaderSubtitle,\r\n Actions: SectionHeaderActions,\r\n Badge: SectionHeaderBadge,\r\n})\r\n\r\n// Export individual components for flexibility\r\nexport {\r\n SectionHeaderRoot,\r\n SectionHeaderIcon,\r\n SectionHeaderContent,\r\n SectionHeaderTitle,\r\n SectionHeaderSubtitle,\r\n SectionHeaderActions,\r\n SectionHeaderBadge,\r\n}\r\n\r\n// Export types\r\nexport type {\r\n SectionHeaderRootProps,\r\n SectionHeaderIconProps,\r\n SectionHeaderContentProps,\r\n SectionHeaderTitleProps,\r\n SectionHeaderSubtitleProps,\r\n SectionHeaderActionsProps,\r\n SectionHeaderBadgeProps,\r\n}\r\n","import * as React from 'react'\r\nimport type { KanbanContextValue } from './types'\r\n\r\nconst KanbanContext = React.createContext<KanbanContextValue | null>(null)\r\n\r\nexport function useKanban(): KanbanContextValue {\r\n const context = React.useContext(KanbanContext)\r\n if (!context) {\r\n throw new Error('useKanban must be used within a Kanban.Board component')\r\n }\r\n return context\r\n}\r\n\r\nexport function useKanbanOptional(): KanbanContextValue | null {\r\n return React.useContext(KanbanContext)\r\n}\r\n\r\ninterface KanbanProviderProps {\r\n children: React.ReactNode\r\n value: KanbanContextValue\r\n}\r\n\r\nexport function KanbanProvider({ children, value }: KanbanProviderProps) {\r\n return (\r\n <KanbanContext.Provider value={value}>\r\n {children}\r\n </KanbanContext.Provider>\r\n )\r\n}\r\n\r\nexport { KanbanContext }\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { KanbanProvider } from './KanbanContext'\r\nimport type { KanbanBoardProps, KanbanContextValue, KanbanDragResult } from './types'\r\n\r\nexport function KanbanBoard({\r\n children,\r\n onDragEnd,\r\n onDragStart,\r\n className,\r\n}: KanbanBoardProps) {\r\n const [isDragging, setIsDragging] = React.useState(false)\r\n const [draggedItemId, setDraggedItemId] = React.useState<string | null>(null)\r\n const [sourceColumnId, setSourceColumnId] = React.useState<string | null>(null)\r\n const [hoveredColumnId, setHoveredColumnId] = React.useState<string | null>(null)\r\n\r\n // Store drop validators for each column\r\n const dropValidatorsRef = React.useRef<Map<string, (itemId: string, sourceColumnId: string) => boolean>>(new Map())\r\n\r\n const registerDropValidator = React.useCallback((columnId: string, validator: (itemId: string, sourceColumnId: string) => boolean) => {\r\n dropValidatorsRef.current.set(columnId, validator)\r\n }, [])\r\n\r\n const unregisterDropValidator = React.useCallback((columnId: string) => {\r\n dropValidatorsRef.current.delete(columnId)\r\n }, [])\r\n\r\n const canDropInColumn = React.useCallback((columnId: string) => {\r\n if (!draggedItemId || !sourceColumnId) return false\r\n if (columnId === sourceColumnId) return false\r\n\r\n const validator = dropValidatorsRef.current.get(columnId)\r\n if (validator) {\r\n return validator(draggedItemId, sourceColumnId)\r\n }\r\n return true // Allow by default if no validator\r\n }, [draggedItemId, sourceColumnId])\r\n\r\n // Handle drag start from card\r\n const handleDragStart = React.useCallback((itemId: string, colId: string) => {\r\n setIsDragging(true)\r\n setDraggedItemId(itemId)\r\n setSourceColumnId(colId)\r\n onDragStart?.(itemId, colId)\r\n }, [onDragStart])\r\n\r\n // Handle drop on column\r\n const handleDrop = React.useCallback((destinationColumnId: string) => {\r\n if (draggedItemId && sourceColumnId && destinationColumnId !== sourceColumnId) {\r\n if (canDropInColumn(destinationColumnId)) {\r\n const result: KanbanDragResult = {\r\n itemId: draggedItemId,\r\n sourceColumnId,\r\n destinationColumnId,\r\n }\r\n onDragEnd?.(result)\r\n }\r\n }\r\n // Reset state\r\n setIsDragging(false)\r\n setDraggedItemId(null)\r\n setSourceColumnId(null)\r\n setHoveredColumnId(null)\r\n }, [draggedItemId, sourceColumnId, canDropInColumn, onDragEnd])\r\n\r\n // Handle drag end (cancelled or dropped outside)\r\n const handleDragEnd = React.useCallback(() => {\r\n setIsDragging(false)\r\n setDraggedItemId(null)\r\n setSourceColumnId(null)\r\n setHoveredColumnId(null)\r\n }, [])\r\n\r\n const contextValue = React.useMemo<KanbanContextValue>(() => ({\r\n isDragging,\r\n draggedItemId,\r\n sourceColumnId,\r\n hoveredColumnId,\r\n setHoveredColumnId,\r\n canDropInColumn,\r\n registerDropValidator,\r\n unregisterDropValidator,\r\n }), [isDragging, draggedItemId, sourceColumnId, hoveredColumnId, canDropInColumn, registerDropValidator, unregisterDropValidator])\r\n\r\n return (\r\n <KanbanProvider value={contextValue}>\r\n <div\r\n className={cn(\r\n 'flex gap-4 overflow-x-auto pb-4',\r\n className\r\n )}\r\n onDragEnd={handleDragEnd}\r\n data-kanban-board\r\n data-onstart={handleDragStart.toString()}\r\n data-ondrop={handleDrop.toString()}\r\n >\r\n <KanbanBoardInternalContext.Provider value={{ handleDragStart, handleDrop }}>\r\n {children}\r\n </KanbanBoardInternalContext.Provider>\r\n </div>\r\n </KanbanProvider>\r\n )\r\n}\r\n\r\n// Internal context for drag handlers (not exposed to consumers)\r\ninterface KanbanBoardInternalContextValue {\r\n handleDragStart: (itemId: string, columnId: string) => void\r\n handleDrop: (columnId: string) => void\r\n}\r\n\r\nconst KanbanBoardInternalContext = React.createContext<KanbanBoardInternalContextValue | null>(null)\r\n\r\nexport function useKanbanBoard(): KanbanBoardInternalContextValue {\r\n const context = React.useContext(KanbanBoardInternalContext)\r\n if (!context) {\r\n throw new Error('useKanbanBoard must be used within a Kanban.Board component')\r\n }\r\n return context\r\n}\r\n\r\nKanbanBoard.displayName = 'KanbanBoard'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useKanban } from './KanbanContext'\r\nimport { useKanbanBoard } from './KanbanBoard'\r\nimport type { KanbanColumnProps } from './types'\r\n\r\nexport function KanbanColumn({\r\n id,\r\n title,\r\n count,\r\n children,\r\n className,\r\n headerClassName,\r\n emptyMessage = 'Nenhum item',\r\n footer,\r\n canDrop,\r\n}: KanbanColumnProps) {\r\n const { isDragging, sourceColumnId, hoveredColumnId, setHoveredColumnId, canDropInColumn, registerDropValidator, unregisterDropValidator } = useKanban()\r\n const { handleDrop } = useKanbanBoard()\r\n\r\n // Register drop validator if provided\r\n React.useEffect(() => {\r\n if (canDrop) {\r\n registerDropValidator(id, canDrop)\r\n return () => unregisterDropValidator(id)\r\n }\r\n }, [id, canDrop, registerDropValidator, unregisterDropValidator])\r\n\r\n const isValidDropTarget = isDragging && sourceColumnId !== id && canDropInColumn(id)\r\n const isInvalidDropTarget = isDragging && sourceColumnId !== id && !canDropInColumn(id)\r\n const isHovered = hoveredColumnId === id\r\n\r\n const handleDragOver = React.useCallback((e: React.DragEvent) => {\r\n e.preventDefault()\r\n if (isValidDropTarget) {\r\n e.dataTransfer.dropEffect = 'move'\r\n setHoveredColumnId(id)\r\n } else {\r\n e.dataTransfer.dropEffect = 'none'\r\n }\r\n }, [isValidDropTarget, setHoveredColumnId, id])\r\n\r\n const handleDragLeave = React.useCallback((e: React.DragEvent) => {\r\n // Only handle if leaving the column itself, not children\r\n if (e.currentTarget === e.target || !e.currentTarget.contains(e.relatedTarget as Node)) {\r\n setHoveredColumnId(null)\r\n }\r\n }, [setHoveredColumnId])\r\n\r\n const handleDropEvent = React.useCallback((e: React.DragEvent) => {\r\n e.preventDefault()\r\n if (isValidDropTarget) {\r\n handleDrop(id)\r\n }\r\n }, [isValidDropTarget, handleDrop, id])\r\n\r\n const childCount = React.Children.count(children)\r\n const displayCount = count ?? childCount\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex flex-col min-w-[300px] max-w-[340px] rounded-2xl',\r\n 'bg-muted/20 dark:bg-muted/10',\r\n 'transition-all duration-200',\r\n isValidDropTarget && 'ring-2 ring-primary/40 bg-primary/5',\r\n isInvalidDropTarget && 'opacity-40',\r\n isHovered && isValidDropTarget && 'ring-primary/60 bg-primary/10 scale-[1.01]',\r\n className\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDropEvent}\r\n data-kanban-column={id}\r\n >\r\n {/* Column Header */}\r\n <div\r\n className={cn(\r\n 'flex items-center gap-2 px-4 py-3',\r\n headerClassName\r\n )}\r\n >\r\n <span className=\"text-muted-foreground\">↻</span>\r\n <h3 className=\"text-sm font-medium text-foreground flex-1\">{title}</h3>\r\n <span className=\"text-sm text-muted-foreground\">{displayCount}</span>\r\n <button className=\"p-1 rounded-md hover:bg-muted/50 text-muted-foreground transition-colors\">\r\n <span className=\"text-sm\">⋯</span>\r\n </button>\r\n <button className=\"p-1 rounded-md hover:bg-muted/50 text-muted-foreground transition-colors\">\r\n <span className=\"text-sm\">+</span>\r\n </button>\r\n </div>\r\n\r\n {/* Column Content */}\r\n <div\r\n className={cn(\r\n 'flex-1 px-2 pb-2 space-y-3 min-h-[200px] max-h-[calc(100vh-200px)] overflow-y-auto',\r\n isHovered && isValidDropTarget && 'bg-primary/5'\r\n )}\r\n >\r\n {childCount === 0 ? (\r\n <div className=\"flex items-center justify-center h-32 text-sm text-muted-foreground/60\">\r\n {emptyMessage}\r\n </div>\r\n ) : (\r\n children\r\n )}\r\n </div>\r\n\r\n {/* Column Footer */}\r\n {footer && (\r\n <div className=\"px-2 pb-3\">\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nKanbanColumn.displayName = 'KanbanColumn'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useKanban } from './KanbanContext'\r\nimport { useKanbanBoard } from './KanbanBoard'\r\nimport type { KanbanCardProps } from './types'\r\n\r\nexport function KanbanCard({\r\n id,\r\n columnId,\r\n children,\r\n className,\r\n disabled = false,\r\n}: KanbanCardProps) {\r\n const { draggedItemId } = useKanban()\r\n const { handleDragStart } = useKanbanBoard()\r\n\r\n const isThisCardDragging = draggedItemId === id\r\n\r\n const handleDragStartEvent = React.useCallback((e: React.DragEvent) => {\r\n if (disabled) {\r\n e.preventDefault()\r\n return\r\n }\r\n e.dataTransfer.effectAllowed = 'move'\r\n e.dataTransfer.setData('text/plain', id)\r\n // Small delay to allow the drag image to be captured\r\n setTimeout(() => {\r\n handleDragStart(id, columnId)\r\n }, 0)\r\n }, [id, columnId, handleDragStart, disabled])\r\n\r\n return (\r\n <div\r\n draggable={!disabled}\r\n onDragStart={handleDragStartEvent}\r\n className={cn(\r\n 'group relative rounded-2xl border border-border/60 bg-card p-4',\r\n 'shadow-[0_2px_8px_-2px_rgba(0,0,0,0.08),0_4px_16px_-4px_rgba(0,0,0,0.04)]',\r\n 'transition-all duration-200',\r\n !disabled && 'cursor-grab hover:shadow-[0_4px_16px_-4px_rgba(0,0,0,0.12),0_8px_24px_-8px_rgba(0,0,0,0.08)] hover:border-border',\r\n !disabled && 'active:cursor-grabbing active:scale-[0.98]',\r\n isThisCardDragging && 'opacity-50 scale-[0.96] shadow-xl border-primary ring-2 ring-primary/20',\r\n disabled && 'cursor-not-allowed opacity-60',\r\n className\r\n )}\r\n data-kanban-card={id}\r\n data-column={columnId}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nKanbanCard.displayName = 'KanbanCard'\r\n","import { KanbanBoard } from './KanbanBoard'\r\nimport { KanbanColumn } from './KanbanColumn'\r\nimport { KanbanCard } from './KanbanCard'\r\n\r\n/**\r\n * Kanban - A compound component for building Kanban boards\r\n *\r\n * @example\r\n * ```tsx\r\n * <Kanban.Board onDragEnd={handleDragEnd}>\r\n * <Kanban.Column id=\"pending\" title=\"Pendente\" count={3}>\r\n * <Kanban.Card id=\"1\" columnId=\"pending\">\r\n * <div>Card content</div>\r\n * </Kanban.Card>\r\n * </Kanban.Column>\r\n * <Kanban.Column\r\n * id=\"done\"\r\n * title=\"Concluido\"\r\n * canDrop={(itemId, sourceColumnId) => sourceColumnId === 'in-progress'}\r\n * >\r\n * <Kanban.Card id=\"2\" columnId=\"done\">\r\n * <div>Card content</div>\r\n * </Kanban.Card>\r\n * </Kanban.Column>\r\n * </Kanban.Board>\r\n * ```\r\n */\r\nexport const Kanban = {\r\n Board: KanbanBoard,\r\n Column: KanbanColumn,\r\n Card: KanbanCard,\r\n}\r\n","import { cn } from '../../utils/cn'\r\n\r\nexport interface LogoProps {\r\n /** Width of the logo (number for px, string for custom units) */\r\n width?: number | string\r\n /** Color of the logo (defaults to currentColor for theme compatibility) */\r\n color?: string\r\n /** Additional CSS classes */\r\n className?: string\r\n}\r\n\r\n/**\r\n * Facter brand logo - SVG component\r\n *\r\n * The logo uses currentColor by default, so it inherits the text color\r\n * from its parent. Use the `color` prop to override, or apply text color\r\n * classes via `className`.\r\n *\r\n * @example\r\n * // Basic usage (inherits color from parent)\r\n * <Logo width={32} />\r\n *\r\n * // With explicit color class\r\n * <Logo width={32} className=\"text-primary\" />\r\n *\r\n * // With custom color\r\n * <Logo width={32} color=\"#ffffff\" />\r\n */\r\nexport function Logo({\r\n width = 100,\r\n color = 'currentColor',\r\n className = 'text-primary',\r\n}: LogoProps) {\r\n const originalWidth = 207\r\n const originalHeight = 304\r\n\r\n let calculatedHeight: number | string = originalHeight\r\n if (typeof width === 'number') {\r\n calculatedHeight = Math.round(width * (originalHeight / originalWidth))\r\n } else if (typeof width === 'string' && width.endsWith('%')) {\r\n calculatedHeight = 'auto'\r\n } else if (typeof width === 'string') {\r\n const numWidth = parseFloat(width)\r\n if (!isNaN(numWidth)) {\r\n calculatedHeight = `${Math.round(\r\n numWidth * (originalHeight / originalWidth)\r\n )}${width.match(/[a-zA-Z%]+$/)?.[0] || ''}`\r\n } else {\r\n calculatedHeight = originalHeight\r\n }\r\n }\r\n\r\n return (\r\n <svg\r\n width={width}\r\n height={calculatedHeight}\r\n viewBox=\"0 0 207 304\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={cn(className)}\r\n style={color !== 'currentColor' ? { fill: color } : undefined}\r\n aria-label=\"Facter Logo\"\r\n role=\"img\"\r\n >\r\n <mask\r\n id=\"facter-logo-mask\"\r\n maskUnits=\"userSpaceOnUse\"\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"207\"\r\n height=\"304\"\r\n >\r\n <path d=\"M0 0.15625H206.26V304H0V0.15625Z\" fill=\"white\" />\r\n </mask>\r\n <g mask=\"url(#facter-logo-mask)\">\r\n <path\r\n d=\"M25.8384 196.911L15.4739 183.729C-10.7189 150.411 0.44781 101.422 38.4895 82.7344L206.266 0.307297V34.2396C206.266 60.1875 191.448 83.8698 168.12 95.2396L56.578 149.594C48.4634 153.547 41.3489 159.344 35.9791 166.609C30.5936 173.901 25.9582 183.906 26.3176 196.526C29.9947 193.609 34.0624 191.026 38.4843 188.854L206.26 106.432V140.359C206.26 166.313 191.437 189.995 168.109 201.365L56.578 255.708C48.4634 259.667 41.3489 265.464 35.9791 272.724C30.4426 280.224 25.6978 290.578 26.3593 303.693L15.4739 289.854C-7.54698 260.568 -1.72407 219.193 25.8384 196.911ZM134.818 266.526L206.208 303.724L206.187 210.802L134.953 246.661C126.828 250.755 126.755 262.323 134.818 266.526Z\"\r\n fill={color === 'currentColor' ? 'currentColor' : color}\r\n />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\ntype Theme = 'dark' | 'light' | 'system'\r\n\r\ninterface ThemeProviderProps {\r\n children: React.ReactNode\r\n defaultTheme?: Theme\r\n storageKey?: string\r\n}\r\n\r\ninterface ThemeProviderState {\r\n theme: Theme\r\n setTheme: (theme: Theme) => void\r\n}\r\n\r\nconst initialState: ThemeProviderState = {\r\n theme: 'system',\r\n setTheme: () => null,\r\n}\r\n\r\nconst ThemeProviderContext = React.createContext<ThemeProviderState>(initialState)\r\n\r\nexport function ThemeProvider({\r\n children,\r\n defaultTheme = 'system',\r\n storageKey = 'facter-ds-theme',\r\n ...props\r\n}: ThemeProviderProps) {\r\n const [theme, setTheme] = React.useState<Theme>(\r\n () => (localStorage.getItem(storageKey) as Theme) || defaultTheme\r\n )\r\n\r\n const [resolvedTheme, setResolvedTheme] = React.useState<'light' | 'dark'>('light')\r\n\r\n React.useEffect(() => {\r\n const root = window.document.documentElement\r\n\r\n root.classList.remove('light', 'dark')\r\n\r\n if (theme === 'system') {\r\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)')\r\n .matches\r\n ? 'dark'\r\n : 'light'\r\n\r\n root.classList.add(systemTheme)\r\n setResolvedTheme(systemTheme)\r\n return\r\n }\r\n\r\n root.classList.add(theme)\r\n setResolvedTheme(theme)\r\n }, [theme])\r\n\r\n const value = React.useMemo(\r\n () => ({\r\n theme,\r\n setTheme: (theme: Theme) => {\r\n localStorage.setItem(storageKey, theme)\r\n setTheme(theme)\r\n },\r\n }),\r\n [theme, storageKey]\r\n )\r\n\r\n return (\r\n <ThemeProviderContext.Provider {...props} value={value}>\r\n <div className={resolvedTheme} style={{ minHeight: '100vh' }}>\r\n {children}\r\n </div>\r\n </ThemeProviderContext.Provider>\r\n )\r\n}\r\n\r\nexport const useTheme = () => {\r\n const context = React.useContext(ThemeProviderContext)\r\n\r\n if (context === undefined)\r\n throw new Error('useTheme must be used within a ThemeProvider')\r\n\r\n return context\r\n}\r\n","/**\r\n * Facter Design System - Theme Presets\r\n *\r\n * Temas disponíveis:\r\n * - default: Neutro (shadcn default)\r\n * - truck: Azul (Facter Truck)\r\n * - vagas: Roxo (Facter Vagas)\r\n * - techcare: Verde (Facter TechCare)\r\n *\r\n * Uso no projeto:\r\n * ```css\r\n * // globals.css\r\n * @import '@facter/ds-core/themes/base.css';\r\n * @import '@facter/ds-core/themes/default.css';\r\n * @tailwind base;\r\n * @tailwind components;\r\n * @tailwind utilities;\r\n * ```\r\n */\r\n\r\nexport const FACTER_THEMES = {\r\n default: 'default',\r\n truck: 'truck',\r\n vagas: 'vagas',\r\n techcare: 'techcare',\r\n} as const\r\n\r\nexport type FacterTheme = keyof typeof FACTER_THEMES\r\n\r\n/**\r\n * Lista de temas disponíveis com suas cores primárias\r\n * primaryHsl é usado para injetar CSS variables dinamicamente\r\n */\r\nexport const THEME_INFO = {\r\n default: {\r\n name: 'Default',\r\n primaryColor: '#18181B',\r\n primaryHsl: '240 5.9% 10%',\r\n ringHsl: '240 5.9% 10%',\r\n description: 'Tema neutro padrão',\r\n },\r\n truck: {\r\n name: 'Facter Truck',\r\n primaryColor: '#3B5BDB',\r\n primaryHsl: '233 65% 55%',\r\n ringHsl: '233 65% 55%',\r\n description: 'Sistema de gestão de frotas',\r\n },\r\n vagas: {\r\n name: 'Facter Vagas',\r\n primaryColor: '#8B5CF6',\r\n primaryHsl: '262 83% 58%',\r\n ringHsl: '262 83% 58%',\r\n description: 'Plataforma de vagas de emprego',\r\n },\r\n techcare: {\r\n name: 'Facter TechCare',\r\n primaryColor: '#16A34A',\r\n primaryHsl: '142 76% 36%',\r\n ringHsl: '142 76% 36%',\r\n description: 'Sistema de assistência técnica',\r\n },\r\n} as const\r\n"]}
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Input/Input.tsx","../src/components/Badge/Badge.tsx","../src/components/BigNumberCard/Sparkline.tsx","../src/components/BigNumberCard/BigNumberCard.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Select/Select.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Loader/Loader.tsx","../src/components/Loader/LoaderContext.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Table/hooks/useDataTable.ts","../src/components/Table/DataTableContext.tsx","../src/components/Table/DataTable.tsx","../src/components/Table/types.ts","../src/components/Table/Table.tsx","../src/components/Table/DataTableContent.tsx","../src/components/Table/DataTableToolbar.tsx","../src/components/Table/hooks/useDebounce.ts","../src/components/Table/DataTableSearch.tsx","../src/components/Table/DataTableFilters.tsx","../src/components/Table/DataTablePagination.tsx","../src/components/Table/DataTableEmptyState.tsx","../src/components/Table/DataTableLoading.tsx","../src/components/Table/DataTableColumnHeader.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Table/DataTableColumnVisibility.tsx","../src/components/Table/DataTableDensityToggle.tsx","../src/components/Table/DataTableBulkActions.tsx","../src/components/Table/DataTableExport.tsx","../src/components/Table/DataTableTabs.tsx","../src/components/Table/index.ts","../src/components/Dialog/Dialog.tsx","../src/components/RippleEffect/RippleEffect.tsx","../src/components/Dialog/DialogWrapper.tsx","../src/components/Toast/Toast.tsx","../src/components/Switch/Switch.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Form/FormContext.tsx","../src/components/Form/FormInput.tsx","../src/components/Form/FormSelect.tsx","../src/components/Form/FormTextarea.tsx","../src/components/Form/FormCheckbox.tsx","../src/components/Form/FormSwitch.tsx","../src/components/Form/FormRadioGroup.tsx","../src/components/Form/FormParts.tsx","../src/components/Form/Form.tsx","../src/components/Avatar/Avatar.tsx","../src/components/DropdownMenu/DropdownMenu.tsx","../src/components/Popover/Popover.tsx","../src/components/Layouts/AuthLayout/AuthLayout.tsx","../src/components/Layouts/SelectionLayout/SelectionLayout.tsx","../src/components/Layouts/DashboardLayout/DashboardLayout.tsx","../src/components/Sidebar/SidebarContext.tsx","../src/components/Sidebar/SidebarHeader.tsx","../src/components/Sidebar/SidebarNav.tsx","../src/components/Sidebar/SidebarSection.tsx","../src/components/Sidebar/SidebarNavItem.tsx","../src/components/Sidebar/SidebarNavGroup.tsx","../src/components/Sidebar/SidebarFooter.tsx","../src/components/Sidebar/Sidebar.tsx","../src/components/MobileNav/MobileNavItem.tsx","../src/components/MobileNav/MobileNav.tsx","../src/components/Navbar/Navbar.tsx","../src/components/Navbar/ThemeToggle.tsx","../src/components/Navbar/NavbarNotification.tsx","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Separator/Separator.tsx","../src/components/Navbar/NavbarCompanyProfile.tsx","../src/components/Navbar/NavbarUserMenu.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/SectionHeader/SectionHeader.tsx","../src/components/Kanban/KanbanContext.tsx","../src/components/Kanban/KanbanBoard.tsx","../src/components/Kanban/KanbanColumn.tsx","../src/components/Kanban/KanbanCard.tsx","../src/components/Kanban/Kanban.tsx","../src/components/Wizard/WizardContext.tsx","../src/components/Wizard/WizardStepIndicator.tsx","../src/components/Wizard/WizardStepConnector.tsx","../src/components/Wizard/WizardSteps.tsx","../src/components/Wizard/WizardContent.tsx","../src/components/Wizard/WizardPanel.tsx","../src/components/Wizard/WizardNavigation.tsx","../src/components/Wizard/WizardProgress.tsx","../src/components/Wizard/Wizard.tsx","../src/components/Brand/Logo.tsx","../src/providers/ThemeProvider.tsx","../src/themes/index.ts"],"names":["React","jsx","cva","React2","Icon","React3","jsxs","React4","React5","motion","React6","React7","React8","React9","React10","React11","React12","DataTableContent","flexRender","React13","DataTableToolbar","React14","React15","DataTableSearch","React16","DataTableFilters","DataTableFilter","React17","DataTablePagination","React18","DataTableEmptyState","React19","Check","React20","React21","React22","React23","React24","X","React25","iconWrapperVariants","iconVariants","React26","Sonner","React27","sonnerToast","React28","React29","React30","React31","Controller","React32","React33","React34","React35","React36","ChevronRight","Circle","React37","React38","React39","React40","Fragment","renderIcon","ChevronDown","React41","useMediaQuery","React42","SidebarHeader","AnimatePresence","PinOff","Pin","React43","SidebarNav","React44","SidebarSection","React45","SidebarNavItem","React46","badgeVariantStyles","SidebarNavGroup","React47","SidebarFooter","React49","MobileNavItem","React50","MobileNav","React51","Navbar","React52","React53","Separator","React54","getInitials","React55","CheckCircle2","User","Bell","LogOut","React56","React57","React58","React59","React60","createContext","useContext","useState","useMemo","useCallback","Children","isValidElement","FormProvider","React61","theme"],"mappings":"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","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from 'clsx'\r\nimport { twMerge } from 'tailwind-merge'\r\n\r\n/**\r\n * Merge Tailwind CSS classes\r\n * Combines clsx (conditional classes) with tailwind-merge (deduplicates classes)\r\n *\r\n * @example\r\n * cn('px-4 py-2', isActive && 'bg-primary', className)\r\n */\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst buttonVariants = cva(\r\n 'inline-flex items-center justify-center rounded-md text-sm font-medium 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:pointer-events-none disabled:opacity-50',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\r\n destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\r\n outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\r\n secondary: 'bg-primary/15 text-primary hover:bg-primary/25',\r\n ghost: 'hover:bg-accent hover:text-accent-foreground',\r\n link: 'text-primary underline-offset-4 hover:underline',\r\n },\r\n size: {\r\n default: 'h-10 px-4 py-2',\r\n sm: 'h-9 px-3',\r\n lg: 'h-11 px-8',\r\n icon: 'h-10 w-10',\r\n 'icon-sm': 'h-8 w-8',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'default',\r\n },\r\n }\r\n)\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n asChild?: boolean\r\n}\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ className, variant, size, ...props }, ref) => {\r\n return (\r\n <button\r\n className={cn(buttonVariants({ variant, size, className }))}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\n\r\nButton.displayName = 'Button'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport function Card({ className, ...props }: CardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'rounded-lg border bg-card text-card-foreground shadow-sm',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nCard.displayName = 'Card'\r\n\r\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport function CardHeader({ className, ...props }: CardHeaderProps) {\r\n return (\r\n <div\r\n className={cn('flex flex-col space-y-1.5 p-6', className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nCardHeader.displayName = 'CardHeader'\r\n\r\nexport interface CardTitleProps\r\n extends React.HTMLAttributes<HTMLHeadingElement> {}\r\n\r\nexport function CardTitle({ className, ...props }: CardTitleProps) {\r\n return (\r\n <h3\r\n className={cn(\r\n 'text-2xl font-semibold leading-none tracking-tight',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nCardTitle.displayName = 'CardTitle'\r\n\r\nexport interface CardDescriptionProps\r\n extends React.HTMLAttributes<HTMLParagraphElement> {}\r\n\r\nexport function CardDescription({ className, ...props }: CardDescriptionProps) {\r\n return (\r\n <p\r\n className={cn('text-sm text-muted-foreground', className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nCardDescription.displayName = 'CardDescription'\r\n\r\nexport interface CardContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport function CardContent({ className, ...props }: CardContentProps) {\r\n return <div className={cn('p-6 pt-0', className)} {...props} />\r\n}\r\n\r\nCardContent.displayName = 'CardContent'\r\n\r\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport function CardFooter({ className, ...props }: CardFooterProps) {\r\n return (\r\n <div\r\n className={cn('flex items-center p-6 pt-0', className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nCardFooter.displayName = 'CardFooter'\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst inputVariants = cva(\r\n 'w-full h-12 px-3 pt-4 pb-2 text-sm bg-background rounded-md border-2 transition-colors focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'border-border focus:border-primary',\r\n error: 'border-red-500 focus:border-red-600',\r\n },\r\n inputSize: {\r\n default: 'h-12',\r\n sm: 'h-10 pt-3 pb-1',\r\n lg: 'h-14 pt-5 pb-2',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n inputSize: 'default',\r\n },\r\n }\r\n)\r\n\r\nexport interface InputProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\r\n VariantProps<typeof inputVariants> {\r\n label?: string\r\n error?: boolean\r\n icon?: React.ComponentType<any>\r\n containerClassName?: string\r\n labelClassName?: string\r\n}\r\n\r\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n inputSize,\r\n error,\r\n type = 'text',\r\n label,\r\n icon: Icon,\r\n required,\r\n containerClassName,\r\n labelClassName,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const inputRef = React.useRef<HTMLInputElement | null>(null)\r\n const [showPassword, setShowPassword] = React.useState(false)\r\n\r\n React.useImperativeHandle(ref, () => inputRef.current!, [])\r\n\r\n const focusInput = React.useCallback(() => {\r\n inputRef.current?.focus()\r\n }, [])\r\n\r\n const togglePasswordVisibility = React.useCallback(() => {\r\n setShowPassword((prev) => !prev)\r\n }, [])\r\n\r\n const inputType = type === 'password' ? (showPassword ? 'text' : 'password') : type\r\n\r\n return (\r\n <div className={cn('relative', containerClassName)}>\r\n {/* Icon */}\r\n {Icon && (\r\n <Icon\r\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground h-4 w-4 cursor-pointer z-10\"\r\n onClick={focusInput}\r\n />\r\n )}\r\n\r\n {/* Input */}\r\n <input\r\n type={inputType}\r\n className={cn(\r\n inputVariants({\r\n variant: error ? 'error' : variant,\r\n inputSize,\r\n }),\r\n Icon && 'pl-10',\r\n type === 'password' && 'pr-11',\r\n className\r\n )}\r\n ref={inputRef}\r\n {...props}\r\n />\r\n\r\n {/* Floating Label */}\r\n {label && (\r\n <label\r\n className={cn(\r\n 'absolute left-3 top-[-6px] text-xs font-medium bg-background px-1 cursor-pointer',\r\n error ? 'text-red-500' : 'text-foreground',\r\n Icon && 'left-10',\r\n labelClassName\r\n )}\r\n onClick={focusInput}\r\n >\r\n {label}\r\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\r\n </label>\r\n )}\r\n\r\n {/* Password Toggle */}\r\n {type === 'password' && (\r\n <button\r\n type=\"button\"\r\n onClick={togglePasswordVisibility}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors z-10\"\r\n aria-label={showPassword ? 'Ocultar senha' : 'Mostrar senha'}\r\n >\r\n {showPassword ? (\r\n <svg\r\n className=\"h-5 w-5\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\r\n />\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\"\r\n />\r\n </svg>\r\n ) : (\r\n <svg\r\n className=\"h-5 w-5\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\"\r\n />\r\n </svg>\r\n )}\r\n </button>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nInput.displayName = 'Input'\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst badgeVariants = cva(\r\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n 'border-transparent bg-primary/15 text-primary hover:bg-primary/25',\r\n secondary:\r\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\r\n success:\r\n 'border-transparent bg-green-500/15 text-green-600 dark:text-green-400 hover:bg-green-500/25',\r\n warning:\r\n 'border-transparent bg-yellow-500/15 text-yellow-600 dark:text-yellow-400 hover:bg-yellow-500/25',\r\n error:\r\n 'border-transparent bg-red-500/15 text-red-600 dark:text-red-400 hover:bg-red-500/25',\r\n info:\r\n 'border-transparent bg-blue-500/15 text-blue-600 dark:text-blue-400 hover:bg-blue-500/25',\r\n outline: 'border-border text-foreground hover:bg-muted',\r\n },\r\n size: {\r\n default: 'px-2.5 py-0.5 text-xs',\r\n sm: 'px-2 py-0.5 text-[10px]',\r\n lg: 'px-3 py-1 text-sm',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'default',\r\n },\r\n }\r\n)\r\n\r\nexport interface BadgeProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof badgeVariants> {}\r\n\r\nexport function Badge({ className, variant, size, ...props }: BadgeProps) {\r\n return (\r\n <div className={cn(badgeVariants({ variant, size }), className)} {...props} />\r\n )\r\n}\r\n\r\nBadge.displayName = 'Badge'\r\n","import * as React from 'react'\nimport { motion } from 'framer-motion'\nimport { cn } from '../../utils/cn'\nimport type { BigNumberCardSparklineProps, SparklineColor } from './types'\n\nconst colorClasses: Record<SparklineColor, string> = {\n 'chart-1': 'text-chart-1',\n 'chart-2': 'text-chart-2',\n 'chart-3': 'text-chart-3',\n 'chart-4': 'text-chart-4',\n 'chart-5': 'text-chart-5',\n}\n\n// Generate smooth curve using Catmull-Rom spline converted to Bezier\nfunction generateSmoothPath(points: { x: number; y: number }[]): string {\n if (points.length < 2) return ''\n if (points.length === 2) {\n return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`\n }\n\n let path = `M ${points[0].x.toFixed(2)} ${points[0].y.toFixed(2)}`\n\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(0, i - 1)]\n const p1 = points[i]\n const p2 = points[i + 1]\n const p3 = points[Math.min(points.length - 1, i + 2)]\n\n // Catmull-Rom to Bezier conversion\n const tension = 0.3\n const cp1x = p1.x + (p2.x - p0.x) * tension\n const cp1y = p1.y + (p2.y - p0.y) * tension\n const cp2x = p2.x - (p3.x - p1.x) * tension\n const cp2y = p2.y - (p3.y - p1.y) * tension\n\n path += ` C ${cp1x.toFixed(2)} ${cp1y.toFixed(2)}, ${cp2x.toFixed(2)} ${cp2y.toFixed(2)}, ${p2.x.toFixed(2)} ${p2.y.toFixed(2)}`\n }\n\n return path\n}\n\nexport function Sparkline({\n data,\n color = 'chart-1',\n animate = true,\n className,\n show = true,\n}: BigNumberCardSparklineProps) {\n const gradientId = React.useId()\n\n const { linePath, areaPath } = React.useMemo(() => {\n if (data.length < 2) {\n return { linePath: '', areaPath: '' }\n }\n\n const max = Math.max(...data)\n const min = Math.min(...data)\n const range = max - min || 1\n\n const points = data.map((value, index) => ({\n x: (index / (data.length - 1)) * 100,\n y: 100 - ((value - min) / range) * 70 - 15, // 15% padding top, 15% bottom\n }))\n\n const line = generateSmoothPath(points)\n const area = `${line} L 100 100 L 0 100 Z`\n\n return { linePath: line, areaPath: area }\n }, [data])\n\n if (!show || data.length < 2) {\n return null\n }\n\n return (\n <svg\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"none\"\n className={cn('w-full h-16', colorClasses[color], className)}\n >\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"currentColor\" stopOpacity=\"0.3\" />\n <stop offset=\"100%\" stopColor=\"currentColor\" stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n\n {/* Area fill */}\n <motion.path\n d={areaPath}\n fill={`url(#${gradientId})`}\n initial={animate ? { opacity: 0 } : undefined}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.5, delay: 0.3 }}\n />\n\n {/* Line stroke */}\n <motion.path\n d={linePath}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n initial={animate ? { pathLength: 0 } : undefined}\n animate={{ pathLength: 1 }}\n transition={{ duration: 0.8, ease: 'easeOut' }}\n />\n </svg>\n )\n}\n\nSparkline.displayName = 'BigNumberCard.Sparkline'\n","import * as React from 'react'\nimport { cva } from 'class-variance-authority'\nimport { TrendingUp, TrendingDown } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { Sparkline } from './Sparkline'\nimport type {\n BigNumberCardRootProps,\n BigNumberCardHeaderProps,\n BigNumberCardTitleProps,\n BigNumberCardLinkProps,\n BigNumberCardContentProps,\n BigNumberCardValueProps,\n BigNumberCardTrendProps,\n} from './types'\n\n// ============================================================================\n// Root - Card container\n// ============================================================================\n\nconst rootVariants = cva(\n 'relative overflow-hidden rounded-xl border border-border bg-card shadow-sm min-h-[140px]',\n {\n variants: {\n size: {\n default: 'p-5 pb-14',\n sm: 'p-4 pb-12',\n lg: 'p-6 pb-16',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n)\n\nfunction BigNumberCardRoot({ children, className, size }: BigNumberCardRootProps) {\n return (\n <div className={cn(rootVariants({ size }), className)}>\n {children}\n </div>\n )\n}\n\nBigNumberCardRoot.displayName = 'BigNumberCard.Root'\n\n// ============================================================================\n// Header - Flex container for title + action\n// ============================================================================\n\nfunction BigNumberCardHeader({ children, className }: BigNumberCardHeaderProps) {\n return (\n <div className={cn('flex items-center justify-between', className)}>\n {children}\n </div>\n )\n}\n\nBigNumberCardHeader.displayName = 'BigNumberCard.Header'\n\n// ============================================================================\n// Title - Muted text\n// ============================================================================\n\nfunction BigNumberCardTitle({ children, className }: BigNumberCardTitleProps) {\n return (\n <span className={cn('text-sm font-medium text-muted-foreground', className)}>\n {children}\n </span>\n )\n}\n\nBigNumberCardTitle.displayName = 'BigNumberCard.Title'\n\n// ============================================================================\n// Link - Action link\n// ============================================================================\n\nfunction BigNumberCardLink({ children, href, onClick, className }: BigNumberCardLinkProps) {\n const handleClick = (e: React.MouseEvent) => {\n if (onClick) {\n e.preventDefault()\n onClick()\n }\n }\n\n return (\n <a\n href={href ?? '#'}\n onClick={handleClick}\n className={cn(\n 'text-xs font-medium text-primary hover:text-primary/80 hover:underline transition-colors',\n className\n )}\n >\n {children}\n </a>\n )\n}\n\nBigNumberCardLink.displayName = 'BigNumberCard.Link'\n\n// ============================================================================\n// Content - Optional wrapper for value area\n// ============================================================================\n\nfunction BigNumberCardContent({ children, className }: BigNumberCardContentProps) {\n return (\n <div className={cn('mt-3 space-y-1', className)}>\n {children}\n </div>\n )\n}\n\nBigNumberCardContent.displayName = 'BigNumberCard.Content'\n\n// ============================================================================\n// Value - Big number with prefix/suffix\n// ============================================================================\n\nfunction BigNumberCardValue({ children, prefix, suffix, className }: BigNumberCardValueProps) {\n return (\n <div className={cn('mt-3 text-3xl font-bold tracking-tight text-foreground', className)}>\n {prefix && <span className=\"text-2xl\">{prefix}</span>}\n {children}\n {suffix && <span className=\"text-2xl ml-0.5\">{suffix}</span>}\n </div>\n )\n}\n\nBigNumberCardValue.displayName = 'BigNumberCard.Value'\n\n// ============================================================================\n// Trend - Percentage change indicator\n// ============================================================================\n\nfunction BigNumberCardTrend({ value, direction, children, className, show = true }: BigNumberCardTrendProps) {\n if (!show) {\n return null\n }\n\n const isUp = direction === 'up'\n const Icon = isUp ? TrendingUp : TrendingDown\n\n return (\n <div\n className={cn(\n 'mt-2 flex items-center gap-1.5 text-sm',\n isUp ? 'text-emerald-600 dark:text-emerald-400' : 'text-red-600 dark:text-red-400',\n className\n )}\n >\n <Icon className=\"h-4 w-4 flex-shrink-0\" />\n <span className=\"font-semibold\">\n {isUp ? '+' : ''}{value.toFixed(1)}%\n </span>\n {children && (\n <span className=\"text-muted-foreground font-normal\">{children}</span>\n )}\n </div>\n )\n}\n\nBigNumberCardTrend.displayName = 'BigNumberCard.Trend'\n\n// ============================================================================\n// Description - Muted description text\n// ============================================================================\n\ninterface BigNumberCardDescriptionProps {\n children: React.ReactNode\n className?: string\n show?: boolean\n}\n\nfunction BigNumberCardDescription({ children, className, show = true }: BigNumberCardDescriptionProps) {\n if (!show) {\n return null\n }\n\n return (\n <p className={cn('mt-1 text-xs text-muted-foreground', className)}>\n {children}\n </p>\n )\n}\n\nBigNumberCardDescription.displayName = 'BigNumberCard.Description'\n\n// ============================================================================\n// Sparkline wrapper for positioning\n// ============================================================================\n\nfunction BigNumberCardSparklineWrapper(props: React.ComponentProps<typeof Sparkline>) {\n const { show = true, ...rest } = props\n\n if (!show) {\n return null\n }\n\n return (\n <div className=\"absolute bottom-0 left-0 right-0 h-16 opacity-80\">\n <Sparkline {...rest} show={show} />\n </div>\n )\n}\n\nBigNumberCardSparklineWrapper.displayName = 'BigNumberCard.Sparkline'\n\n// ============================================================================\n// Compound export\n// ============================================================================\n\nexport const BigNumberCard = {\n Root: BigNumberCardRoot,\n Header: BigNumberCardHeader,\n Title: BigNumberCardTitle,\n Link: BigNumberCardLink,\n Content: BigNumberCardContent,\n Value: BigNumberCardValue,\n Trend: BigNumberCardTrend,\n Description: BigNumberCardDescription,\n Sparkline: BigNumberCardSparklineWrapper,\n}\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: 'default' | 'circular' | 'text'\r\n animation?: 'pulse' | 'wave' | 'none'\r\n}\r\n\r\nexport function Skeleton({\r\n className,\r\n variant = 'default',\r\n animation = 'pulse',\r\n ...props\r\n}: SkeletonProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'bg-muted',\r\n {\r\n 'rounded-md': variant === 'default',\r\n 'rounded-full': variant === 'circular',\r\n 'rounded h-4': variant === 'text',\r\n 'animate-pulse': animation === 'pulse',\r\n 'animate-shimmer': animation === 'wave',\r\n },\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nSkeleton.displayName = 'Skeleton'\r\n","import * as React from 'react'\r\nimport * as SelectPrimitive from '@radix-ui/react-select'\r\nimport { ChevronDown, Check } from 'lucide-react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst selectVariants = cva(\r\n 'w-full h-12 px-3 pt-4 pb-2 text-sm bg-background rounded-md border-2 transition-colors focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'border-border focus:border-primary',\r\n error: 'border-red-500 focus:border-red-600',\r\n },\r\n selectSize: {\r\n default: 'h-12',\r\n sm: 'h-10 pt-3 pb-1',\r\n lg: 'h-14 pt-5 pb-2',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n selectSize: 'default',\r\n },\r\n }\r\n)\r\n\r\nexport interface SelectProps\r\n extends Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root>, 'size'>,\r\n VariantProps<typeof selectVariants> {\r\n label?: string\r\n error?: boolean\r\n icon?: React.ComponentType<any>\r\n className?: string\r\n containerClassName?: string\r\n labelClassName?: string\r\n placeholder?: string\r\n required?: boolean\r\n children: React.ReactNode\r\n}\r\n\r\nexport const Select = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n SelectProps\r\n>(\r\n (\r\n {\r\n className,\r\n variant,\r\n selectSize,\r\n error,\r\n label,\r\n icon: Icon,\r\n required,\r\n containerClassName,\r\n labelClassName,\r\n placeholder,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n return (\r\n <SelectPrimitive.Root {...props}>\r\n <div className={cn('relative', containerClassName)}>\r\n {/* Icon */}\r\n {Icon && (\r\n <Icon className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground h-4 w-4 z-10 pointer-events-none\" />\r\n )}\r\n\r\n {/* Select Trigger */}\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n selectVariants({\r\n variant: error ? 'error' : variant,\r\n selectSize,\r\n }),\r\n Icon && 'pl-10',\r\n 'flex items-center justify-between',\r\n className\r\n )}\r\n >\r\n <SelectPrimitive.Value placeholder={placeholder} />\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n\r\n {/* Floating Label */}\r\n {label && (\r\n <label\r\n className={cn(\r\n 'absolute left-3 top-[-6px] text-xs font-medium bg-background px-1 pointer-events-none',\r\n error ? 'text-red-500' : 'text-foreground',\r\n Icon && 'left-10',\r\n labelClassName\r\n )}\r\n >\r\n {label}\r\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\r\n </label>\r\n )}\r\n </div>\r\n\r\n {/* Dropdown Content */}\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n className={cn(\r\n 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md',\r\n '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'\r\n )}\r\n position=\"popper\"\r\n sideOffset={4}\r\n >\r\n <SelectPrimitive.Viewport className=\"p-1\">\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n </SelectPrimitive.Root>\r\n )\r\n }\r\n)\r\n\r\nSelect.displayName = 'Select'\r\n\r\n// SelectItem component\r\nexport interface SelectItemProps\r\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {\r\n children: React.ReactNode\r\n}\r\n\r\nexport const SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n SelectItemProps\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n 'relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\r\n 'focus:bg-accent focus:text-accent-foreground',\r\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n))\r\n\r\nSelectItem.displayName = 'SelectItem'\r\n\r\n// SelectGroup component\r\nexport const SelectGroup = SelectPrimitive.Group\r\n\r\n// SelectLabel component\r\nexport const SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label\r\n ref={ref}\r\n className={cn('py-1.5 pl-8 pr-2 text-sm font-semibold', className)}\r\n {...props}\r\n />\r\n))\r\n\r\nSelectLabel.displayName = 'SelectLabel'\r\n\r\n// SelectSeparator component\r\nexport const SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator\r\n ref={ref}\r\n className={cn('-mx-1 my-1 h-px bg-muted', className)}\r\n {...props}\r\n />\r\n))\r\n\r\nSelectSeparator.displayName = 'SelectSeparator'\r\n","import * as React from 'react'\r\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst Tabs = TabsPrimitive.Root\r\n\r\nconst TabsList = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n 'inline-flex h-12 items-center gap-6 border-b border-border',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsList.displayName = TabsPrimitive.List.displayName\r\n\r\nconst TabsTrigger = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n 'inline-flex items-center justify-center whitespace-nowrap px-1 py-3 text-sm font-medium text-muted-foreground 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]:border-b-2 data-[state=active]:border-primary data-[state=active]:text-primary data-[state=active]:-mb-px',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\r\n\r\nconst TabsContent = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n 'mt-4 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsContent.displayName = TabsPrimitive.Content.displayName\r\n\r\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { motion, AnimatePresence } from 'framer-motion'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst loaderVariants = cva('flex items-center justify-center backdrop-blur-sm', {\r\n variants: {\r\n variant: {\r\n default: '',\r\n spinner: '',\r\n dots: '',\r\n pulse: '',\r\n bars: '',\r\n },\r\n scope: {\r\n global: 'fixed inset-0 z-[9999]',\r\n local: 'absolute inset-0 z-50',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n scope: 'global',\r\n },\r\n})\r\n\r\nexport interface LoaderProps extends VariantProps<typeof loaderVariants> {\r\n message?: string\r\n isTransparentBg?: boolean\r\n show?: boolean\r\n}\r\n\r\nconst containerVariants = {\r\n initial: { opacity: 0, scale: 0.9 },\r\n animate: { opacity: 1, scale: 1 },\r\n exit: { opacity: 0, scale: 0.9 },\r\n}\r\n\r\nfunction SpinnerLoader() {\r\n return (\r\n <motion.div\r\n className=\"h-12 w-12 rounded-full border-4 border-primary border-t-transparent\"\r\n animate={{ rotate: 360 }}\r\n transition={{ duration: 1, repeat: Infinity, ease: 'linear' }}\r\n />\r\n )\r\n}\r\n\r\nfunction DotsLoader() {\r\n return (\r\n <div className=\"flex space-x-2\">\r\n {[0, 1, 2].map((i) => (\r\n <motion.div\r\n key={i}\r\n className=\"h-3 w-3 rounded-full bg-primary\"\r\n initial={{ scale: 0 }}\r\n animate={{ scale: [0, 1, 0] }}\r\n transition={{\r\n duration: 1,\r\n repeat: Infinity,\r\n delay: i * 0.2,\r\n ease: 'easeInOut',\r\n }}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nfunction PulseLoader() {\r\n return (\r\n <motion.div\r\n className=\"h-12 w-12 rounded-full bg-primary/20\"\r\n initial={{ scale: 0.8 }}\r\n animate={{ scale: 1, opacity: [1, 0.5, 1] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: 'easeInOut',\r\n }}\r\n >\r\n <motion.div\r\n className=\"h-full w-full rounded-full bg-primary/40\"\r\n initial={{ scale: 0.8 }}\r\n animate={{ scale: 1, opacity: [1, 0, 1] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: 'easeInOut',\r\n delay: 0.2,\r\n }}\r\n />\r\n </motion.div>\r\n )\r\n}\r\n\r\nfunction BarsLoader() {\r\n return (\r\n <div className=\"flex items-center space-x-1\">\r\n {[0, 1, 2, 3].map((i) => (\r\n <motion.div\r\n key={i}\r\n className=\"h-8 w-1 rounded-full bg-primary\"\r\n initial={{ scaleY: 0.3 }}\r\n animate={{ scaleY: [0.3, 1, 0.3] }}\r\n transition={{\r\n duration: 0.8,\r\n repeat: Infinity,\r\n delay: i * 0.1,\r\n ease: 'easeInOut',\r\n }}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nexport const Loader = React.forwardRef<HTMLDivElement, LoaderProps>(\r\n (\r\n {\r\n variant = 'default',\r\n message,\r\n scope = 'global',\r\n isTransparentBg = true,\r\n show = true,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const loaderComponents = {\r\n default: <SpinnerLoader />,\r\n spinner: <SpinnerLoader />,\r\n dots: <DotsLoader />,\r\n pulse: <PulseLoader />,\r\n bars: <BarsLoader />,\r\n }\r\n\r\n if (!show) return null\r\n\r\n return (\r\n <AnimatePresence>\r\n <motion.div\r\n ref={ref}\r\n className={cn(\r\n loaderVariants({ variant, scope }),\r\n isTransparentBg ? 'bg-background/90' : 'bg-background'\r\n )}\r\n initial=\"initial\"\r\n animate=\"animate\"\r\n exit=\"exit\"\r\n variants={containerVariants}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <div className=\"flex flex-col items-center gap-4\">\r\n {loaderComponents[variant || 'default']}\r\n {message && (\r\n <motion.p\r\n className=\"text-lg text-muted-foreground\"\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ delay: 0.1 }}\r\n >\r\n {message}\r\n </motion.p>\r\n )}\r\n </div>\r\n </motion.div>\r\n </AnimatePresence>\r\n )\r\n }\r\n)\r\n\r\nLoader.displayName = 'Loader'\r\n","import * as React from 'react'\r\nimport { Loader, type LoaderProps } from './Loader'\r\n\r\ninterface LoaderContextValue {\r\n show: (options?: LoaderOptions) => void\r\n hide: () => void\r\n isLoading: boolean\r\n}\r\n\r\ninterface LoaderOptions {\r\n message?: string\r\n variant?: LoaderProps['variant']\r\n scope?: LoaderProps['scope']\r\n isTransparentBg?: boolean\r\n}\r\n\r\nconst LoaderContext = React.createContext<LoaderContextValue | undefined>(\r\n undefined\r\n)\r\n\r\nexport function LoaderProvider({ children }: { children: React.ReactNode }) {\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [loaderOptions, setLoaderOptions] = React.useState<LoaderOptions>({})\r\n\r\n const show = React.useCallback((options: LoaderOptions = {}) => {\r\n setLoaderOptions(options)\r\n setIsLoading(true)\r\n }, [])\r\n\r\n const hide = React.useCallback(() => {\r\n setIsLoading(false)\r\n // Limpar opções após animação de saída\r\n setTimeout(() => setLoaderOptions({}), 300)\r\n }, [])\r\n\r\n const value = React.useMemo(\r\n () => ({ show, hide, isLoading }),\r\n [show, hide, isLoading]\r\n )\r\n\r\n return (\r\n <LoaderContext.Provider value={value}>\r\n {children}\r\n {isLoading && (\r\n <Loader\r\n variant={loaderOptions.variant}\r\n message={loaderOptions.message}\r\n scope={loaderOptions.scope}\r\n isTransparentBg={loaderOptions.isTransparentBg}\r\n show={isLoading}\r\n />\r\n )}\r\n </LoaderContext.Provider>\r\n )\r\n}\r\n\r\nexport function useLoader() {\r\n const context = React.useContext(LoaderContext)\r\n if (context === undefined) {\r\n throw new Error('useLoader must be used within a LoaderProvider')\r\n }\r\n return context\r\n}\r\n\r\n// Helper function para usar fora de componentes\r\nlet globalLoaderController: LoaderContextValue | null = null\r\n\r\nexport function setGlobalLoader(controller: LoaderContextValue) {\r\n globalLoaderController = controller\r\n}\r\n\r\nexport const loader = {\r\n show: (options?: LoaderOptions) => {\r\n if (globalLoaderController) {\r\n globalLoaderController.show(options)\r\n } else {\r\n console.warn(\r\n 'Loader: GlobalLoaderController not initialized. Wrap your app with LoaderProvider.'\r\n )\r\n }\r\n },\r\n hide: () => {\r\n if (globalLoaderController) {\r\n globalLoaderController.hide()\r\n } else {\r\n console.warn(\r\n 'Loader: GlobalLoaderController not initialized. Wrap your app with LoaderProvider.'\r\n )\r\n }\r\n },\r\n}\r\n\r\n// Component que registra o controller global\r\nexport function GlobalLoaderController() {\r\n const loaderController = useLoader()\r\n\r\n React.useEffect(() => {\r\n setGlobalLoader(loaderController)\r\n return () => {\r\n setGlobalLoader(null as any)\r\n }\r\n }, [loaderController])\r\n\r\n return null\r\n}\r\n","import * as React from 'react'\r\nimport { motion } from 'framer-motion'\r\nimport { Inbox } from 'lucide-react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\nimport { Button } from '../Button'\r\n\r\nconst emptyStateVariants = cva(\r\n 'flex items-center justify-center p-8 text-center w-full',\r\n {\r\n variants: {\r\n layout: {\r\n vertical: 'flex-col',\r\n horizontal: 'flex-row gap-4 px-4 py-3',\r\n },\r\n },\r\n defaultVariants: {\r\n layout: 'vertical',\r\n },\r\n }\r\n)\r\n\r\nconst iconWrapperVariants = cva('rounded-full bg-primary/5', {\r\n variants: {\r\n size: {\r\n default: 'mb-3 p-6',\r\n sm: 'mb-4 p-3',\r\n },\r\n layout: {\r\n vertical: '',\r\n horizontal: 'mb-0',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n layout: 'vertical',\r\n },\r\n})\r\n\r\nconst iconVariants = cva('text-primary', {\r\n variants: {\r\n size: {\r\n default: 'h-10 w-10',\r\n sm: 'h-8 w-8',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n },\r\n})\r\n\r\nconst titleVariants = cva('font-semibold text-foreground', {\r\n variants: {\r\n size: {\r\n default: 'text-lg',\r\n sm: 'text-base',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n },\r\n})\r\n\r\nconst descriptionVariants = cva('text-muted-foreground', {\r\n variants: {\r\n size: {\r\n default: 'mb-6 text-sm',\r\n sm: 'mb-4 text-xs',\r\n },\r\n layout: {\r\n vertical: '',\r\n horizontal: 'mb-0',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n layout: 'vertical',\r\n },\r\n})\r\n\r\nexport interface EmptyStateProps extends VariantProps<typeof emptyStateVariants> {\r\n message?: string\r\n description?: string\r\n icon?: React.ComponentType<any>\r\n actionLabel?: string\r\n onAction?: () => void\r\n hideDescription?: boolean\r\n size?: 'default' | 'sm'\r\n className?: string\r\n animated?: boolean\r\n}\r\n\r\nconst defaultDescriptionMessage =\r\n 'Não se preocupe, isso é normal quando não há itens para exibir.'\r\n\r\n// Animações memoizadas\r\nconst containerAnimation = {\r\n initial: { opacity: 0, y: 20 },\r\n animate: { opacity: 1, y: 0 },\r\n transition: { duration: 0.5 },\r\n}\r\n\r\nconst iconAnimation = {\r\n whileHover: { scale: 1.1 },\r\n whileTap: { scale: 0.9 },\r\n}\r\n\r\n// Componente interno sem animação (para performance)\r\nconst EmptyStateContent = React.memo<EmptyStateProps>(\r\n ({\r\n message = 'Nenhum item encontrado',\r\n description,\r\n icon: IconComponent = Inbox,\r\n actionLabel,\r\n onAction,\r\n hideDescription = false,\r\n size = 'default',\r\n layout = 'vertical',\r\n className,\r\n }) => {\r\n const handleAction = React.useCallback(() => {\r\n if (onAction) {\r\n onAction()\r\n }\r\n }, [onAction])\r\n\r\n return (\r\n <div className={cn(emptyStateVariants({ layout }), className)}>\r\n <div className={iconWrapperVariants({ size, layout })}>\r\n <IconComponent\r\n className={iconVariants({ size })}\r\n aria-hidden=\"true\"\r\n />\r\n </div>\r\n\r\n <div\r\n className={cn(\r\n layout === 'horizontal' && 'flex flex-col items-start text-left'\r\n )}\r\n >\r\n <h3 className={titleVariants({ size })}>{message}</h3>\r\n\r\n {!hideDescription && (\r\n <p className={descriptionVariants({ size, layout })}>\r\n {description || defaultDescriptionMessage}\r\n </p>\r\n )}\r\n </div>\r\n\r\n {actionLabel && onAction && (\r\n <Button onClick={handleAction} className=\"mt-2\">\r\n {actionLabel}\r\n </Button>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nEmptyStateContent.displayName = 'EmptyStateContent'\r\n\r\n// Componente com animação\r\nconst AnimatedEmptyState = React.memo<EmptyStateProps>((props) => {\r\n const {\r\n message = 'Nenhum item encontrado',\r\n description,\r\n icon: IconComponent = Inbox,\r\n actionLabel,\r\n onAction,\r\n hideDescription = false,\r\n size = 'default',\r\n layout = 'vertical',\r\n className,\r\n } = props\r\n\r\n const handleAction = React.useCallback(() => {\r\n if (onAction) {\r\n onAction()\r\n }\r\n }, [onAction])\r\n\r\n return (\r\n <motion.div\r\n {...containerAnimation}\r\n className={cn(emptyStateVariants({ layout }), className)}\r\n >\r\n <motion.div\r\n {...iconAnimation}\r\n className={iconWrapperVariants({ size, layout })}\r\n >\r\n <IconComponent\r\n className={iconVariants({ size })}\r\n aria-hidden=\"true\"\r\n />\r\n </motion.div>\r\n\r\n <div\r\n className={cn(\r\n layout === 'horizontal' && 'flex flex-col items-start text-left'\r\n )}\r\n >\r\n <h3 className={titleVariants({ size })}>{message}</h3>\r\n\r\n {!hideDescription && (\r\n <p className={descriptionVariants({ size, layout })}>\r\n {description || defaultDescriptionMessage}\r\n </p>\r\n )}\r\n </div>\r\n\r\n {actionLabel && onAction && (\r\n <Button onClick={handleAction} className=\"mt-2\">\r\n {actionLabel}\r\n </Button>\r\n )}\r\n </motion.div>\r\n )\r\n})\r\n\r\nAnimatedEmptyState.displayName = 'AnimatedEmptyState'\r\n\r\n// Componente principal que escolhe versão animada ou não\r\nexport const EmptyState = React.memo<EmptyStateProps>(\r\n ({ animated = true, ...props }) => {\r\n if (!animated) {\r\n return <EmptyStateContent {...props} />\r\n }\r\n return <AnimatedEmptyState {...props} />\r\n }\r\n)\r\n\r\nEmptyState.displayName = 'EmptyState'\r\n","import * as React from 'react'\r\nimport {\r\n type ColumnDef,\r\n type ColumnFiltersState,\r\n type SortingState,\r\n type VisibilityState,\r\n type PaginationState,\r\n type RowSelectionState,\r\n type Table,\r\n flexRender,\r\n getCoreRowModel,\r\n getFilteredRowModel,\r\n getPaginationRowModel,\r\n getSortedRowModel,\r\n useReactTable,\r\n} from '@tanstack/react-table'\r\nimport type { DataTableMeta, DataTableDensity, UseDataTableConfig } from '../types'\r\n\r\n// ============================================================================\r\n// HOOK INTERNO - Usado pelo DataTable root\r\n// ============================================================================\r\n//\r\n// Este hook gerencia todo o estado interno da tabela.\r\n// Consumidores não devem usar diretamente - use os hooks do Context:\r\n//\r\n// - useDataTable() - instância da tabela\r\n// - useDataTableMeta() - estado meta (loading, empty, selection)\r\n// - useDataTableDensity() - densidade (compact, default, comfortable)\r\n// - useDataTablePagination() - helpers de paginação\r\n// - useDataTableSorting() - helpers de sorting\r\n// - useDataTableSelection() - rows selecionadas\r\n//\r\n// ============================================================================\r\n\r\ninterface UseDataTableInternalConfig<TData extends Record<string, unknown>> {\r\n data: TData[]\r\n columns: ColumnDef<TData, unknown>[]\r\n getRowId?: (row: TData) => string\r\n}\r\n\r\ninterface UseDataTableInternalReturn<TData extends Record<string, unknown>> {\r\n table: Table<TData>\r\n meta: DataTableMeta\r\n density: DataTableDensity\r\n setDensity: (density: DataTableDensity) => void\r\n}\r\n\r\nexport function useDataTableInternal<TData extends Record<string, unknown>>({\r\n data,\r\n columns,\r\n getRowId,\r\n}: UseDataTableInternalConfig<TData>): UseDataTableInternalReturn<TData> {\r\n // ============================================================================\r\n // STATE\r\n // ============================================================================\r\n\r\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})\r\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({})\r\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([])\r\n const [sorting, setSorting] = React.useState<SortingState>([])\r\n const [globalFilter, setGlobalFilter] = React.useState<string>('')\r\n const [density, setDensity] = React.useState<DataTableDensity>('default')\r\n\r\n const [pagination, setPagination] = React.useState<PaginationState>({\r\n pageIndex: 0,\r\n pageSize: 10,\r\n })\r\n\r\n // ============================================================================\r\n // TABLE INSTANCE\r\n // ============================================================================\r\n\r\n const table = useReactTable({\r\n data,\r\n columns,\r\n getRowId,\r\n state: {\r\n sorting,\r\n columnVisibility,\r\n rowSelection,\r\n columnFilters,\r\n pagination,\r\n globalFilter,\r\n },\r\n // Features\r\n enableRowSelection: true,\r\n enableSorting: true,\r\n enableFilters: true,\r\n enableGlobalFilter: true,\r\n\r\n // Handlers\r\n onRowSelectionChange: setRowSelection,\r\n onSortingChange: setSorting,\r\n onColumnFiltersChange: setColumnFilters,\r\n onColumnVisibilityChange: setColumnVisibility,\r\n onPaginationChange: setPagination,\r\n onGlobalFilterChange: setGlobalFilter,\r\n\r\n // Row Models\r\n getCoreRowModel: getCoreRowModel(),\r\n getFilteredRowModel: getFilteredRowModel(),\r\n getPaginationRowModel: getPaginationRowModel(),\r\n getSortedRowModel: getSortedRowModel(),\r\n })\r\n\r\n // ============================================================================\r\n // META STATE (Derivado)\r\n // ============================================================================\r\n\r\n const meta: DataTableMeta = React.useMemo(\r\n () => ({\r\n isLoading: false, // Loading é controlado externamente via DataTable.Loading\r\n isEmpty: data.length === 0,\r\n selectedRowCount: Object.keys(rowSelection).length,\r\n totalRows: data.length,\r\n density,\r\n }),\r\n [data.length, rowSelection, density]\r\n )\r\n\r\n return {\r\n table: table as Table<TData>,\r\n meta,\r\n density,\r\n setDensity,\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// EXPORTS PÚBLICOS\r\n// ============================================================================\r\n\r\n// Re-export flexRender para uso em componentes de cell\r\nexport { flexRender }\r\n\r\n// Re-export tipos úteis\r\nexport type { UseDataTableConfig }\r\n","import * as React from 'react'\r\nimport type { Table } from '@tanstack/react-table'\r\nimport type { DataTableMeta, DataTableDensity } from './types'\r\n\r\n// ============================================================================\r\n// SPLIT CONTEXTS - Performance otimizada\r\n// Cada contexto tem frequência de mudança diferente\r\n// ============================================================================\r\n\r\n/**\r\n * Context 1: Table Instance\r\n * - Nunca muda após criação (referência estável)\r\n * - Não causa re-renders nos consumers\r\n *\r\n * Nota: Usamos Record<string, unknown> como constraint base porque:\r\n * 1. É mais seguro que 'any' ou 'unknown'\r\n * 2. Representa que TData deve ser um objeto\r\n * 3. Permite type narrowing nos hooks consumers\r\n */\r\nconst DataTableInstanceContext = React.createContext<Table<Record<string, unknown>> | null>(null)\r\nDataTableInstanceContext.displayName = 'DataTableInstanceContext'\r\n\r\n/**\r\n * Context 2: Meta State\r\n * - Muda com loading, empty, selection count\r\n * - Consumers que precisam desses dados vão re-renderizar\r\n */\r\nconst DataTableMetaContext = React.createContext<DataTableMeta | null>(null)\r\nDataTableMetaContext.displayName = 'DataTableMetaContext'\r\n\r\n/**\r\n * Context 3: Density\r\n * - Muda apenas quando usuário altera densidade\r\n * - Separado para não re-renderizar toda tabela\r\n */\r\ninterface DensityContextValue {\r\n density: DataTableDensity\r\n setDensity: (density: DataTableDensity) => void\r\n}\r\nconst DataTableDensityContext = React.createContext<DensityContextValue | null>(null)\r\nDataTableDensityContext.displayName = 'DataTableDensityContext'\r\n\r\n// ============================================================================\r\n// PROVIDER - Generic para type-safety\r\n// ============================================================================\r\n\r\ninterface DataTableProviderProps<TData extends Record<string, unknown>> {\r\n children: React.ReactNode\r\n table: Table<TData>\r\n meta: DataTableMeta\r\n density: DataTableDensity\r\n setDensity: (density: DataTableDensity) => void\r\n}\r\n\r\nexport function DataTableProvider<TData extends Record<string, unknown>>({\r\n children,\r\n table,\r\n meta,\r\n density,\r\n setDensity,\r\n}: DataTableProviderProps<TData>) {\r\n // Memoizar meta para evitar re-renders desnecessários\r\n const metaValue = React.useMemo(\r\n () => meta,\r\n [meta.isLoading, meta.isEmpty, meta.selectedRowCount, meta.totalRows, meta.density]\r\n )\r\n\r\n // Memoizar density context\r\n const densityValue = React.useMemo(\r\n () => ({ density, setDensity }),\r\n [density, setDensity]\r\n )\r\n\r\n // Cast seguro: TData extends Record<string, unknown>\r\n // O context armazena como base type, hooks fazem o cast de volta\r\n const tableValue = table as Table<Record<string, unknown>>\r\n\r\n return (\r\n <DataTableInstanceContext.Provider value={tableValue}>\r\n <DataTableMetaContext.Provider value={metaValue}>\r\n <DataTableDensityContext.Provider value={densityValue}>\r\n {children}\r\n </DataTableDensityContext.Provider>\r\n </DataTableMetaContext.Provider>\r\n </DataTableInstanceContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// HOOKS - Acesso otimizado aos contexts\r\n// ============================================================================\r\n\r\n/**\r\n * Hook para acessar a instância da tabela\r\n * Não causa re-renders pois a instância é estável\r\n */\r\nexport function useDataTable<TData = unknown>(): Table<TData> {\r\n const context = React.useContext(DataTableInstanceContext)\r\n\r\n if (!context) {\r\n throw new Error(\r\n 'useDataTable must be used within <DataTable>. ' +\r\n 'Make sure your component is wrapped with DataTable.'\r\n )\r\n }\r\n\r\n return context as Table<TData>\r\n}\r\n\r\n/**\r\n * Hook para acessar o estado meta da tabela\r\n * Re-renderiza quando loading, empty, ou selection muda\r\n */\r\nexport function useDataTableMeta(): DataTableMeta {\r\n const context = React.useContext(DataTableMetaContext)\r\n\r\n if (!context) {\r\n throw new Error(\r\n 'useDataTableMeta must be used within <DataTable>. ' +\r\n 'Make sure your component is wrapped with DataTable.'\r\n )\r\n }\r\n\r\n return context\r\n}\r\n\r\n/**\r\n * Hook para acessar apenas o loading state\r\n * Otimizado para componentes que só precisam saber se está carregando\r\n */\r\nexport function useDataTableLoading(): boolean {\r\n const meta = useDataTableMeta()\r\n return meta.isLoading\r\n}\r\n\r\n/**\r\n * Hook para acessar apenas o empty state\r\n * Otimizado para componentes que só precisam saber se está vazio\r\n */\r\nexport function useDataTableEmpty(): boolean {\r\n const meta = useDataTableMeta()\r\n return meta.isEmpty\r\n}\r\n\r\n/**\r\n * Hook para acessar rows selecionadas\r\n * Re-renderiza quando seleção muda\r\n */\r\nexport function useDataTableSelection<TData = unknown>(): TData[] {\r\n const table = useDataTable<TData>()\r\n\r\n return React.useMemo(() => {\r\n return table.getSelectedRowModel().rows.map((row) => row.original)\r\n }, [table.getSelectedRowModel().rows])\r\n}\r\n\r\n/**\r\n * Hook para acessar densidade\r\n * Separado para não re-renderizar componentes que não usam\r\n */\r\nexport function useDataTableDensity(): DensityContextValue {\r\n const context = React.useContext(DataTableDensityContext)\r\n\r\n if (!context) {\r\n throw new Error(\r\n 'useDataTableDensity must be used within <DataTable>. ' +\r\n 'Make sure your component is wrapped with DataTable.'\r\n )\r\n }\r\n\r\n return context\r\n}\r\n\r\n/**\r\n * Hook para paginação\r\n * Retorna informações de paginação memoizadas\r\n */\r\nexport function useDataTablePagination() {\r\n const table = useDataTable()\r\n const { pageIndex, pageSize } = table.getState().pagination\r\n\r\n return React.useMemo(() => {\r\n const pageCount = table.getPageCount()\r\n\r\n return {\r\n pageIndex,\r\n pageSize,\r\n pageCount,\r\n canPreviousPage: pageIndex > 0,\r\n canNextPage: pageIndex < pageCount - 1,\r\n setPageIndex: (index: number) => table.setPageIndex(index),\r\n setPageSize: (size: number) => table.setPageSize(size),\r\n previousPage: () => table.previousPage(),\r\n nextPage: () => table.nextPage(),\r\n firstPage: () => table.setPageIndex(0),\r\n lastPage: () => table.setPageIndex(pageCount - 1),\r\n }\r\n }, [table, pageIndex, pageSize])\r\n}\r\n\r\n/**\r\n * Hook para sorting\r\n * Retorna informações de sorting memoizadas\r\n */\r\nexport function useDataTableSorting() {\r\n const table = useDataTable()\r\n const sorting = table.getState().sorting\r\n\r\n return React.useMemo(() => ({\r\n sorting,\r\n setSorting: table.setSorting,\r\n clearSorting: () => table.resetSorting(),\r\n toggleSort: (columnId: string) => {\r\n const column = table.getColumn(columnId)\r\n column?.toggleSorting()\r\n },\r\n }), [table, sorting])\r\n}\r\n\r\n/**\r\n * Hook para column visibility\r\n * Retorna informações de visibilidade memoizadas\r\n */\r\nexport function useDataTableColumnVisibility() {\r\n const table = useDataTable()\r\n const columnVisibility = table.getState().columnVisibility\r\n\r\n return React.useMemo(() => ({\r\n columnVisibility,\r\n setColumnVisibility: table.setColumnVisibility,\r\n toggleColumn: (columnId: string) => {\r\n const column = table.getColumn(columnId)\r\n column?.toggleVisibility()\r\n },\r\n getAllColumns: () => table.getAllColumns().filter((col) => col.getCanHide()),\r\n }), [table, columnVisibility])\r\n}\r\n\r\n// ============================================================================\r\n// RE-EXPORTS para compatibilidade\r\n// ============================================================================\r\n\r\n// Alias para manter compatibilidade com código existente\r\nexport const useDataTableInstance = useDataTable\r\nexport const useDataTableState = useDataTableMeta\r\n","import { cn } from '../../utils/cn'\r\nimport type { DataTableProps } from './types'\r\nimport { useDataTableInternal } from './hooks/useDataTable'\r\nimport { DataTableProvider } from './DataTableContext'\r\n\r\n// ============================================================================\r\n// ROOT COMPONENT - Compound Component Pattern (Composição Explícita)\r\n// ============================================================================\r\n//\r\n// Props MÍNIMAS no root - features via subcomponentes:\r\n//\r\n// <DataTable data={data} columns={columns}>\r\n// <DataTable.Loading visible={isLoading} />\r\n// <DataTable.Toolbar>...</DataTable.Toolbar>\r\n// <DataTable.Content />\r\n// <DataTable.Pagination mode=\"server\" pageCount={10} />\r\n// </DataTable>\r\n//\r\n// ============================================================================\r\n\r\nexport function DataTableRoot<TData extends Record<string, unknown>>({\r\n children,\r\n data,\r\n columns,\r\n getRowId,\r\n className,\r\n}: DataTableProps<TData>) {\r\n // Hook interno gerencia todo o state\r\n const { table, meta, density, setDensity } = useDataTableInternal({\r\n data,\r\n columns,\r\n getRowId,\r\n })\r\n\r\n return (\r\n <DataTableProvider\r\n table={table}\r\n meta={meta}\r\n density={density}\r\n setDensity={setDensity}\r\n >\r\n <div\r\n className={cn('w-full space-y-4', className)}\r\n data-density={density}\r\n >\r\n {children}\r\n </div>\r\n </DataTableProvider>\r\n )\r\n}\r\n\r\n// Display name for DevTools\r\nDataTableRoot.displayName = 'DataTable'\r\n","import type {\r\n ColumnDef,\r\n SortingState,\r\n ColumnFiltersState,\r\n VisibilityState,\r\n RowSelectionState,\r\n PaginationState,\r\n Table,\r\n Column,\r\n} from '@tanstack/react-table'\r\nimport type * as React from 'react'\r\n\r\n// ============================================================================\r\n// DATATABLE ROOT PROPS (Mínimas - Composição Explícita)\r\n// ============================================================================\r\n\r\n/**\r\n * Props do componente root DataTable.\r\n *\r\n * TData deve ser um objeto (Record<string, unknown>) para garantir\r\n * type-safety com o TanStack Table e permitir acesso a propriedades.\r\n */\r\nexport interface DataTableProps<TData extends Record<string, unknown>> {\r\n /** Data array - deve ser memoizado pelo consumer */\r\n data: TData[]\r\n\r\n /** Column definitions - deve ser memoizado pelo consumer */\r\n columns: ColumnDef<TData, unknown>[]\r\n\r\n /** Children usando Compound Component pattern */\r\n children: React.ReactNode\r\n\r\n /** Função para obter ID único da row */\r\n getRowId?: (row: TData) => string\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// INTERNAL STATE (Gerenciado pelo Context)\r\n// ============================================================================\r\n\r\nexport interface DataTableState {\r\n sorting: SortingState\r\n columnFilters: ColumnFiltersState\r\n columnVisibility: VisibilityState\r\n rowSelection: RowSelectionState\r\n pagination: PaginationState\r\n globalFilter: string\r\n density: DataTableDensity\r\n}\r\n\r\nexport type DataTableDensity = 'compact' | 'default' | 'comfortable'\r\n\r\nexport interface DataTableMeta {\r\n isLoading: boolean\r\n isEmpty: boolean\r\n selectedRowCount: number\r\n totalRows: number\r\n density: DataTableDensity\r\n}\r\n\r\n// ============================================================================\r\n// LOADING COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableLoadingProps {\r\n /** Controla visibilidade do loading */\r\n visible: boolean\r\n\r\n /** Custom skeleton component */\r\n skeleton?: React.ReactNode\r\n\r\n /** Número de rows no skeleton */\r\n skeletonRows?: number\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// TOOLBAR COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableToolbarProps {\r\n /** Children components */\r\n children?: React.ReactNode\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// SEARCH COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableSearchProps {\r\n /** Placeholder text */\r\n placeholder?: string\r\n\r\n /** Coluna específica para buscar (se não passar, busca global) */\r\n column?: string\r\n\r\n /** Debounce delay em ms */\r\n debounce?: number\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// FILTERS CONTAINER\r\n// ============================================================================\r\n\r\nexport interface DataTableFiltersProps {\r\n /** Children: Individual filters */\r\n children?: React.ReactNode\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// FILTER COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableFilterOption {\r\n label: string\r\n value: string\r\n icon?: React.ReactNode\r\n}\r\n\r\nexport interface DataTableFilterProps {\r\n /** Coluna para filtrar */\r\n column: string\r\n\r\n /** Label do filtro */\r\n title: string\r\n\r\n /** Opções de filtro */\r\n options: DataTableFilterOption[]\r\n\r\n /** Permitir seleção múltipla */\r\n multiSelect?: boolean\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// CONTENT COMPONENT (Tabela em si)\r\n// ============================================================================\r\n\r\nexport interface DataTableContentProps {\r\n /** Header fixo no scroll */\r\n stickyHeader?: boolean\r\n\r\n /** Linhas alternadas (zebra) */\r\n stripedRows?: boolean\r\n\r\n /** Highlight no hover */\r\n highlightOnHover?: boolean\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// PAGINATION COMPONENT\r\n// ============================================================================\r\n\r\nexport type DataTablePaginationMode = 'client' | 'server'\r\n\r\nexport interface DataTablePaginationProps {\r\n /** Modo de paginação */\r\n mode?: DataTablePaginationMode\r\n\r\n /** Total de páginas (obrigatório se mode=\"server\") */\r\n pageCount?: number\r\n\r\n /** Opções de items por página */\r\n pageSizes?: number[]\r\n\r\n /** Mostrar seletor de page size */\r\n showPageSize?: boolean\r\n\r\n /** Mostrar informação de página atual */\r\n showPageInfo?: boolean\r\n\r\n /** Mostrar botões primeira/última página */\r\n showFirstLast?: boolean\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// EMPTY STATE COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableEmptyStateProps {\r\n /** Título */\r\n title?: string\r\n\r\n /** Descrição */\r\n description?: string\r\n\r\n /** Ícone customizado */\r\n icon?: React.ReactNode\r\n\r\n /** Ação (botão, link, etc) */\r\n action?: React.ReactNode\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// BULK ACTIONS COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableBulkActionsProps<TData = unknown> {\r\n /** Render prop que recebe as rows selecionadas */\r\n children: (selectedRows: TData[]) => React.ReactNode\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// COLUMN VISIBILITY COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableColumnVisibilityProps {\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// DENSITY TOGGLE COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableDensityToggleProps {\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// TABS COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableTab {\r\n /** Identificador único da tab */\r\n value: string\r\n\r\n /** Label exibido na tab */\r\n label: string\r\n\r\n /** Contador opcional (ex: \"Todas 85\") */\r\n count?: number\r\n}\r\n\r\nexport interface DataTableTabsProps {\r\n /** Lista de tabs disponíveis */\r\n tabs: DataTableTab[]\r\n\r\n /** Tab ativa (controlled) */\r\n value?: string\r\n\r\n /** Tab ativa inicial (uncontrolled) */\r\n defaultValue?: string\r\n\r\n /** Callback quando tab muda */\r\n onValueChange?: (value: string) => void\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// EXPORT COMPONENT\r\n// ============================================================================\r\n\r\nexport type DataTableExportFormat = 'csv' | 'xlsx' | 'pdf'\r\n\r\nexport interface DataTableExportProps {\r\n /** Formatos disponíveis para export */\r\n formats?: DataTableExportFormat[]\r\n\r\n /** Nome do arquivo (sem extensão) */\r\n filename?: string\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// COLUMN HEADER COMPONENT (Sortable)\r\n// ============================================================================\r\n\r\nexport interface DataTableColumnHeaderProps<TData = unknown, TValue = unknown> {\r\n /** Column instance do TanStack Table */\r\n column: Column<TData, TValue>\r\n\r\n /** Título do header */\r\n title: string\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// ROW ACTIONS COMPONENT\r\n// ============================================================================\r\n\r\nexport interface DataTableRowActionsProps {\r\n /** Children (DropdownMenuItems) */\r\n children: React.ReactNode\r\n\r\n /** Custom className */\r\n className?: string\r\n}\r\n\r\n// ============================================================================\r\n// CONTEXT TYPES\r\n// ============================================================================\r\n\r\nexport interface DataTableContextValue<TData = unknown> {\r\n table: Table<TData>\r\n state: DataTableMeta\r\n density: DataTableDensity\r\n setDensity: (density: DataTableDensity) => void\r\n}\r\n\r\n// ============================================================================\r\n// HOOK CONFIG TYPES\r\n// ============================================================================\r\n\r\nexport interface UseDataTableConfig<TData extends Record<string, unknown>> {\r\n data: TData[]\r\n columns: ColumnDef<TData, unknown>[]\r\n getRowId?: (row: TData) => string\r\n initialPageSize?: number\r\n initialPageIndex?: number\r\n}\r\n\r\n// ============================================================================\r\n// PAGINATION TYPES (Para integração com API)\r\n// ============================================================================\r\n\r\nexport interface PaginationMeta {\r\n page: number\r\n perPage: number\r\n totalItems: number\r\n totalPages: number\r\n hasNextPage: boolean\r\n hasPreviousPage: boolean\r\n sortBy?: string\r\n sortOrder?: 'asc' | 'desc'\r\n}\r\n\r\nexport interface PaginatedResponse<T> {\r\n data: T[]\r\n meta: PaginationMeta\r\n}\r\n\r\nexport interface PaginationParams {\r\n page?: number\r\n perPage?: number\r\n sortBy?: string\r\n sortOrder?: 'asc' | 'desc'\r\n}\r\n\r\n// ============================================================================\r\n// DENSITY CONFIG\r\n// ============================================================================\r\n\r\nexport const DENSITY_CONFIG = {\r\n compact: {\r\n rowHeight: 32,\r\n fontSize: 'text-xs',\r\n padding: 'py-1 px-2',\r\n },\r\n default: {\r\n rowHeight: 40,\r\n fontSize: 'text-sm',\r\n padding: 'py-2 px-4',\r\n },\r\n comfortable: {\r\n rowHeight: 52,\r\n fontSize: 'text-sm',\r\n padding: 'py-3 px-4',\r\n },\r\n} as const\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\n\r\n// Table Root Component\r\nconst Table = React.forwardRef<\r\n HTMLTableElement,\r\n React.HTMLAttributes<HTMLTableElement>\r\n>(({ className, ...props }, ref) => (\r\n <div className=\"relative w-full overflow-auto\">\r\n <table\r\n ref={ref}\r\n className={cn('w-full caption-bottom text-sm', className)}\r\n {...props}\r\n />\r\n </div>\r\n))\r\nTable.displayName = 'Table'\r\n\r\n// TableHeader Component\r\nconst TableHeader = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\r\n))\r\nTableHeader.displayName = 'TableHeader'\r\n\r\n// TableBody Component\r\nconst TableBody = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <tbody\r\n ref={ref}\r\n className={cn('[&_tr:last-child]:border-0', className)}\r\n {...props}\r\n />\r\n))\r\nTableBody.displayName = 'TableBody'\r\n\r\n// TableFooter Component\r\nconst TableFooter = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <tfoot\r\n ref={ref}\r\n className={cn(\r\n 'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableFooter.displayName = 'TableFooter'\r\n\r\n// TableRow Component (com React.memo para performance)\r\nconst TableRow = React.memo(\r\n React.forwardRef<\r\n HTMLTableRowElement,\r\n React.HTMLAttributes<HTMLTableRowElement>\r\n >(({ className, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\r\n 'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',\r\n className\r\n )}\r\n {...props}\r\n />\r\n ))\r\n)\r\nTableRow.displayName = 'TableRow'\r\n\r\n// TableHead Component\r\nconst TableHead = React.forwardRef<\r\n HTMLTableCellElement,\r\n React.ThHTMLAttributes<HTMLTableCellElement>\r\n>(({ className, ...props }, ref) => (\r\n <th\r\n ref={ref}\r\n className={cn(\r\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableHead.displayName = 'TableHead'\r\n\r\n// TableCell Component (com React.memo para performance)\r\nconst TableCell = React.memo(\r\n React.forwardRef<\r\n HTMLTableCellElement,\r\n React.TdHTMLAttributes<HTMLTableCellElement>\r\n >(({ className, ...props }, ref) => (\r\n <td\r\n ref={ref}\r\n className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}\r\n {...props}\r\n />\r\n ))\r\n)\r\nTableCell.displayName = 'TableCell'\r\n\r\n// TableCaption Component\r\nconst TableCaption = React.forwardRef<\r\n HTMLTableCaptionElement,\r\n React.HTMLAttributes<HTMLTableCaptionElement>\r\n>(({ className, ...props }, ref) => (\r\n <caption\r\n ref={ref}\r\n className={cn('mt-4 text-sm text-muted-foreground', className)}\r\n {...props}\r\n />\r\n))\r\nTableCaption.displayName = 'TableCaption'\r\n\r\nexport {\r\n Table,\r\n TableHeader,\r\n TableBody,\r\n TableFooter,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableCaption,\r\n}\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { flexRender } from '@tanstack/react-table'\r\nimport {\r\n useDataTable,\r\n useDataTableMeta,\r\n useDataTableDensity,\r\n} from './DataTableContext'\r\nimport type { DataTableContentProps } from './types'\r\nimport { DENSITY_CONFIG } from './types'\r\n\r\nimport {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableHeader,\r\n TableRow,\r\n} from './Table'\r\n\r\n// ============================================================================\r\n// CONTENT COMPONENT - Tabela principal com density support\r\n// ============================================================================\r\n//\r\n// Uso:\r\n// <DataTable data={data} columns={columns}>\r\n// <DataTable.Content stickyHeader stripedRows />\r\n// </DataTable>\r\n//\r\n// ============================================================================\r\n\r\nexport const DataTableContent = React.memo(function DataTableContent({\r\n stickyHeader = false,\r\n stripedRows = false,\r\n highlightOnHover = true,\r\n className,\r\n}: DataTableContentProps) {\r\n const table = useDataTable()\r\n const { isEmpty } = useDataTableMeta()\r\n const { density } = useDataTableDensity()\r\n\r\n const densityStyles = DENSITY_CONFIG[density]\r\n\r\n // Classes baseadas na density\r\n const cellClasses = cn(densityStyles.padding, densityStyles.fontSize)\r\n\r\n // Render table\r\n return (\r\n <div className={cn('rounded-md border overflow-auto', className)}>\r\n <Table>\r\n <TableHeader className={cn(stickyHeader && 'sticky top-0 z-10 bg-background')}>\r\n {table.getHeaderGroups().map((headerGroup) => (\r\n <TableRow key={headerGroup.id}>\r\n {headerGroup.headers.map((header) => (\r\n <TableHead\r\n key={header.id}\r\n className={cn(cellClasses, 'font-medium')}\r\n style={{ width: header.getSize() !== 150 ? header.getSize() : undefined }}\r\n >\r\n {header.isPlaceholder\r\n ? null\r\n : flexRender(\r\n header.column.columnDef.header,\r\n header.getContext()\r\n )}\r\n </TableHead>\r\n ))}\r\n </TableRow>\r\n ))}\r\n </TableHeader>\r\n <TableBody>\r\n {table.getRowModel().rows?.length ? (\r\n table.getRowModel().rows.map((row, index) => (\r\n <TableRow\r\n key={row.id}\r\n data-state={row.getIsSelected() && 'selected'}\r\n className={cn(\r\n highlightOnHover && 'hover:bg-muted/50',\r\n stripedRows && index % 2 === 1 && 'bg-muted/30'\r\n )}\r\n >\r\n {row.getVisibleCells().map((cell) => (\r\n <TableCell key={cell.id} className={cellClasses}>\r\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n ))\r\n ) : (\r\n <TableRow>\r\n <TableCell\r\n colSpan={table.getAllColumns().length}\r\n className=\"h-24 text-center text-muted-foreground\"\r\n >\r\n {isEmpty ? 'Nenhum resultado encontrado.' : 'Carregando...'}\r\n </TableCell>\r\n </TableRow>\r\n )}\r\n </TableBody>\r\n </Table>\r\n </div>\r\n )\r\n})\r\n\r\nDataTableContent.displayName = 'DataTable.Content'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport type { DataTableToolbarProps } from './types'\r\n\r\n// ============================================================================\r\n// TOOLBAR COMPONENT - Container para filtros e ações\r\n// ============================================================================\r\n\r\nexport const DataTableToolbar = React.memo(function DataTableToolbar({\r\n className,\r\n children,\r\n}: DataTableToolbarProps) {\r\n return (\r\n <div className={cn('flex items-center justify-between gap-2', className)}>\r\n {children}\r\n </div>\r\n )\r\n})\r\n","import * as React from 'react'\r\n\r\nexport function useDebounce<T>(value: T, delay: number = 300): T {\r\n const [debouncedValue, setDebouncedValue] = React.useState<T>(value)\r\n\r\n React.useEffect(() => {\r\n const handler = setTimeout(() => {\r\n setDebouncedValue(value)\r\n }, delay)\r\n\r\n return () => {\r\n clearTimeout(handler)\r\n }\r\n }, [value, delay])\r\n\r\n return debouncedValue\r\n}\r\n\r\nexport function useDebouncedCallback<T extends (...args: any[]) => any>(\r\n callback: T,\r\n delay: number = 300\r\n) {\r\n const callbackRef = React.useRef(callback)\r\n const timeoutRef = React.useRef<NodeJS.Timeout | null>(null)\r\n\r\n React.useEffect(() => {\r\n callbackRef.current = callback\r\n }, [callback])\r\n\r\n return React.useCallback(\r\n (...args: Parameters<T>) => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current)\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n callbackRef.current(...args)\r\n }, delay)\r\n },\r\n [delay]\r\n ) as T\r\n}\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useDataTableInstance } from './DataTableContext'\r\nimport { useDebounce } from './hooks/useDebounce'\r\nimport type { DataTableSearchProps } from './types'\r\nimport { Input } from '../Input'\r\n\r\n// ============================================================================\r\n// SEARCH COMPONENT - Busca com debounce\r\n// ============================================================================\r\n\r\nexport const DataTableSearch = React.memo(function DataTableSearch({\r\n column,\r\n placeholder = 'Buscar...',\r\n debounce = 300,\r\n onSearch,\r\n className,\r\n}: DataTableSearchProps) {\r\n const table = useDataTableInstance()\r\n const columnInstance = table.getColumn(column)\r\n\r\n const [value, setValue] = React.useState(\r\n (columnInstance?.getFilterValue() as string) ?? ''\r\n )\r\n const debouncedValue = useDebounce(value, debounce)\r\n\r\n // Sync debounced value with table filter\r\n React.useEffect(() => {\r\n columnInstance?.setFilterValue(debouncedValue)\r\n\r\n // Call external search callback if provided (server-side search)\r\n if (onSearch) {\r\n onSearch(debouncedValue)\r\n }\r\n }, [debouncedValue, columnInstance, onSearch])\r\n\r\n // Sync external filter changes back to input\r\n React.useEffect(() => {\r\n const filterValue = (columnInstance?.getFilterValue() as string) ?? ''\r\n if (filterValue !== value) {\r\n setValue(filterValue)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [columnInstance?.getFilterValue()])\r\n\r\n return (\r\n <Input\r\n placeholder={placeholder}\r\n value={value}\r\n onChange={(e) => setValue(e.target.value)}\r\n className={cn('h-9 w-[150px] lg:w-[250px]', className)}\r\n />\r\n )\r\n})\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useDataTableInstance } from './DataTableContext'\r\nimport type { DataTableFiltersProps, DataTableFilterProps } from './types'\r\nimport { Select, SelectItem } from '../Select'\r\n\r\n// ============================================================================\r\n// FILTERS CONTAINER - Agrupa múltiplos filtros\r\n// ============================================================================\r\n\r\nexport const DataTableFilters = React.memo(function DataTableFilters({\r\n onChange,\r\n className,\r\n children,\r\n}: DataTableFiltersProps) {\r\n const table = useDataTableInstance()\r\n const filters = table.getState().columnFilters\r\n const filtersRef = React.useRef(filters)\r\n\r\n // Sync filter state with external callback\r\n React.useEffect(() => {\r\n if (onChange && JSON.stringify(filters) !== JSON.stringify(filtersRef.current)) {\r\n filtersRef.current = filters\r\n onChange(filters)\r\n }\r\n }, [filters, onChange])\r\n\r\n return <div className={cn('flex gap-2', className)}>{children}</div>\r\n})\r\n\r\n// ============================================================================\r\n// FILTER COMPONENT - Filtro individual com select simples\r\n// ============================================================================\r\n\r\nexport const DataTableFilter = React.memo(function DataTableFilter({\r\n column: columnId,\r\n title,\r\n options,\r\n className,\r\n}: DataTableFilterProps) {\r\n const table = useDataTableInstance()\r\n const column = table.getColumn(columnId)\r\n\r\n const filterValue = (column?.getFilterValue() as string[]) ?? []\r\n const currentValue = filterValue.length > 0 ? filterValue[0] : 'all'\r\n\r\n const handleValueChange = React.useCallback(\r\n (value: string) => {\r\n if (value === 'all') {\r\n column?.setFilterValue(undefined)\r\n } else {\r\n column?.setFilterValue([value])\r\n }\r\n },\r\n [column]\r\n )\r\n\r\n return (\r\n <Select\r\n value={currentValue}\r\n onValueChange={handleValueChange}\r\n selectSize=\"sm\"\r\n placeholder={title}\r\n className={className}\r\n >\r\n <SelectItem value=\"all\">Todos</SelectItem>\r\n {options.map((option) => (\r\n <SelectItem key={option.value} value={option.value}>\r\n {option.label}\r\n </SelectItem>\r\n ))}\r\n </Select>\r\n )\r\n})\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useDataTable, useDataTablePagination, useDataTableMeta } from './DataTableContext'\r\nimport type { DataTablePaginationProps } from './types'\r\nimport { Button } from '../Button'\r\nimport { Select, SelectItem } from '../Select'\r\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react'\r\n\r\n// ============================================================================\r\n// PAGINATION COMPONENT - Client e Server-side pagination\r\n// ============================================================================\r\n//\r\n// Client-side (padrão):\r\n// <DataTable.Pagination />\r\n//\r\n// Server-side:\r\n// <DataTable.Pagination mode=\"server\" pageCount={meta.totalPages} />\r\n//\r\n// ============================================================================\r\n\r\nexport const DataTablePagination = React.memo(function DataTablePagination({\r\n mode = 'client',\r\n pageCount: externalPageCount,\r\n pageSizes = [10, 20, 30, 50],\r\n showPageSize = true,\r\n showPageInfo = true,\r\n showFirstLast = true,\r\n className,\r\n}: DataTablePaginationProps) {\r\n const table = useDataTable()\r\n const { selectedRowCount, totalRows } = useDataTableMeta()\r\n const {\r\n pageIndex,\r\n pageSize,\r\n pageCount: internalPageCount,\r\n canPreviousPage,\r\n canNextPage,\r\n setPageIndex,\r\n setPageSize,\r\n previousPage,\r\n nextPage,\r\n firstPage,\r\n lastPage,\r\n } = useDataTablePagination()\r\n\r\n // Usa pageCount externo para server-side, interno para client-side\r\n const pageCount = mode === 'server' && externalPageCount !== undefined\r\n ? externalPageCount\r\n : internalPageCount\r\n\r\n // Recalcula navegação para server-side\r\n const canGoPrevious = pageIndex > 0\r\n const canGoNext = pageIndex < pageCount - 1\r\n\r\n // Handlers\r\n const handlePageSizeChange = React.useCallback(\r\n (value: string) => {\r\n setPageSize(Number(value))\r\n },\r\n [setPageSize]\r\n )\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex flex-col-reverse items-center justify-between gap-4 sm:flex-row',\r\n className\r\n )}\r\n >\r\n {/* Info Section */}\r\n {showPageInfo && (\r\n <div className=\"flex-1 text-sm text-muted-foreground\">\r\n {selectedRowCount > 0 ? (\r\n <>\r\n {selectedRowCount} de {totalRows} linha(s) selecionada(s)\r\n </>\r\n ) : (\r\n <>\r\n Página {pageIndex + 1} de {pageCount}\r\n </>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div className=\"flex items-center gap-6\">\r\n {/* Page Size Selector */}\r\n {showPageSize && (\r\n <div className=\"flex items-center gap-2\">\r\n <p className=\"text-sm font-medium whitespace-nowrap\">Linhas por página</p>\r\n <Select\r\n value={`${pageSize}`}\r\n onValueChange={handlePageSizeChange}\r\n selectSize=\"sm\"\r\n >\r\n {pageSizes.map((size) => (\r\n <SelectItem key={size} value={`${size}`}>\r\n {size}\r\n </SelectItem>\r\n ))}\r\n </Select>\r\n </div>\r\n )}\r\n\r\n {/* Pagination Controls */}\r\n <div className=\"flex items-center gap-1\">\r\n {showFirstLast && (\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon-sm\"\r\n className=\"hidden h-8 w-8 p-0 lg:flex\"\r\n onClick={firstPage}\r\n disabled={!canGoPrevious}\r\n aria-label=\"Primeira página\"\r\n >\r\n <ChevronsLeft className=\"h-4 w-4\" />\r\n </Button>\r\n )}\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon-sm\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={previousPage}\r\n disabled={!canGoPrevious}\r\n aria-label=\"Página anterior\"\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n </Button>\r\n\r\n {/* Page indicator */}\r\n <span className=\"flex h-8 min-w-[4rem] items-center justify-center text-sm font-medium\">\r\n {pageIndex + 1} / {pageCount}\r\n </span>\r\n\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon-sm\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={nextPage}\r\n disabled={!canGoNext}\r\n aria-label=\"Próxima página\"\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </Button>\r\n {showFirstLast && (\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon-sm\"\r\n className=\"hidden h-8 w-8 p-0 lg:flex\"\r\n onClick={lastPage}\r\n disabled={!canGoNext}\r\n aria-label=\"Última página\"\r\n >\r\n <ChevronsRight className=\"h-4 w-4\" />\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n})\r\n\r\nDataTablePagination.displayName = 'DataTable.Pagination'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport type { DataTableEmptyStateProps } from './types'\r\n\r\n// ============================================================================\r\n// EMPTY STATE COMPONENT - Estado vazio customizável\r\n// ============================================================================\r\n\r\nexport const DataTableEmptyState = React.memo(function DataTableEmptyState({\r\n message = 'Nenhum resultado encontrado.',\r\n description,\r\n icon,\r\n action,\r\n className,\r\n}: DataTableEmptyStateProps) {\r\n const defaultIcon = (\r\n <svg\r\n className=\"h-10 w-10 text-muted-foreground\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={1.5}\r\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\r\n />\r\n </svg>\r\n )\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex min-h-[400px] flex-col items-center justify-center rounded-md border border-dashed p-8 text-center',\r\n className\r\n )}\r\n >\r\n <div className=\"mx-auto flex max-w-[420px] flex-col items-center justify-center text-center\">\r\n {icon ?? defaultIcon}\r\n <h3 className=\"mt-4 text-lg font-semibold\">{message}</h3>\r\n {description && (\r\n <p className=\"mb-4 mt-2 text-sm text-muted-foreground\">\r\n {description}\r\n </p>\r\n )}\r\n {action && <div className=\"mt-4\">{action}</div>}\r\n </div>\r\n </div>\r\n )\r\n})\r\n","import { cn } from '../../utils/cn'\nimport type { DataTableLoadingProps } from './types'\nimport { TableRow, TableCell } from './Table'\nimport { useDataTable } from './DataTableContext'\n\n// ============================================================================\n// LOADING COMPONENT - Skeleton overlay para DataTable\n// ============================================================================\n//\n// Uso:\n// <DataTable data={data} columns={columns}>\n// <DataTable.Loading visible={isLoading} />\n// <DataTable.Content />\n// </DataTable>\n//\n// ============================================================================\n\n/**\n * Skeleton row padrão\n */\nfunction SkeletonRow({ columns }: { columns: number }) {\n return (\n <TableRow className=\"animate-pulse\">\n {Array.from({ length: columns }).map((_, index) => (\n <TableCell key={index} className=\"py-4\">\n <div className=\"h-4 bg-muted rounded w-3/4\" />\n </TableCell>\n ))}\n </TableRow>\n )\n}\n\n/**\n * DataTable.Loading - Componente de loading state\n *\n * Renderiza um skeleton ou overlay quando visible=true.\n * Não renderiza nada quando visible=false.\n */\nexport function DataTableLoading({\n visible,\n skeleton,\n skeletonRows = 5,\n className,\n}: DataTableLoadingProps) {\n const table = useDataTable()\n const columnCount = table.getVisibleLeafColumns().length\n\n if (!visible) {\n return null\n }\n\n // Se tem skeleton customizado, usa ele\n if (skeleton) {\n return <div className={cn('w-full', className)}>{skeleton}</div>\n }\n\n // Skeleton padrão com número de rows configurável\n return (\n <div className={cn('w-full', className)}>\n <div className=\"rounded-md border\">\n <table className=\"w-full\">\n <tbody>\n {Array.from({ length: skeletonRows }).map((_, index) => (\n <SkeletonRow key={index} columns={columnCount || 4} />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )\n}\n\nDataTableLoading.displayName = 'DataTable.Loading'\n","import { cn } from '../../utils/cn'\r\nimport type { DataTableColumnHeaderProps } from './types'\r\nimport { Button } from '../Button'\r\nimport { ArrowDown, ArrowUp, ChevronsUpDown } from 'lucide-react'\r\n\r\n// ============================================================================\r\n// COLUMN HEADER COMPONENT - Header com sorting\r\n// ============================================================================\r\n\r\nexport function DataTableColumnHeader({\r\n column,\r\n title,\r\n className,\r\n}: DataTableColumnHeaderProps) {\r\n if (!column.getCanSort()) {\r\n return <div className={cn(className)}>{title}</div>\r\n }\r\n\r\n const handleSort = () => {\r\n const currentSort = column.getIsSorted()\r\n if (currentSort === 'asc') {\r\n column.toggleSorting(true) // Sort descending\r\n } else if (currentSort === 'desc') {\r\n column.clearSorting() // Clear sort\r\n } else {\r\n column.toggleSorting(false) // Sort ascending\r\n }\r\n }\r\n\r\n return (\r\n <div className={cn('flex items-center space-x-2', className)}>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n className=\"-ml-3 h-8 data-[state=open]:bg-accent\"\r\n onClick={handleSort}\r\n >\r\n <span>{title}</span>\r\n {column.getIsSorted() === 'desc' ? (\r\n <ArrowDown className=\"ml-2 h-4 w-4\" />\r\n ) : column.getIsSorted() === 'asc' ? (\r\n <ArrowUp className=\"ml-2 h-4 w-4\" />\r\n ) : (\r\n <ChevronsUpDown className=\"ml-2 h-4 w-4\" />\r\n )}\r\n </Button>\r\n </div>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\r\nimport { Check } from 'lucide-react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst checkboxVariants = cva(\r\n [\r\n 'peer shrink-0 rounded-sm border-2 ring-offset-background',\r\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\r\n 'disabled:cursor-not-allowed disabled:opacity-50',\r\n 'transition-all duration-200',\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n 'border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\r\n secondary:\r\n 'border-secondary data-[state=checked]:bg-secondary data-[state=checked]:text-secondary-foreground',\r\n outline:\r\n 'border-border data-[state=checked]:bg-background data-[state=checked]:text-primary data-[state=checked]:border-primary',\r\n },\r\n size: {\r\n sm: 'h-4 w-4',\r\n md: 'h-5 w-5',\r\n lg: 'h-6 w-6',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'md',\r\n },\r\n }\r\n)\r\n\r\nconst iconSizeMap = {\r\n sm: 'h-3 w-3',\r\n md: 'h-4 w-4',\r\n lg: 'h-5 w-5',\r\n} as const\r\n\r\nexport interface CheckboxProps\r\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\r\n VariantProps<typeof checkboxVariants> {}\r\n\r\nexport const Checkbox = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof CheckboxPrimitive.Root>,\r\n CheckboxProps\r\n >(({ className, variant, size = 'md', ...props }, ref) => {\r\n const iconSize = iconSizeMap[size || 'md']\r\n\r\n return (\r\n <CheckboxPrimitive.Root\r\n ref={ref}\r\n className={cn(checkboxVariants({ variant, size, className }))}\r\n {...props}\r\n >\r\n <CheckboxPrimitive.Indicator\r\n className={cn('flex items-center justify-center text-current')}\r\n >\r\n <Check className={iconSize} />\r\n </CheckboxPrimitive.Indicator>\r\n </CheckboxPrimitive.Root>\r\n )\r\n })\r\n)\r\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\r\n","import * as React from 'react'\nimport { cn } from '../../utils/cn'\nimport { useDataTable } from './DataTableContext'\nimport type { DataTableColumnVisibilityProps } from './types'\nimport { Button } from '../Button'\nimport { Checkbox } from '../Checkbox'\nimport { SlidersHorizontal } from 'lucide-react'\n\n// ============================================================================\n// COLUMN VISIBILITY COMPONENT - Toggle de colunas visíveis\n// ============================================================================\n//\n// Uso:\n// <DataTable.Toolbar>\n// <DataTable.ColumnVisibility />\n// </DataTable.Toolbar>\n//\n// ============================================================================\n\nexport function DataTableColumnVisibility({\n className,\n}: DataTableColumnVisibilityProps) {\n const table = useDataTable()\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n // Fecha dropdown ao clicar fora\n React.useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [open])\n\n // Pega apenas colunas que podem ser ocultadas\n const columns = table.getAllColumns().filter((column) => column.getCanHide())\n\n return (\n <div className={cn('relative', className)} ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8\"\n onClick={() => setOpen(!open)}\n aria-expanded={open}\n aria-haspopup=\"true\"\n >\n <SlidersHorizontal className=\"mr-2 h-4 w-4\" />\n Colunas\n </Button>\n\n {open && (\n <div\n className={cn(\n 'absolute right-0 top-full z-50 mt-1 w-48',\n 'rounded-md border bg-popover p-2 shadow-md',\n 'animate-in fade-in-0 zoom-in-95'\n )}\n >\n <div className=\"px-2 py-1.5 text-sm font-semibold\">\n Alternar colunas\n </div>\n <div className=\"h-px bg-border my-1\" />\n <div className=\"max-h-60 overflow-auto\">\n {columns.map((column) => {\n const header = column.columnDef.header\n const title = typeof header === 'string'\n ? header\n : column.id\n\n return (\n <label\n key={column.id}\n className={cn(\n 'flex items-center gap-2 px-2 py-1.5 rounded-sm cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground',\n 'text-sm'\n )}\n >\n <Checkbox\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n />\n <span className=\"capitalize\">{title}</span>\n </label>\n )\n })}\n </div>\n </div>\n )}\n </div>\n )\n}\n\nDataTableColumnVisibility.displayName = 'DataTable.ColumnVisibility'\n","import * as React from 'react'\nimport { cn } from '../../utils/cn'\nimport { useDataTableDensity } from './DataTableContext'\nimport type { DataTableDensityToggleProps, DataTableDensity } from './types'\nimport { Button } from '../Button'\nimport { LayoutList, Rows3, Rows4 } from 'lucide-react'\n\n// ============================================================================\n// DENSITY TOGGLE COMPONENT - Compact/Default/Comfortable\n// ============================================================================\n//\n// Uso:\n// <DataTable.Toolbar>\n// <DataTable.DensityToggle />\n// </DataTable.Toolbar>\n//\n// ============================================================================\n\nconst densityOptions: Array<{\n value: DataTableDensity\n label: string\n icon: React.ElementType\n}> = [\n { value: 'compact', label: 'Compacto', icon: Rows4 },\n { value: 'default', label: 'Padrão', icon: Rows3 },\n { value: 'comfortable', label: 'Confortável', icon: LayoutList },\n]\n\nexport function DataTableDensityToggle({\n className,\n}: DataTableDensityToggleProps) {\n const { density, setDensity } = useDataTableDensity()\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n // Fecha dropdown ao clicar fora\n React.useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [open])\n\n const currentOption = densityOptions.find((opt) => opt.value === density) ?? densityOptions[1]\n const Icon = currentOption.icon\n\n return (\n <div className={cn('relative', className)} ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8\"\n onClick={() => setOpen(!open)}\n aria-expanded={open}\n aria-haspopup=\"true\"\n >\n <Icon className=\"mr-2 h-4 w-4\" />\n Densidade\n </Button>\n\n {open && (\n <div\n className={cn(\n 'absolute right-0 top-full z-50 mt-1 w-40',\n 'rounded-md border bg-popover p-1 shadow-md',\n 'animate-in fade-in-0 zoom-in-95'\n )}\n >\n {densityOptions.map((option) => {\n const OptionIcon = option.icon\n const isSelected = density === option.value\n\n return (\n <button\n key={option.value}\n className={cn(\n 'flex w-full items-center gap-2 px-2 py-1.5 rounded-sm cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground',\n 'text-sm text-left',\n isSelected && 'bg-accent'\n )}\n onClick={() => {\n setDensity(option.value)\n setOpen(false)\n }}\n >\n <OptionIcon className=\"h-4 w-4\" />\n <span>{option.label}</span>\n {isSelected && (\n <span className=\"ml-auto text-xs text-muted-foreground\">✓</span>\n )}\n </button>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n\nDataTableDensityToggle.displayName = 'DataTable.DensityToggle'\n","import { cn } from '../../utils/cn'\nimport { useDataTableSelection, useDataTableMeta, useDataTable } from './DataTableContext'\nimport type { DataTableBulkActionsProps } from './types'\nimport { Button } from '../Button'\nimport { X } from 'lucide-react'\n\n// ============================================================================\n// BULK ACTIONS COMPONENT - Barra de ações quando rows selecionadas\n// ============================================================================\n//\n// Uso:\n// <DataTable.BulkActions>\n// {(selectedRows) => (\n// <>\n// <span>{selectedRows.length} selecionados</span>\n// <Button onClick={() => handleDelete(selectedRows)}>Deletar</Button>\n// </>\n// )}\n// </DataTable.BulkActions>\n//\n// ============================================================================\n\nexport function DataTableBulkActions<TData extends Record<string, unknown>>({\n children,\n className,\n}: DataTableBulkActionsProps<TData>) {\n const table = useDataTable<TData>()\n const { selectedRowCount } = useDataTableMeta()\n const selectedRows = useDataTableSelection<TData>()\n\n // Não renderiza se não há seleção\n if (selectedRowCount === 0) {\n return null\n }\n\n const handleClearSelection = () => {\n table.toggleAllRowsSelected(false)\n }\n\n return (\n <div\n className={cn(\n 'flex items-center gap-3 rounded-lg border bg-muted/50 p-3',\n 'animate-in fade-in-0 slide-in-from-top-2',\n className\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">\n {selectedRowCount} {selectedRowCount === 1 ? 'item selecionado' : 'itens selecionados'}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2\"\n onClick={handleClearSelection}\n >\n <X className=\"h-4 w-4 mr-1\" />\n Limpar\n </Button>\n </div>\n\n <div className=\"h-5 w-px bg-border\" />\n\n <div className=\"flex items-center gap-2\">\n {children(selectedRows)}\n </div>\n </div>\n )\n}\n\nDataTableBulkActions.displayName = 'DataTable.BulkActions'\n","import * as React from 'react'\nimport { cn } from '../../utils/cn'\nimport { useDataTable } from './DataTableContext'\nimport type { DataTableExportProps, DataTableExportFormat } from './types'\nimport { Button } from '../Button'\nimport { Download, FileSpreadsheet, FileText } from 'lucide-react'\n\n// ============================================================================\n// EXPORT COMPONENT - Exportar dados para CSV/XLSX\n// ============================================================================\n//\n// Uso:\n// <DataTable.Toolbar>\n// <DataTable.Export formats={['csv']} filename=\"relatorio\" />\n// </DataTable.Toolbar>\n//\n// ============================================================================\n\nconst formatConfig: Record<DataTableExportFormat, {\n label: string\n icon: React.ElementType\n mimeType: string\n extension: string\n}> = {\n csv: {\n label: 'CSV',\n icon: FileText,\n mimeType: 'text/csv',\n extension: 'csv',\n },\n xlsx: {\n label: 'Excel',\n icon: FileSpreadsheet,\n mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n extension: 'xlsx',\n },\n pdf: {\n label: 'PDF',\n icon: FileText,\n mimeType: 'application/pdf',\n extension: 'pdf',\n },\n}\n\n/**\n * Converte valor para string segura para CSV\n */\nfunction escapeCSV(value: unknown): string {\n if (value === null || value === undefined) return ''\n const str = String(value)\n // Escapa aspas e envolve com aspas se necessário\n if (str.includes(',') || str.includes('\"') || str.includes('\\n')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`\n }\n return str\n}\n\n/**\n * Acessa propriedade aninhada (ex: \"user.name\")\n */\nfunction getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n return path.split('.').reduce<unknown>((current, key) => {\n if (current && typeof current === 'object' && key in (current as Record<string, unknown>)) {\n return (current as Record<string, unknown>)[key]\n }\n return undefined\n }, obj)\n}\n\n/**\n * Gera CSV a partir dos dados da tabela\n */\nfunction generateCSV(\n headers: string[],\n rows: Record<string, unknown>[],\n accessors: string[]\n): string {\n const headerLine = headers.map(escapeCSV).join(',')\n const dataLines = rows.map((row) =>\n accessors.map((accessor) => {\n const value = getNestedValue(row, accessor)\n return escapeCSV(value)\n }).join(',')\n )\n return [headerLine, ...dataLines].join('\\n')\n}\n\n/**\n * Download arquivo\n */\nfunction downloadFile(content: string, filename: string, mimeType: string) {\n const blob = new Blob(['\\ufeff' + content], { type: `${mimeType};charset=utf-8` }) // BOM para Excel\n const url = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = url\n link.download = filename\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n URL.revokeObjectURL(url)\n}\n\nexport function DataTableExport({\n formats = ['csv'],\n filename = 'export',\n className,\n}: DataTableExportProps) {\n const table = useDataTable()\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n // Fecha dropdown ao clicar fora\n React.useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [open])\n\n const handleExport = React.useCallback((format: DataTableExportFormat) => {\n const visibleColumns = table.getVisibleLeafColumns()\n const rows = table.getFilteredRowModel().rows\n\n // Extrai headers e accessors\n const headers: string[] = []\n const accessors: string[] = []\n\n visibleColumns.forEach((column) => {\n const header = column.columnDef.header\n const headerText = typeof header === 'string' ? header : column.id\n\n // Pula colunas sem accessor (como select, actions)\n // Usa type assertion via unknown para acessar propriedades dinâmicas\n const columnDef = column.columnDef as unknown as Record<string, unknown>\n if (column.accessorFn || columnDef.accessorKey) {\n headers.push(headerText)\n accessors.push((columnDef.accessorKey as string) || column.id)\n }\n })\n\n // Extrai dados como Record<string, unknown>[]\n const data = rows.map((row) => row.original as Record<string, unknown>)\n\n if (format === 'csv') {\n const csv = generateCSV(headers, data, accessors)\n const config = formatConfig[format]\n downloadFile(csv, `${filename}.${config.extension}`, config.mimeType)\n } else if (format === 'xlsx') {\n // Para XLSX, seria necessário uma lib como xlsx\n console.warn('XLSX export requires xlsx library. Falling back to CSV.')\n const csv = generateCSV(headers, data, accessors)\n downloadFile(csv, `${filename}.csv`, 'text/csv')\n } else if (format === 'pdf') {\n console.warn('PDF export not implemented yet.')\n }\n\n setOpen(false)\n }, [table, filename])\n\n // Se só tem um formato, renderiza botão direto\n if (formats.length === 1) {\n const format = formats[0]\n const config = formatConfig[format]\n const Icon = config.icon\n\n return (\n <Button\n variant=\"outline\"\n size=\"sm\"\n className={cn('h-8', className)}\n onClick={() => handleExport(format)}\n >\n <Icon className=\"mr-2 h-4 w-4\" />\n Exportar {config.label}\n </Button>\n )\n }\n\n // Múltiplos formatos: dropdown\n return (\n <div className={cn('relative', className)} ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8\"\n onClick={() => setOpen(!open)}\n aria-expanded={open}\n aria-haspopup=\"true\"\n >\n <Download className=\"mr-2 h-4 w-4\" />\n Exportar\n </Button>\n\n {open && (\n <div\n className={cn(\n 'absolute right-0 top-full z-50 mt-1 w-36',\n 'rounded-md border bg-popover p-1 shadow-md',\n 'animate-in fade-in-0 zoom-in-95'\n )}\n >\n {formats.map((format) => {\n const config = formatConfig[format]\n const Icon = config.icon\n\n return (\n <button\n key={format}\n className={cn(\n 'flex w-full items-center gap-2 px-2 py-1.5 rounded-sm cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground',\n 'text-sm text-left'\n )}\n onClick={() => handleExport(format)}\n >\n <Icon className=\"h-4 w-4\" />\n <span>{config.label}</span>\n </button>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n\nDataTableExport.displayName = 'DataTable.Export'\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport type { DataTableTabsProps } from './types'\r\n\r\n// ============================================================================\r\n// TABS COMPONENT - Tabs de filtro rápido acima da tabela\r\n// ============================================================================\r\n//\r\n// Uso:\r\n// <DataTable data={filteredData} columns={columns}>\r\n// <DataTable.Tabs\r\n// tabs={[\r\n// { value: 'all', label: 'Todas', count: 85 },\r\n// { value: 'active', label: 'Ativas', count: 24 },\r\n// { value: 'inactive', label: 'Inativas', count: 12 },\r\n// ]}\r\n// value={activeTab}\r\n// onValueChange={setActiveTab}\r\n// />\r\n// <DataTable.Toolbar>...</DataTable.Toolbar>\r\n// <DataTable.Content />\r\n// </DataTable>\r\n//\r\n// Nota: O DataTable.Tabs NÃO filtra os dados automaticamente.\r\n// Você deve filtrar os dados externamente e passar para o DataTable.\r\n// Isso permite flexibilidade para server-side filtering.\r\n//\r\n// ============================================================================\r\n\r\nexport function DataTableTabs({\r\n tabs,\r\n value,\r\n defaultValue,\r\n onValueChange,\r\n className,\r\n}: DataTableTabsProps) {\r\n // Estado interno para modo uncontrolled\r\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? tabs[0]?.value)\r\n\r\n // Usa valor controlado se fornecido, senão usa interno\r\n const activeValue = value ?? internalValue\r\n\r\n const handleTabClick = (tabValue: string) => {\r\n if (value === undefined) {\r\n // Modo uncontrolled\r\n setInternalValue(tabValue)\r\n }\r\n onValueChange?.(tabValue)\r\n }\r\n\r\n return (\r\n <div\r\n className={cn('flex items-center gap-1 border-b', className)}\r\n role=\"tablist\"\r\n aria-label=\"Filtros\"\r\n >\r\n {tabs.map((tab) => {\r\n const isActive = activeValue === tab.value\r\n\r\n return (\r\n <button\r\n key={tab.value}\r\n role=\"tab\"\r\n aria-selected={isActive}\r\n aria-controls={`tabpanel-${tab.value}`}\r\n className={cn(\r\n 'relative px-4 py-2.5 text-sm font-medium transition-colors',\r\n 'hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\r\n isActive\r\n ? 'text-primary'\r\n : 'text-muted-foreground hover:text-foreground/80'\r\n )}\r\n onClick={() => handleTabClick(tab.value)}\r\n >\r\n <span className=\"flex items-center gap-2\">\r\n {tab.label}\r\n {tab.count !== undefined && (\r\n <span\r\n className={cn(\r\n 'inline-flex items-center justify-center min-w-[1.25rem] h-5 px-1.5 rounded text-xs font-medium',\r\n isActive\r\n ? 'bg-primary/10 text-primary'\r\n : 'bg-muted text-muted-foreground'\r\n )}\r\n >\r\n {tab.count}\r\n </span>\r\n )}\r\n </span>\r\n\r\n {/* Indicador ativo */}\r\n {isActive && (\r\n <span\r\n className=\"absolute bottom-0 left-0 right-0 h-0.5 bg-primary\"\r\n aria-hidden=\"true\"\r\n />\r\n )}\r\n </button>\r\n )\r\n })}\r\n </div>\r\n )\r\n}\r\n\r\nDataTableTabs.displayName = 'DataTable.Tabs'\r\n","// ============================================================================\r\n// COMPOUND COMPONENT PATTERN - Enterprise DataTable\r\n// ============================================================================\r\n//\r\n// Uso com Composição Explícita:\r\n//\r\n// <DataTable data={data} columns={columns}>\r\n// <DataTable.Loading visible={isLoading} />\r\n// <DataTable.Toolbar>\r\n// <DataTable.Search placeholder=\"Buscar...\" />\r\n// <DataTable.Filters>\r\n// <DataTable.Filter column=\"status\" options={statusOptions} />\r\n// </DataTable.Filters>\r\n// <DataTable.ColumnVisibility />\r\n// <DataTable.DensityToggle />\r\n// <DataTable.Export formats={['csv']} />\r\n// </DataTable.Toolbar>\r\n// <DataTable.BulkActions>\r\n// {(selectedRows) => <Button>Deletar {selectedRows.length}</Button>}\r\n// </DataTable.BulkActions>\r\n// <DataTable.Content />\r\n// <DataTable.Pagination mode=\"server\" pageCount={10} />\r\n// </DataTable>\r\n//\r\n// ============================================================================\r\n\r\nimport { DataTableRoot } from './DataTable'\r\nimport { DataTableContent } from './DataTableContent'\r\nimport { DataTableToolbar } from './DataTableToolbar'\r\nimport { DataTableSearch } from './DataTableSearch'\r\nimport { DataTableFilters, DataTableFilter } from './DataTableFilters'\r\nimport { DataTablePagination } from './DataTablePagination'\r\nimport { DataTableEmptyState } from './DataTableEmptyState'\r\nimport { DataTableLoading } from './DataTableLoading'\r\nimport { DataTableColumnHeader } from './DataTableColumnHeader'\r\nimport { DataTableColumnVisibility } from './DataTableColumnVisibility'\r\nimport { DataTableDensityToggle } from './DataTableDensityToggle'\r\nimport { DataTableBulkActions } from './DataTableBulkActions'\r\nimport { DataTableExport } from './DataTableExport'\r\nimport { DataTableTabs } from './DataTableTabs'\r\n\r\n// ============================================================================\r\n// COMPOUND COMPONENT - Use como: <DataTable><DataTable.Content /></DataTable>\r\n// ============================================================================\r\n\r\nexport const DataTable = Object.assign(DataTableRoot, {\r\n // Estado\r\n Loading: DataTableLoading,\r\n EmptyState: DataTableEmptyState,\r\n\r\n // Layout\r\n Tabs: DataTableTabs,\r\n Toolbar: DataTableToolbar,\r\n Content: DataTableContent,\r\n\r\n // Search & Filter\r\n Search: DataTableSearch,\r\n Filters: DataTableFilters,\r\n Filter: DataTableFilter,\r\n\r\n // Pagination\r\n Pagination: DataTablePagination,\r\n\r\n // Actions\r\n BulkActions: DataTableBulkActions,\r\n\r\n // Preferences\r\n ColumnVisibility: DataTableColumnVisibility,\r\n DensityToggle: DataTableDensityToggle,\r\n Export: DataTableExport,\r\n\r\n // Column utilities (para uso em column definitions)\r\n ColumnHeader: DataTableColumnHeader,\r\n})\r\n\r\n// ============================================================================\r\n// PRIMITIVE TABLE COMPONENTS - Base table components\r\n// ============================================================================\r\n\r\nexport {\r\n Table,\r\n TableHeader,\r\n TableBody,\r\n TableFooter,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableCaption,\r\n} from './Table'\r\n\r\n// ============================================================================\r\n// CONTEXT & HOOKS - Acesso aos dados da tabela\r\n// ============================================================================\r\n\r\nexport {\r\n // Hooks principais\r\n useDataTable,\r\n useDataTableMeta,\r\n useDataTableDensity,\r\n\r\n // Hooks especializados\r\n useDataTableLoading,\r\n useDataTableEmpty,\r\n useDataTableSelection,\r\n useDataTablePagination,\r\n useDataTableSorting,\r\n useDataTableColumnVisibility,\r\n\r\n // Aliases para compatibilidade\r\n useDataTableInstance,\r\n useDataTableState,\r\n} from './DataTableContext'\r\n\r\n// Re-exports from @tanstack/react-table\r\nexport { flexRender } from './hooks/useDataTable'\r\nexport type { ColumnDef } from '@tanstack/react-table'\r\n\r\n// Utilities\r\nexport { useDebounce, useDebouncedCallback } from './hooks/useDebounce'\r\n\r\n// ============================================================================\r\n// TYPES\r\n// ============================================================================\r\n\r\nexport type {\r\n // Root props\r\n DataTableProps,\r\n\r\n // State types\r\n DataTableState,\r\n DataTableMeta,\r\n DataTableDensity,\r\n\r\n // Component props\r\n DataTableContentProps,\r\n DataTableToolbarProps,\r\n DataTableSearchProps,\r\n DataTableFiltersProps,\r\n DataTableFilterProps,\r\n DataTableFilterOption,\r\n DataTablePaginationProps,\r\n DataTablePaginationMode,\r\n DataTableEmptyStateProps,\r\n DataTableLoadingProps,\r\n DataTableColumnHeaderProps,\r\n DataTableBulkActionsProps,\r\n DataTableColumnVisibilityProps,\r\n DataTableDensityToggleProps,\r\n DataTableExportProps,\r\n DataTableExportFormat,\r\n DataTableRowActionsProps,\r\n DataTableTabsProps,\r\n DataTableTab,\r\n\r\n // Context types\r\n DataTableContextValue,\r\n\r\n // Hook config types\r\n UseDataTableConfig,\r\n\r\n // Pagination types (para integração com API)\r\n PaginationMeta,\r\n PaginatedResponse,\r\n PaginationParams,\r\n} from './types'\r\n\r\n// Constante exportada separadamente (não é tipo)\r\nexport { DENSITY_CONFIG } from './types'\r\n","import * as React from 'react'\r\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\r\nimport { X } from 'lucide-react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\n// Primitivos básicos\r\nconst Dialog = DialogPrimitive.Root\r\nconst DialogTrigger = DialogPrimitive.Trigger\r\nconst DialogPortal = DialogPrimitive.Portal\r\nconst DialogClose = DialogPrimitive.Close\r\n\r\n// Overlay com animações\r\nconst DialogOverlay = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n >(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n 'fixed inset-0 z-50 bg-black/80',\r\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\r\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\r\n className\r\n )}\r\n {...props}\r\n />\r\n ))\r\n)\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\r\n\r\n// Variantes do DialogContent\r\nconst dialogContentVariants = cva(\r\n [\r\n 'fixed left-[50%] top-[50%] z-50',\r\n 'translate-x-[-50%] translate-y-[-50%]',\r\n 'grid w-full gap-4',\r\n 'border bg-background p-6 shadow-lg',\r\n 'duration-200',\r\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\r\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\r\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\r\n 'data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]',\r\n 'data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',\r\n 'sm:rounded-lg',\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n sm: 'max-w-sm',\r\n md: 'max-w-md',\r\n lg: 'max-w-lg',\r\n xl: 'max-w-xl',\r\n '2xl': 'max-w-2xl',\r\n '3xl': 'max-w-3xl',\r\n '4xl': 'max-w-4xl',\r\n full: 'max-w-[95vw] max-h-[95vh]',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'lg',\r\n },\r\n }\r\n)\r\n\r\nexport interface DialogContentProps\r\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\r\n VariantProps<typeof dialogContentVariants> {\r\n showCloseButton?: boolean\r\n}\r\n\r\nconst DialogContent = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n DialogContentProps\r\n >(({ className, children, showCloseButton = true, size, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(dialogContentVariants({ size, className }))}\r\n {...props}\r\n >\r\n {children}\r\n {showCloseButton && (\r\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\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Fechar</span>\r\n </DialogPrimitive.Close>\r\n )}\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n ))\r\n)\r\nDialogContent.displayName = DialogPrimitive.Content.displayName\r\n\r\n// DialogHeader\r\nconst DialogHeader = React.memo<React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }) => (\r\n <div\r\n className={cn(\r\n 'flex flex-col space-y-1.5 text-center sm:text-left',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nDialogHeader.displayName = 'DialogHeader'\r\n\r\n// DialogFooter\r\nconst DialogFooter = React.memo<React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }) => (\r\n <div\r\n className={cn(\r\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nDialogFooter.displayName = 'DialogFooter'\r\n\r\n// DialogTitle\r\nconst DialogTitle = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n >(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n 'text-2xl font-semibold leading-none tracking-tight',\r\n className\r\n )}\r\n {...props}\r\n />\r\n ))\r\n)\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName\r\n\r\n// DialogDescription\r\nconst DialogDescription = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n >(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn('text-[0.920rem] text-muted-foreground', className)}\r\n {...props}\r\n />\r\n ))\r\n)\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName\r\n\r\n// DialogBody - novo componente para o conteúdo do dialog\r\nconst DialogBody = React.memo<React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }) => (\r\n <div className={cn('flex-1 overflow-y-auto py-2', className)} {...props} />\r\n )\r\n)\r\nDialogBody.displayName = 'DialogBody'\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n DialogBody,\r\n}\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport interface RippleEffectProps {\r\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl'\r\n color?: 'primary' | 'secondary' | 'accent' | 'muted'\r\n intensity?: 'light' | 'medium' | 'strong'\r\n rings?: number\r\n position?:\r\n | 'center'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-right'\r\n | 'top-center'\r\n | 'bottom-center'\r\n className?: string\r\n}\r\n\r\n// Configurações memoizadas\r\nconst SIZE_CONFIG = {\r\n sm: { base: 8, increment: 2 },\r\n md: { base: 12, increment: 4 },\r\n lg: { base: 16, increment: 6 },\r\n xl: { base: 28, increment: 14 },\r\n xxl: { base: 36, increment: 16 },\r\n} as const\r\n\r\nconst INTENSITY_CONFIG = {\r\n light: [4, 6, 8, 10, 12],\r\n medium: [6, 8, 10, 12, 16],\r\n strong: [8, 12, 16, 20, 25],\r\n} as const\r\n\r\nconst POSITION_CONFIG = {\r\n center: 'items-center justify-center',\r\n 'top-left': 'items-start justify-start',\r\n 'top-right': 'items-start justify-end',\r\n 'bottom-left': 'items-end justify-start',\r\n 'bottom-right': 'items-end justify-end',\r\n 'top-center': 'items-start justify-center',\r\n 'bottom-center': 'items-end justify-center',\r\n} as const\r\n\r\n// Mapa de cores para classes Tailwind\r\nconst COLOR_MAP = {\r\n primary: 'border-primary',\r\n secondary: 'border-secondary',\r\n accent: 'border-accent',\r\n muted: 'border-muted',\r\n} as const\r\n\r\n// Componente interno memoizado para cada anel\r\nconst RippleRing = React.memo<{\r\n size: number\r\n color: string\r\n opacity: number\r\n}>(({ size, color, opacity }) => {\r\n const borderColorClass = COLOR_MAP[color as keyof typeof COLOR_MAP] || COLOR_MAP.primary\r\n\r\n return (\r\n <div\r\n className={cn('absolute rounded-full', borderColorClass)}\r\n style={{\r\n width: `${size * 4}px`,\r\n height: `${size * 4}px`,\r\n borderWidth: '1px',\r\n opacity: opacity / 100,\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n }}\r\n />\r\n )\r\n})\r\nRippleRing.displayName = 'RippleRing'\r\n\r\nexport const RippleEffect = React.memo<RippleEffectProps>(\r\n ({\r\n size = 'md',\r\n color = 'primary',\r\n intensity = 'medium',\r\n rings = 5,\r\n position = 'center',\r\n className,\r\n }) => {\r\n const { base, increment } = SIZE_CONFIG[size]\r\n const opacities = INTENSITY_CONFIG[intensity]\r\n const positionClasses = POSITION_CONFIG[position]\r\n\r\n // Memoizar os anéis para evitar recriação\r\n const rippleRings = React.useMemo(\r\n () =>\r\n Array.from({ length: rings }).map((_, index) => {\r\n const ringSize = base + increment * (rings - index - 1)\r\n const opacity = opacities[index] || opacities[opacities.length - 1]\r\n\r\n return (\r\n <RippleRing\r\n key={index}\r\n size={ringSize}\r\n color={color}\r\n opacity={opacity}\r\n />\r\n )\r\n }),\r\n [base, increment, rings, opacities, color]\r\n )\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'absolute inset-0 flex pointer-events-none',\r\n positionClasses,\r\n className\r\n )}\r\n >\r\n <div className=\"relative\">{rippleRings}</div>\r\n </div>\r\n )\r\n }\r\n)\r\nRippleEffect.displayName = 'RippleEffect'\r\n\r\nexport interface RippleWrapperProps {\r\n children: React.ReactNode\r\n rippleProps?: RippleEffectProps\r\n className?: string\r\n}\r\n\r\nexport const RippleWrapper = React.memo<RippleWrapperProps>(\r\n ({ children, rippleProps, className }) => {\r\n return (\r\n <div className={cn('relative', className)}>\r\n {rippleProps && <RippleEffect {...rippleProps} />}\r\n <div className=\"relative z-10\">{children}</div>\r\n </div>\r\n )\r\n }\r\n)\r\nRippleWrapper.displayName = 'RippleWrapper'\r\n\r\nexport interface RippleBackgroundProps extends RippleEffectProps {\r\n containerClassName?: string\r\n}\r\n\r\nexport const RippleBackground = React.memo<RippleBackgroundProps>(\r\n ({ containerClassName, ...rippleProps }) => {\r\n return (\r\n <div\r\n className={cn(\r\n 'absolute inset-0 overflow-hidden pointer-events-none',\r\n containerClassName\r\n )}\r\n >\r\n <RippleEffect {...rippleProps} />\r\n </div>\r\n )\r\n }\r\n)\r\nRippleBackground.displayName = 'RippleBackground'\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\nimport { DialogHeader } from './Dialog'\r\nimport {\r\n RippleBackground,\r\n RippleWrapper,\r\n type RippleEffectProps,\r\n} from '../RippleEffect'\r\n\r\n// Variantes do ícone\r\nconst iconWrapperVariants = cva(\r\n 'p-3 rounded-2xl shadow-lg transition-all duration-200',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'bg-primary shadow-primary/25',\r\n secondary: 'bg-secondary shadow-secondary/25',\r\n accent: 'bg-accent shadow-accent/25',\r\n destructive: 'bg-red-600 shadow-red-600/25',\r\n success: 'bg-green-600 shadow-green-600/25',\r\n },\r\n size: {\r\n sm: 'p-2',\r\n md: 'p-3',\r\n lg: 'p-4',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'md',\r\n },\r\n }\r\n)\r\n\r\nconst iconVariants = cva('text-white', {\r\n variants: {\r\n size: {\r\n sm: 'h-4 w-4',\r\n md: 'h-5 w-5',\r\n lg: 'h-6 w-6',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n },\r\n})\r\n\r\n// Status indicator\r\nconst statusIndicatorVariants = cva(\r\n 'absolute -top-1 -right-0 w-4 h-4 rounded-full border-2 border-white/70 shadow-sm z-20',\r\n {\r\n variants: {\r\n status: {\r\n active: 'bg-green-500',\r\n inactive: 'bg-slate-500',\r\n warning: 'bg-yellow-500',\r\n error: 'bg-red-500',\r\n },\r\n },\r\n defaultVariants: {\r\n status: 'active',\r\n },\r\n }\r\n)\r\n\r\nexport interface DialogWrapperProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof iconWrapperVariants> {\r\n children?: React.ReactNode\r\n icon?: React.ElementType<{ className?: string }>\r\n status?: 'active' | 'inactive' | 'warning' | 'error' | null\r\n showRipple?: boolean\r\n rippleProps?: Partial<RippleEffectProps>\r\n iconSize?: 'sm' | 'md' | 'lg'\r\n}\r\n\r\nexport const DialogWrapper = React.memo<DialogWrapperProps>(\r\n ({\r\n children,\r\n className,\r\n icon: Icon,\r\n status,\r\n variant = 'default',\r\n size = 'md',\r\n iconSize = 'md',\r\n showRipple = true,\r\n rippleProps,\r\n ...props\r\n }) => {\r\n // Props padrão do ripple baseado na variante\r\n const defaultRippleProps: RippleEffectProps = React.useMemo(\r\n () => ({\r\n size: size === 'sm' ? 'md' : size === 'lg' ? 'xl' : 'lg',\r\n color:\r\n variant === 'secondary'\r\n ? 'secondary'\r\n : variant === 'accent'\r\n ? 'accent'\r\n : 'primary',\r\n intensity: 'light',\r\n rings: 3,\r\n ...rippleProps,\r\n }),\r\n [size, variant, rippleProps]\r\n )\r\n\r\n const backgroundRippleProps: RippleEffectProps = React.useMemo(\r\n () => ({\r\n position: 'top-right',\r\n size: 'xl',\r\n color:\r\n variant === 'secondary'\r\n ? 'secondary'\r\n : variant === 'accent'\r\n ? 'accent'\r\n : 'primary',\r\n intensity: 'light',\r\n rings: 5,\r\n }),\r\n [variant]\r\n )\r\n\r\n // Sem ícone: apenas background ripple\r\n if (!Icon) {\r\n return (\r\n <DialogHeader\r\n className={cn('flex flex-col justify-between px-0', className)}\r\n {...props}\r\n >\r\n {showRipple && <RippleBackground {...backgroundRippleProps} />}\r\n <div className=\"flex items-center gap-3 w-full\">\r\n <div className=\"w-full\">{children}</div>\r\n </div>\r\n </DialogHeader>\r\n )\r\n }\r\n\r\n // Com ícone: ripple wrapper + background\r\n return (\r\n <DialogHeader\r\n className={cn('flex flex-col justify-between px-0 pb-3', className)}\r\n {...props}\r\n >\r\n {showRipple && <RippleBackground {...backgroundRippleProps} />}\r\n <div className=\"flex items-center gap-2 w-full\">\r\n <RippleWrapper\r\n rippleProps={showRipple ? defaultRippleProps : undefined}\r\n >\r\n <div className={cn(iconWrapperVariants({ variant, size }), 'mr-2')}>\r\n <Icon className={iconVariants({ size: iconSize })} />\r\n </div>\r\n {status && (\r\n <div className={statusIndicatorVariants({ status })} />\r\n )}\r\n </RippleWrapper>\r\n <div className=\"w-full\">{children}</div>\r\n </div>\r\n </DialogHeader>\r\n )\r\n }\r\n)\r\nDialogWrapper.displayName = 'DialogWrapper'\r\n","import * as React from 'react'\r\nimport { Toaster as Sonner, toast as sonnerToast } from 'sonner'\r\nimport { AlertTriangle, CheckCircle2, Info, X, XCircle } from 'lucide-react'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport type ToasterProps = React.ComponentProps<typeof Sonner>\r\n\r\nconst toastVariants = {\r\n default: {\r\n bg: 'bg-card',\r\n border: 'border-border',\r\n barColor: 'bg-muted-foreground',\r\n icon: <Info className=\"h-5 w-5 text-muted-foreground\" />,\r\n textColor: 'text-foreground',\r\n },\r\n success: {\r\n bg: 'bg-card',\r\n border: 'border-green-300 dark:border-green-700',\r\n barColor: 'bg-green-500',\r\n icon: <CheckCircle2 className=\"h-5 w-5 text-green-600 dark:text-green-500\" />,\r\n textColor: 'text-foreground',\r\n },\r\n error: {\r\n bg: 'bg-card',\r\n border: 'border-red-300 dark:border-red-700',\r\n barColor: 'bg-red-500',\r\n icon: <XCircle className=\"h-5 w-5 text-red-600 dark:text-red-500\" />,\r\n textColor: 'text-foreground',\r\n },\r\n warning: {\r\n bg: 'bg-card',\r\n border: 'border-yellow-400 dark:border-yellow-700',\r\n barColor: 'bg-yellow-500',\r\n icon: <AlertTriangle className=\"h-5 w-5 text-yellow-600 dark:text-yellow-500\" />,\r\n textColor: 'text-foreground',\r\n },\r\n info: {\r\n bg: 'bg-card',\r\n border: 'border-blue-300 dark:border-blue-700',\r\n barColor: 'bg-blue-500',\r\n icon: <Info className=\"h-5 w-5 text-blue-600 dark:text-blue-500\" />,\r\n textColor: 'text-foreground',\r\n },\r\n}\r\n\r\nexport const Toaster = ({ ...props }: ToasterProps) => {\r\n return (\r\n <Sonner\r\n position=\"top-right\"\r\n expand={false}\r\n closeButton={false}\r\n toastOptions={{\r\n unstyled: true,\r\n classNames: {\r\n toast: 'w-full',\r\n },\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ninterface ToastProps {\r\n title: string\r\n description?: string\r\n variant?: keyof typeof toastVariants\r\n action?: {\r\n label: string\r\n onClick: () => void\r\n }\r\n onClose?: () => void\r\n}\r\n\r\nconst CustomToast = React.memo<ToastProps>(\r\n ({ title, description, variant = 'default', action, onClose }) => {\r\n const variantStyles = toastVariants[variant]\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex items-start gap-3 p-4 pr-3 rounded-lg shadow-lg border min-w-[350px] max-w-[450px] relative overflow-hidden',\r\n variantStyles.bg,\r\n variantStyles.border\r\n )}\r\n >\r\n {/* Barra lateral colorida */}\r\n <div\r\n className={cn(\r\n 'absolute left-0 top-0 bottom-0 w-1.5',\r\n variantStyles.barColor\r\n )}\r\n />\r\n\r\n {/* Ícone */}\r\n <div className=\"flex-shrink-0 ml-2\">{variantStyles.icon}</div>\r\n\r\n {/* Conteúdo */}\r\n <div className=\"flex-1 min-w-0\">\r\n <p className={cn('text-sm font-medium', variantStyles.textColor)}>\r\n {title}\r\n </p>\r\n {description && (\r\n <p className=\"text-sm text-muted-foreground mt-0.5\">{description}</p>\r\n )}\r\n </div>\r\n\r\n {/* Ações */}\r\n <div className=\"flex items-center gap-1 flex-shrink-0\">\r\n {action && (\r\n <button\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n action.onClick()\r\n }}\r\n className={cn(\r\n 'text-sm font-medium px-2 py-1 rounded hover:bg-accent transition-colors',\r\n variant === 'error' || variant === 'warning'\r\n ? 'text-red-700 dark:text-red-400'\r\n : variant === 'success'\r\n ? 'text-green-700 dark:text-green-400'\r\n : variant === 'info'\r\n ? 'text-blue-700 dark:text-blue-400'\r\n : 'text-foreground'\r\n )}\r\n >\r\n {action.label}\r\n </button>\r\n )}\r\n <button\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n onClose?.()\r\n }}\r\n className=\"p-1 rounded hover:bg-accent transition-colors\"\r\n >\r\n <X className=\"h-4 w-4 text-muted-foreground\" />\r\n </button>\r\n </div>\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nCustomToast.displayName = 'CustomToast'\r\n\r\n// Helper functions para criar toasts\r\nconst createToast = (\r\n message: string | ToastProps,\r\n variant: keyof typeof toastVariants = 'default'\r\n) => {\r\n const props: ToastProps =\r\n typeof message === 'string' ? { title: message, variant } : message\r\n\r\n return sonnerToast.custom(\r\n (t) => <CustomToast {...props} onClose={() => sonnerToast.dismiss(t)} />,\r\n {\r\n duration: props.action ? 10000 : 4000,\r\n }\r\n )\r\n}\r\n\r\nexport const toast = Object.assign(\r\n (message: string) => createToast(message, 'default'),\r\n {\r\n success: (message: string | ToastProps) =>\r\n createToast(\r\n typeof message === 'string' ? { title: message } : message,\r\n 'success'\r\n ),\r\n error: (message: string | ToastProps) =>\r\n createToast(\r\n typeof message === 'string' ? { title: message } : message,\r\n 'error'\r\n ),\r\n warning: (message: string | ToastProps) =>\r\n createToast(\r\n typeof message === 'string' ? { title: message } : message,\r\n 'warning'\r\n ),\r\n info: (message: string | ToastProps) =>\r\n createToast(\r\n typeof message === 'string' ? { title: message } : message,\r\n 'info'\r\n ),\r\n custom: (component: Parameters<typeof sonnerToast.custom>[0], options?: Parameters<typeof sonnerToast.custom>[1]) =>\r\n sonnerToast.custom(component, options),\r\n dismiss: (id?: string | number) => sonnerToast.dismiss(id),\r\n promise: <T,>(\r\n promise: Promise<T> | (() => Promise<T>),\r\n options: {\r\n loading: string\r\n success: string | ((data: T) => string)\r\n error: string | ((error: any) => string)\r\n }\r\n ) => sonnerToast.promise(promise, options),\r\n }\r\n)\r\n","import * as React from 'react'\r\nimport * as SwitchPrimitives from '@radix-ui/react-switch'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst switchVariants = cva(\r\n [\r\n 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent',\r\n 'transition-colors',\r\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\r\n 'disabled:cursor-not-allowed disabled:opacity-50',\r\n ],\r\n {\r\n variants: {\r\n variant: {\r\n default: 'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\r\n secondary:\r\n 'data-[state=checked]:bg-secondary data-[state=unchecked]:bg-input',\r\n success:\r\n 'data-[state=checked]:bg-green-600 data-[state=unchecked]:bg-input',\r\n },\r\n size: {\r\n sm: 'h-5 w-9',\r\n md: 'h-6 w-11',\r\n lg: 'h-7 w-14',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'md',\r\n },\r\n }\r\n)\r\n\r\nconst thumbVariants = cva(\r\n [\r\n 'pointer-events-none block rounded-full bg-background shadow-lg ring-0',\r\n 'transition-transform',\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n sm: 'h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\r\n md: 'h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0',\r\n lg: 'h-6 w-6 data-[state=checked]:translate-x-7 data-[state=unchecked]:translate-x-0',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n },\r\n }\r\n)\r\n\r\nexport interface SwitchProps\r\n extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>,\r\n VariantProps<typeof switchVariants> {}\r\n\r\nexport const Switch = React.memo(\r\n React.forwardRef<\r\n React.ElementRef<typeof SwitchPrimitives.Root>,\r\n SwitchProps\r\n >(({ className, variant, size = 'md', ...props }, ref) => (\r\n <SwitchPrimitives.Root\r\n className={cn(switchVariants({ variant, size, className }))}\r\n {...props}\r\n ref={ref}\r\n >\r\n <SwitchPrimitives.Thumb className={cn(thumbVariants({ size }))} />\r\n </SwitchPrimitives.Root>\r\n ))\r\n)\r\nSwitch.displayName = SwitchPrimitives.Root.displayName\r\n","import * as React from 'react'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\nimport { cn } from '../../utils/cn'\r\n\r\nconst textareaVariants = cva(\r\n 'w-full px-3 pt-4 pb-2 text-sm bg-background rounded-md border-2 transition-colors focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50 resize-none',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'border-border focus:border-primary',\r\n error: 'border-red-500 focus:border-red-600',\r\n },\r\n textareaSize: {\r\n sm: 'min-h-[80px] pt-3 pb-1',\r\n default: 'min-h-[100px]',\r\n lg: 'min-h-[120px] pt-5 pb-2',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n textareaSize: 'default',\r\n },\r\n }\r\n)\r\n\r\nexport interface TextareaProps\r\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>,\r\n VariantProps<typeof textareaVariants> {\r\n label?: string\r\n error?: boolean\r\n icon?: React.ComponentType<any>\r\n containerClassName?: string\r\n labelClassName?: string\r\n autoResize?: boolean\r\n}\r\n\r\nexport const Textarea = React.memo(\r\n React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n textareaSize,\r\n error,\r\n label,\r\n icon: Icon,\r\n required,\r\n containerClassName,\r\n labelClassName,\r\n autoResize = false,\r\n onChange,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const textareaRef = React.useRef<HTMLTextAreaElement | null>(null)\r\n\r\n React.useImperativeHandle(ref, () => textareaRef.current!, [])\r\n\r\n const focusTextarea = React.useCallback(() => {\r\n textareaRef.current?.focus()\r\n }, [])\r\n\r\n // Auto-resize functionality\r\n const handleChange = React.useCallback(\r\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n if (autoResize && textareaRef.current) {\r\n textareaRef.current.style.height = 'auto'\r\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`\r\n }\r\n onChange?.(e)\r\n },\r\n [autoResize, onChange]\r\n )\r\n\r\n // Set initial height for auto-resize\r\n React.useEffect(() => {\r\n if (autoResize && textareaRef.current) {\r\n textareaRef.current.style.height = 'auto'\r\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`\r\n }\r\n }, [autoResize])\r\n\r\n return (\r\n <div className={cn('relative', containerClassName)}>\r\n {/* Icon */}\r\n {Icon && (\r\n <Icon\r\n className=\"absolute left-3 top-4 text-muted-foreground h-4 w-4 cursor-pointer z-10\"\r\n onClick={focusTextarea}\r\n />\r\n )}\r\n\r\n {/* Textarea */}\r\n <textarea\r\n className={cn(\r\n textareaVariants({\r\n variant: error ? 'error' : variant,\r\n textareaSize,\r\n }),\r\n Icon && 'pl-10',\r\n className\r\n )}\r\n ref={textareaRef}\r\n onChange={handleChange}\r\n {...props}\r\n />\r\n\r\n {/* Floating Label */}\r\n {label && (\r\n <label\r\n className={cn(\r\n 'absolute left-3 top-[-6px] text-xs font-medium bg-background px-1 cursor-pointer',\r\n error ? 'text-red-500' : 'text-foreground',\r\n Icon && 'left-10',\r\n labelClassName\r\n )}\r\n onClick={focusTextarea}\r\n >\r\n {label}\r\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\r\n </label>\r\n )}\r\n </div>\r\n )\r\n }\r\n )\r\n)\r\n\r\nTextarea.displayName = 'Textarea'\r\n","'use client'\r\n\r\nimport * as React from 'react'\r\nimport type { FieldValues, UseFormReturn } from 'react-hook-form'\r\nimport type { FormFieldContextValue } from './types'\r\n\r\n// ============================================\r\n// FORM CONTEXT (para acessar o form)\r\n// ============================================\r\n\r\ninterface FormContextValue<T extends FieldValues = FieldValues> {\r\n form: UseFormReturn<T>\r\n}\r\n\r\nconst FormContext = React.createContext<FormContextValue | null>(null)\r\n\r\nexport function useFormContext<T extends FieldValues = FieldValues>(): UseFormReturn<T> {\r\n const context = React.useContext(FormContext)\r\n\r\n if (!context) {\r\n throw new Error('useFormContext must be used within a Form provider')\r\n }\r\n\r\n return context.form as UseFormReturn<T>\r\n}\r\n\r\ninterface FormProviderProps<T extends FieldValues = FieldValues> {\r\n form: UseFormReturn<T>\r\n children: React.ReactNode\r\n}\r\n\r\nexport function FormProvider<T extends FieldValues = FieldValues>({\r\n form,\r\n children,\r\n}: FormProviderProps<T>) {\r\n const value = React.useMemo(() => ({ form }), [form])\r\n\r\n return (\r\n <FormContext.Provider value={value as FormContextValue}>\r\n {children}\r\n </FormContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================\r\n// FIELD CONTEXT (para acessar o campo atual)\r\n// ============================================\r\n\r\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(null)\r\n\r\nexport function useFormFieldContext(): FormFieldContextValue {\r\n const context = React.useContext(FormFieldContext)\r\n\r\n if (!context) {\r\n throw new Error('useFormFieldContext must be used within a Form.Field')\r\n }\r\n\r\n return context\r\n}\r\n\r\nexport function useFormFieldContextOptional(): FormFieldContextValue | null {\r\n return React.useContext(FormFieldContext)\r\n}\r\n\r\ninterface FormFieldProviderProps {\r\n name: string\r\n children: React.ReactNode\r\n}\r\n\r\nexport function FormFieldProvider({ name, children }: FormFieldProviderProps) {\r\n const form = useFormContext()\r\n const id = React.useId()\r\n\r\n const fieldState = form.getFieldState(name, form.formState)\r\n const error = fieldState.error?.message\r\n\r\n // Detectar se é required pelo schema (verificar se tem regra required)\r\n const isRequired = false // Pode ser inferido do schema se necessário\r\n\r\n const value = React.useMemo<FormFieldContextValue>(\r\n () => ({\r\n name,\r\n id,\r\n error,\r\n isRequired,\r\n }),\r\n [name, id, error, isRequired]\r\n )\r\n\r\n return (\r\n <FormFieldContext.Provider value={value}>\r\n {children}\r\n </FormFieldContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================\r\n// EXPORTS\r\n// ============================================\r\n\r\nexport { FormContext, FormFieldContext }\r\n","'use client'\r\n\r\nimport * as React from 'react'\r\nimport { Controller } from 'react-hook-form'\r\nimport type { FieldValues } from 'react-hook-form'\r\nimport { Input } from '../Input'\r\nimport { useFormContext, FormFieldProvider } from './FormContext'\r\nimport type { FormInputProps, MaskType } from './types'\r\nimport { cn } from '../../utils/cn'\r\n\r\n// ============================================\r\n// MÁSCARAS\r\n// ============================================\r\n\r\nfunction applyMask(value: string, mask: MaskType): string {\r\n const digits = value.replace(/\\D/g, '')\r\n\r\n switch (mask) {\r\n case 'phone':\r\n if (digits.length <= 10) {\r\n return digits.replace(/(\\d{2})(\\d{4})(\\d{0,4})/, '($1) $2-$3').trim()\r\n }\r\n return digits.replace(/(\\d{2})(\\d{5})(\\d{0,4})/, '($1) $2-$3').trim()\r\n\r\n case 'cpf':\r\n return digits\r\n .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d{1,2})$/, '$1-$2')\r\n\r\n case 'cnpj':\r\n return digits\r\n .replace(/(\\d{2})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d)/, '$1/$2')\r\n .replace(/(\\d{4})(\\d{1,2})$/, '$1-$2')\r\n\r\n case 'cep':\r\n return digits.replace(/(\\d{5})(\\d{0,3})/, '$1-$2')\r\n\r\n case 'money':\r\n if (!digits) return ''\r\n const cents = parseInt(digits, 10) / 100\r\n return new Intl.NumberFormat('pt-BR', {\r\n style: 'currency',\r\n currency: 'BRL',\r\n }).format(cents)\r\n\r\n case 'percent':\r\n if (!digits) return ''\r\n const percent = parseInt(digits, 10) / 100\r\n return `${percent.toFixed(2)}%`\r\n\r\n case 'plate':\r\n const upper = value.toUpperCase().replace(/[^A-Z0-9]/g, '')\r\n if (upper.length <= 3) return upper\r\n if (upper.length <= 7) {\r\n // Placa antiga: ABC-1234 ou Mercosul: ABC1D23\r\n return upper.replace(/([A-Z]{3})(\\d{0,1})([A-Z0-9]{0,1})(\\d{0,2})/, '$1-$2$3$4')\r\n }\r\n return upper.slice(0, 7).replace(/([A-Z]{3})(\\d{0,1})([A-Z0-9]{0,1})(\\d{0,2})/, '$1-$2$3$4')\r\n\r\n case 'date':\r\n return digits\r\n .replace(/(\\d{2})(\\d)/, '$1/$2')\r\n .replace(/(\\d{2})(\\d)/, '$1/$2')\r\n .slice(0, 10)\r\n\r\n case 'time':\r\n return digits.replace(/(\\d{2})(\\d{0,2})/, '$1:$2').slice(0, 5)\r\n\r\n case 'datetime':\r\n const dateTime = digits\r\n .replace(/(\\d{2})(\\d)/, '$1/$2')\r\n .replace(/(\\d{2})(\\d)/, '$1/$2')\r\n .replace(/(\\d{4})(\\d)/, '$1 $2')\r\n .replace(/(\\d{2})(\\d{0,2})$/, '$1:$2')\r\n return dateTime.slice(0, 16)\r\n\r\n default:\r\n return value\r\n }\r\n}\r\n\r\nfunction getMaxLength(mask?: MaskType): number | undefined {\r\n switch (mask) {\r\n case 'phone':\r\n return 15\r\n case 'cpf':\r\n return 14\r\n case 'cnpj':\r\n return 18\r\n case 'cep':\r\n return 9\r\n case 'plate':\r\n return 8\r\n case 'date':\r\n return 10\r\n case 'time':\r\n return 5\r\n case 'datetime':\r\n return 16\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\nfunction parseValue(displayValue: string, mask?: MaskType): any {\r\n if (!displayValue) return undefined\r\n\r\n switch (mask) {\r\n case 'money':\r\n const moneyDigits = displayValue.replace(/\\D/g, '')\r\n return moneyDigits ? parseInt(moneyDigits, 10) / 100 : undefined\r\n\r\n case 'percent':\r\n const percentDigits = displayValue.replace(/\\D/g, '')\r\n return percentDigits ? parseInt(percentDigits, 10) / 100 : undefined\r\n\r\n default:\r\n return displayValue || undefined\r\n }\r\n}\r\n\r\n// ============================================\r\n// FORM INPUT COMPONENT\r\n// ============================================\r\n\r\nexport function FormInput<T extends FieldValues = FieldValues>({\r\n name,\r\n label,\r\n description,\r\n required,\r\n disabled,\r\n className,\r\n mask,\r\n icon,\r\n showPasswordToggle = true,\r\n inputSize = 'default',\r\n hideError = false,\r\n type = 'text',\r\n maxLength,\r\n ...inputProps\r\n}: FormInputProps<T>) {\r\n const form = useFormContext<T>()\r\n const fieldState = form.getFieldState(name, form.formState)\r\n const error = fieldState.error?.message\r\n\r\n const getInputType = React.useCallback(() => {\r\n if (['money', 'percent', 'phone', 'cpf', 'cnpj', 'cep'].includes(mask || '')) {\r\n return 'tel'\r\n }\r\n return type\r\n }, [mask, type])\r\n\r\n return (\r\n <FormFieldProvider name={name as string}>\r\n <Controller\r\n control={form.control}\r\n name={name}\r\n render={({ field }) => {\r\n // Formatação do valor para exibição\r\n const getDisplayValue = (): string => {\r\n if (field.value === undefined || field.value === null) return ''\r\n if (mask) {\r\n return applyMask(String(field.value), mask)\r\n }\r\n return String(field.value)\r\n }\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n let newValue = e.target.value\r\n\r\n if (mask) {\r\n newValue = applyMask(newValue, mask)\r\n const parsed = parseValue(newValue, mask)\r\n field.onChange(parsed)\r\n } else {\r\n field.onChange(newValue || undefined)\r\n }\r\n }\r\n\r\n return (\r\n <div className={cn('space-y-1', className)}>\r\n <Input\r\n {...inputProps}\r\n ref={field.ref}\r\n name={field.name}\r\n value={getDisplayValue()}\r\n onChange={handleChange}\r\n onBlur={field.onBlur}\r\n disabled={disabled}\r\n type={getInputType()}\r\n label={label}\r\n required={required}\r\n error={!!error}\r\n icon={icon}\r\n inputSize={inputSize}\r\n maxLength={maxLength ?? getMaxLength(mask)}\r\n />\r\n\r\n {description && !error && (\r\n <p className=\"text-xs text-muted-foreground px-1\">{description}</p>\r\n )}\r\n\r\n {!hideError && error && (\r\n <p className=\"text-xs text-red-500 px-1\">{error}</p>\r\n )}\r\n </div>\r\n )\r\n }}\r\n />\r\n </FormFieldProvider>\r\n )\r\n}\r\n\r\nFormInput.displayName = 'Form.Input'\r\n","'use client'\r\n\r\nimport { Controller } from 'react-hook-form'\r\nimport type { FieldValues } from 'react-hook-form'\r\nimport { Select, SelectItem } from '../Select'\r\nimport { useFormContext, FormFieldProvider } from './FormContext'\r\nimport type { FormSelectProps } from './types'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport function FormSelect<T extends FieldValues = FieldValues>({\r\n name,\r\n label,\r\n description,\r\n required,\r\n disabled,\r\n className,\r\n options,\r\n placeholder = 'Selecione...',\r\n icon,\r\n hideError = false,\r\n selectSize = 'default',\r\n emptyText = 'Nenhuma opção disponível',\r\n loading = false,\r\n}: FormSelectProps<T>) {\r\n const form = useFormContext<T>()\r\n const fieldState = form.getFieldState(name, form.formState)\r\n const error = fieldState.error?.message\r\n\r\n return (\r\n <FormFieldProvider name={name as string}>\r\n <Controller\r\n control={form.control}\r\n name={name}\r\n render={({ field }) => (\r\n <div className={cn('space-y-1', className)}>\r\n <Select\r\n value={field.value ?? ''}\r\n onValueChange={(value) => {\r\n field.onChange(value || undefined)\r\n }}\r\n disabled={disabled || loading}\r\n label={label}\r\n required={required}\r\n error={!!error}\r\n icon={icon}\r\n selectSize={selectSize}\r\n placeholder={placeholder}\r\n >\r\n {loading ? (\r\n <SelectItem value=\"__loading__\" disabled>\r\n Carregando...\r\n </SelectItem>\r\n ) : options.length === 0 ? (\r\n <SelectItem value=\"__empty__\" disabled>\r\n {emptyText}\r\n </SelectItem>\r\n ) : (\r\n options.map((option) => (\r\n <SelectItem\r\n key={option.value}\r\n value={option.value}\r\n disabled={option.disabled}\r\n >\r\n <div className=\"flex items-center gap-2\">\r\n {option.icon && (\r\n <option.icon className=\"h-4 w-4 text-muted-foreground\" />\r\n )}\r\n <div>\r\n <span>{option.label}</span>\r\n {option.description && (\r\n <span className=\"text-xs text-muted-foreground ml-2\">\r\n {option.description}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n </SelectItem>\r\n ))\r\n )}\r\n </Select>\r\n\r\n {description && !error && (\r\n <p className=\"text-xs text-muted-foreground px-1\">{description}</p>\r\n )}\r\n\r\n {!hideError && error && (\r\n <p className=\"text-xs text-red-500 px-1\">{error}</p>\r\n )}\r\n </div>\r\n )}\r\n />\r\n </FormFieldProvider>\r\n )\r\n}\r\n\r\nFormSelect.displayName = 'Form.Select'\r\n","'use client'\n\nimport { Controller } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { Textarea } from '../Textarea'\nimport { useFormContext, FormFieldProvider } from './FormContext'\nimport type { FormTextareaProps } from './types'\nimport { cn } from '../../utils/cn'\n\nexport function FormTextarea<T extends FieldValues = FieldValues>({\n name,\n label,\n description,\n required,\n disabled,\n className,\n hideError = false,\n showCount = false,\n maxLength,\n ...textareaProps\n}: FormTextareaProps<T>) {\n const form = useFormContext<T>()\n const fieldState = form.getFieldState(name, form.formState)\n const error = fieldState.error?.message\n\n return (\n <FormFieldProvider name={name as string}>\n <Controller\n control={form.control}\n name={name}\n render={({ field }) => {\n const charCount = field.value?.length ?? 0\n\n return (\n <div className={cn('space-y-1', className)}>\n <Textarea\n {...textareaProps}\n ref={field.ref}\n name={field.name}\n value={field.value ?? ''}\n onChange={(e) => field.onChange(e.target.value || undefined)}\n onBlur={field.onBlur}\n disabled={disabled}\n label={label}\n required={required}\n error={!!error}\n maxLength={maxLength}\n />\n\n <div className=\"flex justify-between px-1\">\n <div>\n {description && !error && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n\n {!hideError && error && (\n <p className=\"text-xs text-red-500\">{error}</p>\n )}\n </div>\n\n {showCount && maxLength && (\n <p\n className={cn(\n 'text-xs',\n charCount > maxLength ? 'text-red-500' : 'text-muted-foreground'\n )}\n >\n {charCount}/{maxLength}\n </p>\n )}\n </div>\n </div>\n )\n }}\n />\n </FormFieldProvider>\n )\n}\n\nFormTextarea.displayName = 'Form.Textarea'\n","'use client'\n\nimport * as React from 'react'\nimport { Controller } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { Checkbox } from '../Checkbox'\nimport { useFormContext, FormFieldProvider } from './FormContext'\nimport type { FormCheckboxProps } from './types'\nimport { cn } from '../../utils/cn'\n\nexport function FormCheckbox<T extends FieldValues = FieldValues>({\n name,\n label,\n description,\n required,\n disabled,\n className,\n hideError = false,\n}: FormCheckboxProps<T>) {\n const form = useFormContext<T>()\n const fieldState = form.getFieldState(name, form.formState)\n const error = fieldState.error?.message\n const id = React.useId()\n\n return (\n <FormFieldProvider name={name as string}>\n <Controller\n control={form.control}\n name={name}\n render={({ field }) => (\n <div className={cn('space-y-1', className)}>\n <div className=\"flex items-start gap-3\">\n <Checkbox\n id={id}\n ref={field.ref}\n checked={field.value ?? false}\n onCheckedChange={(checked) => field.onChange(checked)}\n onBlur={field.onBlur}\n disabled={disabled}\n />\n\n {(label || description) && (\n <div className=\"grid gap-0.5 leading-none\">\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'text-sm font-medium leading-none cursor-pointer',\n disabled && 'cursor-not-allowed opacity-50'\n )}\n >\n {label}\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\n </label>\n )}\n\n {description && (\n <p className=\"text-xs text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n )}\n </div>\n\n {!hideError && error && (\n <p className=\"text-xs text-red-500 pl-8\">{error}</p>\n )}\n </div>\n )}\n />\n </FormFieldProvider>\n )\n}\n\nFormCheckbox.displayName = 'Form.Checkbox'\n","'use client'\n\nimport * as React from 'react'\nimport { Controller } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { Switch } from '../Switch'\nimport { useFormContext, FormFieldProvider } from './FormContext'\nimport type { FormSwitchProps } from './types'\nimport { cn } from '../../utils/cn'\n\nexport function FormSwitch<T extends FieldValues = FieldValues>({\n name,\n label,\n description,\n required,\n disabled,\n className,\n hideError = false,\n}: FormSwitchProps<T>) {\n const form = useFormContext<T>()\n const fieldState = form.getFieldState(name, form.formState)\n const error = fieldState.error?.message\n const id = React.useId()\n\n return (\n <FormFieldProvider name={name as string}>\n <Controller\n control={form.control}\n name={name}\n render={({ field }) => (\n <div className={cn('space-y-1', className)}>\n <div className=\"flex items-center justify-between gap-4\">\n {(label || description) && (\n <div className=\"grid gap-0.5 leading-none\">\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'text-sm font-medium leading-none cursor-pointer',\n disabled && 'cursor-not-allowed opacity-50'\n )}\n >\n {label}\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\n </label>\n )}\n\n {description && (\n <p className=\"text-xs text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n )}\n\n <Switch\n id={id}\n ref={field.ref}\n checked={field.value ?? false}\n onCheckedChange={(checked) => field.onChange(checked)}\n onBlur={field.onBlur}\n disabled={disabled}\n />\n </div>\n\n {!hideError && error && (\n <p className=\"text-xs text-red-500\">{error}</p>\n )}\n </div>\n )}\n />\n </FormFieldProvider>\n )\n}\n\nFormSwitch.displayName = 'Form.Switch'\n","'use client'\r\n\r\nimport { Controller } from 'react-hook-form'\r\nimport type { FieldValues } from 'react-hook-form'\r\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\r\nimport { Circle } from 'lucide-react'\r\nimport { useFormContext, FormFieldProvider } from './FormContext'\r\nimport type { FormRadioGroupProps } from './types'\r\nimport { cn } from '../../utils/cn'\r\n\r\nexport function FormRadioGroup<T extends FieldValues = FieldValues>({\r\n name,\r\n label,\r\n description,\r\n required,\r\n disabled,\r\n className,\r\n options,\r\n orientation = 'vertical',\r\n hideError = false,\r\n}: FormRadioGroupProps<T>) {\r\n const form = useFormContext<T>()\r\n const fieldState = form.getFieldState(name, form.formState)\r\n const error = fieldState.error?.message\r\n\r\n return (\r\n <FormFieldProvider name={name as string}>\r\n <Controller\r\n control={form.control}\r\n name={name}\r\n render={({ field }) => (\r\n <div className={cn('space-y-2', className)}>\r\n {label && (\r\n <label className=\"text-sm font-medium\">\r\n {label}\r\n {required && <span className=\"text-red-500 ml-0.5\">*</span>}\r\n </label>\r\n )}\r\n\r\n {description && !error && (\r\n <p className=\"text-xs text-muted-foreground\">{description}</p>\r\n )}\r\n\r\n <RadioGroupPrimitive.Root\r\n ref={field.ref}\r\n value={field.value}\r\n onValueChange={(value) => field.onChange(value || undefined)}\r\n disabled={disabled}\r\n className={cn(\r\n 'grid gap-2',\r\n orientation === 'horizontal' && 'flex flex-wrap gap-4'\r\n )}\r\n >\r\n {options.map((option) => {\r\n const optionId = `${name}-${option.value}`\r\n const isSelected = field.value === option.value\r\n\r\n return (\r\n <div\r\n key={option.value}\r\n className={cn(\r\n 'flex items-center gap-3 border-2 py-2 px-4 rounded-lg transition-colors cursor-pointer',\r\n isSelected\r\n ? 'border-primary bg-primary/5'\r\n : 'border-border hover:border-muted-foreground/50',\r\n option.disabled && 'opacity-50 cursor-not-allowed'\r\n )}\r\n onClick={() => {\r\n if (!option.disabled && !disabled) {\r\n field.onChange(option.value)\r\n }\r\n }}\r\n >\r\n <RadioGroupPrimitive.Item\r\n id={optionId}\r\n value={option.value}\r\n disabled={option.disabled}\r\n className={cn(\r\n 'aspect-square h-4 w-4 rounded-full border border-primary text-primary',\r\n 'ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\r\n 'disabled:cursor-not-allowed disabled:opacity-50'\r\n )}\r\n >\r\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\r\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\r\n </RadioGroupPrimitive.Indicator>\r\n </RadioGroupPrimitive.Item>\r\n\r\n <div className=\"grid gap-0.5 leading-none\">\r\n <label\r\n htmlFor={optionId}\r\n className={cn(\r\n 'text-sm font-medium leading-none cursor-pointer',\r\n isSelected && 'text-primary',\r\n option.disabled && 'cursor-not-allowed'\r\n )}\r\n >\r\n {option.label}\r\n </label>\r\n\r\n {option.description && (\r\n <p className=\"text-xs text-muted-foreground\">\r\n {option.description}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n })}\r\n </RadioGroupPrimitive.Root>\r\n\r\n {!hideError && error && (\r\n <p className=\"text-xs text-red-500\">{error}</p>\r\n )}\r\n </div>\r\n )}\r\n />\r\n </FormFieldProvider>\r\n )\r\n}\r\n\r\nFormRadioGroup.displayName = 'Form.RadioGroup'\r\n","import * as React from 'react'\r\nimport { useFormFieldContextOptional } from './FormContext'\r\nimport { cn } from '../../utils/cn'\r\n\r\n// ============================================\r\n// FORM LABEL\r\n// ============================================\r\n\r\nexport interface FormLabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\r\n required?: boolean\r\n}\r\n\r\nexport const FormLabel = React.forwardRef<HTMLLabelElement, FormLabelProps>(\r\n ({ className, required, children, ...props }, ref) => {\r\n const fieldContext = useFormFieldContextOptional()\r\n\r\n return (\r\n <label\r\n ref={ref}\r\n htmlFor={fieldContext?.id}\r\n className={cn(\r\n 'text-sm font-medium leading-none',\r\n fieldContext?.error && 'text-red-500',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {(required || fieldContext?.isRequired) && (\r\n <span className=\"text-red-500 ml-0.5\">*</span>\r\n )}\r\n </label>\r\n )\r\n }\r\n)\r\n\r\nFormLabel.displayName = 'Form.Label'\r\n\r\n// ============================================\r\n// FORM DESCRIPTION\r\n// ============================================\r\n\r\nexport interface FormDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\r\n\r\nexport const FormDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n FormDescriptionProps\r\n>(({ className, ...props }, ref) => {\r\n const fieldContext = useFormFieldContextOptional()\r\n\r\n // Não mostra descrição se tem erro\r\n if (fieldContext?.error) {\r\n return null\r\n }\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n className={cn('text-xs text-muted-foreground', className)}\r\n {...props}\r\n />\r\n )\r\n})\r\n\r\nFormDescription.displayName = 'Form.Description'\r\n\r\n// ============================================\r\n// FORM ERROR\r\n// ============================================\r\n\r\nexport interface FormErrorProps extends React.HTMLAttributes<HTMLParagraphElement> {\r\n message?: string\r\n}\r\n\r\nexport const FormError = React.forwardRef<HTMLParagraphElement, FormErrorProps>(\r\n ({ className, message, children, ...props }, ref) => {\r\n const fieldContext = useFormFieldContextOptional()\r\n const errorMessage = message ?? fieldContext?.error\r\n\r\n if (!errorMessage && !children) {\r\n return null\r\n }\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n className={cn('text-xs text-red-500', className)}\r\n {...props}\r\n >\r\n {children || errorMessage}\r\n </p>\r\n )\r\n }\r\n)\r\n\r\nFormError.displayName = 'Form.Error'\r\n\r\n// ============================================\r\n// FORM FIELD WRAPPER\r\n// ============================================\r\n\r\nexport interface FormFieldWrapperProps extends React.HTMLAttributes<HTMLDivElement> {\r\n label?: string\r\n description?: string\r\n required?: boolean\r\n error?: string\r\n}\r\n\r\nexport const FormFieldWrapper = React.forwardRef<\r\n HTMLDivElement,\r\n FormFieldWrapperProps\r\n>(({ className, label, description, required, error, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn('space-y-1', className)} {...props}>\r\n {label && <FormLabel required={required}>{label}</FormLabel>}\r\n {children}\r\n {description && <FormDescription>{description}</FormDescription>}\r\n {error && <FormError message={error} />}\r\n </div>\r\n )\r\n})\r\n\r\nFormFieldWrapper.displayName = 'Form.FieldWrapper'\r\n","'use client'\r\n\r\nimport * as React from 'react'\r\nimport type { FieldValues, UseFormReturn, SubmitHandler, SubmitErrorHandler } from 'react-hook-form'\r\nimport { FormProvider } from './FormContext'\r\nimport { cn } from '../../utils/cn'\r\n\r\n// ============================================\r\n// FORM ROOT COMPONENT\r\n// ============================================\r\n\r\ninterface FormRootProps<T extends FieldValues = FieldValues>\r\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit' | 'onError'> {\r\n form: UseFormReturn<T>\r\n onSubmit: SubmitHandler<T>\r\n onError?: SubmitErrorHandler<T>\r\n}\r\n\r\nfunction FormRoot<T extends FieldValues = FieldValues>({\r\n form,\r\n onSubmit,\r\n onError,\r\n children,\r\n className,\r\n ...props\r\n}: FormRootProps<T>) {\r\n return (\r\n <FormProvider form={form}>\r\n <form\r\n onSubmit={form.handleSubmit(onSubmit, onError)}\r\n className={cn('space-y-4', className)}\r\n {...props}\r\n >\r\n {children}\r\n </form>\r\n </FormProvider>\r\n )\r\n}\r\n\r\nFormRoot.displayName = 'Form'\r\n\r\n// ============================================\r\n// COMPOUND COMPONENT EXPORTS\r\n// ============================================\r\n\r\nimport { FormInput } from './FormInput'\r\nimport { FormSelect } from './FormSelect'\r\nimport { FormTextarea } from './FormTextarea'\r\nimport { FormCheckbox } from './FormCheckbox'\r\nimport { FormSwitch } from './FormSwitch'\r\nimport { FormRadioGroup } from './FormRadioGroup'\r\nimport { FormLabel, FormDescription, FormError, FormFieldWrapper } from './FormParts'\r\nimport { FormFieldProvider, useFormContext, useFormFieldContext } from './FormContext'\r\n\r\n// Compound component\r\nexport const Form = Object.assign(FormRoot, {\r\n // Campos com auto-bind\r\n Input: FormInput,\r\n Select: FormSelect,\r\n Textarea: FormTextarea,\r\n Checkbox: FormCheckbox,\r\n Switch: FormSwitch,\r\n RadioGroup: FormRadioGroup,\r\n\r\n // Partes auxiliares\r\n Label: FormLabel,\r\n Description: FormDescription,\r\n Error: FormError,\r\n FieldWrapper: FormFieldWrapper,\r\n Field: FormFieldProvider,\r\n})\r\n\r\n// Export hooks\r\nexport { useFormContext, useFormFieldContext }\r\n\r\n// Export types\r\nexport type { FormRootProps }\r\n","import * as React from 'react'\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\nimport { cn } from '../../utils/cn'\n\nexport interface AvatarProps extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root> {\n className?: string\n}\n\nexport interface AvatarImageProps extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image> {\n className?: string\n}\n\nexport interface AvatarFallbackProps extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback> {\n className?: string\n}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\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 AvatarImageProps\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 AvatarFallbackProps\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n 'flex h-full w-full items-center justify-center rounded-full bg-primary/10 text-primary font-semibold',\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { Check, ChevronRight, Circle } from 'lucide-react'\nimport { cn } from '../../utils/cn'\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 h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName = 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 = 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=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName = 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 PopoverPrimitive from '@radix-ui/react-popover'\nimport { cn } from '../../utils/cn'\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-auto rounded-md border bg-popover p-4 text-popover-foreground shadow-lg 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'\r\nimport { cn } from '../../../utils/cn'\r\nimport type {\r\n AuthLayoutProps,\r\n AuthLayoutImageProps,\r\n AuthLayoutContentProps,\r\n AuthLayoutHeaderProps,\r\n AuthLayoutBodyProps,\r\n AuthLayoutFooterProps,\r\n AuthLayoutLinkProps,\r\n AuthLayoutDividerProps,\r\n} from './types'\r\n\r\n// Context para compartilhar estado entre componentes\r\ninterface AuthLayoutContextValue {\r\n imagePosition: 'left' | 'right'\r\n}\r\n\r\nconst AuthLayoutContext = React.createContext<AuthLayoutContextValue>({\r\n imagePosition: 'left',\r\n})\r\n\r\n// ============================================================================\r\n// AuthLayout Root\r\n// ============================================================================\r\nfunction AuthLayoutRoot({ children, className }: AuthLayoutProps) {\r\n const [imagePosition, setImagePosition] = React.useState<'left' | 'right'>('left')\r\n\r\n // Detecta a posição da imagem baseado nos children\r\n React.useEffect(() => {\r\n React.Children.forEach(children, (child) => {\r\n if (React.isValidElement<AuthLayoutImageProps>(child) && child.type === AuthLayoutImage) {\r\n setImagePosition(child.props.position || 'left')\r\n }\r\n })\r\n }, [children])\r\n\r\n return (\r\n <AuthLayoutContext.Provider value={{ imagePosition }}>\r\n <div\r\n className={cn(\r\n 'min-h-screen flex flex-col xl:flex-row max-xl:justify-center',\r\n imagePosition === 'right' && 'xl:flex-row-reverse',\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </AuthLayoutContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Image\r\n// ============================================================================\r\nfunction AuthLayoutImage({\r\n src,\r\n alt,\r\n position: _position = 'left',\r\n className,\r\n priority = true,\r\n showPattern = false,\r\n}: AuthLayoutImageProps) {\r\n // _position is used by parent (AuthLayoutRoot) via child.props.position\r\n void _position\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'hidden xl:block relative w-full xl:w-3/6 h-64 xl:h-screen overflow-hidden bg-muted',\r\n className\r\n )}\r\n >\r\n {src ? (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className=\"absolute inset-0 w-full h-full object-cover object-top\"\r\n loading={priority ? 'eager' : 'lazy'}\r\n />\r\n ) : null}\r\n\r\n {/* Pattern overlay */}\r\n {showPattern && (\r\n <div className=\"absolute inset-0 flex items-center justify-center\">\r\n {/* Geometric patterns */}\r\n <svg\r\n className=\"absolute inset-0 w-full h-full opacity-10\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <defs>\r\n <pattern\r\n id=\"auth-grid\"\r\n width=\"40\"\r\n height=\"40\"\r\n patternUnits=\"userSpaceOnUse\"\r\n >\r\n <path\r\n d=\"M 40 0 L 0 0 0 40\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"0.5\"\r\n />\r\n </pattern>\r\n </defs>\r\n <rect width=\"100%\" height=\"100%\" fill=\"url(#auth-grid)\" />\r\n </svg>\r\n\r\n {/* Center decorative elements */}\r\n <div className=\"relative z-10\">\r\n {/* Large circle */}\r\n <div className=\"w-64 h-64 rounded-full border border-muted-foreground/20\" />\r\n {/* Inner circle with icon */}\r\n <div className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-24 h-24 rounded-full border border-muted-foreground/30 flex items-center justify-center\">\r\n <svg\r\n className=\"w-10 h-10 text-muted-foreground/40\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={1}\r\n d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\r\n />\r\n </svg>\r\n </div>\r\n {/* Decorative lines */}\r\n <div className=\"absolute top-1/2 left-full ml-4 w-32 h-px bg-gradient-to-r from-muted-foreground/20 to-transparent\" />\r\n <div className=\"absolute top-1/2 right-full mr-4 w-32 h-px bg-gradient-to-l from-muted-foreground/20 to-transparent\" />\r\n <div className=\"absolute top-full left-1/2 -translate-x-1/2 mt-4 w-px h-32 bg-gradient-to-b from-muted-foreground/20 to-transparent\" />\r\n <div className=\"absolute bottom-full left-1/2 -translate-x-1/2 mb-4 w-px h-32 bg-gradient-to-t from-muted-foreground/20 to-transparent\" />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Content\r\n// ============================================================================\r\nfunction AuthLayoutContent({\r\n children,\r\n className,\r\n maxWidth = 'md',\r\n}: AuthLayoutContentProps) {\r\n const maxWidthClasses = {\r\n sm: 'max-w-sm',\r\n md: 'max-w-md',\r\n lg: 'max-w-lg',\r\n }\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'relative w-full lg:w-3/6 flex items-center justify-center p-6 lg:p-12 bg-background',\r\n className\r\n )}\r\n >\r\n <div className={cn('w-full space-y-8', maxWidthClasses[maxWidth])}>\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Header\r\n// ============================================================================\r\nfunction AuthLayoutHeader({\r\n children,\r\n className,\r\n logo,\r\n title,\r\n description,\r\n centered = true,\r\n position = 'top-right',\r\n}: AuthLayoutHeaderProps) {\r\n // Logo positioned at top-left corner (absolute)\r\n if (position === 'top-left' && logo) {\r\n return (\r\n <div className={cn('absolute top-6 left-6 lg:top-8 lg:left-8', className)}>\r\n {logo}\r\n </div>\r\n )\r\n }\r\n\r\n // Logo positioned at top-right corner (absolute)\r\n if (position === 'top-right' && logo) {\r\n return (\r\n <div className={cn('absolute top-6 right-6 lg:top-8 lg:right-8', className)}>\r\n {logo}\r\n </div>\r\n )\r\n }\r\n\r\n // Se children fornecido, renderiza diretamente\r\n if (children) {\r\n return (\r\n <div className={cn('space-y-2', centered && 'text-center', className)}>\r\n {children}\r\n </div>\r\n )\r\n }\r\n\r\n // Renderização padrão com props\r\n return (\r\n <div\r\n className={cn(\r\n 'flex flex-col gap-2',\r\n centered && 'items-center text-center',\r\n className\r\n )}\r\n >\r\n {logo && <div className=\"mb-2\">{logo}</div>}\r\n {title && <h1 className=\"text-2xl font-bold\">{title}</h1>}\r\n {description && (\r\n <p className=\"text-balance text-sm text-muted-foreground\">{description}</p>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Body\r\n// ============================================================================\r\nfunction AuthLayoutBody({ children, className }: AuthLayoutBodyProps) {\r\n return <div className={cn('space-y-6', className)}>{children}</div>\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Footer\r\n// ============================================================================\r\nfunction AuthLayoutFooter({ children, className }: AuthLayoutFooterProps) {\r\n return (\r\n <div className={cn('text-center text-sm text-muted-foreground', className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Link\r\n// ============================================================================\r\nfunction AuthLayoutLink({ children, className, ...props }: AuthLayoutLinkProps) {\r\n return (\r\n <a\r\n className={cn(\r\n 'text-sm text-primary hover:underline cursor-pointer',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </a>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// AuthLayout.Divider\r\n// ============================================================================\r\nfunction AuthLayoutDivider({ text = 'ou', className }: AuthLayoutDividerProps) {\r\n return (\r\n <div className={cn('relative', className)}>\r\n <div className=\"absolute inset-0 flex items-center\">\r\n <span className=\"w-full border-t\" />\r\n </div>\r\n <div className=\"relative flex justify-center text-xs uppercase\">\r\n <span className=\"bg-background px-2 text-muted-foreground\">{text}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Compound Component Export\r\n// ============================================================================\r\nAuthLayoutRoot.displayName = 'AuthLayout'\r\nAuthLayoutImage.displayName = 'AuthLayout.Image'\r\nAuthLayoutContent.displayName = 'AuthLayout.Content'\r\nAuthLayoutHeader.displayName = 'AuthLayout.Header'\r\nAuthLayoutBody.displayName = 'AuthLayout.Body'\r\nAuthLayoutFooter.displayName = 'AuthLayout.Footer'\r\nAuthLayoutLink.displayName = 'AuthLayout.Link'\r\nAuthLayoutDivider.displayName = 'AuthLayout.Divider'\r\n\r\nexport const AuthLayout = Object.assign(AuthLayoutRoot, {\r\n Image: AuthLayoutImage,\r\n Content: AuthLayoutContent,\r\n Header: AuthLayoutHeader,\r\n Body: AuthLayoutBody,\r\n Footer: AuthLayoutFooter,\r\n Link: AuthLayoutLink,\r\n Divider: AuthLayoutDivider,\r\n})\r\n","import * as React from 'react'\r\nimport { Search, Star, ArrowRight, Building2 } from 'lucide-react'\r\nimport { cn } from '../../../utils/cn'\r\nimport type {\r\n SelectionLayoutProps,\r\n SelectionLayoutSidebarProps,\r\n SelectionLayoutLogoProps,\r\n SelectionLayoutHeadlineProps,\r\n SelectionLayoutStatsProps,\r\n SelectionLayoutMainProps,\r\n SelectionLayoutHeaderProps,\r\n SelectionLayoutSearchProps,\r\n SelectionLayoutTabsProps,\r\n SelectionLayoutTabProps,\r\n SelectionLayoutListProps,\r\n SelectionLayoutCardProps,\r\n SelectionLayoutEmptyProps,\r\n} from './types'\r\n\r\n// Context para tabs\r\ninterface TabsContextValue {\r\n value: string\r\n onValueChange: (value: string) => void\r\n}\r\n\r\nconst TabsContext = React.createContext<TabsContextValue | null>(null)\r\n\r\n// ============================================================================\r\n// SelectionLayout Root\r\n// ============================================================================\r\nfunction SelectionLayoutRoot({ children, className }: SelectionLayoutProps) {\r\n return (\r\n <div className={cn('min-h-screen bg-muted/30 flex flex-col lg:flex-row', className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Sidebar\r\n// ============================================================================\r\nfunction SelectionLayoutSidebar({ children, className }: SelectionLayoutSidebarProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'lg:w-2/5 bg-gradient-to-br from-primary/90 to-primary p-6 lg:p-12',\r\n 'flex flex-col justify-between text-white relative overflow-hidden',\r\n 'min-h-[50vh] lg:min-h-screen',\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Logo\r\n// ============================================================================\r\nfunction SelectionLayoutLogo({ children, className }: SelectionLayoutLogoProps) {\r\n return (\r\n <div className={cn('flex items-center gap-3 mb-8 lg:mb-16', className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Headline\r\n// ============================================================================\r\nfunction SelectionLayoutHeadline({\r\n title,\r\n bullets,\r\n className,\r\n}: SelectionLayoutHeadlineProps) {\r\n return (\r\n <div className={cn('space-y-4 lg:space-y-6 flex-1', className)}>\r\n <h1 className=\"text-3xl lg:text-5xl font-bold leading-tight\">{title}</h1>\r\n {bullets && bullets.length > 0 && (\r\n <div className=\"space-y-2 text-white/80\">\r\n {bullets.map((bullet, index) => (\r\n <p key={index} className=\"text-base lg:text-lg\">\r\n {bullet}\r\n </p>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Stats\r\n// ============================================================================\r\nfunction SelectionLayoutStats({ label, value, className }: SelectionLayoutStatsProps) {\r\n return (\r\n <div className={cn('bg-white/10 rounded-lg p-4 backdrop-blur-sm', className)}>\r\n <div className=\"flex items-center justify-between text-sm lg:text-base\">\r\n <span>{label}</span>\r\n <span className=\"font-bold\">{value}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Main\r\n// ============================================================================\r\nfunction SelectionLayoutMain({ children, className }: SelectionLayoutMainProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'lg:w-3/5 bg-background flex flex-col min-h-[50vh] lg:min-h-screen',\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Header\r\n// ============================================================================\r\nfunction SelectionLayoutHeader({\r\n title,\r\n subtitle,\r\n action,\r\n className,\r\n}: SelectionLayoutHeaderProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'flex justify-between items-center p-6 lg:p-8 border-b border-border',\r\n className\r\n )}\r\n >\r\n <div>\r\n <h2 className=\"text-xl lg:text-2xl font-bold\">{title}</h2>\r\n {subtitle && <p className=\"text-sm text-muted-foreground mt-1\">{subtitle}</p>}\r\n </div>\r\n {action && <div>{action}</div>}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Search\r\n// ============================================================================\r\nfunction SelectionLayoutSearch({\r\n value,\r\n onChange,\r\n placeholder = 'Buscar...',\r\n className,\r\n}: SelectionLayoutSearchProps) {\r\n return (\r\n <div className={cn('p-6 lg:p-8 pb-4 lg:pb-6', className)}>\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground w-4 h-4\" />\r\n <input\r\n type=\"text\"\r\n placeholder={placeholder}\r\n value={value}\r\n onChange={(e) => onChange(e.target.value)}\r\n className={cn(\r\n 'w-full pl-10 h-11 rounded-md border border-input bg-muted/50',\r\n 'focus:bg-background focus:outline-none focus:ring-2 focus:ring-ring',\r\n 'text-sm placeholder:text-muted-foreground'\r\n )}\r\n />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Tabs\r\n// ============================================================================\r\nfunction SelectionLayoutTabs({\r\n children,\r\n value,\r\n onValueChange,\r\n className,\r\n}: SelectionLayoutTabsProps) {\r\n return (\r\n <TabsContext.Provider value={{ value, onValueChange }}>\r\n <div className={cn('px-6 lg:px-8', className)}>\r\n <div className=\"flex space-x-1 bg-muted p-1 rounded-lg\">{children}</div>\r\n </div>\r\n </TabsContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Tab\r\n// ============================================================================\r\nfunction SelectionLayoutTab({\r\n value,\r\n label,\r\n icon: Icon,\r\n badge,\r\n className,\r\n}: SelectionLayoutTabProps) {\r\n const context = React.useContext(TabsContext)\r\n if (!context) {\r\n throw new Error('SelectionLayout.Tab must be used within SelectionLayout.Tabs')\r\n }\r\n\r\n const isActive = context.value === value\r\n\r\n return (\r\n <button\r\n onClick={() => context.onValueChange(value)}\r\n className={cn(\r\n 'flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-all',\r\n isActive\r\n ? 'bg-background text-foreground shadow-sm'\r\n : 'text-muted-foreground hover:text-foreground',\r\n className\r\n )}\r\n >\r\n {Icon && <Icon className=\"w-4 h-4\" />}\r\n <span className=\"hidden sm:inline\">{label}</span>\r\n {badge !== undefined && (\r\n <span\r\n className={cn(\r\n 'text-xs px-2 py-0.5 rounded-full',\r\n isActive ? 'bg-primary/10 text-primary' : 'bg-muted-foreground/20'\r\n )}\r\n >\r\n {badge}\r\n </span>\r\n )}\r\n </button>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.List\r\n// ============================================================================\r\nfunction SelectionLayoutList({ children, className }: SelectionLayoutListProps) {\r\n return (\r\n <div className={cn('flex-1 p-6 lg:p-8 pt-6', className)}>\r\n <div\r\n className={cn(\r\n 'space-y-3 max-h-[50vh] lg:max-h-[55vh] overflow-y-auto pr-2',\r\n 'scrollbar-thin scrollbar-thumb-muted-foreground/20 scrollbar-track-transparent'\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Card\r\n// ============================================================================\r\nfunction SelectionLayoutCard({\r\n children,\r\n className,\r\n onClick,\r\n icon,\r\n title,\r\n description,\r\n badge,\r\n favorite,\r\n onFavoriteClick,\r\n}: SelectionLayoutCardProps) {\r\n // Check if icon is a React component (function or forwardRef object)\r\n const isIconComponent =\r\n typeof icon === 'function' ||\r\n (icon && typeof icon === 'object' && '$$typeof' in icon)\r\n\r\n const IconComponent = isIconComponent\r\n ? (icon as React.ComponentType<{ className?: string }>)\r\n : null\r\n\r\n return (\r\n <div\r\n onClick={onClick}\r\n className={cn(\r\n 'cursor-pointer transition-all duration-200 rounded-lg border-2 bg-card',\r\n 'hover:shadow-lg hover:border-primary/20 active:scale-[0.98] group',\r\n className\r\n )}\r\n >\r\n <div className=\"p-4 lg:p-5\">\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center gap-3 lg:gap-4 flex-1 min-w-0\">\r\n {/* Icon */}\r\n {icon && (\r\n <div className=\"w-10 h-10 lg:w-12 lg:h-12 bg-primary/10 rounded-lg flex items-center justify-center flex-shrink-0\">\r\n {IconComponent ? (\r\n <IconComponent className=\"w-5 h-5 lg:w-6 lg:h-6 text-primary\" />\r\n ) : (\r\n icon as React.ReactNode\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Content */}\r\n <div className=\"min-w-0 flex-1\">\r\n <div className=\"flex items-center gap-2\">\r\n <h3 className=\"font-semibold text-sm lg:text-base truncate\">{title}</h3>\r\n {favorite && (\r\n <Star className=\"w-4 h-4 text-yellow-500 fill-current flex-shrink-0\" />\r\n )}\r\n {badge}\r\n </div>\r\n {description && (\r\n <p className=\"text-muted-foreground text-xs lg:text-sm truncate\">\r\n {description}\r\n </p>\r\n )}\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Actions */}\r\n <div className=\"flex items-center gap-2 flex-shrink-0 ml-2\">\r\n {onFavoriteClick && (\r\n <button\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n onFavoriteClick()\r\n }}\r\n className=\"p-2 hover:bg-muted rounded-md transition-colors\"\r\n >\r\n <Star\r\n className={cn(\r\n 'w-4 h-4',\r\n favorite ? 'text-yellow-500 fill-current' : 'text-muted-foreground'\r\n )}\r\n />\r\n </button>\r\n )}\r\n <ArrowRight className=\"w-5 h-5 text-muted-foreground group-hover:text-foreground transition-colors\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// SelectionLayout.Empty\r\n// ============================================================================\r\nfunction SelectionLayoutEmpty({\r\n icon: Icon = Building2,\r\n title,\r\n description,\r\n action,\r\n className,\r\n}: SelectionLayoutEmptyProps) {\r\n return (\r\n <div className={cn('text-center py-12', className)}>\r\n <Icon className=\"w-12 h-12 text-muted-foreground/50 mx-auto mb-4\" />\r\n <h3 className=\"text-lg font-medium mb-2\">{title}</h3>\r\n {description && <p className=\"text-muted-foreground mb-4\">{description}</p>}\r\n {action}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Compound Component Export\r\n// ============================================================================\r\nSelectionLayoutRoot.displayName = 'SelectionLayout'\r\nSelectionLayoutSidebar.displayName = 'SelectionLayout.Sidebar'\r\nSelectionLayoutLogo.displayName = 'SelectionLayout.Logo'\r\nSelectionLayoutHeadline.displayName = 'SelectionLayout.Headline'\r\nSelectionLayoutStats.displayName = 'SelectionLayout.Stats'\r\nSelectionLayoutMain.displayName = 'SelectionLayout.Main'\r\nSelectionLayoutHeader.displayName = 'SelectionLayout.Header'\r\nSelectionLayoutSearch.displayName = 'SelectionLayout.Search'\r\nSelectionLayoutTabs.displayName = 'SelectionLayout.Tabs'\r\nSelectionLayoutTab.displayName = 'SelectionLayout.Tab'\r\nSelectionLayoutList.displayName = 'SelectionLayout.List'\r\nSelectionLayoutCard.displayName = 'SelectionLayout.Card'\r\nSelectionLayoutEmpty.displayName = 'SelectionLayout.Empty'\r\n\r\nexport const SelectionLayout = Object.assign(SelectionLayoutRoot, {\r\n Sidebar: SelectionLayoutSidebar,\r\n Logo: SelectionLayoutLogo,\r\n Headline: SelectionLayoutHeadline,\r\n Stats: SelectionLayoutStats,\r\n Main: SelectionLayoutMain,\r\n Header: SelectionLayoutHeader,\r\n Search: SelectionLayoutSearch,\r\n Tabs: SelectionLayoutTabs,\r\n Tab: SelectionLayoutTab,\r\n List: SelectionLayoutList,\r\n Card: SelectionLayoutCard,\r\n Empty: SelectionLayoutEmpty,\r\n})\r\n","import * as React from 'react'\r\nimport {\r\n ChevronDown,\r\n ChevronRight,\r\n Menu,\r\n X,\r\n Pin,\r\n PinOff,\r\n LogOut,\r\n User,\r\n} from 'lucide-react'\r\nimport { cn } from '../../../utils/cn'\r\nimport type {\r\n DashboardLayoutProps,\r\n DashboardLayoutContextValue,\r\n DashboardLayoutSidebarProps,\r\n DashboardLayoutSidebarHeaderProps,\r\n DashboardLayoutSidebarNavProps,\r\n DashboardLayoutSidebarNavItemProps,\r\n DashboardLayoutSidebarNavGroupProps,\r\n DashboardLayoutSidebarSectionProps,\r\n DashboardLayoutSidebarFooterProps,\r\n DashboardLayoutHeaderProps,\r\n DashboardLayoutHeaderTitleProps,\r\n DashboardLayoutHeaderActionsProps,\r\n DashboardLayoutHeaderUserProps,\r\n DashboardLayoutContentProps,\r\n DashboardLayoutBreadcrumbsProps,\r\n DashboardLayoutMobileNavProps,\r\n DashboardLayoutMobileNavItemProps,\r\n} from './types'\r\n\r\n// ============================================================================\r\n// Context\r\n// ============================================================================\r\nconst DashboardLayoutContext = React.createContext<DashboardLayoutContextValue | null>(null)\r\n\r\nexport function useDashboardLayout() {\r\n const context = React.useContext(DashboardLayoutContext)\r\n if (!context) {\r\n throw new Error('useDashboardLayout must be used within DashboardLayout')\r\n }\r\n return context\r\n}\r\n\r\n// Hook for media query\r\nfunction useMediaQuery(query: string): boolean {\r\n const [matches, setMatches] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const media = window.matchMedia(query)\r\n if (media.matches !== matches) {\r\n setMatches(media.matches)\r\n }\r\n const listener = () => setMatches(media.matches)\r\n media.addEventListener('change', listener)\r\n return () => media.removeEventListener('change', listener)\r\n }, [matches, query])\r\n\r\n return matches\r\n}\r\n\r\n// ============================================================================\r\n// DashboardLayout Root\r\n// ============================================================================\r\nfunction DashboardLayoutRoot({\r\n children,\r\n className,\r\n defaultExpanded = false,\r\n defaultPinned = false,\r\n}: DashboardLayoutProps) {\r\n // When pinned, sidebar should also be expanded\r\n const [sidebarExpanded, setSidebarExpanded] = React.useState(defaultExpanded || defaultPinned)\r\n const [sidebarPinned, setSidebarPinned] = React.useState(defaultPinned)\r\n const [mobileMenuOpen, setMobileMenuOpen] = React.useState(false)\r\n const isMobile = useMediaQuery('(max-width: 1024px)')\r\n\r\n // Close mobile menu when switching to desktop\r\n React.useEffect(() => {\r\n if (!isMobile) {\r\n setMobileMenuOpen(false)\r\n }\r\n }, [isMobile])\r\n\r\n const value: DashboardLayoutContextValue = {\r\n sidebarExpanded,\r\n setSidebarExpanded,\r\n sidebarPinned,\r\n setSidebarPinned,\r\n isMobile,\r\n mobileMenuOpen,\r\n setMobileMenuOpen,\r\n }\r\n\r\n return (\r\n <DashboardLayoutContext.Provider value={value}>\r\n <div className={cn('min-h-screen bg-muted/30 flex', className)}>\r\n {children}\r\n </div>\r\n </DashboardLayoutContext.Provider>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar\r\n// ============================================================================\r\nfunction DashboardLayoutSidebar({\r\n children,\r\n className,\r\n collapsedWidth = 64,\r\n expandedWidth = 256,\r\n}: DashboardLayoutSidebarProps) {\r\n const {\r\n sidebarExpanded,\r\n setSidebarExpanded,\r\n sidebarPinned,\r\n isMobile,\r\n mobileMenuOpen,\r\n setMobileMenuOpen,\r\n } = useDashboardLayout()\r\n\r\n const handleMouseEnter = () => {\r\n if (!sidebarPinned && !isMobile) {\r\n setSidebarExpanded(true)\r\n }\r\n }\r\n\r\n const handleMouseLeave = () => {\r\n if (!sidebarPinned && !isMobile) {\r\n setSidebarExpanded(false)\r\n }\r\n }\r\n\r\n // Mobile overlay\r\n if (isMobile) {\r\n return (\r\n <>\r\n {/* Overlay */}\r\n {mobileMenuOpen && (\r\n <div\r\n className=\"fixed inset-0 bg-black/50 z-40 lg:hidden\"\r\n onClick={() => setMobileMenuOpen(false)}\r\n />\r\n )}\r\n\r\n {/* Mobile Sidebar */}\r\n <aside\r\n className={cn(\r\n 'fixed top-0 left-0 h-full bg-card z-50 shadow-xl',\r\n 'transform transition-transform duration-300 ease-in-out',\r\n mobileMenuOpen ? 'translate-x-0' : '-translate-x-full',\r\n 'w-[280px]',\r\n className\r\n )}\r\n >\r\n <div className=\"flex flex-col h-full\">\r\n {/* Close button */}\r\n <button\r\n onClick={() => setMobileMenuOpen(false)}\r\n className=\"absolute top-4 right-4 p-2 hover:bg-muted rounded-md\"\r\n >\r\n <X className=\"w-5 h-5\" />\r\n </button>\r\n {children}\r\n </div>\r\n </aside>\r\n </>\r\n )\r\n }\r\n\r\n // Desktop Sidebar\r\n return (\r\n <aside\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n style={{\r\n width: sidebarExpanded ? expandedWidth : collapsedWidth,\r\n }}\r\n className={cn(\r\n 'fixed top-0 left-0 h-screen bg-card z-40',\r\n 'flex flex-col shadow-[0_0_20px_rgba(0,0,0,0.06)]',\r\n 'transition-[width] duration-300 ease-in-out',\r\n className\r\n )}\r\n >\r\n {children}\r\n </aside>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Header\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarHeader({\r\n children,\r\n className,\r\n logo,\r\n collapsedLogo,\r\n title,\r\n}: DashboardLayoutSidebarHeaderProps) {\r\n const { sidebarExpanded, sidebarPinned, setSidebarPinned, isMobile } = useDashboardLayout()\r\n\r\n if (children) {\r\n return (\r\n <div className={cn('p-4 border-b border-border', className)}>\r\n {children}\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div className={cn('p-4 border-b border-border', className)}>\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center gap-3 min-w-0\">\r\n {/* Logo */}\r\n <div className=\"flex-shrink-0\">\r\n {sidebarExpanded ? logo : (collapsedLogo || logo)}\r\n </div>\r\n\r\n {/* Title */}\r\n {sidebarExpanded && title && (\r\n <span className=\"font-semibold text-lg truncate\">{title}</span>\r\n )}\r\n </div>\r\n\r\n {/* Pin button (desktop only) */}\r\n {sidebarExpanded && !isMobile && (\r\n <button\r\n onClick={() => setSidebarPinned(!sidebarPinned)}\r\n className=\"p-1.5 hover:bg-muted rounded-md transition-colors\"\r\n title={sidebarPinned ? 'Unpin sidebar' : 'Pin sidebar'}\r\n >\r\n {sidebarPinned ? (\r\n <PinOff className=\"w-4 h-4 text-muted-foreground\" />\r\n ) : (\r\n <Pin className=\"w-4 h-4 text-muted-foreground\" />\r\n )}\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Nav\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarNav({ children, className }: DashboardLayoutSidebarNavProps) {\r\n return (\r\n <nav className={cn('flex-1 overflow-y-auto overflow-x-hidden py-2', className)}>\r\n {children}\r\n </nav>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Nav Item\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarNavItem({\r\n icon,\r\n label,\r\n href,\r\n onClick,\r\n isActive,\r\n badge,\r\n badgeVariant = 'default',\r\n className,\r\n disabled,\r\n}: DashboardLayoutSidebarNavItemProps) {\r\n const { sidebarExpanded } = useDashboardLayout()\r\n\r\n const badgeColors = {\r\n default: 'bg-muted text-muted-foreground',\r\n primary: 'bg-primary/10 text-primary',\r\n destructive: 'bg-destructive/10 text-destructive',\r\n }\r\n\r\n // Render icon - handles both LucideIcon components and ReactNode elements\r\n const renderIcon = () => {\r\n if (!icon) return null\r\n // Already a React element\r\n if (React.isValidElement(icon)) {\r\n return icon\r\n }\r\n // Function component or forwardRef component (Lucide icons)\r\n if (typeof icon === 'function' || (typeof icon === 'object' && '$$typeof' in icon)) {\r\n const IconComponent = icon as React.ComponentType<{ className?: string }>\r\n return <IconComponent className=\"w-5 h-5 flex-shrink-0\" />\r\n }\r\n return null\r\n }\r\n\r\n const content = (\r\n <div\r\n className={cn(\r\n 'flex items-center gap-3 px-3 py-2.5 mx-2 rounded-md transition-colors',\r\n 'hover:bg-muted cursor-pointer',\r\n isActive && 'bg-primary/10 text-primary hover:bg-primary/15',\r\n disabled && 'opacity-50 cursor-not-allowed pointer-events-none',\r\n className\r\n )}\r\n onClick={disabled ? undefined : onClick}\r\n >\r\n {renderIcon()}\r\n\r\n {sidebarExpanded && (\r\n <>\r\n <span className=\"flex-1 truncate text-sm\">{label}</span>\r\n {badge !== undefined && (\r\n <span\r\n className={cn(\r\n 'text-xs px-2 py-0.5 rounded-full',\r\n badgeColors[badgeVariant]\r\n )}\r\n >\r\n {badge}\r\n </span>\r\n )}\r\n </>\r\n )}\r\n\r\n {/* Badge dot when collapsed */}\r\n {!sidebarExpanded && badge !== undefined && (\r\n <span className=\"absolute top-1 right-1 w-2 h-2 bg-primary rounded-full\" />\r\n )}\r\n </div>\r\n )\r\n\r\n if (href && !disabled) {\r\n return (\r\n <a href={href} className=\"block relative\">\r\n {content}\r\n </a>\r\n )\r\n }\r\n\r\n return <div className=\"relative\">{content}</div>\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Nav Group\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarNavGroup({\r\n icon,\r\n label,\r\n children,\r\n defaultOpen = false,\r\n isActive,\r\n badge,\r\n badgeVariant = 'default',\r\n className,\r\n}: DashboardLayoutSidebarNavGroupProps) {\r\n const { sidebarExpanded } = useDashboardLayout()\r\n const [isOpen, setIsOpen] = React.useState(defaultOpen)\r\n\r\n const badgeColors = {\r\n default: 'bg-muted text-muted-foreground',\r\n primary: 'bg-primary/10 text-primary',\r\n destructive: 'bg-destructive/10 text-destructive',\r\n }\r\n\r\n // Render icon - handles both LucideIcon components and ReactNode elements\r\n const renderIcon = () => {\r\n if (!icon) return null\r\n // Already a React element\r\n if (React.isValidElement(icon)) {\r\n return icon\r\n }\r\n // Function component or forwardRef component (Lucide icons)\r\n if (typeof icon === 'function' || (typeof icon === 'object' && '$$typeof' in icon)) {\r\n const IconComponent = icon as React.ComponentType<{ className?: string }>\r\n return <IconComponent className=\"w-5 h-5 flex-shrink-0\" />\r\n }\r\n return null\r\n }\r\n\r\n // Auto expand when sidebar expands if group is active\r\n React.useEffect(() => {\r\n if (isActive && sidebarExpanded) {\r\n setIsOpen(true)\r\n }\r\n }, [isActive, sidebarExpanded])\r\n\r\n return (\r\n <div className={className}>\r\n {/* Group Header */}\r\n <div\r\n onClick={() => sidebarExpanded && setIsOpen(!isOpen)}\r\n className={cn(\r\n 'flex items-center gap-3 px-3 py-2.5 mx-2 rounded-md transition-colors',\r\n 'hover:bg-muted cursor-pointer',\r\n isActive && 'text-primary'\r\n )}\r\n >\r\n {renderIcon()}\r\n\r\n {sidebarExpanded && (\r\n <>\r\n <span className=\"flex-1 truncate text-sm\">{label}</span>\r\n {badge !== undefined && (\r\n <span\r\n className={cn(\r\n 'text-xs px-2 py-0.5 rounded-full',\r\n badgeColors[badgeVariant]\r\n )}\r\n >\r\n {badge}\r\n </span>\r\n )}\r\n {isOpen ? (\r\n <ChevronDown className=\"w-4 h-4 text-muted-foreground\" />\r\n ) : (\r\n <ChevronRight className=\"w-4 h-4 text-muted-foreground\" />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n {/* Group Items */}\r\n {sidebarExpanded && isOpen && (\r\n <div className=\"ml-4 mt-1 space-y-0.5\">{children}</div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Section\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarSection({\r\n title,\r\n children,\r\n className,\r\n}: DashboardLayoutSidebarSectionProps) {\r\n const { sidebarExpanded } = useDashboardLayout()\r\n\r\n return (\r\n <div className={cn('mb-2', className)}>\r\n {title && sidebarExpanded && (\r\n <div className=\"px-5 py-2\">\r\n <span className=\"text-[10px] font-medium uppercase tracking-wider text-muted-foreground\">\r\n {title}\r\n </span>\r\n </div>\r\n )}\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Sidebar Footer\r\n// ============================================================================\r\nfunction DashboardLayoutSidebarFooter({ children, className }: DashboardLayoutSidebarFooterProps) {\r\n return (\r\n <div className={cn('p-4 border-t border-border mt-auto', className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Header\r\n// ============================================================================\r\nfunction DashboardLayoutHeader({ children, className }: DashboardLayoutHeaderProps) {\r\n const { isMobile, setMobileMenuOpen, sidebarPinned } = useDashboardLayout()\r\n\r\n // Calculate left margin based on sidebar state (only pinned affects content position)\r\n const marginLeft = isMobile ? 0 : sidebarPinned ? 256 : 64\r\n\r\n return (\r\n <header\r\n style={{ marginLeft }}\r\n className={cn(\r\n 'h-16 bg-background border-b border-border',\r\n 'flex items-center px-4 lg:px-6',\r\n 'sticky top-0 z-30',\r\n !isMobile && 'transition-[margin-left] duration-300',\r\n className\r\n )}\r\n >\r\n {/* Mobile menu button */}\r\n {isMobile && (\r\n <button\r\n onClick={() => setMobileMenuOpen(true)}\r\n className=\"p-2 hover:bg-muted rounded-md mr-2\"\r\n >\r\n <Menu className=\"w-5 h-5\" />\r\n </button>\r\n )}\r\n\r\n {children}\r\n </header>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Header Title\r\n// ============================================================================\r\nfunction DashboardLayoutHeaderTitle({\r\n children,\r\n className,\r\n title,\r\n subtitle,\r\n}: DashboardLayoutHeaderTitleProps) {\r\n if (children) {\r\n return <div className={cn('flex-1', className)}>{children}</div>\r\n }\r\n\r\n return (\r\n <div className={cn('flex-1 min-w-0', className)}>\r\n {title && <h1 className=\"font-semibold text-lg truncate\">{title}</h1>}\r\n {subtitle && (\r\n <p className=\"text-sm text-muted-foreground truncate\">{subtitle}</p>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Header Actions\r\n// ============================================================================\r\nfunction DashboardLayoutHeaderActions({ children, className }: DashboardLayoutHeaderActionsProps) {\r\n return (\r\n <div className={cn('flex items-center gap-2', className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Header User\r\n// ============================================================================\r\nfunction DashboardLayoutHeaderUser({\r\n name,\r\n email,\r\n avatar,\r\n className,\r\n children,\r\n onLogout,\r\n}: DashboardLayoutHeaderUserProps) {\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n\r\n return (\r\n <div className={cn('relative', className)}>\r\n <button\r\n onClick={() => setIsOpen(!isOpen)}\r\n className=\"flex items-center gap-2 p-1.5 hover:bg-muted rounded-md transition-colors\"\r\n >\r\n {avatar ? (\r\n <img\r\n src={avatar}\r\n alt={name}\r\n className=\"w-8 h-8 rounded-full object-cover\"\r\n />\r\n ) : (\r\n <div className=\"w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center\">\r\n <User className=\"w-4 h-4 text-primary\" />\r\n </div>\r\n )}\r\n <div className=\"hidden sm:block text-left\">\r\n <p className=\"text-sm font-medium truncate max-w-[120px]\">{name}</p>\r\n {email && (\r\n <p className=\"text-xs text-muted-foreground truncate max-w-[120px]\">\r\n {email}\r\n </p>\r\n )}\r\n </div>\r\n <ChevronDown className=\"w-4 h-4 text-muted-foreground hidden sm:block\" />\r\n </button>\r\n\r\n {/* Dropdown */}\r\n {isOpen && (\r\n <>\r\n <div\r\n className=\"fixed inset-0 z-40\"\r\n onClick={() => setIsOpen(false)}\r\n />\r\n <div className=\"absolute right-0 top-full mt-1 w-56 bg-card border border-border rounded-md shadow-lg z-50\">\r\n <div className=\"p-3 border-b border-border\">\r\n <p className=\"font-medium truncate\">{name}</p>\r\n {email && (\r\n <p className=\"text-sm text-muted-foreground truncate\">{email}</p>\r\n )}\r\n </div>\r\n\r\n {children && <div className=\"p-1\">{children}</div>}\r\n\r\n {onLogout && (\r\n <div className=\"p-1 border-t border-border\">\r\n <button\r\n onClick={() => {\r\n setIsOpen(false)\r\n onLogout()\r\n }}\r\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm hover:bg-muted rounded-md transition-colors text-destructive\"\r\n >\r\n <LogOut className=\"w-4 h-4\" />\r\n Sair\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Content\r\n// ============================================================================\r\nfunction DashboardLayoutContent({ children, className }: DashboardLayoutContentProps) {\r\n const { isMobile, sidebarPinned } = useDashboardLayout()\r\n\r\n // Calculate left margin based on sidebar state\r\n const marginLeft = isMobile ? 0 : sidebarPinned ? 256 : 64\r\n\r\n return (\r\n <main\r\n style={{ marginLeft }}\r\n className={cn(\r\n 'flex-1 flex flex-col min-h-screen',\r\n 'transition-[margin-left] duration-300',\r\n className\r\n )}\r\n >\r\n {children}\r\n </main>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Breadcrumbs\r\n// ============================================================================\r\nfunction DashboardLayoutBreadcrumbs({\r\n items,\r\n className,\r\n separator,\r\n}: DashboardLayoutBreadcrumbsProps) {\r\n const defaultSeparator = <ChevronRight className=\"w-4 h-4 text-muted-foreground\" />\r\n\r\n return (\r\n <nav className={cn('flex items-center gap-1 text-sm', className)}>\r\n {items.map((item, index) => {\r\n const Icon = item.icon\r\n const isLast = index === items.length - 1\r\n\r\n return (\r\n <React.Fragment key={index}>\r\n {item.href && !isLast ? (\r\n <a\r\n href={item.href}\r\n className=\"flex items-center gap-1 text-muted-foreground hover:text-foreground transition-colors\"\r\n >\r\n {Icon && <Icon className=\"w-4 h-4\" />}\r\n <span>{item.label}</span>\r\n </a>\r\n ) : (\r\n <span\r\n className={cn(\r\n 'flex items-center gap-1',\r\n isLast ? 'text-foreground font-medium' : 'text-muted-foreground'\r\n )}\r\n >\r\n {Icon && <Icon className=\"w-4 h-4\" />}\r\n <span>{item.label}</span>\r\n </span>\r\n )}\r\n\r\n {!isLast && (\r\n <span className=\"mx-1\">{separator || defaultSeparator}</span>\r\n )}\r\n </React.Fragment>\r\n )\r\n })}\r\n </nav>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Mobile Nav\r\n// ============================================================================\r\nfunction DashboardLayoutMobileNav({ children, className }: DashboardLayoutMobileNavProps) {\r\n return (\r\n <nav\r\n className={cn(\r\n 'fixed bottom-0 left-0 right-0 h-16 bg-card border-t border-border',\r\n 'flex items-center justify-around px-2 z-50 lg:hidden',\r\n className\r\n )}\r\n >\r\n {children}\r\n </nav>\r\n )\r\n}\r\n\r\n// ============================================================================\r\n// Mobile Nav Item\r\n// ============================================================================\r\nfunction DashboardLayoutMobileNavItem({\r\n icon: Icon,\r\n label,\r\n href,\r\n onClick,\r\n isActive,\r\n badge,\r\n}: DashboardLayoutMobileNavItemProps) {\r\n const content = (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center gap-1 p-2 rounded-md transition-colors relative',\r\n 'hover:bg-muted',\r\n isActive && 'text-primary'\r\n )}\r\n onClick={onClick}\r\n >\r\n <Icon className=\"w-5 h-5\" />\r\n <span className=\"text-[10px]\">{label}</span>\r\n\r\n {badge !== undefined && (\r\n <span className=\"absolute -top-1 -right-1 min-w-[18px] h-[18px] flex items-center justify-center text-[10px] font-medium bg-destructive text-destructive-foreground rounded-full px-1\">\r\n {badge}\r\n </span>\r\n )}\r\n </div>\r\n )\r\n\r\n if (href) {\r\n return <a href={href}>{content}</a>\r\n }\r\n\r\n return content\r\n}\r\n\r\n// ============================================================================\r\n// Display Names\r\n// ============================================================================\r\nDashboardLayoutRoot.displayName = 'DashboardLayout'\r\nDashboardLayoutSidebar.displayName = 'DashboardLayout.Sidebar'\r\nDashboardLayoutSidebarHeader.displayName = 'DashboardLayout.SidebarHeader'\r\nDashboardLayoutSidebarNav.displayName = 'DashboardLayout.SidebarNav'\r\nDashboardLayoutSidebarNavItem.displayName = 'DashboardLayout.SidebarNavItem'\r\nDashboardLayoutSidebarNavGroup.displayName = 'DashboardLayout.SidebarNavGroup'\r\nDashboardLayoutSidebarSection.displayName = 'DashboardLayout.SidebarSection'\r\nDashboardLayoutSidebarFooter.displayName = 'DashboardLayout.SidebarFooter'\r\nDashboardLayoutHeader.displayName = 'DashboardLayout.Header'\r\nDashboardLayoutHeaderTitle.displayName = 'DashboardLayout.HeaderTitle'\r\nDashboardLayoutHeaderActions.displayName = 'DashboardLayout.HeaderActions'\r\nDashboardLayoutHeaderUser.displayName = 'DashboardLayout.HeaderUser'\r\nDashboardLayoutContent.displayName = 'DashboardLayout.Content'\r\nDashboardLayoutBreadcrumbs.displayName = 'DashboardLayout.Breadcrumbs'\r\nDashboardLayoutMobileNav.displayName = 'DashboardLayout.MobileNav'\r\nDashboardLayoutMobileNavItem.displayName = 'DashboardLayout.MobileNavItem'\r\n\r\n// ============================================================================\r\n// Compound Component Export\r\n// ============================================================================\r\nexport const DashboardLayout = Object.assign(DashboardLayoutRoot, {\r\n Sidebar: DashboardLayoutSidebar,\r\n SidebarHeader: DashboardLayoutSidebarHeader,\r\n SidebarNav: DashboardLayoutSidebarNav,\r\n SidebarNavItem: DashboardLayoutSidebarNavItem,\r\n SidebarNavGroup: DashboardLayoutSidebarNavGroup,\r\n SidebarSection: DashboardLayoutSidebarSection,\r\n SidebarFooter: DashboardLayoutSidebarFooter,\r\n Header: DashboardLayoutHeader,\r\n HeaderTitle: DashboardLayoutHeaderTitle,\r\n HeaderActions: DashboardLayoutHeaderActions,\r\n HeaderUser: DashboardLayoutHeaderUser,\r\n Content: DashboardLayoutContent,\r\n Breadcrumbs: DashboardLayoutBreadcrumbs,\r\n MobileNav: DashboardLayoutMobileNav,\r\n MobileNavItem: DashboardLayoutMobileNavItem,\r\n})\r\n","import * as React from 'react'\r\nimport type { SidebarContextValue } from './types'\r\n\r\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null)\r\n\r\nexport function useSidebar(): SidebarContextValue {\r\n const context = React.useContext(SidebarContext)\r\n if (!context) {\r\n throw new Error('useSidebar must be used within a Sidebar component')\r\n }\r\n return context\r\n}\r\n\r\nexport function useSidebarOptional(): SidebarContextValue | null {\r\n return React.useContext(SidebarContext)\r\n}\r\n\r\ninterface SidebarProviderProps {\r\n children: React.ReactNode\r\n value: SidebarContextValue\r\n}\r\n\r\nexport function SidebarProvider({ children, value }: SidebarProviderProps) {\r\n return (\r\n <SidebarContext.Provider value={value}>\r\n {children}\r\n </SidebarContext.Provider>\r\n )\r\n}\r\n\r\n// Custom hook for media query\r\nexport function useMediaQuery(query: string): boolean {\r\n const [matches, setMatches] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n if (typeof window === 'undefined') return\r\n\r\n const mediaQuery = window.matchMedia(query)\r\n setMatches(mediaQuery.matches)\r\n\r\n const handler = (event: MediaQueryListEvent) => {\r\n setMatches(event.matches)\r\n }\r\n\r\n mediaQuery.addEventListener('change', handler)\r\n return () => mediaQuery.removeEventListener('change', handler)\r\n }, [query])\r\n\r\n return matches\r\n}\r\n\r\nexport { SidebarContext }\r\n","import * as React from 'react'\r\nimport { motion, AnimatePresence } from 'framer-motion'\r\nimport { Pin, PinOff } from 'lucide-react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useSidebar } from './SidebarContext'\r\nimport type { SidebarHeaderProps } from './types'\r\n\r\nexport const SidebarHeader = React.memo<SidebarHeaderProps>(function SidebarHeader({\r\n logo,\r\n collapsedLogo,\r\n title,\r\n showPinButton = true,\r\n className,\r\n}) {\r\n const { expanded, pinned, setPinned } = useSidebar()\r\n\r\n const handleTogglePin = React.useCallback(() => {\r\n setPinned(!pinned)\r\n }, [pinned, setPinned])\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex items-center justify-between h-[60px] border-b border-border bg-primary px-3',\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center gap-2 overflow-hidden\">\r\n {/* Collapsed Logo */}\r\n <AnimatePresence mode=\"wait\">\r\n {!expanded && collapsedLogo && (\r\n <motion.div\r\n key=\"collapsed-logo\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.8 }}\r\n transition={{ duration: 0.15 }}\r\n className=\"flex items-center justify-center\"\r\n >\r\n {collapsedLogo}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Expanded Logo + Title */}\r\n <AnimatePresence>\r\n {expanded && (\r\n <motion.div\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n exit={{ opacity: 0, x: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"flex items-center gap-2\"\r\n >\r\n {logo && <div className=\"flex-shrink-0\">{logo}</div>}\r\n {title && (\r\n <span className=\"text-sm font-semibold text-primary-foreground whitespace-nowrap\">\r\n {title}\r\n </span>\r\n )} \r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Fallback: Show collapsed logo if no expanded logo */}\r\n {expanded && !logo && collapsedLogo && (\r\n <div className=\"flex items-center gap-2\">\r\n {collapsedLogo}\r\n {title && (\r\n <motion.span\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n exit={{ opacity: 0, x: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"text-sm font-semibold text-primary-foreground whitespace-nowrap\"\r\n >\r\n {title}\r\n </motion.span>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Pin Button */}\r\n <AnimatePresence>\r\n {showPinButton && expanded && (\r\n <motion.button\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.8 }}\r\n transition={{ duration: 0.15 }}\r\n onClick={handleTogglePin}\r\n className={cn(\r\n 'flex h-6 w-6 items-center justify-center rounded-md transition-colors',\r\n 'hover:bg-primary-foreground/10',\r\n // pinned ? '' : 'text-primary-foreground/60'\r\n )}\r\n title={pinned ? 'Unpin sidebar' : 'Pin sidebar'}\r\n >\r\n {pinned ? (\r\n <PinOff className=\"h-3.5 w-3.5\" />\r\n ) : (\r\n <Pin className=\"h-3.5 w-3.5\" />\r\n )}\r\n </motion.button>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n )\r\n})\r\n\r\nSidebarHeader.displayName = 'Sidebar.Header'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport type { SidebarNavProps } from './types'\r\n\r\nexport const SidebarNav = React.memo<SidebarNavProps>(function SidebarNav({\r\n children,\r\n className,\r\n}) {\r\n return (\r\n <nav\r\n className={cn(\r\n 'flex-1 overflow-y-auto overflow-x-hidden py-1 custom-scrollbar',\r\n className\r\n )}\r\n >\r\n <div className=\"space-y-0.5 px-2\">\r\n {children}\r\n </div>\r\n </nav>\r\n )\r\n})\r\n\r\nSidebarNav.displayName = 'Sidebar.Nav'\r\n","import * as React from 'react'\r\nimport { AnimatePresence, motion } from 'framer-motion'\r\nimport { cn } from '../../utils/cn'\r\nimport { useSidebar } from './SidebarContext'\r\nimport type { SidebarSectionProps } from './types'\r\n\r\nexport const SidebarSection = React.memo<SidebarSectionProps>(function SidebarSection({\r\n title,\r\n children,\r\n className,\r\n}) {\r\n const { expanded } = useSidebar()\r\n\r\n return (\r\n <div className={cn('space-y-0.5', className)}>\r\n {/* Section Title - only shown when expanded */}\r\n <AnimatePresence>\r\n {title && expanded && (\r\n <motion.div\r\n initial={{ opacity: 0, height: 0 }}\r\n animate={{ opacity: 1, height: 'auto' }}\r\n exit={{ opacity: 0, height: 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"mb-1 px-2 py-1\"\r\n >\r\n <p className=\"text-[10px] font-medium uppercase tracking-wider text-muted-foreground\">\r\n {title}\r\n </p>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Section Items */}\r\n {children}\r\n </div>\r\n )\r\n})\r\n\r\nSidebarSection.displayName = 'Sidebar.Section'\r\n","import * as React from 'react'\r\nimport { motion, AnimatePresence } from 'framer-motion'\r\nimport { cn } from '../../utils/cn'\r\nimport { useSidebar } from './SidebarContext'\r\nimport type { SidebarNavItemProps, BadgeVariant } from './types'\r\n\r\n// Helper to render icon - handles Lucide icons, forwardRef, memo, and React elements\r\nfunction renderIcon(icon: unknown, className: string): React.ReactNode {\r\n if (!icon) return null\r\n\r\n // If it's a valid React element, render it directly\r\n if (React.isValidElement(icon)) {\r\n return React.cloneElement(icon as React.ReactElement<{ className?: string }>, { className })\r\n }\r\n\r\n // If it's a component (function, forwardRef, memo), render it\r\n if (\r\n typeof icon === 'function' ||\r\n (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\r\n ) {\r\n const IconComponent = icon as React.ComponentType<{ className?: string }>\r\n return <IconComponent className={className} />\r\n }\r\n\r\n return null\r\n}\r\n\r\n// Badge variant styles\r\nconst badgeVariantStyles: Record<BadgeVariant, string> = {\r\n default: 'bg-primary/10 text-primary',\r\n notification: 'bg-destructive/20 text-destructive',\r\n success: 'bg-green-100 text-green-600',\r\n warning: 'bg-amber-100 text-amber-600',\r\n}\r\n\r\nexport const SidebarNavItem = React.memo<SidebarNavItemProps>(function SidebarNavItem({\r\n icon,\r\n label,\r\n href,\r\n onClick,\r\n isActive = false,\r\n badge,\r\n badgeVariant = 'default',\r\n disabled = false,\r\n className,\r\n}) {\r\n const { expanded } = useSidebar()\r\n\r\n const handleClick = React.useCallback(() => {\r\n if (disabled) return\r\n\r\n if (onClick) {\r\n onClick()\r\n } else if (href && typeof window !== 'undefined') {\r\n window.location.href = href\r\n }\r\n }, [disabled, onClick, href])\r\n\r\n const iconSize = expanded ? 'h-3.5 w-3.5' : 'h-4 w-4'\r\n\r\n return (\r\n <button\r\n onClick={handleClick}\r\n disabled={disabled}\r\n className={cn(\r\n 'group relative flex w-full items-center rounded-md px-2 py-1.5 transition-all duration-200',\r\n isActive\r\n ? 'bg-primary/10 text-primary'\r\n : 'hover:bg-primary/5 hover:text-primary',\r\n disabled && 'opacity-50 cursor-not-allowed',\r\n className\r\n )}\r\n >\r\n {/* Active indicator - left border */}\r\n {isActive && (\r\n <motion.div\r\n layoutId=\"sidebarActiveIndicator\"\r\n className=\"absolute left-0 top-0 bottom-0 w-0.5 rounded-r-full bg-primary\"\r\n transition={{ type: 'spring', stiffness: 300, damping: 30 }}\r\n />\r\n )}\r\n\r\n {/* Icon */}\r\n <div\r\n className={cn(\r\n 'flex h-6 w-6 items-center justify-center rounded-md transition-all duration-200',\r\n isActive\r\n ? 'text-primary bg-primary/10 group-hover:bg-primary/20'\r\n : 'text-muted-foreground group-hover:text-foreground'\r\n )}\r\n >\r\n {renderIcon(icon, iconSize)}\r\n </div>\r\n\r\n {/* Label */}\r\n <AnimatePresence>\r\n {expanded && (\r\n <motion.span\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n exit={{ opacity: 0, x: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"ml-2 flex-1 text-left text-xs font-medium truncate\"\r\n >\r\n {label}\r\n </motion.span>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Badge - Full when expanded */}\r\n <AnimatePresence>\r\n {badge !== undefined && expanded && (\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.8 }}\r\n transition={{ duration: 0.2 }}\r\n className={cn(\r\n 'ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full px-1 text-[10px] font-medium',\r\n badgeVariantStyles[badgeVariant]\r\n )}\r\n >\r\n {badge}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Badge dot - When collapsed */}\r\n {badge !== undefined && !expanded && (\r\n <div\r\n className={cn(\r\n 'absolute top-1 right-1 h-2 w-2 rounded-full',\r\n badgeVariant === 'notification' && 'bg-destructive',\r\n badgeVariant === 'success' && 'bg-green-500',\r\n badgeVariant === 'warning' && 'bg-amber-500',\r\n badgeVariant === 'default' && 'bg-primary'\r\n )}\r\n />\r\n )}\r\n </button>\r\n )\r\n})\r\n\r\nSidebarNavItem.displayName = 'Sidebar.NavItem'\r\n","import * as React from 'react'\r\nimport { motion, AnimatePresence } from 'framer-motion'\r\nimport { ChevronRight } from 'lucide-react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useSidebar } from './SidebarContext'\r\nimport type { SidebarNavGroupProps, BadgeVariant } from './types'\r\n\r\n// Helper to render icon - handles Lucide icons, forwardRef, memo, and React elements\r\nfunction renderIcon(icon: unknown, className: string): React.ReactNode {\r\n if (!icon) return null\r\n\r\n // If it's a valid React element, render it directly\r\n if (React.isValidElement(icon)) {\r\n return React.cloneElement(icon as React.ReactElement<{ className?: string }>, { className })\r\n }\r\n\r\n // If it's a component (function, forwardRef, memo), render it\r\n if (\r\n typeof icon === 'function' ||\r\n (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\r\n ) {\r\n const IconComponent = icon as React.ComponentType<{ className?: string }>\r\n return <IconComponent className={className} />\r\n }\r\n\r\n return null\r\n}\r\n\r\n// Badge variant styles\r\nconst badgeVariantStyles: Record<BadgeVariant, string> = {\r\n default: 'bg-primary/10 text-primary',\r\n notification: 'bg-destructive/20 text-destructive',\r\n success: 'bg-green-100 text-green-600',\r\n warning: 'bg-amber-100 text-amber-600',\r\n}\r\n\r\nexport const SidebarNavGroup = React.memo<SidebarNavGroupProps>(function SidebarNavGroup({\r\n icon,\r\n label,\r\n children,\r\n id,\r\n defaultOpen = false,\r\n isActive = false,\r\n badge,\r\n badgeVariant = 'default',\r\n className,\r\n}) {\r\n const { expanded, activeSection, setActiveSection } = useSidebar()\r\n const [isOpen, setIsOpen] = React.useState(defaultOpen)\r\n const groupId = id || label.toLowerCase().replace(/\\s+/g, '-')\r\n\r\n // Sync with context activeSection\r\n const isExpanded = expanded && (activeSection === groupId || isOpen)\r\n\r\n const handleClick = React.useCallback(() => {\r\n if (activeSection === groupId) {\r\n setActiveSection(null)\r\n setIsOpen(false)\r\n } else {\r\n setActiveSection(groupId)\r\n setIsOpen(true)\r\n }\r\n }, [activeSection, groupId, setActiveSection])\r\n\r\n // Auto-expand when sidebar expands and group is active\r\n React.useEffect(() => {\r\n if (expanded && isActive && !isOpen) {\r\n setIsOpen(true)\r\n setActiveSection(groupId)\r\n }\r\n }, [expanded, isActive, isOpen, setActiveSection, groupId])\r\n\r\n const iconSize = expanded ? 'h-3.5 w-3.5' : 'h-4 w-4'\r\n\r\n return (\r\n <div className={cn('relative', className)}>\r\n {/* Group Header Button */}\r\n <button\r\n onClick={handleClick}\r\n className={cn(\r\n 'group relative flex w-full items-center rounded-md px-2 py-1.5 transition-all duration-200',\r\n isActive\r\n ? 'bg-primary/10 text-primary'\r\n : 'hover:bg-primary/5 hover:text-primary'\r\n )}\r\n >\r\n {/* Active indicator - left border */}\r\n {isActive && (\r\n <motion.div\r\n layoutId=\"sidebarGroupActiveIndicator\"\r\n className=\"absolute left-0 top-0 bottom-0 w-0.5 rounded-r-full bg-primary\"\r\n transition={{ type: 'spring', stiffness: 300, damping: 30 }}\r\n />\r\n )}\r\n\r\n {/* Icon */}\r\n <div\r\n className={cn(\r\n 'flex h-6 w-6 items-center justify-center rounded-md transition-all duration-200',\r\n isActive\r\n ? 'text-primary bg-primary/10 group-hover:bg-primary/20'\r\n : 'text-muted-foreground group-hover:text-foreground'\r\n )}\r\n >\r\n {renderIcon(icon, iconSize)}\r\n </div>\r\n\r\n {/* Label */}\r\n <AnimatePresence>\r\n {expanded && (\r\n <motion.span\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n exit={{ opacity: 0, x: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"ml-2 flex-1 text-left text-xs font-medium truncate\"\r\n >\r\n {label}\r\n </motion.span>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Badge - Full when expanded */}\r\n <AnimatePresence>\r\n {badge !== undefined && expanded && (\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.8 }}\r\n transition={{ duration: 0.2 }}\r\n className={cn(\r\n 'ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full px-1 text-[10px] font-medium',\r\n badgeVariantStyles[badgeVariant]\r\n )}\r\n >\r\n {badge}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Chevron - Rotates when expanded */}\r\n {expanded && (\r\n <motion.div\r\n animate={{ rotate: isExpanded ? 90 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"ml-1\"\r\n >\r\n <ChevronRight className=\"h-3 w-3 text-muted-foreground\" />\r\n </motion.div>\r\n )}\r\n\r\n {/* Badge dot - When collapsed */}\r\n {badge !== undefined && !expanded && (\r\n <div\r\n className={cn(\r\n 'absolute top-1 right-1 h-2 w-2 rounded-full',\r\n badgeVariant === 'notification' && 'bg-destructive',\r\n badgeVariant === 'success' && 'bg-green-500',\r\n badgeVariant === 'warning' && 'bg-amber-500',\r\n badgeVariant === 'default' && 'bg-primary'\r\n )}\r\n />\r\n )}\r\n </button>\r\n\r\n {/* Submenu Items */}\r\n <AnimatePresence>\r\n {isExpanded && (\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: 'auto', opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{ duration: 0.2, ease: 'easeInOut' }}\r\n className=\"overflow-hidden\"\r\n >\r\n <div className=\"mt-0.5 space-y-0.5 pl-4 pr-2\">\r\n {children}\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n )\r\n})\r\n\r\nSidebarNavGroup.displayName = 'Sidebar.NavGroup'\r\n","import * as React from 'react'\r\nimport { motion, AnimatePresence } from 'framer-motion'\r\nimport { ChevronDown } from 'lucide-react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useSidebar } from './SidebarContext'\r\nimport type { SidebarFooterProps } from './types'\r\n\r\n// Helper to check if icon is a Lucide icon\r\nfunction isLucideIcon(icon: unknown): icon is React.ComponentType<{ className?: string }> {\r\n return typeof icon === 'function'\r\n}\r\n\r\n// Get initials from name\r\nfunction getInitials(name: string): string {\r\n return name\r\n .split(' ')\r\n .map((part) => part.charAt(0))\r\n .slice(0, 2)\r\n .join('')\r\n .toUpperCase()\r\n}\r\n\r\nexport const SidebarFooter = React.memo<SidebarFooterProps>(function SidebarFooter({\r\n user,\r\n menuItems,\r\n children,\r\n className,\r\n}) {\r\n const { expanded } = useSidebar()\r\n const [menuOpen, setMenuOpen] = React.useState(false)\r\n\r\n const handleToggleMenu = React.useCallback(() => {\r\n setMenuOpen((prev) => !prev)\r\n }, [])\r\n\r\n // Close menu when clicking outside\r\n React.useEffect(() => {\r\n if (!menuOpen) return\r\n\r\n const handleClickOutside = (event: MouseEvent) => {\r\n const target = event.target as HTMLElement\r\n if (!target.closest('[data-sidebar-footer]')) {\r\n setMenuOpen(false)\r\n }\r\n }\r\n\r\n document.addEventListener('click', handleClickOutside)\r\n return () => document.removeEventListener('click', handleClickOutside)\r\n }, [menuOpen])\r\n\r\n // If children provided, render them directly\r\n if (children) {\r\n return (\r\n <div className={cn('border-t border-border p-2', className)}>\r\n {children}\r\n </div>\r\n )\r\n }\r\n\r\n // Structured footer with user and menu\r\n if (!user) return null\r\n\r\n return (\r\n <div\r\n data-sidebar-footer\r\n className={cn('group cursor-pointer border-t border-border p-2', className)}\r\n >\r\n <div className=\"relative\">\r\n <button\r\n onClick={handleToggleMenu}\r\n className={cn(\r\n 'flex w-full items-center gap-2 rounded-md p-1.5 transition-all',\r\n 'hover:bg-muted',\r\n menuOpen && 'bg-muted'\r\n )}\r\n >\r\n {/* Avatar */}\r\n <div className=\"relative flex-shrink-0\">\r\n {user.avatar ? (\r\n <img\r\n src={user.avatar}\r\n alt={user.name}\r\n className=\"h-8 w-8 rounded-full object-cover\"\r\n />\r\n ) : (\r\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-primary/10 text-xs font-medium text-primary\">\r\n {getInitials(user.name)}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* User Info - Only when expanded */}\r\n <AnimatePresence>\r\n {expanded && (\r\n <motion.div\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n exit={{ opacity: 0, x: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"flex flex-1 items-center justify-between\"\r\n >\r\n <div className=\"flex flex-col items-start\">\r\n <span className=\"text-xs font-medium truncate max-w-[120px]\">\r\n {user.name}\r\n </span>\r\n {user.email && (\r\n <span className=\"text-[10px] text-muted-foreground truncate max-w-[120px]\">\r\n {user.email}\r\n </span>\r\n )}\r\n </div>\r\n <ChevronDown\r\n className={cn(\r\n 'h-3 w-3 text-muted-foreground transition-transform',\r\n menuOpen && 'rotate-180'\r\n )}\r\n />\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </button>\r\n\r\n {/* Dropdown Menu */}\r\n <AnimatePresence>\r\n {menuOpen && expanded && menuItems && menuItems.length > 0 && (\r\n <motion.div\r\n initial={{ opacity: 0, y: -10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.15 }}\r\n className=\"absolute bottom-full left-0 right-0 mb-1 overflow-hidden rounded-md border border-border bg-card shadow-lg\"\r\n >\r\n <div className=\"py-1\">\r\n {menuItems.map((item, index) => {\r\n const IconComponent = item.icon && isLucideIcon(item.icon) ? item.icon : null\r\n const isDestructive = item.variant === 'destructive'\r\n\r\n return (\r\n <React.Fragment key={item.label}>\r\n {/* Separator before destructive items */}\r\n {isDestructive && index > 0 && (\r\n <div className=\"my-1 border-t border-border\" />\r\n )}\r\n <button\r\n onClick={() => {\r\n item.onClick()\r\n setMenuOpen(false)\r\n }}\r\n className={cn(\r\n 'flex w-full items-center gap-2 px-3 py-1.5 text-xs transition-colors',\r\n isDestructive\r\n ? 'text-destructive hover:bg-destructive/10'\r\n : 'text-foreground hover:bg-muted'\r\n )}\r\n >\r\n {IconComponent && <IconComponent className=\"h-3 w-3\" />}\r\n <span>{item.label}</span>\r\n </button>\r\n </React.Fragment>\r\n )\r\n })}\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n </div>\r\n )\r\n})\r\n\r\nSidebarFooter.displayName = 'Sidebar.Footer'\r\n","import * as React from 'react'\r\nimport { motion } from 'framer-motion'\r\nimport { cn } from '../../utils/cn'\r\nimport { SidebarProvider, useMediaQuery, useSidebar, useSidebarOptional } from './SidebarContext'\r\nimport { SidebarHeader } from './SidebarHeader'\r\nimport { SidebarNav } from './SidebarNav'\r\nimport { SidebarSection } from './SidebarSection'\r\nimport { SidebarNavItem } from './SidebarNavItem'\r\nimport { SidebarNavGroup } from './SidebarNavGroup'\r\nimport { SidebarFooter } from './SidebarFooter'\r\nimport type { SidebarProps, SidebarContextValue } from './types'\r\n\r\nconst COLLAPSED_WIDTH = 60\r\nconst EXPANDED_WIDTH = 250\r\n\r\n// ============================================================================\r\n// SidebarRoot - Provider with state management\r\n// ============================================================================\r\n\r\ninterface SidebarRootProps {\r\n children: React.ReactNode\r\n defaultExpanded?: boolean\r\n defaultPinned?: boolean\r\n collapsedWidth?: number\r\n expandedWidth?: number\r\n}\r\n\r\nfunction SidebarRoot({\r\n children,\r\n defaultExpanded = false,\r\n defaultPinned = false,\r\n collapsedWidth = COLLAPSED_WIDTH,\r\n expandedWidth = EXPANDED_WIDTH,\r\n}: SidebarRootProps) {\r\n // If pinned, sidebar should also be expanded\r\n const [expanded, setExpanded] = React.useState(defaultExpanded || defaultPinned)\r\n const [pinned, setPinned] = React.useState(defaultPinned)\r\n const [activeSection, setActiveSection] = React.useState<string | null>(null)\r\n const isMobile = useMediaQuery('(max-width: 768px)')\r\n\r\n const handleSetPinned = React.useCallback((value: boolean) => {\r\n setPinned(value)\r\n if (value) {\r\n setExpanded(true)\r\n }\r\n }, [])\r\n\r\n const contextValue = React.useMemo<SidebarContextValue>(\r\n () => ({\r\n expanded,\r\n setExpanded,\r\n pinned,\r\n setPinned: handleSetPinned,\r\n activeSection,\r\n setActiveSection,\r\n isMobile,\r\n collapsedWidth,\r\n expandedWidth,\r\n }),\r\n [expanded, pinned, handleSetPinned, activeSection, isMobile, collapsedWidth, expandedWidth]\r\n )\r\n\r\n return (\r\n <SidebarProvider value={contextValue}>\r\n {children}\r\n </SidebarProvider>\r\n )\r\n}\r\n\r\nSidebarRoot.displayName = 'SidebarRoot'\r\n\r\n// ============================================================================\r\n// SidebarAside - The actual sidebar UI\r\n// ============================================================================\r\n\r\ninterface SidebarAsideProps {\r\n children: React.ReactNode\r\n className?: string\r\n}\r\n\r\nfunction SidebarAside({ children, className }: SidebarAsideProps) {\r\n const { expanded, pinned, setExpanded, isMobile, collapsedWidth, expandedWidth } = useSidebar()\r\n const sidebarRef = React.useRef<HTMLDivElement>(null)\r\n\r\n const handleMouseEnter = React.useCallback(() => {\r\n if (!pinned && !isMobile) {\r\n setExpanded(true)\r\n }\r\n }, [pinned, isMobile, setExpanded])\r\n\r\n const handleMouseLeave = React.useCallback(() => {\r\n if (!pinned && !isMobile) {\r\n setExpanded(false)\r\n }\r\n }, [pinned, isMobile, setExpanded])\r\n\r\n // Don't render desktop sidebar on mobile\r\n if (isMobile) {\r\n return null\r\n }\r\n\r\n return (\r\n <motion.aside\r\n ref={sidebarRef}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n initial={{ width: collapsedWidth }}\r\n animate={{ width: expanded ? expandedWidth : collapsedWidth }}\r\n transition={{\r\n type: 'spring',\r\n stiffness: 300,\r\n damping: 30,\r\n mass: 1,\r\n }}\r\n className={cn(\r\n 'relative flex h-screen flex-col bg-card',\r\n 'shadow-[0_0_20px_rgba(0,0,0,0.06)]',\r\n 'fixed top-0 left-0 z-50',\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.aside>\r\n )\r\n}\r\n\r\nSidebarAside.displayName = 'SidebarAside'\r\n\r\n// ============================================================================\r\n// SidebarContent - Main content wrapper that responds to sidebar\r\n// ============================================================================\r\n\r\ninterface SidebarContentProps {\r\n children: React.ReactNode\r\n className?: string\r\n}\r\n\r\nfunction SidebarContent({ children, className }: SidebarContentProps) {\r\n const sidebar = useSidebarOptional()\r\n\r\n // If no sidebar context, render without margin\r\n if (!sidebar) {\r\n return <div className={className}>{children}</div>\r\n }\r\n\r\n const { expanded, pinned, isMobile, collapsedWidth, expandedWidth } = sidebar\r\n\r\n // On mobile, no margin needed\r\n if (isMobile) {\r\n return <div className={className}>{children}</div>\r\n }\r\n\r\n // Calculate margin based on sidebar state\r\n const marginLeft = pinned && expanded ? expandedWidth : collapsedWidth\r\n\r\n return (\r\n <motion.div\r\n initial={{ marginLeft: collapsedWidth }}\r\n animate={{ marginLeft }}\r\n transition={{\r\n type: 'spring',\r\n stiffness: 300,\r\n damping: 30,\r\n mass: 1,\r\n }}\r\n className={cn('min-h-screen flex flex-col', className)}\r\n >\r\n {children}\r\n </motion.div>\r\n )\r\n}\r\n\r\nSidebarContent.displayName = 'SidebarContent'\r\n\r\n// ============================================================================\r\n// Legacy Sidebar - Backwards compatible wrapper (for existing usage)\r\n// ============================================================================\r\n\r\nfunction LegacySidebar({\r\n children,\r\n defaultExpanded = false,\r\n defaultPinned = false,\r\n collapsedWidth = COLLAPSED_WIDTH,\r\n expandedWidth = EXPANDED_WIDTH,\r\n className,\r\n}: SidebarProps) {\r\n // If pinned, sidebar should also be expanded\r\n const [expanded, setExpanded] = React.useState(defaultExpanded || defaultPinned)\r\n const [pinned, setPinned] = React.useState(defaultPinned)\r\n const [activeSection, setActiveSection] = React.useState<string | null>(null)\r\n const isMobile = useMediaQuery('(max-width: 768px)')\r\n\r\n const sidebarRef = React.useRef<HTMLDivElement>(null)\r\n\r\n const handleMouseEnter = React.useCallback(() => {\r\n if (!pinned && !isMobile) {\r\n setExpanded(true)\r\n }\r\n }, [pinned, isMobile])\r\n\r\n const handleMouseLeave = React.useCallback(() => {\r\n if (!pinned && !isMobile) {\r\n setExpanded(false)\r\n }\r\n }, [pinned, isMobile])\r\n\r\n const handleSetPinned = React.useCallback((value: boolean) => {\r\n setPinned(value)\r\n if (value) {\r\n setExpanded(true)\r\n }\r\n }, [])\r\n\r\n const contextValue = React.useMemo<SidebarContextValue>(\r\n () => ({\r\n expanded,\r\n setExpanded,\r\n pinned,\r\n setPinned: handleSetPinned,\r\n activeSection,\r\n setActiveSection,\r\n isMobile,\r\n collapsedWidth,\r\n expandedWidth,\r\n }),\r\n [expanded, pinned, handleSetPinned, activeSection, isMobile, collapsedWidth, expandedWidth]\r\n )\r\n\r\n // Don't render desktop sidebar on mobile\r\n if (isMobile) {\r\n return (\r\n <SidebarProvider value={contextValue}>\r\n {children}\r\n </SidebarProvider>\r\n )\r\n }\r\n\r\n return (\r\n <SidebarProvider value={contextValue}>\r\n <motion.aside\r\n ref={sidebarRef}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n initial={{ width: collapsedWidth }}\r\n animate={{ width: expanded ? expandedWidth : collapsedWidth }}\r\n transition={{\r\n type: 'spring',\r\n stiffness: 300,\r\n damping: 30,\r\n mass: 1,\r\n }}\r\n className={cn(\r\n 'relative flex h-screen flex-col bg-card',\r\n 'shadow-[0_0_20px_rgba(0,0,0,0.06)]',\r\n 'fixed top-0 left-0 z-50',\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.aside>\r\n </SidebarProvider>\r\n )\r\n}\r\n\r\nLegacySidebar.displayName = 'Sidebar'\r\n\r\n// ============================================================================\r\n// Compound component pattern\r\n// ============================================================================\r\n\r\nexport const Sidebar = Object.assign(LegacySidebar, {\r\n // Layout components\r\n Root: SidebarRoot,\r\n Aside: SidebarAside,\r\n Content: SidebarContent,\r\n // Sidebar content components\r\n Header: SidebarHeader,\r\n Nav: SidebarNav,\r\n Section: SidebarSection,\r\n NavItem: SidebarNavItem,\r\n NavGroup: SidebarNavGroup,\r\n Footer: SidebarFooter,\r\n})\r\n","import * as React from 'react'\r\nimport { motion } from 'framer-motion'\r\nimport { cn } from '../../utils/cn'\r\nimport type { MobileNavItemProps } from './types'\r\n\r\n// Helper to render icon - handles Lucide icons, forwardRef, memo, and React elements\r\nfunction renderIcon(icon: unknown, className: string): React.ReactNode {\r\n if (!icon) return null\r\n\r\n // If it's a valid React element, render it directly\r\n if (React.isValidElement(icon)) {\r\n return React.cloneElement(icon as React.ReactElement<{ className?: string }>, { className })\r\n }\r\n\r\n // If it's a component (function, forwardRef, memo), render it\r\n if (\r\n typeof icon === 'function' ||\r\n (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\r\n ) {\r\n const IconComponent = icon as React.ComponentType<{ className?: string }>\r\n return <IconComponent className={className} />\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const MobileNavItem = React.memo<MobileNavItemProps>(function MobileNavItem({\r\n icon,\r\n label,\r\n isActive = false,\r\n onClick,\r\n}) {\r\n return (\r\n <button onClick={onClick} className=\"group flex flex-col items-center\">\r\n <div\r\n className={cn(\r\n 'flex items-center justify-center rounded-full p-1.5 transition-colors',\r\n isActive ? 'text-primary' : 'text-muted-foreground group-hover:text-foreground'\r\n )}\r\n >\r\n {renderIcon(icon, 'h-5 w-5')}\r\n </div>\r\n <span\r\n className={cn(\r\n 'mt-0.5 text-[10px] font-medium',\r\n isActive ? 'text-primary' : 'text-muted-foreground group-hover:text-foreground'\r\n )}\r\n >\r\n {label}\r\n </span>\r\n {isActive && (\r\n <motion.div\r\n layoutId=\"mobileNavActiveIndicator\"\r\n className=\"mt-1 h-1 w-8 rounded-full bg-primary\"\r\n transition={{ type: 'spring', stiffness: 500, damping: 30 }}\r\n />\r\n )}\r\n </button>\r\n )\r\n})\r\n\r\nMobileNavItem.displayName = 'MobileNavItem'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { MobileNavItem } from './MobileNavItem'\r\nimport type { MobileNavProps } from './types'\r\n\r\nexport const MobileNav = React.memo<MobileNavProps>(function MobileNav({\r\n items,\r\n fabAction,\r\n className,\r\n}) {\r\n // Split items for FAB placement (if FAB is provided)\r\n const leftItems = fabAction ? items.slice(0, Math.ceil(items.length / 2)) : items\r\n const rightItems = fabAction ? items.slice(Math.ceil(items.length / 2)) : []\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'fixed bottom-0 left-0 right-0 z-50 bg-card px-2 pb-2 pt-1.5 md:hidden',\r\n 'border-t border-border',\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center justify-around\">\r\n {/* Left Items */}\r\n {leftItems.map((item, index) => (\r\n <MobileNavItem\r\n key={`left-${index}-${item.label}`}\r\n icon={item.icon}\r\n label={item.label}\r\n isActive={item.isActive}\r\n onClick={() => {\r\n if (item.onClick) {\r\n item.onClick()\r\n } else if (item.href && typeof window !== 'undefined') {\r\n window.location.href = item.href\r\n }\r\n }}\r\n />\r\n ))}\r\n\r\n {/* FAB Button (Center) */}\r\n {fabAction && (\r\n <div className=\"relative -mt-5\">\r\n <button\r\n onClick={fabAction.onClick}\r\n className={cn(\r\n 'flex h-14 w-14 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg',\r\n 'transition-transform hover:bg-primary/90 active:scale-95'\r\n )}\r\n aria-label={fabAction.label}\r\n >\r\n {fabAction.icon}\r\n </button>\r\n <span className=\"mt-1 block text-center text-[10px] font-medium text-muted-foreground\">\r\n {fabAction.label}\r\n </span>\r\n </div>\r\n )}\r\n\r\n {/* Right Items */}\r\n {rightItems.map((item, index) => (\r\n <MobileNavItem\r\n key={`right-${index}-${item.label}`}\r\n icon={item.icon}\r\n label={item.label}\r\n isActive={item.isActive}\r\n onClick={() => {\r\n if (item.onClick) {\r\n item.onClick()\r\n } else if (item.href && typeof window !== 'undefined') {\r\n window.location.href = item.href\r\n }\r\n }}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n )\r\n})\r\n\r\nMobileNav.displayName = 'MobileNav'\r\n","import * as React from 'react'\nimport { cn } from '../../utils/cn'\n\nexport interface NavbarProps {\n children: React.ReactNode\n className?: string\n style?: React.CSSProperties\n}\n\nexport const Navbar = React.memo<NavbarProps>(function Navbar({\n children,\n className,\n style,\n}) {\n return (\n <nav\n className={cn(\n 'fixed top-0 right-0 bg-card border-b/50 h-16 z-40 w-full shadow-sm',\n className\n )}\n style={style}\n >\n <div className=\"h-full px-4 sm:px-6 lg:pr-8 lg:pl-20\">\n <div className=\"flex justify-between items-center h-full\">\n {children}\n </div>\n </div>\n </nav>\n )\n})\n\nNavbar.displayName = 'Navbar'\n","import * as React from 'react'\nimport { Moon, Sun } from 'lucide-react'\nimport { Button } from '../Button'\n\nexport interface ThemeToggleProps {\n className?: string\n}\n\nexport function ThemeToggle({ className }: ThemeToggleProps) {\n const [isDark, setIsDark] = React.useState(false)\n\n React.useEffect(() => {\n const isDarkMode = document.documentElement.classList.contains('dark')\n setIsDark(isDarkMode)\n }, [])\n\n const toggleTheme = () => {\n setIsDark(!isDark)\n if (isDark) {\n document.documentElement.classList.remove('dark')\n document.documentElement.style.colorScheme = 'light'\n } else {\n document.documentElement.classList.add('dark')\n document.documentElement.style.colorScheme = 'dark'\n }\n }\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={toggleTheme}\n aria-label=\"Alternar tema\"\n className={className}\n >\n {isDark ? (\n <Sun className=\"h-[1.2rem] w-[1.2rem] text-muted-foreground transition-all\" />\n ) : (\n <Moon className=\"h-[1.2rem] w-[1.2rem] text-muted-foreground transition-all\" />\n )}\n <span className=\"sr-only\">Alternar tema</span>\n </Button>\n )\n}\n\nThemeToggle.displayName = 'ThemeToggle'\n","import * as React from 'react'\nimport { Bell } from 'lucide-react'\nimport { Button } from '../Button'\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover'\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '../Card'\n\nexport interface NotificationItem {\n id: string\n icon?: React.ReactNode\n title: string\n description: string\n time: string\n isHighlighted?: boolean\n}\n\nexport interface NavbarNotificationProps {\n notifications?: NotificationItem[]\n onMarkAllAsRead?: () => void\n onViewAll?: () => void\n}\n\nexport function NavbarNotification({\n notifications = [],\n onMarkAllAsRead,\n onViewAll,\n}: NavbarNotificationProps) {\n const hasNotifications = notifications.length > 0\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"rounded-full relative\">\n <Bell className=\"h-5 w-5 text-muted-foreground\" />\n {hasNotifications && (\n <span className=\"absolute top-0 right-0 h-2 w-2 rounded-full bg-red-500\" />\n )}\n <span className=\"sr-only\">Abrir notificações</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[400px] p-0\" align=\"end\">\n <Card className=\"border-0 shadow-none\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-xl font-bold\">Notificações</CardTitle>\n {onMarkAllAsRead && (\n <Button\n variant=\"link\"\n className=\"text-primary hover:text-primary/80\"\n onClick={onMarkAllAsRead}\n >\n Marcar todas como lidas\n </Button>\n )}\n </CardHeader>\n <CardContent className=\"px-0\">\n {notifications.length === 0 ? (\n <div className=\"py-8 text-center text-muted-foreground\">\n Nenhuma notificação\n </div>\n ) : (\n <>\n <div className=\"bg-background/30 px-6 py-2 text-sm font-medium text-gray-500\">\n Hoje\n </div>\n <div className=\"space-y-4 px-6 py-3\">\n {notifications.map((notification) => (\n <div\n key={notification.id}\n className={`flex items-start space-x-4 ${\n notification.isHighlighted\n ? 'rounded-lg bg-primary/5 p-3'\n : ''\n }`}\n >\n {notification.icon && (\n <div\n className={`mt-1 rounded-full p-2 ${\n notification.isHighlighted\n ? 'bg-primary/25'\n : 'bg-gray-500/20'\n }`}\n >\n {notification.icon}\n </div>\n )}\n <div className=\"flex-1\">\n <p className=\"text-sm font-medium\">\n {notification.title}\n </p>\n <p className=\"text-sm text-gray-500\">\n {notification.description}\n </p>\n <p className=\"mt-1 text-xs text-gray-400\">\n {notification.time}\n </p>\n </div>\n </div>\n ))}\n </div>\n </>\n )}\n </CardContent>\n {onViewAll && (\n <CardFooter className=\"justify-center\">\n <Button\n variant=\"link\"\n className=\"text-primary hover:text-primary/80\"\n onClick={onViewAll}\n >\n Ver todas notificações\n </Button>\n </CardFooter>\n )}\n </Card>\n </PopoverContent>\n </Popover>\n )\n}\n\nNavbarNotification.displayName = 'NavbarNotification'\n","import * as React from 'react'\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area'\nimport { cn } from '../../utils/cn'\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 * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\nimport { cn } from '../../utils/cn'\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 React from 'react'\nimport { ChevronDown, CheckCircle2 } from 'lucide-react'\nimport { Button } from '../Button'\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover'\nimport { ScrollArea } from '../ScrollArea'\nimport { Avatar, AvatarFallback } from '../Avatar'\nimport { Separator } from '../Separator'\nimport { Loader } from '../Loader'\n\nexport interface Company {\n id: string\n name: string\n cnpj?: string\n}\n\nexport interface NavbarCompanyProfileProps {\n /** Lista de empresas vinculadas */\n companies: Company[]\n /** ID da empresa ativa */\n activeCompanyId?: string\n /** Callback quando uma empresa é selecionada */\n onCompanySelect?: (companyId: string) => void\n /** Se está carregando as empresas */\n isLoading?: boolean\n /** Função para formatar CNPJ (opcional) */\n formatCnpj?: (cnpj: string) => string\n}\n\nfunction getInitials(name: string): string {\n return name.slice(0, 2).toUpperCase()\n}\n\nfunction defaultFormatCnpj(cnpj: string): string {\n // Format: 00.000.000/0000-00\n return cnpj\n .replace(/\\D/g, '')\n .replace(/^(\\d{2})(\\d)/, '$1.$2')\n .replace(/^(\\d{2})\\.(\\d{3})(\\d)/, '$1.$2.$3')\n .replace(/\\.(\\d{3})(\\d)/, '.$1/$2')\n .replace(/(\\d{4})(\\d)/, '$1-$2')\n .slice(0, 18)\n}\n\nexport function NavbarCompanyProfile({\n companies,\n activeCompanyId,\n onCompanySelect,\n isLoading = false,\n formatCnpj = defaultFormatCnpj,\n}: NavbarCompanyProfileProps) {\n const currentCompany = companies.find(\n (company) => company.id === activeCompanyId\n )\n\n if (!currentCompany) {\n return isLoading ? <Loader variant=\"dots\" /> : null\n }\n\n const handleCompanyClick = (companyId: string) => {\n if (onCompanySelect) {\n onCompanySelect(companyId)\n }\n }\n\n return (\n <div className=\"relative\">\n <div className=\"flex items-center space-x-3 bg-primary/5 text-primary px-2 py-1 rounded-md\">\n <Avatar className=\"h-10 w-10 bg-primary/20\">\n <AvatarFallback className=\"font-semibold\">\n {getInitials(currentCompany.name)}\n </AvatarFallback>\n </Avatar>\n <div className=\"hidden sm:flex sm:flex-col sm:flex-grow\">\n <h3 className=\"font-semibold text-sm\">{currentCompany.name}</h3>\n {currentCompany.cnpj && (\n <p className=\"text-xs text-primary/70\">\n {formatCnpj(currentCompany.cnpj)}\n </p>\n )}\n </div>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 px-2 text-primary hover:bg-primary/20\"\n >\n <span className=\"sr-only\">Abrir menu de empresas</span>\n <ChevronDown className=\"h-4 w-4\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-0\" align=\"end\">\n <div className=\"bg-primary/5 p-4 rounded-t-lg\">\n <h4 className=\"font-semibold text-sm mb-1\">\n Empresas Vinculadas\n </h4>\n <p className=\"text-xs text-muted-foreground\">\n Selecione para mudar de empresa\n </p>\n </div>\n <ScrollArea className=\"h-64\">\n <div className=\"p-4\">\n {isLoading && (\n <div className=\"flex justify-center py-4\">\n <Loader variant=\"spinner\" />\n </div>\n )}\n {!isLoading && companies.length === 0 && (\n <p className=\"text-center text-muted-foreground\">\n Nenhuma empresa encontrada.\n </p>\n )}\n {companies.map((company, index) => (\n <React.Fragment key={company.id}>\n <Button\n variant=\"ghost\"\n className=\"w-full justify-start text-sm mb-1 hover:bg-primary/10\"\n onClick={() => handleCompanyClick(company.id)}\n >\n <div className=\"flex items-center w-full\">\n <Avatar className=\"h-8 w-8 mr-3\">\n <AvatarFallback className=\"bg-primary/20 text-primary text-xs\">\n {getInitials(company.name)}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex-grow text-left\">\n <div className=\"font-medium\">{company.name}</div>\n {company.cnpj && (\n <div className=\"text-xs text-muted-foreground\">\n {formatCnpj(company.cnpj)}\n </div>\n )}\n </div>\n {company.id === activeCompanyId && (\n <CheckCircle2 className=\"h-4 w-4 text-primary ml-2\" />\n )}\n </div>\n </Button>\n {index < companies.length - 1 && (\n <Separator className=\"my-2\" />\n )}\n </React.Fragment>\n ))}\n </div>\n </ScrollArea>\n </PopoverContent>\n </Popover>\n </div>\n </div>\n )\n}\n\nNavbarCompanyProfile.displayName = 'NavbarCompanyProfile'\n","import * as React from 'react'\nimport { Bell, LogOut, Settings, User } from 'lucide-react'\nimport { Avatar, AvatarFallback, AvatarImage } from '../Avatar'\nimport { Button } from '../Button'\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover'\n\nexport interface UserMenuItemConfig {\n icon?: React.ReactNode\n label: string\n onClick?: () => void\n href?: string\n variant?: 'default' | 'destructive'\n}\n\nexport interface NavbarUserMenuProps {\n /** Nome do usuário */\n name: string\n /** Email do usuário */\n email?: string\n /** URL do avatar */\n avatarUrl?: string\n /** Se está no modo colapsado (só mostra avatar) */\n isCollapsed?: boolean\n /** Itens do menu */\n menuItems?: UserMenuItemConfig[]\n /** Children customizado para o menu */\n children?: React.ReactNode\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase()\n .slice(0, 2)\n}\n\nconst defaultMenuItems: UserMenuItemConfig[] = [\n { icon: <User className=\"h-4 w-4\" />, label: 'Ver Perfil' },\n { icon: <Settings className=\"h-4 w-4\" />, label: 'Configurações' },\n { icon: <Bell className=\"h-4 w-4\" />, label: 'Atualizações' },\n { icon: <LogOut className=\"h-4 w-4\" />, label: 'Sair', variant: 'destructive' },\n]\n\nexport function NavbarUserMenu({\n name,\n email,\n avatarUrl,\n isCollapsed = false,\n menuItems = defaultMenuItems,\n children,\n}: NavbarUserMenuProps) {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"ghost\" className=\"w-full justify-start p-2\">\n <Avatar className=\"h-8 w-8\">\n {avatarUrl && <AvatarImage src={avatarUrl} alt={name} />}\n <AvatarFallback>{getInitials(name)}</AvatarFallback>\n </Avatar>\n {!isCollapsed && (\n <div className=\"ml-2 text-left\">\n <p className=\"text-sm font-medium\">{name}</p>\n {email && (\n <p className=\"text-xs text-muted-foreground\">{email}</p>\n )}\n </div>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-56 p-2\" align=\"end\">\n {children ? (\n children\n ) : (\n <div className=\"space-y-1\">\n {menuItems.map((item, index) => {\n const content = (\n <Button\n key={index}\n variant=\"ghost\"\n className={`w-full justify-start text-sm ${\n item.variant === 'destructive' ? 'text-red-500' : ''\n }`}\n onClick={item.onClick}\n >\n {item.icon && (\n <span className=\"mr-2\">{item.icon}</span>\n )}\n {item.label}\n </Button>\n )\n\n if (item.href) {\n return (\n <a\n key={index}\n href={item.href}\n className=\"flex flex-col items-center text-center\"\n >\n {content}\n </a>\n )\n }\n\n return content\n })}\n </div>\n )}\n </PopoverContent>\n </Popover>\n )\n}\n\nNavbarUserMenu.displayName = 'NavbarUserMenu'\n","import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { ChevronRight, MoreHorizontal } from 'lucide-react'\nimport { cn } from '../../utils/cn'\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-semibold text-primary', 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=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis'\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","'use client'\r\n\r\nimport * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { LucideIcon } from 'lucide-react'\r\n\r\n// ============================================\r\n// ROOT COMPONENT\r\n// ============================================\r\n\r\ninterface SectionHeaderRootProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * Adds a gradient from primary color on the left side\r\n * @default true\r\n */\r\n gradient?: boolean\r\n /**\r\n * Adds bottom border\r\n * @default true\r\n */\r\n bordered?: boolean\r\n}\r\n\r\nfunction SectionHeaderRoot({\r\n children,\r\n className,\r\n gradient = true,\r\n bordered = true,\r\n ...props\r\n}: SectionHeaderRootProps) {\r\n return (\r\n <div\r\n className={cn(\r\n 'px-6 py-4',\r\n gradient && 'bg-gradient-to-r from-primary/5 to-transparent',\r\n bordered && 'border-b border-border/50',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"flex items-center justify-between gap-4\">\r\n <div className=\"flex items-center gap-3 min-w-0 flex-1\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nSectionHeaderRoot.displayName = 'SectionHeader'\r\n\r\n// ============================================\r\n// ICON COMPONENT\r\n// ============================================\r\n\r\ninterface SectionHeaderIconProps {\r\n icon: LucideIcon\r\n className?: string\r\n}\r\n\r\nfunction SectionHeaderIcon({ icon: Icon, className }: SectionHeaderIconProps) {\r\n return (\r\n <div className={cn('p-2.5 rounded-xl bg-primary/10 shrink-0', className)}>\r\n <Icon className=\"h-5 w-5 text-primary\" />\r\n </div>\r\n )\r\n}\r\n\r\nSectionHeaderIcon.displayName = 'SectionHeader.Icon'\r\n\r\n// ============================================\r\n// CONTENT WRAPPER (for title + subtitle)\r\n// ============================================\r\n\r\ninterface SectionHeaderContentProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nfunction SectionHeaderContent({ children, className, ...props }: SectionHeaderContentProps) {\r\n return (\r\n <div className={cn('min-w-0 flex-1', className)} {...props}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nSectionHeaderContent.displayName = 'SectionHeader.Content'\r\n\r\n// ============================================\r\n// TITLE COMPONENT\r\n// ============================================\r\n\r\ninterface SectionHeaderTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\r\n\r\nfunction SectionHeaderTitle({ children, className, ...props }: SectionHeaderTitleProps) {\r\n return (\r\n <h3\r\n className={cn('font-semibold text-foreground truncate', className)}\r\n {...props}\r\n >\r\n {children}\r\n </h3>\r\n )\r\n}\r\n\r\nSectionHeaderTitle.displayName = 'SectionHeader.Title'\r\n\r\n// ============================================\r\n// SUBTITLE COMPONENT\r\n// ============================================\r\n\r\ninterface SectionHeaderSubtitleProps extends React.HTMLAttributes<HTMLParagraphElement> {}\r\n\r\nfunction SectionHeaderSubtitle({ children, className, ...props }: SectionHeaderSubtitleProps) {\r\n return (\r\n <p\r\n className={cn('text-sm text-muted-foreground truncate', className)}\r\n {...props}\r\n >\r\n {children}\r\n </p>\r\n )\r\n}\r\n\r\nSectionHeaderSubtitle.displayName = 'SectionHeader.Subtitle'\r\n\r\n// ============================================\r\n// ACTIONS COMPONENT\r\n// ============================================\r\n\r\ninterface SectionHeaderActionsProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nfunction SectionHeaderActions({ children, className, ...props }: SectionHeaderActionsProps) {\r\n return (\r\n <div\r\n className={cn('flex items-center gap-2 shrink-0 ml-auto', className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nSectionHeaderActions.displayName = 'SectionHeader.Actions'\r\n\r\n// ============================================\r\n// BADGE COMPONENT (for count display)\r\n// ============================================\r\n\r\ninterface SectionHeaderBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n variant?: 'default' | 'muted'\r\n}\r\n\r\nfunction SectionHeaderBadge({\r\n children,\r\n className,\r\n variant = 'muted',\r\n ...props\r\n}: SectionHeaderBadgeProps) {\r\n return (\r\n <span\r\n className={cn(\r\n 'text-xs px-2 py-1 rounded-full shrink-0',\r\n variant === 'muted' && 'bg-muted text-muted-foreground',\r\n variant === 'default' && 'bg-primary/10 text-primary',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </span>\r\n )\r\n}\r\n\r\nSectionHeaderBadge.displayName = 'SectionHeader.Badge'\r\n\r\n// ============================================\r\n// COMPOUND COMPONENT EXPORT\r\n// ============================================\r\n\r\nexport const SectionHeader = Object.assign(SectionHeaderRoot, {\r\n Icon: SectionHeaderIcon,\r\n Content: SectionHeaderContent,\r\n Title: SectionHeaderTitle,\r\n Subtitle: SectionHeaderSubtitle,\r\n Actions: SectionHeaderActions,\r\n Badge: SectionHeaderBadge,\r\n})\r\n\r\n// Export individual components for flexibility\r\nexport {\r\n SectionHeaderRoot,\r\n SectionHeaderIcon,\r\n SectionHeaderContent,\r\n SectionHeaderTitle,\r\n SectionHeaderSubtitle,\r\n SectionHeaderActions,\r\n SectionHeaderBadge,\r\n}\r\n\r\n// Export types\r\nexport type {\r\n SectionHeaderRootProps,\r\n SectionHeaderIconProps,\r\n SectionHeaderContentProps,\r\n SectionHeaderTitleProps,\r\n SectionHeaderSubtitleProps,\r\n SectionHeaderActionsProps,\r\n SectionHeaderBadgeProps,\r\n}\r\n","import * as React from 'react'\r\nimport type { KanbanContextValue } from './types'\r\n\r\nconst KanbanContext = React.createContext<KanbanContextValue | null>(null)\r\n\r\nexport function useKanban(): KanbanContextValue {\r\n const context = React.useContext(KanbanContext)\r\n if (!context) {\r\n throw new Error('useKanban must be used within a Kanban.Board component')\r\n }\r\n return context\r\n}\r\n\r\nexport function useKanbanOptional(): KanbanContextValue | null {\r\n return React.useContext(KanbanContext)\r\n}\r\n\r\ninterface KanbanProviderProps {\r\n children: React.ReactNode\r\n value: KanbanContextValue\r\n}\r\n\r\nexport function KanbanProvider({ children, value }: KanbanProviderProps) {\r\n return (\r\n <KanbanContext.Provider value={value}>\r\n {children}\r\n </KanbanContext.Provider>\r\n )\r\n}\r\n\r\nexport { KanbanContext }\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { KanbanProvider } from './KanbanContext'\r\nimport type { KanbanBoardProps, KanbanContextValue, KanbanDragResult } from './types'\r\n\r\nexport function KanbanBoard({\r\n children,\r\n onDragEnd,\r\n onDragStart,\r\n className,\r\n}: KanbanBoardProps) {\r\n const [isDragging, setIsDragging] = React.useState(false)\r\n const [draggedItemId, setDraggedItemId] = React.useState<string | null>(null)\r\n const [sourceColumnId, setSourceColumnId] = React.useState<string | null>(null)\r\n const [hoveredColumnId, setHoveredColumnId] = React.useState<string | null>(null)\r\n\r\n // Store drop validators for each column\r\n const dropValidatorsRef = React.useRef<Map<string, (itemId: string, sourceColumnId: string) => boolean>>(new Map())\r\n\r\n const registerDropValidator = React.useCallback((columnId: string, validator: (itemId: string, sourceColumnId: string) => boolean) => {\r\n dropValidatorsRef.current.set(columnId, validator)\r\n }, [])\r\n\r\n const unregisterDropValidator = React.useCallback((columnId: string) => {\r\n dropValidatorsRef.current.delete(columnId)\r\n }, [])\r\n\r\n const canDropInColumn = React.useCallback((columnId: string) => {\r\n if (!draggedItemId || !sourceColumnId) return false\r\n if (columnId === sourceColumnId) return false\r\n\r\n const validator = dropValidatorsRef.current.get(columnId)\r\n if (validator) {\r\n return validator(draggedItemId, sourceColumnId)\r\n }\r\n return true // Allow by default if no validator\r\n }, [draggedItemId, sourceColumnId])\r\n\r\n // Handle drag start from card\r\n const handleDragStart = React.useCallback((itemId: string, colId: string) => {\r\n setIsDragging(true)\r\n setDraggedItemId(itemId)\r\n setSourceColumnId(colId)\r\n onDragStart?.(itemId, colId)\r\n }, [onDragStart])\r\n\r\n // Handle drop on column\r\n const handleDrop = React.useCallback((destinationColumnId: string) => {\r\n if (draggedItemId && sourceColumnId && destinationColumnId !== sourceColumnId) {\r\n if (canDropInColumn(destinationColumnId)) {\r\n const result: KanbanDragResult = {\r\n itemId: draggedItemId,\r\n sourceColumnId,\r\n destinationColumnId,\r\n }\r\n onDragEnd?.(result)\r\n }\r\n }\r\n // Reset state\r\n setIsDragging(false)\r\n setDraggedItemId(null)\r\n setSourceColumnId(null)\r\n setHoveredColumnId(null)\r\n }, [draggedItemId, sourceColumnId, canDropInColumn, onDragEnd])\r\n\r\n // Handle drag end (cancelled or dropped outside)\r\n const handleDragEnd = React.useCallback(() => {\r\n setIsDragging(false)\r\n setDraggedItemId(null)\r\n setSourceColumnId(null)\r\n setHoveredColumnId(null)\r\n }, [])\r\n\r\n const contextValue = React.useMemo<KanbanContextValue>(() => ({\r\n isDragging,\r\n draggedItemId,\r\n sourceColumnId,\r\n hoveredColumnId,\r\n setHoveredColumnId,\r\n canDropInColumn,\r\n registerDropValidator,\r\n unregisterDropValidator,\r\n }), [isDragging, draggedItemId, sourceColumnId, hoveredColumnId, canDropInColumn, registerDropValidator, unregisterDropValidator])\r\n\r\n return (\r\n <KanbanProvider value={contextValue}>\r\n <div\r\n className={cn(\r\n 'flex gap-4 overflow-x-auto pb-4',\r\n className\r\n )}\r\n onDragEnd={handleDragEnd}\r\n data-kanban-board\r\n data-onstart={handleDragStart.toString()}\r\n data-ondrop={handleDrop.toString()}\r\n >\r\n <KanbanBoardInternalContext.Provider value={{ handleDragStart, handleDrop }}>\r\n {children}\r\n </KanbanBoardInternalContext.Provider>\r\n </div>\r\n </KanbanProvider>\r\n )\r\n}\r\n\r\n// Internal context for drag handlers (not exposed to consumers)\r\ninterface KanbanBoardInternalContextValue {\r\n handleDragStart: (itemId: string, columnId: string) => void\r\n handleDrop: (columnId: string) => void\r\n}\r\n\r\nconst KanbanBoardInternalContext = React.createContext<KanbanBoardInternalContextValue | null>(null)\r\n\r\nexport function useKanbanBoard(): KanbanBoardInternalContextValue {\r\n const context = React.useContext(KanbanBoardInternalContext)\r\n if (!context) {\r\n throw new Error('useKanbanBoard must be used within a Kanban.Board component')\r\n }\r\n return context\r\n}\r\n\r\nKanbanBoard.displayName = 'KanbanBoard'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useKanban } from './KanbanContext'\r\nimport { useKanbanBoard } from './KanbanBoard'\r\nimport type { KanbanColumnProps } from './types'\r\n\r\nexport function KanbanColumn({\r\n id,\r\n title,\r\n count,\r\n children,\r\n className,\r\n headerClassName,\r\n emptyMessage = 'Nenhum item',\r\n footer,\r\n canDrop,\r\n}: KanbanColumnProps) {\r\n const { isDragging, sourceColumnId, hoveredColumnId, setHoveredColumnId, canDropInColumn, registerDropValidator, unregisterDropValidator } = useKanban()\r\n const { handleDrop } = useKanbanBoard()\r\n\r\n // Register drop validator if provided\r\n React.useEffect(() => {\r\n if (canDrop) {\r\n registerDropValidator(id, canDrop)\r\n return () => unregisterDropValidator(id)\r\n }\r\n }, [id, canDrop, registerDropValidator, unregisterDropValidator])\r\n\r\n const isValidDropTarget = isDragging && sourceColumnId !== id && canDropInColumn(id)\r\n const isInvalidDropTarget = isDragging && sourceColumnId !== id && !canDropInColumn(id)\r\n const isHovered = hoveredColumnId === id\r\n\r\n const handleDragOver = React.useCallback((e: React.DragEvent) => {\r\n e.preventDefault()\r\n if (isValidDropTarget) {\r\n e.dataTransfer.dropEffect = 'move'\r\n setHoveredColumnId(id)\r\n } else {\r\n e.dataTransfer.dropEffect = 'none'\r\n }\r\n }, [isValidDropTarget, setHoveredColumnId, id])\r\n\r\n const handleDragLeave = React.useCallback((e: React.DragEvent) => {\r\n // Only handle if leaving the column itself, not children\r\n if (e.currentTarget === e.target || !e.currentTarget.contains(e.relatedTarget as Node)) {\r\n setHoveredColumnId(null)\r\n }\r\n }, [setHoveredColumnId])\r\n\r\n const handleDropEvent = React.useCallback((e: React.DragEvent) => {\r\n e.preventDefault()\r\n if (isValidDropTarget) {\r\n handleDrop(id)\r\n }\r\n }, [isValidDropTarget, handleDrop, id])\r\n\r\n const childCount = React.Children.count(children)\r\n const displayCount = count ?? childCount\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex flex-col min-w-[300px] max-w-[340px] rounded-2xl',\r\n 'bg-muted/20 dark:bg-muted/10',\r\n 'transition-all duration-200',\r\n isValidDropTarget && 'ring-2 ring-primary/40 bg-primary/5',\r\n isInvalidDropTarget && 'opacity-40',\r\n isHovered && isValidDropTarget && 'ring-primary/60 bg-primary/10 scale-[1.01]',\r\n className\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDropEvent}\r\n data-kanban-column={id}\r\n >\r\n {/* Column Header */}\r\n <div\r\n className={cn(\r\n 'flex items-center gap-2 px-4 py-3',\r\n headerClassName\r\n )}\r\n >\r\n <span className=\"text-muted-foreground\">↻</span>\r\n <h3 className=\"text-sm font-medium text-foreground flex-1\">{title}</h3>\r\n <span className=\"text-sm text-muted-foreground\">{displayCount}</span>\r\n <button className=\"p-1 rounded-md hover:bg-muted/50 text-muted-foreground transition-colors\">\r\n <span className=\"text-sm\">⋯</span>\r\n </button>\r\n <button className=\"p-1 rounded-md hover:bg-muted/50 text-muted-foreground transition-colors\">\r\n <span className=\"text-sm\">+</span>\r\n </button>\r\n </div>\r\n\r\n {/* Column Content */}\r\n <div\r\n className={cn(\r\n 'flex-1 px-2 pb-2 space-y-3 min-h-[200px] max-h-[calc(100vh-200px)] overflow-y-auto',\r\n isHovered && isValidDropTarget && 'bg-primary/5'\r\n )}\r\n >\r\n {childCount === 0 ? (\r\n <div className=\"flex items-center justify-center h-32 text-sm text-muted-foreground/60\">\r\n {emptyMessage}\r\n </div>\r\n ) : (\r\n children\r\n )}\r\n </div>\r\n\r\n {/* Column Footer */}\r\n {footer && (\r\n <div className=\"px-2 pb-3\">\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nKanbanColumn.displayName = 'KanbanColumn'\r\n","import * as React from 'react'\r\nimport { cn } from '../../utils/cn'\r\nimport { useKanban } from './KanbanContext'\r\nimport { useKanbanBoard } from './KanbanBoard'\r\nimport type { KanbanCardProps } from './types'\r\n\r\nexport function KanbanCard({\r\n id,\r\n columnId,\r\n children,\r\n className,\r\n disabled = false,\r\n}: KanbanCardProps) {\r\n const { draggedItemId } = useKanban()\r\n const { handleDragStart } = useKanbanBoard()\r\n\r\n const isThisCardDragging = draggedItemId === id\r\n\r\n const handleDragStartEvent = React.useCallback((e: React.DragEvent) => {\r\n if (disabled) {\r\n e.preventDefault()\r\n return\r\n }\r\n e.dataTransfer.effectAllowed = 'move'\r\n e.dataTransfer.setData('text/plain', id)\r\n // Small delay to allow the drag image to be captured\r\n setTimeout(() => {\r\n handleDragStart(id, columnId)\r\n }, 0)\r\n }, [id, columnId, handleDragStart, disabled])\r\n\r\n return (\r\n <div\r\n draggable={!disabled}\r\n onDragStart={handleDragStartEvent}\r\n className={cn(\r\n 'group relative rounded-2xl border border-border/60 bg-card p-4',\r\n 'shadow-[0_2px_8px_-2px_rgba(0,0,0,0.08),0_4px_16px_-4px_rgba(0,0,0,0.04)]',\r\n 'transition-all duration-200',\r\n !disabled && 'cursor-grab hover:shadow-[0_4px_16px_-4px_rgba(0,0,0,0.12),0_8px_24px_-8px_rgba(0,0,0,0.08)] hover:border-border',\r\n !disabled && 'active:cursor-grabbing active:scale-[0.98]',\r\n isThisCardDragging && 'opacity-50 scale-[0.96] shadow-xl border-primary ring-2 ring-primary/20',\r\n disabled && 'cursor-not-allowed opacity-60',\r\n className\r\n )}\r\n data-kanban-card={id}\r\n data-column={columnId}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nKanbanCard.displayName = 'KanbanCard'\r\n","import { KanbanBoard } from './KanbanBoard'\r\nimport { KanbanColumn } from './KanbanColumn'\r\nimport { KanbanCard } from './KanbanCard'\r\n\r\n/**\r\n * Kanban - A compound component for building Kanban boards\r\n *\r\n * @example\r\n * ```tsx\r\n * <Kanban.Board onDragEnd={handleDragEnd}>\r\n * <Kanban.Column id=\"pending\" title=\"Pendente\" count={3}>\r\n * <Kanban.Card id=\"1\" columnId=\"pending\">\r\n * <div>Card content</div>\r\n * </Kanban.Card>\r\n * </Kanban.Column>\r\n * <Kanban.Column\r\n * id=\"done\"\r\n * title=\"Concluido\"\r\n * canDrop={(itemId, sourceColumnId) => sourceColumnId === 'in-progress'}\r\n * >\r\n * <Kanban.Card id=\"2\" columnId=\"done\">\r\n * <div>Card content</div>\r\n * </Kanban.Card>\r\n * </Kanban.Column>\r\n * </Kanban.Board>\r\n * ```\r\n */\r\nexport const Kanban = {\r\n Board: KanbanBoard,\r\n Column: KanbanColumn,\r\n Card: KanbanCard,\r\n}\r\n","'use client';\r\n\r\nimport {\r\n createContext,\r\n useContext,\r\n useState,\r\n useCallback,\r\n useMemo,\r\n type ReactNode,\r\n} from 'react';\r\nimport type { FieldValues, Path } from 'react-hook-form';\r\nimport type { WizardContextValue, WizardProps } from './types';\r\n\r\n// Create context with undefined default\r\nconst WizardContext = createContext<WizardContextValue<any> | undefined>(undefined);\r\n\r\n/**\r\n * Hook to access wizard context\r\n * @throws Error if used outside of Wizard component\r\n */\r\nexport function useWizardContext<T extends FieldValues = FieldValues>(): WizardContextValue<T> {\r\n const context = useContext(WizardContext) as WizardContextValue<T> | undefined;\r\n\r\n if (context === undefined) {\r\n throw new Error('useWizardContext must be used within a Wizard component');\r\n }\r\n\r\n return context;\r\n}\r\n\r\n/**\r\n * Optional hook that returns undefined if outside wizard context\r\n */\r\nexport function useWizardContextOptional<T extends FieldValues = FieldValues>(): WizardContextValue<T> | undefined {\r\n return useContext(WizardContext) as WizardContextValue<T> | undefined;\r\n}\r\n\r\ninterface WizardProviderProps<T extends FieldValues> extends WizardProps<T> {\r\n children: ReactNode;\r\n}\r\n\r\n/**\r\n * Wizard context provider component\r\n */\r\nexport function WizardProvider<T extends FieldValues>({\r\n children,\r\n form,\r\n steps,\r\n initialStep = 0,\r\n onStepChange,\r\n validateOnNext = true,\r\n allowJumpToStep = false,\r\n}: WizardProviderProps<T>) {\r\n // Track completed steps\r\n const [completedSteps, setCompletedSteps] = useState<Set<number>>(new Set());\r\n\r\n // Calculate active (visible) steps based on form data\r\n const activeSteps = useMemo(() => {\r\n const formValues = form.getValues();\r\n return steps.filter((step) => {\r\n if (typeof step.isHidden === 'function') {\r\n return !step.isHidden(formValues);\r\n }\r\n return !step.isHidden;\r\n });\r\n }, [steps, form]);\r\n\r\n // Current step state (index within activeSteps)\r\n const [currentStep, setCurrentStep] = useState(() => {\r\n // Ensure initial step is within bounds\r\n return Math.min(Math.max(0, initialStep), activeSteps.length - 1);\r\n });\r\n\r\n // Computed values\r\n const totalSteps = activeSteps.length;\r\n const isFirstStep = currentStep === 0;\r\n const isLastStep = currentStep === totalSteps - 1;\r\n const progress = totalSteps > 0 ? Math.round(((currentStep + 1) / totalSteps) * 100) : 0;\r\n const currentStepConfig = activeSteps[currentStep];\r\n\r\n /**\r\n * Get step configuration by index\r\n */\r\n const getStepConfig = useCallback(\r\n (index: number) => activeSteps[index],\r\n [activeSteps]\r\n );\r\n\r\n /**\r\n * Get step configuration by name\r\n */\r\n const getStepByName = useCallback(\r\n (name: string) => activeSteps.find((step) => step.name === name || step.id === name),\r\n [activeSteps]\r\n );\r\n\r\n /**\r\n * Get step index by name\r\n */\r\n const getStepIndexByName = useCallback(\r\n (name: string) => activeSteps.findIndex((step) => step.name === name || step.id === name),\r\n [activeSteps]\r\n );\r\n\r\n /**\r\n * Check if step is completed\r\n */\r\n const isStepCompleted = useCallback(\r\n (index: number) => completedSteps.has(index),\r\n [completedSteps]\r\n );\r\n\r\n /**\r\n * Check if step has errors\r\n */\r\n const hasStepErrors = useCallback(\r\n (index: number) => {\r\n const stepConfig = activeSteps[index];\r\n if (!stepConfig?.fields) return false;\r\n\r\n const errors = form.formState.errors;\r\n return stepConfig.fields.some((field) => {\r\n const fieldPath = field as string;\r\n return fieldPath in errors;\r\n });\r\n },\r\n [activeSteps, form.formState.errors]\r\n );\r\n\r\n /**\r\n * Validate current step fields\r\n */\r\n const validateCurrentStep = useCallback(async (): Promise<boolean> => {\r\n const stepConfig = currentStepConfig;\r\n\r\n // If no validation schema, consider valid\r\n if (!stepConfig?.validationSchema) {\r\n return true;\r\n }\r\n\r\n const formValues = form.getValues();\r\n const result = await stepConfig.validationSchema.safeParseAsync(formValues);\r\n\r\n if (!result.success) {\r\n // Trigger validation only for fields in current step\r\n // This respects the form's mode (onTouched, onBlur, etc.)\r\n if (stepConfig.fields) {\r\n await Promise.all(\r\n stepConfig.fields.map((field) => form.trigger(field as Path<T>))\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n // Clear errors for current step fields on success\r\n if (stepConfig.fields) {\r\n stepConfig.fields.forEach((field) => {\r\n form.clearErrors(field as Path<T>);\r\n });\r\n }\r\n\r\n return true;\r\n }, [currentStepConfig, form]);\r\n\r\n /**\r\n * Navigate to next step\r\n */\r\n const goToNextStep = useCallback(async (): Promise<boolean> => {\r\n // Already at last step\r\n if (isLastStep) {\r\n return false;\r\n }\r\n\r\n // Validate if required\r\n if (validateOnNext) {\r\n const isValid = await validateCurrentStep();\r\n if (!isValid) {\r\n return false;\r\n }\r\n }\r\n\r\n // Mark current step as completed\r\n setCompletedSteps((prev) => new Set([...prev, currentStep]));\r\n\r\n // Advance to next step\r\n const nextStep = currentStep + 1;\r\n setCurrentStep(nextStep);\r\n onStepChange?.(nextStep, 'next');\r\n\r\n return true;\r\n }, [isLastStep, validateOnNext, validateCurrentStep, currentStep, onStepChange]);\r\n\r\n /**\r\n * Navigate to previous step\r\n */\r\n const goToPrevStep = useCallback(() => {\r\n if (isFirstStep) {\r\n return;\r\n }\r\n\r\n const prevStep = currentStep - 1;\r\n setCurrentStep(prevStep);\r\n onStepChange?.(prevStep, 'prev');\r\n }, [isFirstStep, currentStep, onStepChange]);\r\n\r\n /**\r\n * Navigate to specific step\r\n */\r\n const goToStep = useCallback(\r\n async (targetStep: number): Promise<boolean> => {\r\n // Validate target step is in bounds\r\n if (targetStep < 0 || targetStep >= totalSteps) {\r\n return false;\r\n }\r\n\r\n // Check if jumping is allowed\r\n if (!allowJumpToStep && targetStep > currentStep) {\r\n // Can only jump forward if all previous steps are completed\r\n for (let i = currentStep; i < targetStep; i++) {\r\n if (!completedSteps.has(i)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // If jumping backward, always allowed\r\n if (targetStep < currentStep) {\r\n setCurrentStep(targetStep);\r\n onStepChange?.(targetStep, 'jump');\r\n return true;\r\n }\r\n\r\n // If jumping forward, validate current step first\r\n if (validateOnNext && targetStep > currentStep) {\r\n const isValid = await validateCurrentStep();\r\n if (!isValid) {\r\n return false;\r\n }\r\n // Mark current as completed\r\n setCompletedSteps((prev) => new Set([...prev, currentStep]));\r\n }\r\n\r\n setCurrentStep(targetStep);\r\n onStepChange?.(targetStep, 'jump');\r\n return true;\r\n },\r\n [totalSteps, allowJumpToStep, currentStep, completedSteps, validateOnNext, validateCurrentStep, onStepChange]\r\n );\r\n\r\n /**\r\n * Reset wizard to initial state\r\n */\r\n const reset = useCallback(() => {\r\n setCurrentStep(Math.min(Math.max(0, initialStep), activeSteps.length - 1));\r\n setCompletedSteps(new Set());\r\n form.reset();\r\n }, [initialStep, activeSteps.length, form]);\r\n\r\n // Build context value\r\n const contextValue: WizardContextValue<T> = useMemo(\r\n () => ({\r\n // State\r\n currentStep,\r\n totalSteps,\r\n activeSteps,\r\n allSteps: steps,\r\n\r\n // Computed\r\n isFirstStep,\r\n isLastStep,\r\n progress,\r\n\r\n // Navigation\r\n goToNextStep,\r\n goToPrevStep,\r\n goToStep,\r\n reset,\r\n\r\n // Validation\r\n validateCurrentStep,\r\n isStepCompleted,\r\n hasStepErrors,\r\n\r\n // Form\r\n form,\r\n\r\n // Step info\r\n currentStepConfig,\r\n getStepConfig,\r\n getStepByName,\r\n getStepIndexByName,\r\n\r\n // Settings\r\n allowJumpToStep,\r\n }),\r\n [\r\n currentStep,\r\n totalSteps,\r\n activeSteps,\r\n steps,\r\n isFirstStep,\r\n isLastStep,\r\n progress,\r\n goToNextStep,\r\n goToPrevStep,\r\n goToStep,\r\n reset,\r\n validateCurrentStep,\r\n isStepCompleted,\r\n hasStepErrors,\r\n form,\r\n currentStepConfig,\r\n getStepConfig,\r\n getStepByName,\r\n getStepIndexByName,\r\n allowJumpToStep,\r\n ]\r\n );\r\n\r\n return (\r\n <WizardContext.Provider value={contextValue}>\r\n {children}\r\n </WizardContext.Provider>\r\n );\r\n}\r\n\r\nexport { WizardContext };\r\n","'use client';\r\n\r\nimport { Check, AlertCircle } from 'lucide-react';\r\nimport { cn } from '../../utils/cn';\r\nimport type { WizardStepIndicatorProps } from './types';\r\n\r\n/**\r\n * Size configurations for step indicator\r\n */\r\nconst sizeConfig = {\r\n sm: {\r\n circle: 'h-7 w-7 text-xs',\r\n icon: 'h-3.5 w-3.5',\r\n label: 'text-xs',\r\n description: 'text-xs',\r\n gap: 'gap-1.5',\r\n },\r\n md: {\r\n circle: 'h-9 w-9 text-sm',\r\n icon: 'h-4 w-4',\r\n label: 'text-sm',\r\n description: 'text-xs',\r\n gap: 'gap-2',\r\n },\r\n lg: {\r\n circle: 'h-11 w-11 text-base',\r\n icon: 'h-5 w-5',\r\n label: 'text-base',\r\n description: 'text-sm',\r\n gap: 'gap-2.5',\r\n },\r\n};\r\n\r\n/**\r\n * State-based styling for step indicator\r\n */\r\nconst stateStyles = {\r\n completed: {\r\n circle: 'bg-green-500 text-white border-green-500',\r\n label: 'text-green-600 dark:text-green-400',\r\n description: 'text-muted-foreground',\r\n },\r\n current: {\r\n circle: 'bg-primary text-primary-foreground border-primary ring-4 ring-primary/20',\r\n label: 'text-primary font-semibold',\r\n description: 'text-muted-foreground',\r\n },\r\n pending: {\r\n circle: 'bg-background text-muted-foreground border-muted-foreground/30',\r\n label: 'text-muted-foreground',\r\n description: 'text-muted-foreground/60',\r\n },\r\n error: {\r\n circle: 'bg-destructive text-destructive-foreground border-destructive',\r\n label: 'text-destructive',\r\n description: 'text-destructive/60',\r\n },\r\n disabled: {\r\n circle: 'bg-muted text-muted-foreground/50 border-muted cursor-not-allowed',\r\n label: 'text-muted-foreground/50',\r\n description: 'text-muted-foreground/30',\r\n },\r\n};\r\n\r\n/**\r\n * Individual step indicator component\r\n *\r\n * Displays a step with:\r\n * - Circle with number/icon/checkmark\r\n * - Optional label\r\n * - Optional description\r\n */\r\nexport function WizardStepIndicator({\r\n step,\r\n index,\r\n state,\r\n showNumber = false,\r\n showDescription = false,\r\n size = 'md',\r\n isClickable = false,\r\n onClick,\r\n}: WizardStepIndicatorProps) {\r\n const config = sizeConfig[size];\r\n const styles = stateStyles[state];\r\n const Icon = step.icon;\r\n\r\n /**\r\n * Render the content inside the circle\r\n */\r\n const renderCircleContent = () => {\r\n // Completed state shows checkmark\r\n if (state === 'completed') {\r\n return <Check className={config.icon} strokeWidth={3} />;\r\n }\r\n\r\n // Error state shows alert icon\r\n if (state === 'error') {\r\n return <AlertCircle className={config.icon} />;\r\n }\r\n\r\n // Show icon if provided and not showing numbers\r\n if (Icon && !showNumber) {\r\n return <Icon className={config.icon} />;\r\n }\r\n\r\n // Show step number (1-indexed)\r\n return <span>{index + 1}</span>;\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center',\r\n config.gap,\r\n isClickable && 'cursor-pointer group'\r\n )}\r\n onClick={isClickable ? onClick : undefined}\r\n role={isClickable ? 'button' : undefined}\r\n tabIndex={isClickable ? 0 : undefined}\r\n onKeyDown={\r\n isClickable\r\n ? (e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n onClick?.();\r\n }\r\n }\r\n : undefined\r\n }\r\n aria-current={state === 'current' ? 'step' : undefined}\r\n >\r\n {/* Circle indicator */}\r\n <div\r\n className={cn(\r\n 'flex items-center justify-center rounded-full border-2 transition-all duration-200',\r\n config.circle,\r\n styles.circle,\r\n isClickable && 'group-hover:ring-4 group-hover:ring-primary/10'\r\n )}\r\n >\r\n {renderCircleContent()}\r\n </div>\r\n\r\n {/* Label and description */}\r\n {(step.label || showDescription) && (\r\n <div className=\"flex flex-col items-center text-center max-w-[120px]\">\r\n {step.label && (\r\n <span\r\n className={cn(\r\n 'leading-tight transition-colors duration-200',\r\n config.label,\r\n styles.label\r\n )}\r\n >\r\n {step.label}\r\n </span>\r\n )}\r\n {showDescription && step.description && (\r\n <span\r\n className={cn(\r\n 'leading-tight mt-0.5',\r\n config.description,\r\n styles.description\r\n )}\r\n >\r\n {step.description}\r\n </span>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { cn } from '../../utils/cn';\r\nimport type { WizardStepConnectorProps } from './types';\r\n\r\n/**\r\n * Connector line between wizard steps\r\n *\r\n * Changes color based on completion state:\r\n * - Completed: primary/green color\r\n * - Pending: muted gray\r\n */\r\nexport function WizardStepConnector({\r\n isCompleted = false,\r\n variant = 'horizontal',\r\n className,\r\n}: WizardStepConnectorProps) {\r\n const isHorizontal = variant === 'horizontal';\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'transition-colors duration-300',\r\n isHorizontal\r\n ? 'flex-1 h-0.5 min-w-[24px] mx-2'\r\n : 'w-0.5 min-h-[24px] my-2 ml-[18px]',\r\n isCompleted ? 'bg-green-500' : 'bg-muted-foreground/20',\r\n className\r\n )}\r\n aria-hidden=\"true\"\r\n />\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { cn } from '../../utils/cn';\r\nimport { useWizardContext } from './WizardContext';\r\nimport { WizardStepIndicator } from './WizardStepIndicator';\r\nimport { WizardStepConnector } from './WizardStepConnector';\r\nimport type { WizardStepsProps, StepState } from './types';\r\n\r\n/**\r\n * Visual step indicators component\r\n *\r\n * Displays the wizard steps with their current states:\r\n * - Completed (checkmark, green)\r\n * - Current (highlighted, primary)\r\n * - Pending (muted)\r\n * - Error (red indicator)\r\n * - Disabled (grayed out)\r\n *\r\n * @example\r\n * ```tsx\r\n * <Wizard.Steps variant=\"horizontal\" showDescription />\r\n * ```\r\n */\r\nexport function WizardSteps({\r\n variant = 'horizontal',\r\n showDescription = false,\r\n showNumbers = false,\r\n size = 'md',\r\n className,\r\n}: WizardStepsProps) {\r\n const {\r\n activeSteps,\r\n currentStep,\r\n isStepCompleted,\r\n hasStepErrors,\r\n goToStep,\r\n allowJumpToStep,\r\n } = useWizardContext();\r\n\r\n /**\r\n * Determine the state of a step\r\n */\r\n const getStepState = (index: number): StepState => {\r\n const step = activeSteps[index];\r\n\r\n // Check if step is disabled\r\n if (step.isDisabled) {\r\n return 'disabled';\r\n }\r\n\r\n // Current step\r\n if (index === currentStep) {\r\n return hasStepErrors(index) ? 'error' : 'current';\r\n }\r\n\r\n // Completed step\r\n if (isStepCompleted(index)) {\r\n return hasStepErrors(index) ? 'error' : 'completed';\r\n }\r\n\r\n // Pending step\r\n return 'pending';\r\n };\r\n\r\n /**\r\n * Check if step is clickable\r\n */\r\n const isStepClickable = (index: number): boolean => {\r\n if (index === currentStep) return false;\r\n\r\n const step = activeSteps[index];\r\n if (step.isDisabled) return false;\r\n\r\n // Can always go back\r\n if (index < currentStep) return true;\r\n\r\n // Can jump forward only if allowed and all previous steps completed\r\n if (allowJumpToStep && index > currentStep) {\r\n for (let i = currentStep; i < index; i++) {\r\n if (!isStepCompleted(i)) return false;\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n /**\r\n * Handle step click\r\n */\r\n const handleStepClick = async (index: number) => {\r\n if (isStepClickable(index)) {\r\n await goToStep(index);\r\n }\r\n };\r\n\r\n const isHorizontal = variant === 'horizontal';\r\n\r\n return (\r\n <nav\r\n aria-label=\"Progresso do formulário\"\r\n className={cn(\r\n 'flex',\r\n isHorizontal ? 'flex-row items-center justify-center' : 'flex-col items-start',\r\n className\r\n )}\r\n >\r\n {activeSteps.map((step, index) => (\r\n <div\r\n key={step.id}\r\n className={cn(\r\n 'flex',\r\n isHorizontal ? 'flex-row items-center' : 'flex-col',\r\n index !== activeSteps.length - 1 && isHorizontal && 'flex-1'\r\n )}\r\n >\r\n {/* Step indicator */}\r\n <WizardStepIndicator\r\n step={step}\r\n index={index}\r\n state={getStepState(index)}\r\n showNumber={showNumbers}\r\n showDescription={showDescription}\r\n size={size}\r\n isClickable={isStepClickable(index)}\r\n onClick={() => handleStepClick(index)}\r\n />\r\n\r\n {/* Connector line (except for last step) */}\r\n {index !== activeSteps.length - 1 && (\r\n <WizardStepConnector\r\n isCompleted={isStepCompleted(index)}\r\n variant={variant}\r\n />\r\n )}\r\n </div>\r\n ))}\r\n </nav>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { Children, isValidElement, type ReactNode } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { useWizardContext } from './WizardContext';\r\nimport type { WizardContentProps, WizardPanelProps } from './types';\r\n\r\n/**\r\n * Container for wizard step panels\r\n *\r\n * Automatically renders only the panel matching the current step\r\n *\r\n * @example\r\n * ```tsx\r\n * <Wizard.Content>\r\n * <Wizard.Panel name=\"step1\">Step 1 content</Wizard.Panel>\r\n * <Wizard.Panel name=\"step2\">Step 2 content</Wizard.Panel>\r\n * </Wizard.Content>\r\n * ```\r\n */\r\nexport function WizardContent({ children, className }: WizardContentProps) {\r\n const { currentStepConfig } = useWizardContext();\r\n\r\n // Find the panel that matches the current step\r\n let activePanel: ReactNode = null;\r\n\r\n Children.forEach(children, (child) => {\r\n if (!isValidElement(child)) return;\r\n\r\n // Check if this is a WizardPanel with matching name\r\n const panelProps = child.props as WizardPanelProps;\r\n if (panelProps.name === currentStepConfig?.name || panelProps.name === currentStepConfig?.id) {\r\n activePanel = child;\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n className={cn('flex-1', className)}\r\n role=\"tabpanel\"\r\n aria-label={currentStepConfig?.label || currentStepConfig?.name}\r\n >\r\n {activePanel}\r\n </div>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { cn } from '../../utils/cn';\r\nimport type { WizardPanelProps } from './types';\r\n\r\n/**\r\n * Individual panel for wizard step content\r\n *\r\n * The `name` prop must match a step's `name` or `id` in the wizard configuration\r\n *\r\n * @example\r\n * ```tsx\r\n * <Wizard.Panel name=\"personal\">\r\n * <Form.Input name=\"name\" label=\"Nome\" required />\r\n * <Form.Input name=\"email\" label=\"Email\" required />\r\n * </Wizard.Panel>\r\n * ```\r\n */\r\nexport function WizardPanel({ name, children, className }: WizardPanelProps) {\r\n return (\r\n <div className={cn('w-full', className)} data-wizard-panel={name}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { useCallback } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Button } from '../Button/Button';\r\nimport { Loader } from '../Loader/Loader';\r\nimport { useWizardContext } from './WizardContext';\r\nimport type { WizardNavigationProps } from './types';\r\n\r\n/**\r\n * Navigation buttons for the wizard\r\n *\r\n * Provides:\r\n * - Cancel button (first step only by default)\r\n * - Previous button\r\n * - Next button (type=\"button\" - does NOT submit)\r\n * - Submit button (last step only, type=\"submit\")\r\n *\r\n * @example\r\n * ```tsx\r\n * <Wizard.Navigation\r\n * cancelLabel=\"Cancelar\"\r\n * prevLabel=\"Voltar\"\r\n * nextLabel=\"Continuar\"\r\n * submitLabel=\"Finalizar\"\r\n * onCancel={() => dialog.close()}\r\n * />\r\n * ```\r\n */\r\nexport function WizardNavigation({\r\n cancelLabel = 'Cancelar',\r\n prevLabel = 'Voltar',\r\n nextLabel = 'Continuar',\r\n submitLabel = 'Finalizar',\r\n loadingLabel = 'Processando...',\r\n onCancel,\r\n showCancel,\r\n submitDisabled = false,\r\n className,\r\n}: WizardNavigationProps) {\r\n const {\r\n isFirstStep,\r\n isLastStep,\r\n goToNextStep,\r\n goToPrevStep,\r\n form,\r\n } = useWizardContext();\r\n\r\n const isSubmitting = form.formState.isSubmitting;\r\n\r\n // Determine if cancel should be shown\r\n const shouldShowCancel = showCancel ?? isFirstStep;\r\n\r\n /**\r\n * Handle next button click\r\n * IMPORTANT: This is type=\"button\" to prevent form submission\r\n */\r\n const handleNext = useCallback(async () => {\r\n await goToNextStep();\r\n }, [goToNextStep]);\r\n\r\n /**\r\n * Handle previous button click\r\n */\r\n const handlePrev = useCallback(() => {\r\n goToPrevStep();\r\n }, [goToPrevStep]);\r\n\r\n /**\r\n * Handle cancel button click\r\n */\r\n const handleCancel = useCallback(() => {\r\n onCancel?.();\r\n }, [onCancel]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'flex items-center justify-between gap-3 pt-4 border-t border-border',\r\n className\r\n )}\r\n >\r\n {/* Left side: Cancel or Previous */}\r\n <div className=\"flex-1\">\r\n {shouldShowCancel && onCancel ? (\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={handleCancel}\r\n disabled={isSubmitting}\r\n className=\"w-full sm:w-auto\"\r\n >\r\n {cancelLabel}\r\n </Button>\r\n ) : !isFirstStep ? (\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={handlePrev}\r\n disabled={isSubmitting}\r\n className=\"w-full sm:w-auto\"\r\n >\r\n {prevLabel}\r\n </Button>\r\n ) : (\r\n <div /> // Spacer\r\n )}\r\n </div>\r\n\r\n {/* Right side: Previous (if not first) + Next/Submit */}\r\n <div className=\"flex items-center gap-2\">\r\n {/* Previous button (if not first and cancel is shown) */}\r\n {!isFirstStep && shouldShowCancel && (\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={handlePrev}\r\n disabled={isSubmitting}\r\n >\r\n {prevLabel}\r\n </Button>\r\n )}\r\n\r\n {/* Next or Submit button */}\r\n {isLastStep ? (\r\n <Button\r\n type=\"submit\"\r\n disabled={submitDisabled || isSubmitting}\r\n className=\"min-w-[120px]\"\r\n >\r\n {isSubmitting ? (\r\n <span className=\"flex items-center gap-2\">\r\n <Loader variant=\"spinner\" />\r\n {loadingLabel}\r\n </span>\r\n ) : (\r\n submitLabel\r\n )}\r\n </Button>\r\n ) : (\r\n <Button\r\n type=\"button\"\r\n onClick={handleNext}\r\n disabled={isSubmitting}\r\n className=\"min-w-[120px]\"\r\n >\r\n {nextLabel}\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { cn } from '../../utils/cn';\r\nimport { useWizardContext } from './WizardContext';\r\nimport type { WizardProgressProps } from './types';\r\n\r\n/**\r\n * Progress bar component for the wizard\r\n *\r\n * Displays a visual progress indicator with optional percentage and step count\r\n *\r\n * @example\r\n * ```tsx\r\n * <Wizard.Progress showPercentage showStepCount />\r\n * ```\r\n */\r\nexport function WizardProgress({\r\n showPercentage = false,\r\n showStepCount = false,\r\n className,\r\n}: WizardProgressProps) {\r\n const { progress, currentStep, totalSteps } = useWizardContext();\r\n\r\n return (\r\n <div className={cn('w-full', className)}>\r\n {/* Text indicators */}\r\n {(showPercentage || showStepCount) && (\r\n <div className=\"flex items-center justify-between mb-2 text-sm text-muted-foreground\">\r\n {showStepCount && (\r\n <span>\r\n Etapa {currentStep + 1} de {totalSteps}\r\n </span>\r\n )}\r\n {showPercentage && (\r\n <span className={!showStepCount ? 'ml-auto' : ''}>\r\n {progress}%\r\n </span>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Progress bar */}\r\n <div\r\n className=\"h-2 w-full bg-muted rounded-full overflow-hidden\"\r\n role=\"progressbar\"\r\n aria-valuenow={progress}\r\n aria-valuemin={0}\r\n aria-valuemax={100}\r\n aria-label={`Progresso: ${progress}%`}\r\n >\r\n <div\r\n className=\"h-full bg-primary transition-all duration-300 ease-out rounded-full\"\r\n style={{ width: `${progress}%` }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport type { FieldValues } from 'react-hook-form';\r\nimport { FormProvider } from 'react-hook-form';\r\nimport { cn } from '../../utils/cn';\r\nimport { WizardProvider } from './WizardContext';\r\nimport type { WizardProps } from './types';\r\n\r\n// Import child components for compound component pattern\r\nimport { WizardSteps } from './WizardSteps';\r\nimport { WizardContent } from './WizardContent';\r\nimport { WizardPanel } from './WizardPanel';\r\nimport { WizardNavigation } from './WizardNavigation';\r\nimport { WizardProgress } from './WizardProgress';\r\n\r\n/**\r\n * Root Wizard component\r\n *\r\n * Provides multi-step form functionality with:\r\n * - Per-step validation with Zod schemas\r\n * - Visual step indicators\r\n * - Navigation controls\r\n * - Progress tracking\r\n *\r\n * @example\r\n * ```tsx\r\n * const form = useForm<FormData>({\r\n * resolver: zodResolver(schema),\r\n * mode: 'onTouched',\r\n * });\r\n *\r\n * <Wizard form={form} steps={steps} onComplete={handleSubmit}>\r\n * <Wizard.Steps />\r\n * <Wizard.Content>\r\n * <Wizard.Panel name=\"step1\">...</Wizard.Panel>\r\n * <Wizard.Panel name=\"step2\">...</Wizard.Panel>\r\n * </Wizard.Content>\r\n * <Wizard.Navigation onCancel={handleClose} />\r\n * </Wizard>\r\n * ```\r\n */\r\nfunction WizardRoot<T extends FieldValues>({\r\n children,\r\n form,\r\n steps,\r\n initialStep,\r\n onStepChange,\r\n onComplete,\r\n validateOnNext = true,\r\n allowJumpToStep = false,\r\n className,\r\n}: WizardProps<T>) {\r\n /**\r\n * Handle form submission on the last step\r\n */\r\n const handleSubmit = async (data: T) => {\r\n if (onComplete) {\r\n await onComplete(data);\r\n }\r\n };\r\n\r\n return (\r\n <WizardProvider\r\n form={form}\r\n steps={steps}\r\n initialStep={initialStep}\r\n onStepChange={onStepChange}\r\n onComplete={onComplete}\r\n validateOnNext={validateOnNext}\r\n allowJumpToStep={allowJumpToStep}\r\n >\r\n <FormProvider {...form}>\r\n <form\r\n onSubmit={form.handleSubmit(handleSubmit)}\r\n className={cn('flex flex-col', className)}\r\n noValidate\r\n >\r\n {children}\r\n </form>\r\n </FormProvider>\r\n </WizardProvider>\r\n );\r\n}\r\n\r\n// Create compound component\r\nexport const Wizard = Object.assign(WizardRoot, {\r\n /** Visual step indicators */\r\n Steps: WizardSteps,\r\n /** Container for step panels */\r\n Content: WizardContent,\r\n /** Individual step content panel */\r\n Panel: WizardPanel,\r\n /** Navigation buttons (prev, next, submit) */\r\n Navigation: WizardNavigation,\r\n /** Progress bar indicator */\r\n Progress: WizardProgress,\r\n});\r\n\r\nexport type { WizardProps };\r\n","import { cn } from '../../utils/cn'\r\n\r\nexport interface LogoProps {\r\n /** Width of the logo (number for px, string for custom units) */\r\n width?: number | string\r\n /** Color of the logo (defaults to currentColor for theme compatibility) */\r\n color?: string\r\n /** Additional CSS classes */\r\n className?: string\r\n}\r\n\r\n/**\r\n * Facter brand logo - SVG component\r\n *\r\n * The logo uses currentColor by default, so it inherits the text color\r\n * from its parent. Use the `color` prop to override, or apply text color\r\n * classes via `className`.\r\n *\r\n * @example\r\n * // Basic usage (inherits color from parent)\r\n * <Logo width={32} />\r\n *\r\n * // With explicit color class\r\n * <Logo width={32} className=\"text-primary\" />\r\n *\r\n * // With custom color\r\n * <Logo width={32} color=\"#ffffff\" />\r\n */\r\nexport function Logo({\r\n width = 100,\r\n color = 'currentColor',\r\n className = 'text-primary',\r\n}: LogoProps) {\r\n const originalWidth = 207\r\n const originalHeight = 304\r\n\r\n let calculatedHeight: number | string = originalHeight\r\n if (typeof width === 'number') {\r\n calculatedHeight = Math.round(width * (originalHeight / originalWidth))\r\n } else if (typeof width === 'string' && width.endsWith('%')) {\r\n calculatedHeight = 'auto'\r\n } else if (typeof width === 'string') {\r\n const numWidth = parseFloat(width)\r\n if (!isNaN(numWidth)) {\r\n calculatedHeight = `${Math.round(\r\n numWidth * (originalHeight / originalWidth)\r\n )}${width.match(/[a-zA-Z%]+$/)?.[0] || ''}`\r\n } else {\r\n calculatedHeight = originalHeight\r\n }\r\n }\r\n\r\n return (\r\n <svg\r\n width={width}\r\n height={calculatedHeight}\r\n viewBox=\"0 0 207 304\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={cn(className)}\r\n style={color !== 'currentColor' ? { fill: color } : undefined}\r\n aria-label=\"Facter Logo\"\r\n role=\"img\"\r\n >\r\n <mask\r\n id=\"facter-logo-mask\"\r\n maskUnits=\"userSpaceOnUse\"\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"207\"\r\n height=\"304\"\r\n >\r\n <path d=\"M0 0.15625H206.26V304H0V0.15625Z\" fill=\"white\" />\r\n </mask>\r\n <g mask=\"url(#facter-logo-mask)\">\r\n <path\r\n d=\"M25.8384 196.911L15.4739 183.729C-10.7189 150.411 0.44781 101.422 38.4895 82.7344L206.266 0.307297V34.2396C206.266 60.1875 191.448 83.8698 168.12 95.2396L56.578 149.594C48.4634 153.547 41.3489 159.344 35.9791 166.609C30.5936 173.901 25.9582 183.906 26.3176 196.526C29.9947 193.609 34.0624 191.026 38.4843 188.854L206.26 106.432V140.359C206.26 166.313 191.437 189.995 168.109 201.365L56.578 255.708C48.4634 259.667 41.3489 265.464 35.9791 272.724C30.4426 280.224 25.6978 290.578 26.3593 303.693L15.4739 289.854C-7.54698 260.568 -1.72407 219.193 25.8384 196.911ZM134.818 266.526L206.208 303.724L206.187 210.802L134.953 246.661C126.828 250.755 126.755 262.323 134.818 266.526Z\"\r\n fill={color === 'currentColor' ? 'currentColor' : color}\r\n />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\ntype Theme = 'dark' | 'light' | 'system'\r\n\r\ninterface ThemeProviderProps {\r\n children: React.ReactNode\r\n defaultTheme?: Theme\r\n storageKey?: string\r\n}\r\n\r\ninterface ThemeProviderState {\r\n theme: Theme\r\n setTheme: (theme: Theme) => void\r\n}\r\n\r\nconst initialState: ThemeProviderState = {\r\n theme: 'system',\r\n setTheme: () => null,\r\n}\r\n\r\nconst ThemeProviderContext = React.createContext<ThemeProviderState>(initialState)\r\n\r\nexport function ThemeProvider({\r\n children,\r\n defaultTheme = 'system',\r\n storageKey = 'facter-ds-theme',\r\n ...props\r\n}: ThemeProviderProps) {\r\n const [theme, setTheme] = React.useState<Theme>(\r\n () => (localStorage.getItem(storageKey) as Theme) || defaultTheme\r\n )\r\n\r\n const [resolvedTheme, setResolvedTheme] = React.useState<'light' | 'dark'>('light')\r\n\r\n React.useEffect(() => {\r\n const root = window.document.documentElement\r\n\r\n root.classList.remove('light', 'dark')\r\n\r\n if (theme === 'system') {\r\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)')\r\n .matches\r\n ? 'dark'\r\n : 'light'\r\n\r\n root.classList.add(systemTheme)\r\n setResolvedTheme(systemTheme)\r\n return\r\n }\r\n\r\n root.classList.add(theme)\r\n setResolvedTheme(theme)\r\n }, [theme])\r\n\r\n const value = React.useMemo(\r\n () => ({\r\n theme,\r\n setTheme: (theme: Theme) => {\r\n localStorage.setItem(storageKey, theme)\r\n setTheme(theme)\r\n },\r\n }),\r\n [theme, storageKey]\r\n )\r\n\r\n return (\r\n <ThemeProviderContext.Provider {...props} value={value}>\r\n <div className={resolvedTheme} style={{ minHeight: '100vh' }}>\r\n {children}\r\n </div>\r\n </ThemeProviderContext.Provider>\r\n )\r\n}\r\n\r\nexport const useTheme = () => {\r\n const context = React.useContext(ThemeProviderContext)\r\n\r\n if (context === undefined)\r\n throw new Error('useTheme must be used within a ThemeProvider')\r\n\r\n return context\r\n}\r\n","/**\r\n * Facter Design System - Theme Presets\r\n *\r\n * Temas disponíveis:\r\n * - default: Neutro (shadcn default)\r\n * - truck: Azul (Facter Truck)\r\n * - vagas: Roxo (Facter Vagas)\r\n * - techcare: Verde (Facter TechCare)\r\n *\r\n * Uso no projeto:\r\n * ```css\r\n * // globals.css\r\n * @import '@facter/ds-core/themes/base.css';\r\n * @import '@facter/ds-core/themes/default.css';\r\n * @tailwind base;\r\n * @tailwind components;\r\n * @tailwind utilities;\r\n * ```\r\n */\r\n\r\nexport const FACTER_THEMES = {\r\n default: 'default',\r\n truck: 'truck',\r\n vagas: 'vagas',\r\n techcare: 'techcare',\r\n} as const\r\n\r\nexport type FacterTheme = keyof typeof FACTER_THEMES\r\n\r\n/**\r\n * Lista de temas disponíveis com suas cores primárias\r\n * primaryHsl é usado para injetar CSS variables dinamicamente\r\n */\r\nexport const THEME_INFO = {\r\n default: {\r\n name: 'Default',\r\n primaryColor: '#18181B',\r\n primaryHsl: '240 5.9% 10%',\r\n ringHsl: '240 5.9% 10%',\r\n description: 'Tema neutro padrão',\r\n },\r\n truck: {\r\n name: 'Facter Truck',\r\n primaryColor: '#3B5BDB',\r\n primaryHsl: '233 65% 55%',\r\n ringHsl: '233 65% 55%',\r\n description: 'Sistema de gestão de frotas',\r\n },\r\n vagas: {\r\n name: 'Facter Vagas',\r\n primaryColor: '#8B5CF6',\r\n primaryHsl: '262 83% 58%',\r\n ringHsl: '262 83% 58%',\r\n description: 'Plataforma de vagas de emprego',\r\n },\r\n techcare: {\r\n name: 'Facter TechCare',\r\n primaryColor: '#16A34A',\r\n primaryHsl: '142 76% 36%',\r\n ringHsl: '142 76% 36%',\r\n description: 'Sistema de assistência técnica',\r\n },\r\n} as const\r\n"]}