@facter/ds-core 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +185 -8
- package/dist/index.d.mts +1193 -17
- package/dist/index.d.ts +1193 -17
- package/dist/index.js +3948 -28
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3866 -29
- package/dist/index.mjs.map +1 -1
- package/dist/themes/index.d.mts +46 -0
- package/dist/themes/index.d.ts +46 -0
- package/dist/themes/index.js +33 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/index.mjs +30 -0
- package/dist/themes/index.mjs.map +1 -0
- package/dist/themes/tailwind-preset.d.mts +19 -0
- package/dist/themes/tailwind-preset.d.ts +19 -0
- package/dist/themes/tailwind-preset.js +79 -0
- package/dist/themes/tailwind-preset.js.map +1 -0
- package/dist/themes/tailwind-preset.mjs +74 -0
- package/dist/themes/tailwind-preset.mjs.map +1 -0
- package/package.json +34 -4
- package/src/themes/base.css +31 -0
- package/src/themes/techcare.css +59 -0
- package/src/themes/truck.css +59 -0
- package/src/themes/vagas.css +59 -0
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/cn.ts","../src/components/Button/Button.tsx","../src/components/Input/Input.tsx","../src/components/Badge/Badge.tsx","../src/components/Loader/Loader.tsx","../src/components/Loader/LoaderContext.tsx"],"names":["React","cva","React2","jsx","React3","jsxs"],"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-offset-2 disabled:pointer-events-none disabled:opacity-50',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'bg-primary text-white hover:bg-primary/90',\r\n destructive: 'bg-red-600 text-white hover:bg-red-700',\r\n outline: 'border border-input hover:bg-accent hover:text-accent-foreground',\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 },\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 { 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<{ className?: string; onClick?: () => void }>\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 text-primary-foreground hover:bg-primary/80',\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 text-white hover:bg-green-600',\r\n warning:\r\n 'border-transparent bg-yellow-500 text-white hover:bg-yellow-600',\r\n error: 'border-transparent bg-red-500 text-white hover:bg-red-600',\r\n info: 'border-transparent bg-blue-500 text-white hover:bg-blue-600',\r\n outline: 'border-gray-300 text-foreground hover:bg-gray-100',\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'\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/cn.ts","../src/components/Button/Button.tsx","../src/components/Input/Input.tsx","../src/components/Badge/Badge.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/Layouts/AuthLayout/AuthLayout.tsx","../src/components/Layouts/SelectionLayout/SelectionLayout.tsx","../src/components/Layouts/DashboardLayout/DashboardLayout.tsx","../src/providers/ThemeProvider.tsx"],"names":["React","cva","React2","Icon","jsx","React3","jsxs","React4","React5","React6","React7","motion","React8","React9","React10","React11","DataTableContent","flexRender","React12","DataTableToolbar","React13","React14","DataTableSearch","React15","DataTableFilters","DataTableFilter","React16","DataTablePagination","React17","DataTableEmptyState","React18","Check","React19","React20","React21","React22","React23","X","React24","iconWrapperVariants","iconVariants","React25","Sonner","React26","sonnerToast","React27","React28","React29","React30","Controller","React31","React32","React33","React34","React35","Fragment","ChevronDown","ChevronRight","React37","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 { 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 text-primary-foreground hover:bg-primary/80',\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 text-white hover:bg-green-600',\r\n warning:\r\n 'border-transparent bg-yellow-500 text-white hover:bg-yellow-600',\r\n error: 'border-transparent bg-red-500 text-white hover:bg-red-600',\r\n info: 'border-transparent bg-blue-500 text-white hover:bg-blue-600',\r\n outline: 'border-gray-300 text-foreground hover:bg-gray-100',\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'\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>()\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// Hook interno (não usar diretamente)\r\nexport { flexRender } from './hooks/useDataTable'\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: (id: string | number) => React.ReactElement, options?: any) =>\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","import * 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","import * 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","import { 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","import { 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","import * 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","import * 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","import { 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","import * 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'\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(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}: AuthLayoutImageProps) {\r\n // _position is used by parent (AuthLayoutRoot) via child.props.position\r\n void _position\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',\r\n className\r\n )}\r\n >\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 </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 'w-full lg:w-3/6 flex items-center justify-center p-6 pt-20 sm:pt-0 lg:p-12 bg-background mx-auto',\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}: AuthLayoutHeaderProps) {\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 const [sidebarExpanded, setSidebarExpanded] = React.useState(defaultExpanded)\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\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"]}
|