@phsa.tec/design-system-react 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/dataDisplay/Table/components/DynamicTable/index.tsx","../src/components/ui/table.tsx","../src/lib/utils.ts","../src/components/dataDisplay/Table/components/DynamicTable/data-table-view-options.tsx","../src/components/ui/button.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/dataDisplay/Table/components/DynamicTable/data-table-toolbar.tsx","../src/components/dataDisplay/Table/components/DynamicTable/data-table-pagination.tsx","../src/components/ui/select.tsx","../src/components/dataDisplay/Table/components/DynamicTable/data-table-column-header.tsx","../src/components/ui/badge.tsx","../src/components/dataDisplay/Icon/Icon.tsx","../src/components/ui/avatar.tsx","../src/components/dataDisplay/DataPairList/DataPairList.tsx","../src/components/dataDisplay/Text/Text.tsx","../src/components/ui/card.tsx","../src/components/dataDisplay/Card/Card.tsx","../src/components/dataInput/checkbox/Checkbox.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/label.tsx","../src/components/dataInput/form/index.ts","../src/components/ui/form.tsx","../src/components/dataDisplay/ErrorMessage/ErrorMessage.tsx","../src/components/ui/input.tsx","../src/components/dataInput/Input/components/Input/index.tsx","../src/components/feedback/ErrorLabel/index.tsx","../src/components/dataInput/Input/components/InputBase/index.tsx","../src/hooks/use-conditional-controller.tsx","../src/components/dataInput/Input/components/NumberInput/number-input.tsx","../src/components/dataInput/Input/components/MaskInput/mask-input.tsx","../src/hooks/use-mask.tsx","../src/components/actions/Button/Button.tsx","../src/components/ui/spinner.tsx","../src/hooks/use-toast.ts","../src/components/ui/toast.tsx","../src/components/ui/toaster.tsx","../src/components/dataInput/Input/components/MultipleInput/MultipleInput.tsx","../src/components/ui/dialog.tsx","../src/components/actions/Dialog/Dialog.tsx","../src/components/ui/collapsible.tsx","../src/components/actions/Steps/Steps.tsx","../src/components/ui/drawer.tsx","../src/components/layout/Drawer/CustomDrawer/index.tsx","../src/components/ui/sheet.tsx","../src/components/layout/Sheet/Sheet.tsx","../src/components/ui/sidebar.tsx","../src/hooks/use-mobile.tsx","../src/components/ui/separator.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/components/layout/Sidebar/components/app-sidebar.tsx","../src/components/layout/Sidebar/components/team-switcher.tsx","../src/components/layout/Sidebar/components/menus.tsx","../src/components/ui/breadcrumb.tsx","../src/components/layout/Sidebar/provider/index.tsx","../src/components/layout/Sidebar/components/header-sidebar.tsx","../src/components/layout/Sidebar/components/footer-sidebar.tsx","../src/components/layout/Sidebar/Sidebar.tsx","../src/components/layout/Sidebar/components/nav-user.tsx","../src/components/layout/PageLayout/index.tsx","../src/components/ui/tabs.tsx","../src/components/layout/Tabs/Tabs.tsx","../src/components/ui/alert-dialog.tsx","../src/components/actions/AlertDialog/AlertDialog.tsx","../src/components/dataInput/Input/components/MultipleInput/MultipleInputBase.tsx","../src/components/dataInput/Input/components/MultipleInput/MultipleMaskInput.tsx","../src/components/dataInput/Select/SelectBase.tsx","../src/components/dataInput/Select/Select.tsx","../src/components/dataDisplay/Label/Label.tsx","../src/components/dataInput/Select/MultiSelect/MultiSelectBase.tsx","../src/components/dataInput/Select/MultiSelect/index.tsx","../src/components/ui/switch.tsx","../src/components/dataInput/Switch/Switch.tsx"],"sourcesContent":["export * from \"./components\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n getPaginationRowModel,\n useReactTable,\n SortingState,\n VisibilityState,\n PaginationState,\n} from \"@tanstack/react-table\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../../../../../components/ui/table\";\nimport { DataTableToolbar } from \"./data-table-toolbar\";\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport { cn } from \"../../../../../lib/utils\";\nimport { DataTableColumnHeader } from \"./data-table-column-header\";\nimport { DynamicTableProps } from \"./types\";\n\nexport function DynamicTable<TData>({\n data,\n columns,\n className,\n toolbar,\n pagination: showPagination = true,\n sorting: showSorting = true,\n columnVisibility: showColumnVisibility = true,\n filters,\n rowsPerPage = [10, 20, 30, 40, 50],\n defaultSort = [],\n defaultVisibility = {},\n}: DynamicTableProps<TData>) {\n const [sorting, setSorting] = React.useState<SortingState>(defaultSort);\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>(defaultVisibility);\n const [{ pageIndex, pageSize }, setPagination] =\n React.useState<PaginationState>({\n pageIndex: 0,\n pageSize: rowsPerPage[0],\n });\n\n const pagination = React.useMemo(\n () => ({\n pageIndex,\n pageSize,\n }),\n [pageIndex, pageSize]\n );\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n onSortingChange: setSorting,\n getSortedRowModel: showSorting ? getSortedRowModel() : undefined,\n getPaginationRowModel: getPaginationRowModel(),\n onColumnVisibilityChange: setColumnVisibility,\n onPaginationChange: setPagination,\n manualPagination: false,\n pageCount: Math.ceil(data.length / pageSize),\n state: {\n sorting,\n columnVisibility,\n pagination,\n },\n enableSorting: showSorting,\n });\n\n return (\n <div className=\"space-y-4\">\n {(toolbar || filters || showColumnVisibility) && (\n <DataTableToolbar\n table={table}\n filters={filters}\n showColumnVisibility={showColumnVisibility}\n />\n )}\n <div className={cn(\"rounded-md border\", className)}>\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id}>\n {header.isPlaceholder ? null : (\n <DataTableColumnHeader\n column={header.column}\n title={header.column.columnDef.header as string}\n />\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow key={row.id}>\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n Nenhum resultado encontrado.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n {showPagination && (\n <DataTablePagination table={table} pageSizeOptions={rowsPerPage} />\n )}\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n));\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n));\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const hexToHsl = (hex?: string): string => {\n if (!hex) return \"\";\n\n const cleanHex = hex.replace(/^#/, \"\");\n\n const [r, g, b] = cleanHex.match(/.{2}/g)!.map((x) => parseInt(x, 16) / 255);\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h =\n max === r\n ? (g - b) / d + (g < b ? 6 : 0)\n : max === g\n ? (b - r) / d + 2\n : (r - g) / d + 4;\n h *= 60;\n }\n\n return `${Math.round(h)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%`;\n};\n","\"use client\";\n\nimport { DropdownMenuTrigger } from \"@radix-ui/react-dropdown-menu\";\nimport { MixerHorizontalIcon } from \"@radix-ui/react-icons\";\nimport { Table } from \"@tanstack/react-table\";\nimport { Button } from \"../../../../../components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n} from \"../../../../../components/ui/dropdown-menu\";\n\ninterface DataTableViewOptionsProps<TData> {\n table: Table<TData>;\n}\n\nexport function DataTableViewOptions<TData>({\n table,\n}: DataTableViewOptionsProps<TData>) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"ml-auto hidden h-8 lg:flex\"\n >\n <MixerHorizontalIcon className=\"mr-2 h-4 w-4\" />\n Colunas\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[150px]\">\n <DropdownMenuLabel>Colunas visíveis</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter(\n (column) =>\n typeof column.accessorFn !== \"undefined\" && column.getCanHide()\n )\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\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\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n","\"use client\";\n\nimport { DataTableViewOptions } from \"./data-table-view-options\";\nimport { DynamicTableToolbarProps } from \"./types\";\n\nexport function DataTableToolbar<TData>({\n table,\n filters,\n showColumnVisibility,\n}: DynamicTableToolbarProps<TData>) {\n return (\n <div className=\"flex items-center justify-between\">\n <div className=\"flex flex-1 items-center space-x-2\">{filters}</div>\n {showColumnVisibility && <DataTableViewOptions table={table} />}\n </div>\n );\n}\n","\"use client\";\n\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n} from \"@radix-ui/react-icons\";\nimport { Button } from \"../../../../../components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../../../components/ui/select\";\nimport { DynamicTablePaginationProps } from \"./types\";\n\nexport function DataTablePagination<TData>({\n table,\n pageSizeOptions = [10, 20, 30, 40, 50],\n}: DynamicTablePaginationProps<TData>) {\n return (\n <div className=\"flex items-center justify-between px-2\">\n <div className=\"flex-1 text-sm text-muted-foreground\">\n {table.getFilteredSelectedRowModel().rows.length} de{\" \"}\n {table.getFilteredRowModel().rows.length} linha(s) selecionada(s).\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Linhas por página</p>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {pageSizeOptions.map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-[100px] items-center justify-center text-sm font-medium\">\n Página {table.getState().pagination.pageIndex + 1} de{\" \"}\n {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <DoubleArrowLeftIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeftIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <ChevronRightIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <DoubleArrowRightIcon className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type SelectProps = SelectPrimitive.SelectProps;\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","\"use client\";\n\nimport {\n ArrowDownIcon,\n ArrowUpIcon,\n CaretSortIcon,\n EyeNoneIcon,\n} from \"@radix-ui/react-icons\";\nimport { Column } from \"@tanstack/react-table\";\nimport { cn } from \"../../../../../lib/utils\";\nimport { Button } from \"../../../../../components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../../../../../components/ui/dropdown-menu\";\n\ninterface DataTableColumnHeaderProps<TData, TValue>\n extends React.HTMLAttributes<HTMLDivElement> {\n column: Column<TData, TValue>;\n title: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>;\n }\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-3 h-8 data-[state=open]:bg-accent\"\n >\n <span>{title}</span>\n {column.getIsSorted() === \"desc\" ? (\n <ArrowDownIcon className=\"ml-2 h-4 w-4\" />\n ) : column.getIsSorted() === \"asc\" ? (\n <ArrowUpIcon className=\"ml-2 h-4 w-4\" />\n ) : (\n <CaretSortIcon className=\"ml-2 h-4 w-4\" />\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem onClick={() => column.toggleSorting(false)}>\n <ArrowUpIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Crescente\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => column.toggleSorting(true)}>\n <ArrowDownIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Decrescente\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={() => column.toggleVisibility(false)}>\n <EyeNoneIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Ocultar\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md 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\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n success:\n \"border-transparent bg-success text-primary-foreground shadow hover:bg-success/80\",\n warning:\n \"border-transparent bg-warning text-primary-foreground shadow hover:bg-warning/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import React, { useCallback, useMemo } from \"react\";\nimport { IconContext } from \"react-icons\";\nimport { IconProps } from \"./types\";\n\nexport const Icon: React.FC<IconProps> = ({ name, size = 24, ...rest }) => {\n const nameIcon = useMemo(() => name, [name]);\n\n const iconsModulePath = useMemo(\n () => ({\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n md: require(\"react-icons/md\"),\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n fa: require(\"react-icons/fa\"),\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n bs: require(\"react-icons/bs\"),\n }),\n []\n );\n\n const typeIcon = useMemo(() => {\n const matches = [...nameIcon.matchAll(/[A-Z]/g)];\n return String(\n nameIcon.slice(0, matches[1]?.index) || \"\"\n ).toLocaleLowerCase();\n }, [nameIcon]);\n\n const Icon = useCallback(\n (props: typeof rest) => {\n try {\n if (!typeIcon || !nameIcon) return <></>;\n\n return iconsModulePath[typeIcon as keyof typeof iconsModulePath][\n nameIcon\n ]?.(props);\n } catch {\n return <></>;\n }\n },\n [iconsModulePath, nameIcon, typeIcon]\n );\n\n return (\n <IconContext.Provider value={{ size: String(size) }}>\n <Icon {...rest} />\n </IconContext.Provider>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n className\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\nimport { DataPairListProps } from \"./types\";\nimport { cn } from \"../../../lib/utils\";\nimport { Text } from \"../Text\";\n\nexport const DataPairList = ({\n title,\n data,\n labels,\n className,\n infoDirection = \"horizontal\",\n direction = \"vertical\",\n withBorder = false,\n header = <></>,\n}: DataPairListProps) => {\n if (isEmpty(data)) return null;\n\n return (\n <div\n className={cn(\n \"flex flex-col gap-2 rounded-md p-4\",\n withBorder && \"border border-muted\",\n className\n )}\n >\n <div className=\"flex gap-3\">\n {title && <Text variant=\"title\">{title}</Text>}\n {header}\n </div>\n <div\n className={cn(\n \"grid grid-cols-1 mt-5\",\n direction === \"vertical\"\n ? \"gap-3\"\n : \"sm:grid-cols-2 md:grid-cols-4 gap-10\"\n )}\n >\n {Object.entries(data || {}).map(([key, value], index) => (\n <div\n className={cn(\n \"flex gap-3\",\n infoDirection === \"horizontal\" ? \"flex-row\" : \"flex-col\"\n )}\n key={index}\n >\n <Text className=\"uppercase text-muted-foreground font-bold\">\n {labels?.[key] || key}:\n </Text>\n <Text>{value}</Text>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../..//lib/utils\";\n\n// Definição das variantes com pesos adequados\nconst textVariants = cva(\"\", {\n variants: {\n variant: {\n display: \"text-5xl font-extrabold tracking-tight\",\n title: \"text-3xl font-bold tracking-tight\",\n subtitle: \"text-2xl font-semibold\",\n normal: \"text-base font-normal\",\n caption: \"text-sm font-medium\",\n muted: \"text-sm font-normal text-muted-foreground\",\n },\n align: {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n justify: \"text-justify\",\n },\n },\n defaultVariants: {\n variant: \"normal\",\n align: \"left\",\n },\n});\n\n// Mapeia variantes para as tags HTML corretas\nconst tagMap = {\n display: \"h1\",\n title: \"h2\",\n subtitle: \"h3\",\n normal: \"p\",\n caption: \"small\",\n muted: \"p\",\n} as const;\n\ntype TextProps = VariantProps<typeof textVariants> & {\n className?: string;\n children: React.ReactNode;\n};\n\nexport function Text({\n variant = \"normal\",\n align,\n className,\n children,\n}: TextProps) {\n const Tag = tagMap[variant || \"normal\"] || \"p\";\n\n return (\n <Tag className={cn(textVariants({ variant, align }), className)}>\n {children}\n </Tag>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow\",\n className\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","import React from \"react\";\nimport {\n Card as CardComponent,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../../../components/ui/card\";\n\nexport type CardProps = {\n title?: string;\n description?: string;\n footer?: () => React.ReactNode;\n children?: React.ReactNode;\n};\n\nexport const Card = ({\n title,\n children,\n description,\n footer = () => <></>,\n}: CardProps) => {\n return (\n <CardComponent>\n <CardHeader>\n {title && <CardTitle>{title}</CardTitle>}\n {description && <CardDescription>{description}</CardDescription>}\n </CardHeader>\n {children && <CardContent>{children}</CardContent>}\n {footer && <CardFooter>{footer()}</CardFooter>}\n </CardComponent>\n );\n};\n","import { useFormContext } from \"react-hook-form\";\nimport {\n Checkbox as CheckboxUI,\n CheckboxProps as CheckboxUIProps,\n} from \"../../ui/checkbox\";\nimport { Label } from \"../../../components/ui/label\";\n\nimport { FormControl, FormField, FormItem, FormLabel } from \"../form\";\n\nimport { ErrorMessage } from \"../../../components/dataDisplay/ErrorMessage\";\n\nexport type CheckboxProps = CheckboxUIProps & {\n label: string;\n error?: string;\n withoutForm?: boolean;\n};\n\nexport const Checkbox = ({\n label,\n error,\n withoutForm,\n ...props\n}: CheckboxProps) => {\n const form = useFormContext();\n\n const hasForm = !withoutForm && !!form && !!props.name;\n if (!hasForm)\n return (\n <div className=\"flex items-center space-x-2\">\n <CheckboxUI {...props} />\n {label && <Label htmlFor={props.id}>{label}</Label>}\n {error && <ErrorMessage>{error}</ErrorMessage>}\n </div>\n );\n\n return (\n <FormField\n control={form.control}\n name={props.name ?? \"\"}\n render={({ field }) => (\n <FormItem className=\"flex flex-row items-start space-x-3 space-y-0 rounded-md border p-4\">\n <FormControl>\n <CheckboxUI\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n {label && (\n <div className=\"space-y-1 leading-none\">\n <FormLabel>{label}</FormLabel>\n </div>\n )}\n </FormItem>\n )}\n />\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type CheckboxProps = React.ComponentPropsWithoutRef<\n typeof CheckboxPrimitive.Root\n>;\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n);\n\nexport type LabelProps = React.ComponentPropsWithoutRef<\n typeof LabelPrimitive.Root\n> &\n VariantProps<typeof labelVariants>;\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n LabelProps\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import { useFormContext } from \"react-hook-form\";\nexport * from \"../../ui/form\";\nexport { useFormContext };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Label } from \"../../components/ui/label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n);\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = \"FormItem\";\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = \"FormLabel\";\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = \"FormControl\";\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-[0.8rem] text-muted-foreground\", className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = \"FormDescription\";\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-[0.8rem] font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","export type ErrorMessageProps = {\n children: string;\n};\nexport const ErrorMessage = ({ children }: ErrorMessageProps) => {\n return <p className=\"text-sm font-medium text-destructive\">{children}</p>;\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type InputProps = React.ComponentProps<\"input\">;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import { Input as InputUI } from \"@/components/ui/input\";\nimport { InputProps } from \"./types\";\nimport { useMemo } from \"react\";\nimport { InputBase } from \"../InputBase\";\nimport { useConditionalController } from \"@/hooks/use-conditional-controller\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Input = ({\n \"data-testid\": dataTestId,\n withoutForm = false,\n extraElement,\n containerClassName,\n ...props\n}: InputProps) => {\n const formData = useConditionalController({\n name: props.name || \"\",\n withoutForm,\n });\n\n const inputProps = useMemo(() => {\n return {\n ...formData,\n ...props,\n };\n }, [formData, props]);\n\n return (\n <InputBase\n label={props.label}\n error={props.error}\n required={props.required}\n data-testid={dataTestId}\n >\n <div className={cn(\"flex items-center gap-2\", containerClassName)}>\n <InputUI\n {...inputProps}\n data-testid={dataTestId}\n className={cn(\n props.className,\n props.error &&\n \"border-destructive focus:border-destructive focus-visible:ring-0\"\n )}\n />\n {extraElement}\n </div>\n </InputBase>\n );\n};\n","import React from \"react\";\nimport { Icon } from \"@/components/dataDisplay\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ErrorLabelProps = React.PropsWithChildren<{\n className?: string;\n \"data-testid\"?: string;\n}>;\n\nexport const ErrorLabel = ({\n children,\n className,\n \"data-testid\": dataTestId,\n}: ErrorLabelProps) => {\n return (\n <div\n className={cn(\"flex items-center gap-2 my-2\", className)}\n data-testid={`${dataTestId}-error-label`}\n >\n <Icon name=\"MdErrorOutline\" size={18} className=\"text-destructive\" />\n <span className=\"text-destructive text-sm\">{children}</span>\n </div>\n );\n};\n","import { ErrorLabel } from \"@/components/feedback/ErrorLabel\";\nimport { InputProps as InputPropsUI } from \"../../../../ui/input\";\nimport { Label } from \"../../../../ui/label\";\n\nexport type InputBaseProps = Omit<InputPropsUI, \"children\"> & {\n label?: string;\n error?: string;\n required?: boolean;\n children: React.ReactNode;\n \"data-testid\"?: string;\n};\n\nexport const InputBase = ({\n label,\n error,\n children,\n required,\n \"data-testid\": testId,\n}: InputBaseProps) => {\n return (\n <div>\n {label && (\n <Label data-testid={`${testId}-label`}>\n {`${label} ${required ? \"*\" : \"\"}`}{\" \"}\n </Label>\n )}\n {children}\n {error && <ErrorLabel data-testid={testId}>{error}</ErrorLabel>}\n </div>\n );\n};\n","import { useMemo } from \"react\";\nimport {\n useController,\n useForm,\n useFormContext,\n ControllerRenderProps,\n FieldValues,\n} from \"react-hook-form\";\n\nexport const useConditionalController = ({\n name,\n withoutForm,\n}: {\n name: string;\n withoutForm?: boolean;\n}): ControllerRenderProps<FieldValues, string> | Record<string, never> => {\n const form = useFormContext();\n\n const hasForm = useMemo(() => {\n return !withoutForm && !!form?.control;\n }, [withoutForm, form]);\n\n const tempForm = useForm();\n\n const controlToUse = useMemo(() => {\n return hasForm ? form.control : tempForm.control;\n }, [tempForm, form, hasForm]);\n\n const controller = useController({\n control: controlToUse,\n name: name || \"temp\",\n });\n\n return hasForm ? controller.field : {};\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n NumericFormat,\n NumericFormatProps,\n SourceInfo,\n} from \"react-number-format\";\nimport { InputBase } from \"../InputBase\";\nimport { Input } from \"../../../../ui/input\";\nimport { InputProps } from \"../Input/types\";\nimport { useCallback, useMemo } from \"react\";\nimport { useConditionalController } from \"@/hooks/use-conditional-controller\";\n\nexport type NumberInputProps = Omit<NumericFormatProps, \"onChange\"> &\n InputProps;\n\nexport const NumberInput = (props: NumberInputProps) => {\n const formData = useConditionalController({\n name: props.name || \"\",\n withoutForm: props.withoutForm,\n });\n\n const inputProps = useMemo(() => {\n return {\n ...formData,\n ...props,\n };\n }, [formData, props]);\n\n const onValueChange = useCallback(\n (\n data: {\n value: string;\n floatValue: number | undefined;\n formattedValue: string;\n },\n sourceInfo: SourceInfo\n ) => {\n const syntheticEvent = {\n target: {\n value: data.formattedValue,\n name: props.name,\n },\n currentTarget: {\n value: data.formattedValue,\n name: props.name,\n },\n } as React.ChangeEvent<HTMLInputElement>;\n\n props.onChange?.(syntheticEvent);\n props.onValueChange?.(data, sourceInfo);\n if (formData.onChange) {\n formData.onChange(data.formattedValue);\n }\n },\n [props, formData]\n );\n\n return (\n <InputBase {...props}>\n <NumericFormat\n {...inputProps}\n customInput={Input}\n value={props.value}\n onValueChange={onValueChange}\n />\n </InputBase>\n );\n};\n","\"use client\";\nimport * as React from \"react\";\nimport { Input } from \"../Input\";\nimport { useConditionalController } from \"@/hooks/use-conditional-controller\";\nimport { InputProps } from \"../Input/types\";\nimport { useMask } from \"@/hooks/use-mask\";\nimport { useRef } from \"react\";\n\nexport type MaskInputProps = {\n mask?: string;\n} & InputProps;\n\nexport const MaskInput = ({\n \"data-testid\": dataTestId,\n withoutForm = false,\n extraElement,\n mask = \"\",\n ...props\n}: MaskInputProps) => {\n const formData = useConditionalController({\n name: props.name || \"\",\n withoutForm,\n });\n\n const inputProps = React.useMemo(() => {\n return {\n ...formData,\n ...props,\n };\n }, [formData, props]);\n\n const { applyMask } = useMask({ mask });\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const applyMaskToInput = React.useCallback(\n (value: string) => {\n if (inputRef.current && mask) {\n const maskedValue = applyMask(value);\n inputRef.current.value = maskedValue;\n }\n },\n [applyMask, mask]\n );\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const maskedValue = mask ? applyMask(e.target.value) : e.target.value;\n\n const response = {\n ...e,\n target: {\n ...e.target,\n value: maskedValue,\n },\n };\n applyMaskToInput(maskedValue);\n return inputProps?.onChange?.(response);\n },\n [applyMask, inputProps, mask, applyMaskToInput]\n );\n\n return (\n <Input\n {...inputProps}\n ref={inputRef}\n onChange={handleChange}\n extraElement={extraElement}\n data-testid={dataTestId}\n withoutForm={true}\n />\n );\n};\n","import { useState, useCallback } from \"react\";\n\nexport type UseMaskProps = {\n mask: string;\n placeholder?: string; // Placeholder que mostra a máscara\n showMask?: boolean; // Se deve mostrar a máscara mesmo sem valor\n allowEmpty?: boolean; // Se permite valor vazio\n transform?: \"uppercase\" | \"lowercase\" | \"capitalize\"; // Transformação do texto\n};\n\nexport const useMask = ({ mask, ...options }: UseMaskProps) => {\n const [value, setValue] = useState(\"\");\n\n const applyMask = useCallback(\n (inputValue: string) => {\n if (!inputValue || !mask) return \"\";\n\n // Remove todos os caracteres que não são letras ou números\n const cleanValue = inputValue.replace(/[^a-zA-Z0-9]/g, \"\");\n\n let maskedValue = \"\";\n let cleanIndex = 0;\n\n for (let i = 0; i < mask.length && cleanIndex < cleanValue.length; i++) {\n const maskChar = mask[i];\n const inputChar = cleanValue[cleanIndex];\n\n if (maskChar === \"9\") {\n // Só aceita números\n if (/\\d/.test(inputChar)) {\n maskedValue += inputChar;\n cleanIndex++;\n } else {\n // Se não for número, pula esse caractere do input\n cleanIndex++;\n i--; // Volta um passo na máscara para tentar novamente\n }\n } else if (maskChar === \"A\") {\n // Só aceita letras\n if (/[a-zA-Z]/.test(inputChar)) {\n let char = inputChar;\n // Aplica transformação se especificada\n if (options.transform === \"uppercase\") char = char.toUpperCase();\n else if (options.transform === \"lowercase\")\n char = char.toLowerCase();\n maskedValue += char;\n cleanIndex++;\n } else {\n // Se não for letra, pula esse caractere do input\n cleanIndex++;\n i--; // Volta um passo na máscara para tentar novamente\n }\n } else {\n // Caractere literal da máscara (parênteses, hífen, etc.)\n maskedValue += maskChar;\n }\n }\n\n return maskedValue;\n },\n [mask, options.transform]\n );\n\n const handleSetValue = useCallback(\n (newValue: string) => {\n const maskedValue = applyMask(newValue);\n setValue(maskedValue);\n },\n [applyMask]\n );\n\n // Função para obter valor sem máscara (raw)\n const getRawValue = useCallback(() => {\n return value.replace(/[^a-zA-Z0-9]/g, \"\");\n }, [value]);\n\n // Função para verificar se está completo\n const isComplete = useCallback(() => {\n return value.length === mask.length;\n }, [value, mask]);\n\n // Função para verificar se é válido\n const isValid = useCallback(() => {\n // Implementar validação específica\n return isComplete() && value.length > 0;\n }, [isComplete, value]);\n\n // Função para limpar o valor\n const clear = useCallback(() => {\n setValue(\"\");\n }, []);\n\n // Compatibilidade com react-hook-form\n const getFormProps = useCallback(\n () => ({\n value,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n handleSetValue(e.target.value);\n },\n placeholder: options.placeholder,\n }),\n [value, handleSetValue, options.placeholder]\n );\n\n return {\n value,\n setValue: handleSetValue,\n rawValue: getRawValue(),\n isComplete: isComplete(),\n isValid: isValid(),\n applyMask,\n clear,\n placeholder: options.placeholder || mask.replace(/[9A]/g, \"_\"),\n formProps: getFormProps(),\n };\n};\n","import { forwardRef } from \"react\";\nimport { Spinner } from \"../../../components/feedback\";\nimport {\n Button as UIButton,\n ButtonProps as UIButtonProps,\n} from \"../../ui/button\";\n\nexport type ButtonProps = UIButtonProps & {\n loading?: boolean;\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ children, disabled, loading, ...rest }, ref) => {\n return (\n <UIButton {...rest} disabled={disabled || loading} ref={ref}>\n {loading && <Spinner className=\"fill-white\" />}\n {children}\n </UIButton>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { VariantProps, cva } from \"class-variance-authority\";\nimport { Loader } from \"lucide-react\";\nimport { Icon } from \"../dataDisplay\";\n\nconst spinnerVariants = cva(\"flex-col items-center justify-center\", {\n variants: {\n show: {\n true: \"flex\",\n false: \"hidden\",\n },\n },\n defaultVariants: {\n show: true,\n },\n});\n\nconst loaderVariants = cva(\"animate-spin text-primary\", {\n variants: {\n size: {\n small: \"size-6\",\n medium: \"size-8\",\n large: \"size-12\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n});\n\ninterface SpinnerContentProps\n extends VariantProps<typeof spinnerVariants>,\n VariantProps<typeof loaderVariants> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function Spinner({\n size,\n show,\n children,\n className,\n}: SpinnerContentProps) {\n return (\n <span className={spinnerVariants({ show })}>\n <Icon\n name=\"FaSpinner\"\n className={cn(loaderVariants({ size }), className)}\n />\n {children}\n </span>\n );\n}\n","\"use client\";\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"../components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n success: \"border-success bg-success text-success-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold [&+div]:text-xs\", className)}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n};\n","\"use client\";\n\nimport { useToast } from \"../../hooks/use-toast\";\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"../../components/ui/toast\";\n\nexport function Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n","import { Button } from \"../../../../actions/Button\";\nimport { Icon } from \"../../../../dataDisplay/Icon\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { useConditionalController } from \"@/hooks/use-conditional-controller\";\nimport { MaskInput, MaskInputProps } from \"../MaskInput\";\n\nexport type MultipleInputProps = MaskInputProps & {\n data?: string[];\n onAdd?: (data: string) => void;\n onRemove?: (position: number) => void;\n name: string;\n defaultValue?: string;\n \"data-testid\"?: string;\n};\n\nexport const MultipleInput = ({\n data = [],\n onAdd = () => {},\n defaultValue = \"\",\n onRemove = () => {},\n withoutForm = false,\n ...props\n}: MultipleInputProps) => {\n const [inputValue, setInputValue] = useState(defaultValue);\n\n const formData = useConditionalController({\n name: props.name || \"\",\n withoutForm,\n });\n\n const inputItems = useMemo(() => {\n if (formData?.value) {\n return formData.value;\n }\n return data;\n }, [data, formData]);\n\n const onAddData = useCallback(() => {\n const trimmedValue = inputValue.trim();\n if (trimmedValue) {\n if (formData?.onChange) {\n formData.onChange([...inputItems, trimmedValue]);\n } else {\n onAdd(trimmedValue);\n }\n setInputValue(\"\");\n }\n }, [inputValue, formData, onAdd, inputItems]);\n\n const onRemoveData = useCallback(\n (index: number) => {\n if (formData?.onChange) {\n const newData = inputItems.filter(\n (_: string, i: number) => i !== index\n );\n formData.onChange(newData);\n } else {\n onRemove(index);\n }\n },\n [formData, inputItems, onRemove]\n );\n\n const renderItens = useCallback(() => {\n return inputItems?.map((item: string, index: number) => {\n return (\n <div key={item} className=\"flex justify-between\">\n {item}\n <Button\n variant=\"ghost\"\n className=\"text-destructive\"\n size={\"icon\"}\n onClick={() => onRemoveData(index)}\n >\n <Icon name=\"MdDelete\" />\n </Button>\n </div>\n );\n });\n }, [inputItems, onRemoveData]);\n\n const extraElement = useMemo(\n () => (\n <Button type=\"button\" onClick={onAddData} disabled={!inputValue}>\n <Icon name=\"MdAdd\" />\n </Button>\n ),\n [onAddData, inputValue]\n );\n\n return (\n <div className=\"flex flex-col gap-2\">\n <MaskInput\n {...props}\n withoutForm\n extraElement={extraElement}\n onChange={(e) => {\n setInputValue(e.target.value);\n }}\n value={inputValue}\n />\n {renderItens()}\n </div>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type DialogProps = DialogPrimitive.DialogProps;\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg overflow-auto max-h-[80vh]\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","\"use client\";\nimport {\n Dialog as DialogComponent,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogProps as DialogComponentProps,\n DialogClose,\n} from \"../../../components/ui/dialog\";\nimport { PropsWithChildren, useRef } from \"react\";\nimport { Button } from \"../Button\";\n\nexport type DialogProps = DialogComponentProps &\n PropsWithChildren & {\n className?: string;\n title?: string;\n description?: string;\n footer?: () => React.ReactNode;\n };\n\nexport function Dialog({\n title,\n description,\n className,\n children,\n footer = () => null,\n ...props\n}: DialogProps) {\n return (\n <DialogComponent {...props}>\n <DialogContent className={className}>\n <DialogHeader>\n {title && <DialogTitle>{title}</DialogTitle>}\n {description && <DialogDescription>{description}</DialogDescription>}\n </DialogHeader>\n {children}\n {footer && <DialogFooter>{footer()}</DialogFooter>}\n </DialogContent>\n </DialogComponent>\n );\n}\n\nexport type DialogWithFormProps = DialogProps & {\n onSubmit: () => void;\n};\n\nexport const DialogWithForm = ({\n title,\n description,\n className,\n children,\n footer = () => null,\n onSubmit = () => {},\n ...props\n}: DialogWithFormProps) => {\n const dialogRef = useRef<HTMLDivElement>(null);\n\n return (\n <DialogComponent {...props}>\n <DialogContent className={className} ref={dialogRef}>\n <form onSubmit={onSubmit} className=\"flex flex-col gap-4\">\n <DialogHeader>\n {title && <DialogTitle>{title}</DialogTitle>}\n {description && (\n <DialogDescription>{description}</DialogDescription>\n )}\n </DialogHeader>\n {children}\n {footer && (\n <DialogFooter>\n <div className=\"flex justify-between w-full\">\n <DialogClose asChild>\n <Button type=\"button\" variant=\"secondary\">\n Fechar\n </Button>\n </DialogClose>\n {footer()}\n </div>\n </DialogFooter>\n )}\n </form>\n </DialogContent>\n </DialogComponent>\n );\n};\n","\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","import { useCallback } from \"react\";\nimport { Button } from \"../Button\";\nimport { Icon } from \"../../../components/dataDisplay\";\nimport { Separator } from \"../../../components/layout\";\nimport { cn } from \"../../../lib/utils\";\n\ntype StepsProps = {\n data: {\n label?: string;\n id: number;\n }[];\n onClick?: (id: number) => void;\n value?: number;\n};\nexport const Steps = ({ data, onClick = () => {}, value }: StepsProps) => {\n const renderSteps = useCallback(() => {\n return data.map(({ label, id }, index) => {\n const isLast = index === data.length - 1;\n const isActive = typeof value === \"number\" && id <= value;\n\n return (\n <div key={index} className={cn(!isLast && \"w-full flex items-center\")}>\n <div>\n <Button\n onClick={() => onClick && onClick(id)}\n variant={isActive ? \"default\" : \"outline\"}\n size=\"icon\"\n className=\"rounded-full\"\n >\n {isActive ? <Icon name=\"MdCheck\" /> : index + 1}\n </Button>\n </div>\n {label && <p className=\"absolute\">{label}</p>}\n {!isLast && (\n <Separator\n orientation=\"horizontal\"\n className={cn(isActive && \"bg-primary h-[2px]\")}\n />\n )}\n {/* {\n <Separator\n orientation=\"horizontal\"\n className={cn(\"bg-primary h-[2px]\")}\n />\n } */}\n </div>\n );\n });\n }, [data, onClick, value]);\n return <div className=\"flex w-full\">{renderSteps()}</div>;\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type DrawerProps = React.ComponentProps<typeof DrawerPrimitive.Root>;\n\nconst Drawer = ({ shouldScaleBackground = true, ...props }: DrawerProps) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n {...props}\n />\n);\nDrawer.displayName = \"Drawer\";\n\nconst DrawerTrigger = DrawerPrimitive.Trigger;\n\nconst DrawerPortal = DrawerPrimitive.Portal;\n\nconst DrawerClose = DrawerPrimitive.Close;\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\n {...props}\n />\n));\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\n className\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n));\nDrawerContent.displayName = \"DrawerContent\";\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n);\nDrawerHeader.displayName = \"DrawerHeader\";\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n);\nDrawerFooter.displayName = \"DrawerFooter\";\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName;\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName;\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Minus, Plus } from \"lucide-react\";\n// import { Bar, BarChart, ResponsiveContainer } from \"recharts\";\n\nimport { Button } from \"../../../actions\";\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerProps,\n DrawerTitle,\n DrawerTrigger,\n} from \"../../Drawer\";\n\nexport type CustomDrawerProps = DrawerProps & {\n className?: string;\n};\n\nexport function CustomDrawer({ className, ...props }: CustomDrawerProps) {\n return (\n <Drawer {...props}>\n {/* <DrawerTrigger asChild>\n <Button variant=\"outline\">Open Drawer</Button>\n </DrawerTrigger> */}\n <DrawerContent className={className}>{props.children}</DrawerContent>\n </Drawer>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Sheet = SheetPrimitive.Root;\n\nconst SheetTrigger = SheetPrimitive.Trigger;\n\nconst SheetClose = SheetPrimitive.Close;\n\nconst SheetPortal = SheetPrimitive.Portal;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n);\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n {children}\n </SheetPrimitive.Content>\n </SheetPortal>\n));\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nSheetHeader.displayName = \"SheetHeader\";\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nSheetFooter.displayName = \"SheetFooter\";\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n));\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","import {\n Sheet as SheetComponent,\n SheetContent,\n} from \"../../../components/ui/sheet\";\nimport { PropsWithChildren } from \"react\";\n\nexport type SheetProps = typeof SheetComponent &\n PropsWithChildren & {\n side?: \"left\" | \"right\" | \"top\" | \"bottom\";\n className?: string;\n onOpenChange?: (open: boolean) => void;\n open?: boolean;\n };\nexport function Sheet({ side, className, children, ...props }: SheetProps) {\n return (\n <SheetComponent {...props}>\n <SheetContent side={side} className={className}>\n {children}\n </SheetContent>\n </SheetComponent>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { VariantProps, cva } from \"class-variance-authority\";\nimport { PanelLeft } from \"lucide-react\";\n\nimport { useIsMobile } from \"../../hooks/use-mobile\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/ui/button\";\nimport { Input } from \"../../components/ui/input\";\nimport { Separator } from \"../../components/ui/separator\";\nimport { Sheet, SheetContent } from \"../../components/ui/sheet\";\nimport { Skeleton } from \"../../components/ui/skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../../components/ui/tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContext = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n }\n);\nSidebarProvider.displayName = \"SidebarProvider\";\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden md:block text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n )}\n />\n <div\n className={cn(\n \"duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n }\n);\nSidebar.displayName = \"Sidebar\";\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeft />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n});\nSidebarTrigger.displayName = \"SidebarTrigger\";\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n );\n});\nSidebarRail.displayName = \"SidebarRail\";\n\nconst SidebarInset = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"main\">\n>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex min-h-svh flex-1 flex-col bg-background\",\n \"peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n );\n});\nSidebarInset.displayName = \"SidebarInset\";\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\n className\n )}\n {...props}\n />\n );\n});\nSidebarInput.displayName = \"SidebarInput\";\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n});\nSidebarHeader.displayName = \"SidebarHeader\";\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n});\nSidebarFooter.displayName = \"SidebarFooter\";\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n );\n});\nSidebarSeparator.displayName = \"SidebarSeparator\";\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n );\n});\nSidebarContent.displayName = \"SidebarContent\";\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n});\nSidebarGroup.displayName = \"SidebarGroup\";\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n );\n});\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n});\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n));\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n));\nSidebarMenu.displayName = \"SidebarMenu\";\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n));\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n }\n);\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n));\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"rounded-md h-8 flex gap-2 px-2 items-center\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 flex-1 max-w-[--skeleton-width]\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n});\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n));\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => <li ref={ref} {...props} />);\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n});\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-primary/10\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { GalleryVerticalEnd } from \"lucide-react\";\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarHeader,\n SidebarRail,\n} from \"../../../ui/sidebar\";\nimport { TeamSwitcher } from \"./team-switcher\";\nimport { Menus } from \"./menus\";\n\nexport type AppSidebarProps = {\n footer?: () => React.ReactNode;\n user?: {\n email?: string;\n name?: string;\n };\n enterprise?: {\n name: string;\n logo: () => React.ReactNode;\n plan: string;\n };\n navbar: {\n title: string;\n url: string;\n items: {\n title: string;\n url: string;\n isActive?: boolean | undefined;\n icon?: () => React.ReactNode;\n }[];\n }[];\n};\n\nexport function AppSidebar({\n navbar = [],\n enterprise = {\n name: \"Acme Inc\",\n logo: () => <GalleryVerticalEnd />,\n plan: \"Enterprise\",\n },\n footer,\n ...props\n}: AppSidebarProps) {\n return (\n <Sidebar collapsible=\"icon\" {...props}>\n <SidebarHeader>\n <TeamSwitcher teams={enterprise} />\n </SidebarHeader>\n <SidebarContent>\n <Menus items={navbar} />\n </SidebarContent>\n {footer && <SidebarFooter>{footer()}</SidebarFooter>}\n <SidebarRail />\n </Sidebar>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronsUpDown, Plus } from \"lucide-react\";\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from \"../../../ui/sidebar\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from \"../../../ui/dropdown-menu\";\n\nexport function TeamSwitcher({\n teams,\n}: {\n teams: {\n name: string;\n logo: () => React.ReactNode;\n plan: string;\n };\n}) {\n const { isMobile } = useSidebar();\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n {/* {teams?.logo && teams?.logo?.()} */}\n </div>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{teams?.name}</span>\n <span className=\"truncate text-xs\">{teams?.plan}</span>\n </div>\n <ChevronsUpDown className=\"ml-auto\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n {/* <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\"\n align=\"start\"\n side={isMobile ? \"bottom\" : \"right\"}\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n Teams\n </DropdownMenuLabel>\n {teams.map((team, index) => (\n <DropdownMenuItem\n key={team.name}\n onClick={() => setActiveTeam(team)}\n className=\"gap-2 p-2\"\n >\n <div className=\"flex size-6 items-center justify-center rounded-sm border\">\n <team.logo className=\"size-4 shrink-0\" />\n </div>\n {team.name}\n <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n </DropdownMenuItem>\n ))}\n <DropdownMenuSeparator />\n <DropdownMenuItem className=\"gap-2 p-2\">\n <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n <Plus className=\"size-4\" />\n </div>\n <div className=\"font-medium text-muted-foreground\">Add team</div>\n </DropdownMenuItem>\n </DropdownMenuContent> */}\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../../../lib/utils\";\nimport {\n SidebarGroup,\n SidebarGroupLabel,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n} from \"../../../ui/sidebar\";\nimport React from \"react\";\n\nexport function Menus({\n items,\n}: {\n items: {\n title: string;\n url: string;\n items?: {\n title: string;\n url: string;\n icon?: () => React.ReactNode;\n isActive?: boolean | undefined;\n }[];\n }[];\n}) {\n return (\n <>\n {items.map((item, index) => {\n return (\n <SidebarGroup key={index}>\n <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\n <SidebarMenu>\n {item.items?.map((subItem) => (\n <SidebarMenuItem key={subItem.title}>\n <SidebarMenuButton\n asChild\n className={cn(\n subItem?.isActive && \"bg-sidebar-accent font-semibold\"\n )}\n >\n <a href={subItem.url}>\n {subItem?.icon && subItem.icon()}\n <span>{subItem.title}</span>\n </a>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n );\n })}\n </>\n );\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode;\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />);\nBreadcrumb.displayName = \"Breadcrumb\";\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\n className\n )}\n {...props}\n />\n));\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n));\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean;\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n );\n});\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n));\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:w-3.5 [&>svg]:h-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\";\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","\"use client\";\nimport { createContext, useContext, useState } from \"react\";\n\ninterface SidebarContextData {\n currentPath: string;\n isCollapsed: boolean;\n toggleCollapse: () => void;\n setCurrentPath: (path: string) => void;\n}\n\ninterface SidebarProviderProps {\n children: React.ReactNode;\n defaultPath?: string;\n defaultCollapsed?: boolean;\n}\n\nconst SidebarContext = createContext({} as SidebarContextData);\n\nexport function SidebarProvider({\n children,\n defaultPath = \"/\",\n defaultCollapsed = false,\n}: SidebarProviderProps) {\n const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed);\n const [currentPath, setCurrentPath] = useState(defaultPath);\n\n const toggleCollapse = () => setIsCollapsed((prev) => !prev);\n\n return (\n <SidebarContext.Provider\n value={{\n currentPath,\n isCollapsed,\n toggleCollapse,\n setCurrentPath,\n }}\n >\n {children}\n </SidebarContext.Provider>\n );\n}\n\nexport function useSidebar() {\n const context = useContext(SidebarContext);\n\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider\");\n }\n\n return context;\n}\n","\"use client\";\nimport { SidebarTrigger } from \"../../../ui/sidebar\";\nimport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbPage,\n BreadcrumbLink,\n BreadcrumbSeparator,\n} from \"../../../ui/breadcrumb\";\nimport { Separator } from \"../../Separator\";\nimport { useSidebar } from \"../provider\";\n\ninterface BreadcrumbItemProps {\n isLast?: boolean;\n path: string;\n label: string;\n}\n\nconst routeMap: Record<string, string> = {\n dashboard: \"Dashboard\",\n users: \"Usuários\",\n documents: \"Documentos\",\n settings: \"Configurações\",\n create: \"Criar\",\n edit: \"Editar\",\n profile: \"Perfil\",\n analytics: \"Análises\",\n reports: \"Relatórios\",\n};\n\nconst BreadcrumbElement = ({ isLast, path, label }: BreadcrumbItemProps) => {\n if (isLast) {\n return (\n <BreadcrumbItem>\n <BreadcrumbPage className=\"capitalize\">{label}</BreadcrumbPage>\n </BreadcrumbItem>\n );\n }\n\n return (\n <BreadcrumbItem>\n <BreadcrumbLink href={path} className=\"capitalize\">\n {label}\n </BreadcrumbLink>\n <BreadcrumbSeparator />\n </BreadcrumbItem>\n );\n};\n\nexport const HeaderSidebar = () => {\n const { currentPath } = useSidebar();\n\n const breadcrumbItems = currentPath\n .split(\"/\")\n .filter(Boolean)\n .map((segment, index, array) => {\n const path = `/${array.slice(0, index + 1).join(\"/\")}`;\n const isLast = index === array.length - 1;\n const label = routeMap[segment] || segment;\n\n return {\n path,\n label,\n isLast,\n };\n });\n\n return (\n <header className=\"flex h-16 shrink-0 items-center border-b border-border bg-background px-4 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\">\n <div className=\"flex items-center gap-4\">\n <SidebarTrigger className=\"-ml-2 h-9 w-9\" />\n <Separator orientation=\"vertical\" className=\"h-6\" />\n <Breadcrumb>\n <BreadcrumbList>\n <BreadcrumbItem>\n <BreadcrumbLink href=\"/\" className=\"capitalize\">\n Home\n </BreadcrumbLink>\n <BreadcrumbSeparator />\n </BreadcrumbItem>\n {breadcrumbItems.map((item) => (\n <BreadcrumbElement key={item.path} {...item} />\n ))}\n </BreadcrumbList>\n </Breadcrumb>\n </div>\n </header>\n );\n};\n","import { Separator } from \"../../Separator\";\n\nexport const FooterSidebar = () => {\n return (\n <footer className=\"h-[65px]\">\n <Separator />\n <div className=\"flex items-center justify-between h-16 bg-background px-5\">\n <span className=\"text-sm text-muted-foreground\">\n © {new Date().getFullYear()} Your Company\n </span>\n <span className=\"text-sm text-muted-foreground\">\n Feito na terra do sol 🌞\n </span>\n </div>\n </footer>\n );\n};\n","\"use client\";\nimport {\n SidebarInset,\n SidebarProvider as UISidebarProvider,\n} from \"../../ui/sidebar\";\nimport { AppSidebar, AppSidebarProps } from \"./components/app-sidebar\";\nimport { HeaderSidebar } from \"./components/header-sidebar\";\nimport { FooterSidebar } from \"./components/footer-sidebar\";\nimport { cn } from \"../../../lib/utils\";\nimport { SidebarProvider } from \"./provider\";\n\ninterface SidebarProps extends AppSidebarProps {\n children: React.ReactNode;\n contentClassName?: string;\n showFooter?: boolean;\n defaultPath?: string;\n defaultCollapsed?: boolean;\n}\n\nexport const Sidebar = ({\n children,\n contentClassName,\n showFooter = true,\n defaultPath,\n defaultCollapsed,\n ...rest\n}: SidebarProps) => {\n return (\n <SidebarProvider\n defaultPath={defaultPath}\n defaultCollapsed={defaultCollapsed}\n >\n <UISidebarProvider>\n <AppSidebar {...rest} />\n <SidebarInset className=\"overflow-auto bg-slate-50\">\n <HeaderSidebar />\n <main\n className={cn(\n \"flex flex-1 flex-col gap-4 p-4 pt-0\",\n contentClassName\n )}\n >\n {children}\n </main>\n {showFooter && <FooterSidebar />}\n </SidebarInset>\n </UISidebarProvider>\n </SidebarProvider>\n );\n};\n","\"use client\";\n\nimport {\n BadgeCheck,\n Bell,\n ChevronsUpDown,\n CreditCard,\n LogOut,\n Sparkles,\n} from \"lucide-react\";\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from \"../../../ui/sidebar\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../../ui/avatar\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../../../ui/dropdown-menu\";\nimport { useCallback } from \"react\";\n\nexport function NavUser({\n user,\n logoutAction = () => {},\n}: {\n user: {\n name: string;\n email: string;\n avatar: string;\n };\n\n logoutAction?: () => void;\n}) {\n const { isMobile } = useSidebar();\n\n const renderUserInformation = useCallback(() => {\n return (\n <>\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user?.avatar} alt={user?.name} />\n <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{user?.name}</span>\n <span className=\"truncate text-xs\">{user?.email}</span>\n </div>\n </>\n );\n }, [user]);\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n {renderUserInformation()}\n <ChevronsUpDown className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\"\n side={isMobile ? \"bottom\" : \"right\"}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n {renderUserInformation()}\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem>\n <Sparkles />\n Upgrade to Pro\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem>\n <BadgeCheck />\n Account\n </DropdownMenuItem>\n <DropdownMenuItem>\n <CreditCard />\n Billing\n </DropdownMenuItem>\n <DropdownMenuItem>\n <Bell />\n Notifications\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={logoutAction}>\n <LogOut />\n Log out\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n","import React from \"react\";\nimport { Text } from \"../../../components/dataDisplay\";\nimport { PropsWithChildren } from \"react\";\n\nexport type PageLayoutProps = PropsWithChildren & {\n title: string;\n subtitle?: string;\n header?: React.ReactNode;\n};\n\nexport const PageLayout = ({\n subtitle,\n title,\n children,\n header,\n}: PageLayoutProps) => {\n return (\n <div className=\"m-5 p-4 bg-white\">\n <div className=\"flex justify-between\">\n <div>\n {title && <Text variant=\"title\">{title}</Text>}\n {subtitle && <Text variant=\"muted\">{subtitle}</Text>}\n </div>\n {header}\n </div>\n <div className=\"mt-5\">{children}</div>\n </div>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Tabs as TabsUI,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"../../../components/ui/tabs\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface TabsProps {\n tabs: {\n label: string;\n content: React.ReactNode;\n }[];\n activeTabIndex?: number;\n onTabChange?: (index: number) => void;\n className?: string;\n}\n\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n activeTabIndex = 0,\n onTabChange,\n className,\n}) => {\n return (\n <TabsUI\n value={tabs[activeTabIndex].label}\n onValueChange={(value) => {\n const index = tabs.findIndex((tab) => tab.label === value);\n if (onTabChange) onTabChange(index);\n }}\n className={cn(\"w-full\", className)}\n >\n <TabsList>\n {tabs.map((tab, index) => (\n <TabsTrigger key={index} value={tab.label}>\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n {tabs.map((tab, index) => (\n <TabsContent key={index} value={tab.label}>\n {tab.content}\n </TabsContent>\n ))}\n </TabsUI>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"../../lib/utils\";\nimport { buttonVariants } from \"../../components/ui/button\";\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className\n )}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n","import {\n AlertDialog as AlertDialogUI,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"../../ui/alert-dialog\";\n\nexport type AlertDialogProps = {\n title: string;\n description?: string;\n children: React.ReactNode;\n onConfirm?: () => void;\n onCancel?: () => void;\n};\n\nexport const AlertDialog = ({\n title,\n description,\n children,\n onConfirm,\n onCancel,\n}: AlertDialogProps) => {\n return (\n <AlertDialogUI>\n <AlertDialogTrigger asChild>{children}</AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{title}</AlertDialogTitle>\n {description && (\n <AlertDialogDescription>{description}</AlertDialogDescription>\n )}\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel onClick={onCancel}>Cancel</AlertDialogCancel>\n <AlertDialogAction onClick={onConfirm}>Continue</AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialogUI>\n );\n};\n","import { Button } from \"../../../../../components/actions\";\nimport { Icon } from \"../../../../../components/dataDisplay\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport _ from \"lodash\";\n\nexport type MultipleInputBaseProps = {\n children: (params: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n addItem: () => void;\n value: string;\n error?: string;\n }) => React.ReactNode;\n data: string[];\n name?: string;\n onChangeData?: (data: string[]) => void;\n error?: string;\n};\n\nexport const MultipleInputBase = ({\n children,\n data = [],\n name,\n onChangeData = () => {},\n error,\n}: MultipleInputBaseProps) => {\n const form = useFormContext();\n const withForm = !!form && !!name;\n const [inputValue, setInputValue] = useState(\"\");\n\n const inputData = useMemo(() => {\n if (withForm) {\n return _.get(form.watch(), name) || [];\n }\n return data;\n }, [withForm, form, name, data]);\n\n const errorMessage = useMemo(() => {\n if (withForm) {\n return _.get(form.formState.errors, name)?.message as string;\n }\n return error;\n }, [error, form, name, withForm]);\n\n const updateData = useCallback(() => {\n if (!inputValue.length) return;\n if (withForm) {\n form.setValue(name, [...inputData, inputValue]);\n } else {\n onChangeData?.(inputData.concat(inputValue));\n }\n setInputValue(\"\");\n }, [inputData, inputValue, withForm, form, name, onChangeData]);\n\n const removeItem = useCallback(\n (index: number) => {\n if (withForm) {\n form.setValue(\n name,\n inputData.filter((_: string, i: number) => i !== index)\n );\n } else {\n onChangeData?.(inputData.filter((_: string, i: number) => i !== index));\n }\n },\n [withForm, form, name, inputData, onChangeData]\n );\n\n const renderOptions = useCallback(() => {\n return inputData?.map((item: string, index: number) => {\n return (\n <div key={index} className=\"flex justify-between mt-2\">\n <div>{item}</div>\n <Button\n onClick={() => removeItem(index)}\n variant={\"ghost\"}\n size={\"icon\"}\n type=\"button\"\n >\n <Icon name=\"MdDelete\" className=\"fill-destructive\" />\n </Button>\n </div>\n );\n });\n }, [inputData, removeItem]);\n\n return (\n <div>\n {children({\n onChange: ({ target: { value } }) => {\n setInputValue(value);\n },\n addItem: updateData,\n value: inputValue,\n error: errorMessage,\n })}\n {renderOptions()}\n </div>\n );\n};\n","import { Button } from \"../../../../../components/actions\";\nimport { MaskInput, MaskInputProps } from \"../MaskInput\";\nimport { MultipleInputBase } from \"./MultipleInputBase\";\nimport { Icon } from \"../../../../../components/dataDisplay\";\n\nexport type MultipleMaskInputProps = MaskInputProps & {\n data?: string[];\n onChangeData?: (data: string[]) => void;\n name: string;\n};\n\nexport const MultipleMaskInput = ({\n data = [],\n ...props\n}: MultipleMaskInputProps) => {\n return (\n <MultipleInputBase data={data} {...props}>\n {({ onChange, addItem, value }) => {\n return (\n <MaskInput\n {...props}\n value={value}\n onChange={onChange}\n withoutForm\n component={\n <Button type=\"button\" onClick={() => addItem()}>\n <Icon name=\"MdAdd\" />\n </Button>\n }\n />\n );\n }}\n </MultipleInputBase>\n );\n};\n","import { useCallback } from \"react\";\nimport {\n Select,\n SelectProps,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../components/ui/select\";\n\nexport type SelectBaseProps = Omit<SelectProps, \"onValueChange\"> & {\n options: {\n value: string | number;\n label: string;\n }[];\n placeholder?: string;\n className?: string;\n id?: string;\n onChange?: (value: string) => void;\n value?: string;\n onChangeCallback?: (value: string) => void;\n};\n\nexport const SelectBase = ({\n options,\n placeholder,\n onChange = () => {},\n onChangeCallback = () => {},\n value,\n ...rest\n}: SelectBaseProps) => {\n const onSelect = useCallback(\n (value: string) => {\n onChange(value);\n onChangeCallback(value);\n },\n [onChange, onChangeCallback]\n );\n return (\n <Select\n {...rest}\n onValueChange={onSelect}\n defaultValue={value}\n value={value}\n >\n <SelectTrigger>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options?.map((option, index: number) => (\n <SelectItem key={index} value={String(option.value)}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n","import React from \"react\";\nimport { Label } from \"../../../components/ui/label\";\n\nimport {\n FormField,\n FormItem,\n FormLabel,\n FormControl,\n FormMessage,\n FormDescription,\n} from \"../../../components/ui/form\";\nimport { SelectBase, SelectBaseProps } from \"./SelectBase\";\nimport { useFormContext } from \"react-hook-form\";\nimport { cn } from \"../../../lib/utils\";\nimport { ErrorMessage } from \"../../../components/dataDisplay/ErrorMessage/ErrorMessage\";\n\nexport type SelectProps = SelectBaseProps & {\n label?: string;\n name?: string;\n error?: string;\n description?: string;\n withoutForm?: boolean;\n};\n\nexport const Select = ({\n name,\n label,\n description,\n error,\n className,\n withoutForm,\n options,\n placeholder,\n ...props\n}: SelectProps) => {\n const form = useFormContext();\n const hasForm = !!form && !!name;\n\n if (!hasForm || withoutForm) {\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && <Label>{label}</Label>}\n <SelectBase options={options} placeholder={placeholder} {...props} />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {error && <ErrorMessage>{error}</ErrorMessage>}\n </div>\n );\n }\n\n return (\n <FormField\n control={form.control}\n name={name!}\n render={({ field }) => (\n <FormItem className={className}>\n {label && <FormLabel>{label}</FormLabel>}\n <FormControl>\n <SelectBase\n options={options}\n placeholder={placeholder}\n {...props}\n {...field}\n />\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )}\n />\n );\n};\n","import {\n Label as LabelComponent,\n LabelProps as LabelComponentProps,\n} from \"../../ui/label\";\n\nexport type LabelProps = LabelComponentProps;\n\nexport const Label = (props: LabelProps) => {\n return <LabelComponent {...props} />;\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Search, X } from \"lucide-react\";\nimport { cn } from \"../../../../lib/utils\";\nimport * as Popover from \"@radix-ui/react-popover\";\n\nexport type MultiSelectBaseProps = {\n options: { label: string; value: string }[];\n selected?: string[];\n onChange?: (values: string[]) => void;\n placeholder?: string;\n className?: string;\n};\n\nexport function MultiSelectBase({\n options = [],\n selected = [],\n onChange = () => {},\n placeholder = \"Select frameworks...\",\n className,\n}: MultiSelectBaseProps) {\n const [open, setOpen] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(\"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const handleRemoveItem = (valueToRemove: string) => {\n onChange(selected.filter((value) => value !== valueToRemove));\n };\n\n const handleSelectItem = (value: string) => {\n if (selected.includes(value)) {\n onChange(selected.filter((v) => v !== value));\n } else {\n onChange([...selected, value]);\n }\n };\n\n const filteredOptions = options.filter((option) =>\n option.label.toLowerCase().includes(inputValue.toLowerCase())\n );\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <div\n className={cn(\n \"flex min-h-[40px] w-full flex-wrap gap-1.5 rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n className\n )}\n >\n {selected.map((value) => {\n const option = options.find((o) => o.value === value);\n if (!option) return null;\n\n return (\n <div\n key={value}\n className=\"flex items-center gap-1 rounded-md bg-secondary px-2 py-1 text-sm text-secondary-foreground\"\n >\n {option.label}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n handleRemoveItem(value);\n }}\n className=\"rounded-full hover:bg-secondary-foreground/20\"\n >\n <X className=\"h-3 w-3\" />\n <span className=\"sr-only\">Remove {option.label}</span>\n </button>\n </div>\n );\n })}\n <div className=\"flex-1\">\n {selected.length === 0 && (\n <span className=\"text-muted-foreground\">{placeholder}</span>\n )}\n </div>\n </div>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n className=\"w-[--radix-popover-trigger-width] z-50 mt-1 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95\"\n align=\"start\"\n sideOffset={4}\n >\n <div className=\"flex items-center border-b border-border px-3 py-2\">\n <Search className=\"h-4 w-4 text-muted-foreground\" />\n <input\n ref={inputRef}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n placeholder=\"Search...\"\n className=\"flex-1 bg-transparent px-2 outline-none placeholder:text-muted-foreground\"\n />\n </div>\n <div className=\"max-h-[200px] overflow-auto\">\n {filteredOptions.length === 0 ? (\n <div className=\"px-2 py-4 text-center text-sm text-muted-foreground\">\n No results found.\n </div>\n ) : (\n filteredOptions.map((option) => (\n <div\n key={option.value}\n onClick={() => handleSelectItem(option.value)}\n className={cn(\n \"flex cursor-pointer items-center gap-2 px-4 py-2 text-sm hover:bg-accent\",\n selected.includes(option.value) && \"bg-accent\"\n )}\n >\n <div\n className={cn(\n \"flex h-4 w-4 items-center justify-center rounded border border-primary\",\n selected.includes(option.value) &&\n \"bg-primary text-primary-foreground\"\n )}\n >\n {selected.includes(option.value) && (\n <span className=\"text-[10px]\">✓</span>\n )}\n </div>\n {option.label}\n </div>\n ))\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n","\"use client\";\nimport React from \"react\";\nimport { Label } from \"../../../../components/dataDisplay/Label\";\nimport { MultiSelectBase, MultiSelectBaseProps } from \"./MultiSelectBase\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../../../../components/ui/form\";\nimport { useFormContext } from \"react-hook-form\";\n\ntype MultiSelectProps = MultiSelectBaseProps & {\n label?: string;\n name?: string;\n withoutForm?: boolean;\n className?: string;\n required?: boolean;\n \"data-testid\"?: string;\n};\n\nexport function MultiSelect({\n label,\n name,\n withoutForm,\n className,\n required,\n \"data-testid\": testId,\n ...props\n}: MultiSelectProps) {\n const form = useFormContext();\n const hasForm = !withoutForm && !!form && !!name;\n\n if (!hasForm)\n return (\n <div className=\"grid w-full items-center gap-3\">\n {label && <Label htmlFor={name}>{label}</Label>}\n <MultiSelectBase {...props} />\n </div>\n );\n\n return (\n <FormField\n control={form.control}\n name={name}\n render={({ field: { value, ...rest } }) => {\n return (\n <FormItem\n className={className}\n data-testid={testId ? `form-item-${testId}` : undefined}\n >\n {label && (\n <FormLabel\n htmlFor={name}\n data-testid={testId ? `form-label-${testId}` : undefined}\n >\n {`${label}${required ? \" *\" : \"\"}`}\n </FormLabel>\n )}\n <FormControl>\n <div className=\"flex w-full items-center space-x-2\">\n <MultiSelectBase {...props} {...rest} selected={value} />\n </div>\n </FormControl>\n <FormMessage\n role=\"alert\"\n data-testid={testId ? `form-message-${testId}` : undefined}\n />\n </FormItem>\n );\n }}\n />\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type SwitchProps = React.ComponentPropsWithoutRef<\n typeof SwitchPrimitives.Root\n>;\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import { Label } from \"../../../components/ui/label\";\nimport {\n Switch as SwitchUI,\n SwitchProps as SwitchUIProps,\n} from \"../../../components/ui/switch\";\nimport { useFormContext } from \"react-hook-form\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n} from \"../../../components/ui/form\";\nimport { cn } from \"../../../lib/utils\";\n\nexport type SwitchProps = SwitchUIProps & {\n label?: string;\n withoutForm?: boolean;\n};\n\nexport function Switch({\n label,\n withoutForm,\n className,\n ...props\n}: SwitchProps) {\n const form = useFormContext();\n const hasForm = !!form && !withoutForm && !!props.name;\n\n if (!hasForm)\n return (\n <div className=\"flex items-center space-x-2\">\n <SwitchUI {...props} />\n {label && <Label htmlFor={props.id}>{label}</Label>}\n </div>\n );\n return (\n <FormField\n control={form.control}\n name={props.name ?? \"\"}\n render={({ field }) => (\n <FormItem\n className={cn(className, \"flex items-center space-x-2 space-y-0\")}\n >\n <FormControl>\n <Switch checked={field.value} onCheckedChange={field.onChange} />\n </FormControl>\n <FormLabel>{label}</FormLabel>\n </FormItem>\n )}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,qBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA,4BAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,IAAAC,SAAuB;AACvB,yBASO;;;ACZP,YAAuB;;;ACAvB,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ADII;AALJ,IAAM,QAAc,iBAGlB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAPL,IAOG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,qDAAC,SAAI,WAAU,iCACb;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN,GACF;AAAA,CACD;AACD,MAAM,cAAc;AAEpB,IAAM,cAAoB,iBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YArBL,IAqBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,qDAAC,0BAAM,KAAU,WAAW,GAAG,mBAAmB,SAAS,KAAO,MAAO;AAAA,CAC1E;AACD,YAAY,cAAc;AAE1B,IAAM,YAAkB,iBAGtB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA7BL,IA6BG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,8BAA8B,SAAS;AAAA,OACjD;AAAA,EACN;AAAA,CACD;AACD,UAAU,cAAc;AAExB,IAAM,cAAoB,iBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAzCL,IAyCG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAAc;AAE1B,IAAM,WAAiB,iBAGrB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAxDL,IAwDG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,SAAS,cAAc;AAEvB,IAAM,YAAkB,iBAGtB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAvEL,IAuEG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,UAAU,cAAc;AAExB,IAAM,YAAkB,iBAGtB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAtFL,IAsFG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,UAAU,cAAc;AAExB,IAAM,eAAqB,iBAGzB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YArGL,IAqGG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,sCAAsC,SAAS;AAAA,OACzD;AAAA,EACN;AAAA,CACD;AACD,aAAa,cAAc;;;AE1G3B,iCAAoC;AACpC,yBAAoC;;;ACHpC,IAAAC,SAAuB;AACvB,wBAAqB;AACrB,sCAAuC;AA4CjC,IAAAC,sBAAA;AAxCN,IAAM,qBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,WACE;AAAA,QACF,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAQA,IAAM,SAAe;AAAA,EACnB,CAAC,IAAyD,QAAQ;AAAjE,iBAAE,aAAW,SAAS,MAAM,UAAU,MA3CzC,IA2CG,IAAgD,kBAAhD,IAAgD,CAA9C,aAAW,WAAS,QAAM;AAC3B,UAAM,OAAO,UAAU,yBAAO;AAC9B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,QAC1D;AAAA,SACI;AAAA,IACN;AAAA,EAEJ;AACF;AACA,OAAO,cAAc;;;ACpDrB,IAAAC,SAAuB;AACvB,4BAAuC;AACvC,0BAA4C;AAsB1C,IAAAC,sBAAA;AAlBF,IAAM,eAAqC;AAE3C,IAAM,sBAA4C;AAElD,IAAM,oBAA0C;AAEhD,IAAM,qBAA2C;AAEjD,IAAM,kBAAwC;AAE9C,IAAM,yBAA+C;AAErD,IAAM,yBAA+B,kBAKnC,CAAC,IAA0C,QAAK;AAA/C,eAAE,aAAW,OAAO,SAzBvB,IAyBG,IAAiC,kBAAjC,IAAiC,CAA/B,aAAW,SAAO;AACrB;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,SAAS;AAAA,QACT;AAAA,MACF;AAAA,OACI,QAPL;AAAA,MASE;AAAA;AAAA,QACD,6CAAC,oCAAa,WAAU,WAAU;AAAA;AAAA;AAAA,EACpC;AAAA,CACD;AACD,uBAAuB,cACC,iCAAW;AAEnC,IAAM,yBAA+B,kBAGnC,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA7CL,IA6CG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,uBAAuB,cACC,iCAAW;AAEnC,IAAM,sBAA4B,kBAGhC,CAAC,IAAyC,QAAK;AAA9C,eAAE,aAAW,aAAa,EA7D7B,IA6DG,IAAgC,kBAAhC,IAAgC,CAA9B,aAAW;AACd,sDAAuB,8BAAtB,EACC;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN,GACF;AAAA,CACD;AACD,oBAAoB,cAAoC,8BAAQ;AAEhE,IAAM,mBAAyB,kBAK7B,CAAC,IAAgC,QAAK;AAArC,eAAE,aAAW,MAlFhB,IAkFG,IAAuB,kBAAvB,IAAuB,CAArB,aAAW;AACd;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,SAAS;AAAA,QACT;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,iBAAiB,cAAoC,2BAAK;AAE1D,IAAM,2BAAiC,kBAGrC,CAAC,IAA4C,QAAK;AAAjD,eAAE,aAAW,UAAU,QAlG1B,IAkGG,IAAmC,kBAAnC,IAAmC,CAAjC,aAAW,YAAU;AACxB;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,OACI,QAPL;AAAA,MASC;AAAA,qDAAC,UAAK,WAAU,gEACd,uDAAuB,qCAAtB,EACC,uDAAC,6BAAM,WAAU,WAAU,GAC7B,GACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAAA,CACD;AACD,yBAAyB,cACD,mCAAa;AAErC,IAAM,wBAA8B,kBAGlC,CAAC,IAAmC,QAAK;AAAxC,eAAE,aAAW,SA1HhB,IA0HG,IAA0B,kBAA1B,IAA0B,CAAxB,aAAW;AACd;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QANL;AAAA,MAQC;AAAA,qDAAC,UAAK,WAAU,gEACd,uDAAuB,qCAAtB,EACC,uDAAC,8BAAO,WAAU,wBAAuB,GAC3C,GACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAAA,CACD;AACD,sBAAsB,cAAoC,gCAAU;AAEpE,IAAM,oBAA0B,kBAK9B,CAAC,IAAgC,QAAK;AAArC,eAAE,aAAW,MAlJhB,IAkJG,IAAuB,kBAAvB,IAAuB,CAArB,aAAW;AACd;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,SAAS;AAAA,QACT;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,kBAAkB,cAAoC,4BAAM;AAE5D,IAAM,wBAA8B,kBAGlC,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAlKL,IAkKG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,4BAA4B,SAAS;AAAA,OAC/C;AAAA,EACN;AAAA,CACD;AACD,sBAAsB,cAAoC,gCAAU;AAEpE,IAAM,uBAAuB,CAAC,OAGe;AAHf,eAC5B;AAAA;AAAA,EA5KF,IA2K8B,IAEzB,kBAFyB,IAEzB;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,8CAA8C,SAAS;AAAA,OACjE;AAAA,EACN;AAEJ;AACA,qBAAqB,cAAc;;;AF9J3B,IAAAC,sBAAA;AAND,SAAS,qBAA4B;AAAA,EAC1C;AACF,GAAqC;AACnC,SACE,8CAAC,gBACC;AAAA,iDAAC,kDAAoB,SAAO,MAC1B;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAU;AAAA,QAEV;AAAA,uDAAC,0CAAoB,WAAU,gBAAe;AAAA,UAAE;AAAA;AAAA;AAAA,IAElD,GACF;AAAA,IACA,8CAAC,uBAAoB,OAAM,OAAM,WAAU,aACzC;AAAA,mDAAC,qBAAkB,iCAAgB;AAAA,MACnC,6CAAC,yBAAsB;AAAA,MACtB,MACE,cAAc,EACd;AAAA,QACC,CAAC,WACC,OAAO,OAAO,eAAe,eAAe,OAAO,WAAW;AAAA,MAClE,EACC,IAAI,CAAC,WAAW;AACf,eACE;AAAA,UAAC;AAAA;AAAA,YAEC,WAAU;AAAA,YACV,SAAS,OAAO,aAAa;AAAA,YAC7B,iBAAiB,CAAC,UAAU,OAAO,iBAAiB,CAAC,CAAC,KAAK;AAAA,YAE1D,iBAAO;AAAA;AAAA,UALH,OAAO;AAAA,QAMd;AAAA,MAEJ,CAAC;AAAA,OACL;AAAA,KACF;AAEJ;;;AG9CI,IAAAC,sBAAA;AANG,SAAS,iBAAwB;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACF,GAAoC;AAClC,SACE,8CAAC,SAAI,WAAU,qCACb;AAAA,iDAAC,SAAI,WAAU,sCAAsC,mBAAQ;AAAA,IAC5D,wBAAwB,6CAAC,wBAAqB,OAAc;AAAA,KAC/D;AAEJ;;;ACdA,IAAAC,sBAKO;;;ACLP,IAAAC,SAAuB;AACvB,sBAAiC;AACjC,IAAAC,uBAA8C;AAgB5C,IAAAC,sBAAA;AAVF,IAAM,SAAyB;AAI/B,IAAM,cAA8B;AAEpC,IAAM,gBAAsB,kBAG1B,CAAC,IAAmC,QAAK;AAAxC,eAAE,aAAW,SAnBhB,IAmBG,IAA0B,kBAA1B,IAA0B,CAAxB,aAAW;AACd;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QANL;AAAA,MAQE;AAAA;AAAA,QACD,6CAAiB,sBAAhB,EAAqB,SAAO,MAC3B,uDAAC,oCAAY,WAAU,sBAAqB,GAC9C;AAAA;AAAA;AAAA,EACF;AAAA,CACD;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,uBAA6B,kBAGjC,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAvCL,IAuCG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QANL;AAAA,MAQC,uDAAC,kCAAU,WAAU,WAAU;AAAA;AAAA,EACjC;AAAA,CACD;AACD,qBAAqB,cAA8B,+BAAe;AAElE,IAAM,yBAA+B,kBAGnC,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAxDL,IAwDG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QANL;AAAA,MAQC,uDAAC,oCAAY,WAAU,WAAU;AAAA;AAAA,EACnC;AAAA,CACD;AACD,uBAAuB,cACL,iCAAiB;AAEnC,IAAM,gBAAsB,kBAG1B,CAAC,IAAwD,QAAK;AAA7D,eAAE,aAAW,UAAU,WAAW,SA1ErC,IA0EG,IAA+C,kBAA/C,IAA+C,CAA7C,aAAW,YAAU;AACxB,sDAAiB,wBAAhB,EACC;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,aAAa,YACX;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,OACI,QATL;AAAA,MAWC;AAAA,qDAAC,wBAAqB;AAAA,QACtB;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,aAAa,YACX;AAAA,YACJ;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACA,6CAAC,0BAAuB;AAAA;AAAA;AAAA,EAC1B,GACF;AAAA,CACD;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,cAAoB,kBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA1GL,IA0GG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,qCAAqC,SAAS;AAAA,OACxD;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAA8B,sBAAM;AAEhD,IAAM,aAAmB,kBAGvB,CAAC,IAAmC,QAAK;AAAxC,eAAE,aAAW,SAtHhB,IAsHG,IAA0B,kBAA1B,IAA0B,CAAxB,aAAW;AACd;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QANL;AAAA,MAQC;AAAA,qDAAC,UAAK,WAAU,iEACd,uDAAiB,+BAAhB,EACC,uDAAC,8BAAM,WAAU,WAAU,GAC7B,GACF;AAAA,QACA,6CAAiB,0BAAhB,EAA0B,UAAS;AAAA;AAAA;AAAA,EACtC;AAAA,CACD;AACD,WAAW,cAA8B,qBAAK;AAE9C,IAAM,kBAAwB,kBAG5B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA5IL,IA4IG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,4BAA4B,SAAS;AAAA,OAC/C;AAAA,EACN;AAAA,CACD;AACD,gBAAgB,cAA8B,0BAAU;;;AD3HlD,IAAAC,sBAAA;AANC,SAAS,oBAA2B;AAAA,EACzC;AAAA,EACA,kBAAkB,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE;AACvC,GAAuC;AACrC,SACE,8CAAC,SAAI,WAAU,0CACb;AAAA,kDAAC,SAAI,WAAU,wCACZ;AAAA,YAAM,4BAA4B,EAAE,KAAK;AAAA,MAAO;AAAA,MAAI;AAAA,MACpD,MAAM,oBAAoB,EAAE,KAAK;AAAA,MAAO;AAAA,OAC3C;AAAA,IACA,8CAAC,SAAI,WAAU,4CACb;AAAA,oDAAC,SAAI,WAAU,+BACb;AAAA,qDAAC,OAAE,WAAU,uBAAsB,kCAAiB;AAAA,QACpD;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,GAAG,MAAM,SAAS,EAAE,WAAW,QAAQ;AAAA,YAC9C,eAAe,CAAC,UAAU;AACxB,oBAAM,YAAY,OAAO,KAAK,CAAC;AAAA,YACjC;AAAA,YAEA;AAAA,2DAAC,iBAAc,WAAU,gBACvB,uDAAC,eAAY,aAAa,MAAM,SAAS,EAAE,WAAW,UAAU,GAClE;AAAA,cACA,6CAAC,iBAAc,MAAK,OACjB,0BAAgB,IAAI,CAAC,aACpB,6CAAC,cAA0B,OAAO,GAAG,QAAQ,IAC1C,sBADc,QAEjB,CACD,GACH;AAAA;AAAA;AAAA,QACF;AAAA,SACF;AAAA,MACA,8CAAC,SAAI,WAAU,kEAAiE;AAAA;AAAA,QACtE,MAAM,SAAS,EAAE,WAAW,YAAY;AAAA,QAAE;AAAA,QAAI;AAAA,QACrD,MAAM,aAAa;AAAA,SACtB;AAAA,MACA,8CAAC,SAAI,WAAU,+BACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,MAAM,MAAM,aAAa,CAAC;AAAA,YACnC,UAAU,CAAC,MAAM,mBAAmB;AAAA,YAEpC,uDAAC,2CAAoB,WAAU,WAAU;AAAA;AAAA,QAC3C;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,MAAM,MAAM,aAAa;AAAA,YAClC,UAAU,CAAC,MAAM,mBAAmB;AAAA,YAEpC,uDAAC,uCAAgB,WAAU,WAAU;AAAA;AAAA,QACvC;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,MAAM,MAAM,SAAS;AAAA,YAC9B,UAAU,CAAC,MAAM,eAAe;AAAA,YAEhC,uDAAC,wCAAiB,WAAU,WAAU;AAAA;AAAA,QACxC;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,MAAM,MAAM,aAAa,MAAM,aAAa,IAAI,CAAC;AAAA,YAC1D,UAAU,CAAC,MAAM,eAAe;AAAA,YAEhC,uDAAC,4CAAqB,WAAU,WAAU;AAAA;AAAA,QAC5C;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;;;AExFA,IAAAC,sBAKO;AAwBI,IAAAC,sBAAA;AANJ,SAAS,sBAAqC;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AACF,GAA8C;AAC5C,MAAI,CAAC,OAAO,WAAW,GAAG;AACxB,WAAO,6CAAC,SAAI,WAAW,GAAG,SAAS,GAAI,iBAAM;AAAA,EAC/C;AAEA,SACE,6CAAC,SAAI,WAAW,GAAG,+BAA+B,SAAS,GACzD,wDAAC,gBACC;AAAA,iDAAC,uBAAoB,SAAO,MAC1B;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAU;AAAA,QAEV;AAAA,uDAAC,UAAM,iBAAM;AAAA,UACZ,OAAO,YAAY,MAAM,SACxB,6CAAC,qCAAc,WAAU,gBAAe,IACtC,OAAO,YAAY,MAAM,QAC3B,6CAAC,mCAAY,WAAU,gBAAe,IAEtC,6CAAC,qCAAc,WAAU,gBAAe;AAAA;AAAA;AAAA,IAE5C,GACF;AAAA,IACA,8CAAC,uBAAoB,OAAM,SACzB;AAAA,oDAAC,oBAAiB,SAAS,MAAM,OAAO,cAAc,KAAK,GACzD;AAAA,qDAAC,mCAAY,WAAU,6CAA4C;AAAA,QAAE;AAAA,SAEvE;AAAA,MACA,8CAAC,oBAAiB,SAAS,MAAM,OAAO,cAAc,IAAI,GACxD;AAAA,qDAAC,qCAAc,WAAU,6CAA4C;AAAA,QAAE;AAAA,SAEzE;AAAA,MACA,6CAAC,yBAAsB;AAAA,MACvB,8CAAC,oBAAiB,SAAS,MAAM,OAAO,iBAAiB,KAAK,GAC5D;AAAA,qDAAC,mCAAY,WAAU,6CAA4C;AAAA,QAAE;AAAA,SAEvE;AAAA,OACF;AAAA,KACF,GACF;AAEJ;;;ATQQ,IAAAC,sBAAA;AApDD,SAAS,aAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,iBAAiB;AAAA,EAC7B,SAAS,cAAc;AAAA,EACvB,kBAAkB,uBAAuB;AAAA,EACzC;AAAA,EACA,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,EACjC,cAAc,CAAC;AAAA,EACf,oBAAoB,CAAC;AACvB,GAA6B;AAvC7B;AAwCE,QAAM,CAAC,SAAS,UAAU,IAAU,gBAAuB,WAAW;AACtE,QAAM,CAAC,kBAAkB,mBAAmB,IACpC,gBAA0B,iBAAiB;AACnD,QAAM,CAAC,EAAE,WAAW,SAAS,GAAG,aAAa,IACrC,gBAA0B;AAAA,IAC9B,WAAW;AAAA,IACX,UAAU,YAAY,CAAC;AAAA,EACzB,CAAC;AAEH,QAAM,aAAmB;AAAA,IACvB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,WAAW,QAAQ;AAAA,EACtB;AAEA,QAAM,YAAQ,kCAAc;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,qBAAiB,oCAAgB;AAAA,IACjC,iBAAiB;AAAA,IACjB,mBAAmB,kBAAc,sCAAkB,IAAI;AAAA,IACvD,2BAAuB,0CAAsB;AAAA,IAC7C,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB,WAAW,KAAK,KAAK,KAAK,SAAS,QAAQ;AAAA,IAC3C,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,eAAe;AAAA,EACjB,CAAC;AAED,SACE,8CAAC,SAAI,WAAU,aACX;AAAA,gBAAW,WAAW,yBACtB;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,IAEF,6CAAC,SAAI,WAAW,GAAG,qBAAqB,SAAS,GAC/C,wDAAC,SACC;AAAA,mDAAC,eACE,gBAAM,gBAAgB,EAAE,IAAI,CAAC,gBAC5B,6CAAC,YACE,sBAAY,QAAQ,IAAI,CAAC,WACxB,6CAAC,aACE,iBAAO,gBAAgB,OACtB;AAAA,QAAC;AAAA;AAAA,UACC,QAAQ,OAAO;AAAA,UACf,OAAO,OAAO,OAAO,UAAU;AAAA;AAAA,MACjC,KALY,OAAO,EAOvB,CACD,KAVY,YAAY,EAW3B,CACD,GACH;AAAA,MACA,6CAAC,aACE,uBAAM,YAAY,EAAE,SAApB,mBAA0B,UACzB,MAAM,YAAY,EAAE,KAAK,IAAI,CAAC,QAC5B,6CAAC,YACE,cAAI,gBAAgB,EAAE,IAAI,CAAC,SAC1B,6CAAC,aACE;AAAA,QACC,KAAK,OAAO,UAAU;AAAA,QACtB,KAAK,WAAW;AAAA,MAClB,KAJc,KAAK,EAKrB,CACD,KARY,IAAI,EASnB,CACD,IAED,6CAAC,YACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,QAAQ;AAAA,UACjB,WAAU;AAAA,UACX;AAAA;AAAA,MAED,GACF,GAEJ;AAAA,OACF,GACF;AAAA,IACC,kBACC,6CAAC,uBAAoB,OAAc,iBAAiB,aAAa;AAAA,KAErE;AAEJ;;;AUtIA,IAAAC,mCAAuC;AAkCnC,IAAAC,uBAAA;AA9BJ,IAAM,oBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,SACE;AAAA,QACF,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAMA,SAAS,MAAM,IAA8C;AAA9C,eAAE,aAAW,QAjC5B,IAiCe,IAAyB,kBAAzB,IAAyB,CAAvB,aAAW;AAC1B,SACE,8CAAC,wBAAI,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS,KAAO,MAAO;AAE1E;;;ACrCA,mBAA4C;AAC5C,IAAAC,sBAA4B;AA4Be,IAAAC,uBAAA;AAzBpC,IAAMC,QAA4B,CAAC,OAAiC;AAAjC,eAAE,QAAM,OAAO,GAJzD,IAI0C,IAAsB,iBAAtB,IAAsB,CAApB,QAAM;AAChD,QAAM,eAAW,sBAAQ,MAAM,MAAM,CAAC,IAAI,CAAC;AAE3C,QAAM,sBAAkB;AAAA,IACtB,OAAO;AAAA;AAAA,MAEL,IAAI,QAAQ,gBAAgB;AAAA;AAAA,MAE5B,IAAI,QAAQ,gBAAgB;AAAA;AAAA,MAE5B,IAAI,QAAQ,gBAAgB;AAAA,IAC9B;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,eAAW,sBAAQ,MAAM;AAnBjC,QAAAC;AAoBI,UAAM,UAAU,CAAC,GAAG,SAAS,SAAS,QAAQ,CAAC;AAC/C,WAAO;AAAA,MACL,SAAS,MAAM,IAAGA,MAAA,QAAQ,CAAC,MAAT,gBAAAA,IAAY,KAAK,KAAK;AAAA,IAC1C,EAAE,kBAAkB;AAAA,EACtB,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAMD,YAAO;AAAA,IACX,CAAC,UAAuB;AA3B5B,UAAAC,KAAAC;AA4BM,UAAI;AACF,YAAI,CAAC,YAAY,CAAC,SAAU,QAAO,+EAAE;AAErC,gBAAOA,OAAAD,MAAA,gBAAgB,QAAwC,GAC7D,cADK,gBAAAC,IAAA,KAAAD,KAEH;AAAA,MACN,SAAQ;AACN,eAAO,+EAAE;AAAA,MACX;AAAA,IACF;AAAA,IACA,CAAC,iBAAiB,UAAU,QAAQ;AAAA,EACtC;AAEA,SACE,8CAAC,gCAAY,UAAZ,EAAqB,OAAO,EAAE,MAAM,OAAO,IAAI,EAAE,GAChD,wDAACD,OAAA,mBAAS,KAAM,GAClB;AAEJ;;;AC5CA,IAAAG,SAAuB;AACvB,sBAAiC;AAQ/B,IAAAC,uBAAA;AAJF,IAAM,SAAe,kBAGnB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAVL,IAUG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,OAAO,cAA8B,qBAAK;AAE1C,IAAM,cAAoB,kBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAzBL,IAyBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,+BAA+B,SAAS;AAAA,OAClD;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAA8B,sBAAM;AAEhD,IAAM,iBAAuB,kBAG3B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YArCL,IAqCG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,eAAe,cAA8B,yBAAS;;;AC9CtD,oBAAwB;;;ACDxB,IAAAC,mCAAuC;AAmDnC,IAAAC,uBAAA;AA/CJ,IAAM,mBAAe,sCAAI,IAAI;AAAA,EAC3B,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AACF,CAAC;AAGD,IAAM,SAAS;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AACT;AAOO,SAAS,KAAK;AAAA,EACnB,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AACF,GAAc;AACZ,QAAM,MAAM,OAAO,WAAW,QAAQ,KAAK;AAE3C,SACE,8CAAC,OAAI,WAAW,GAAG,aAAa,EAAE,SAAS,MAAM,CAAC,GAAG,SAAS,GAC3D,UACH;AAEJ;;;ADzCW,IAAAC,uBAAA;AARJ,IAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,SAAS,+EAAE;AACb,MAAyB;AACvB,UAAI,uBAAQ,IAAI,EAAG,QAAO;AAE1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,cAAc;AAAA,QACd;AAAA,MACF;AAAA,MAEA;AAAA,uDAAC,SAAI,WAAU,cACZ;AAAA,mBAAS,8CAAC,QAAK,SAAQ,SAAS,iBAAM;AAAA,UACtC;AAAA,WACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,cAAc,aACV,UACA;AAAA,YACN;AAAA,YAEC,iBAAO,QAAQ,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,UAC7C;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,kBAAkB,eAAe,aAAa;AAAA,gBAChD;AAAA,gBAGA;AAAA,iEAAC,QAAK,WAAU,6CACb;AAAA,sDAAS,SAAQ;AAAA,oBAAI;AAAA,qBACxB;AAAA,kBACA,8CAAC,QAAM,iBAAM;AAAA;AAAA;AAAA,cALR;AAAA,YAMP,CACD;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;;;AEvDA,IAAAC,SAAuB;AAQrB,IAAAC,uBAAA;AAJF,IAAM,OAAa,kBAGjB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAPL,IAOG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,KAAK,cAAc;AAEnB,IAAM,aAAmB,kBAGvB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAtBL,IAsBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN;AAAA,CACD;AACD,WAAW,cAAc;AAEzB,IAAM,YAAkB,kBAGtB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAlCL,IAkCG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,6CAA6C,SAAS;AAAA,OAChE;AAAA,EACN;AAAA,CACD;AACD,UAAU,cAAc;AAExB,IAAM,kBAAwB,kBAG5B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA9CL,IA8CG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN;AAAA,CACD;AACD,gBAAgB,cAAc;AAE9B,IAAM,cAAoB,kBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA1DL,IA0DG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,uDAAC,wBAAI,KAAU,WAAW,GAAG,YAAY,SAAS,KAAO,MAAO;AAAA,CACjE;AACD,YAAY,cAAc;AAE1B,IAAM,aAAmB,kBAGvB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAlEL,IAkEG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,8BAA8B,SAAS;AAAA,OACjD;AAAA,EACN;AAAA,CACD;AACD,WAAW,cAAc;;;ACpDR,IAAAC,uBAAA;AAJV,IAAMC,QAAO,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,MAAM,+EAAE;AACnB,MAAiB;AACf,SACE,+CAAC,QACC;AAAA,mDAAC,cACE;AAAA,eAAS,8CAAC,aAAW,iBAAM;AAAA,MAC3B,eAAe,8CAAC,mBAAiB,uBAAY;AAAA,OAChD;AAAA,IACC,YAAY,8CAAC,eAAa,UAAS;AAAA,IACnC,UAAU,8CAAC,cAAY,iBAAO,GAAE;AAAA,KACnC;AAEJ;;;ACjCA,IAAAC,0BAA+B;;;ACE/B,IAAAC,SAAuB;AACvB,wBAAmC;AACnC,IAAAC,uBAAsB;AAuBhB,IAAAC,uBAAA;AAfN,IAAM,WAAiB,kBAGrB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAfL,IAeG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAmB;AAAA,IAAlB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QANL;AAAA,MAQC;AAAA,QAAmB;AAAA,QAAlB;AAAA,UACC,WAAW,GAAG,+CAA+C;AAAA,UAE7D,wDAAC,8BAAM,WAAU,WAAU;AAAA;AAAA,MAC7B;AAAA;AAAA,EACF;AAAA,CACD;AACD,SAAS,cAAgC,uBAAK;;;AC7B9C,IAAAC,UAAuB;AACvB,qBAAgC;AAChC,IAAAC,mCAAuC;AAiBrC,IAAAC,uBAAA;AAbF,IAAM,oBAAgB;AAAA,EACpB;AACF;AAOA,IAAMC,SAAc,mBAGlB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YApBL,IAoBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAgB;AAAA,IAAf;AAAA,MACC;AAAA,MACA,WAAW,GAAG,cAAc,GAAG,SAAS;AAAA,OACpC;AAAA,EACN;AAAA,CACD;AACDA,OAAM,cAA6B,oBAAK;;;AC3BxC,IAAAC,0BAA+B;;;ACE/B,IAAAC,UAAuB;AAEvB,IAAAC,qBAAqB;AACrB,6BAOO;AA0BD,IAAAC,uBAAA;AArBN,IAAM,OAAO;AASb,IAAM,mBAAyB;AAAA,EAC7B,CAAC;AACH;AAEA,IAAM,YAAY,CAGhB,OAE0C;AAF1C,MACG,kBADH,IACG;AAEH,SACE,8CAAC,iBAAiB,UAAjB,EAA0B,OAAO,EAAE,MAAM,MAAM,KAAK,GACnD,wDAAC,sDAAe,MAAO,GACzB;AAEJ;AAEA,IAAM,eAAe,MAAM;AACzB,QAAM,eAAqB,mBAAW,gBAAgB;AACtD,QAAM,cAAoB,mBAAW,eAAe;AACpD,QAAM,EAAE,eAAe,UAAU,QAAI,uCAAe;AAEpD,QAAM,aAAa,cAAc,aAAa,MAAM,SAAS;AAE7D,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,QAAM,EAAE,GAAG,IAAI;AAEf,SAAO;AAAA,IACL;AAAA,IACA,MAAM,aAAa;AAAA,IACnB,YAAY,GAAG,EAAE;AAAA,IACjB,mBAAmB,GAAG,EAAE;AAAA,IACxB,eAAe,GAAG,EAAE;AAAA,KACjB;AAEP;AAMA,IAAM,kBAAwB;AAAA,EAC5B,CAAC;AACH;AAEA,IAAM,WAAiB,mBAGrB,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YA7EL,IA6EG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,QAAM,KAAW,cAAM;AAEvB,SACE,8CAAC,gBAAgB,UAAhB,EAAyB,OAAO,EAAE,GAAG,GACpC,wDAAC,wBAAI,KAAU,WAAW,GAAG,aAAa,SAAS,KAAO,MAAO,GACnE;AAEJ,CAAC;AACD,SAAS,cAAc;AAEvB,IAAM,YAAkB,mBAGtB,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YA3FL,IA2FG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,QAAM,EAAE,OAAO,WAAW,IAAI,aAAa;AAE3C,SACE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,SAAS,oBAAoB,SAAS;AAAA,MACpD,SAAS;AAAA,OACL;AAAA,EACN;AAEJ,CAAC;AACD,UAAU,cAAc;AAExB,IAAM,cAAoB,mBAGxB,CAAC,IAAc,QAAQ;AAAtB,MAAK,kBAAL,IAAK;AACN,QAAM,EAAE,OAAO,YAAY,mBAAmB,cAAc,IAC1D,aAAa;AAEf,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,IAAI;AAAA,MACJ,oBACE,CAAC,QACG,GAAG,iBAAiB,KACpB,GAAG,iBAAiB,IAAI,aAAa;AAAA,MAE3C,gBAAc,CAAC,CAAC;AAAA,OACZ;AAAA,EACN;AAEJ,CAAC;AACD,YAAY,cAAc;AAE1B,IAAM,kBAAwB,mBAG5B,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YAnIL,IAmIG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,QAAM,EAAE,kBAAkB,IAAI,aAAa;AAE3C,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,IAAI;AAAA,MACJ,WAAW,GAAG,uCAAuC,SAAS;AAAA,OAC1D;AAAA,EACN;AAEJ,CAAC;AACD,gBAAgB,cAAc;AAE9B,IAAM,cAAoB,mBAGxB,CAAC,IAAmC,QAAQ;AAA3C,eAAE,aAAW,SApJhB,IAoJG,IAA0B,kBAA1B,IAA0B,CAAxB,aAAW;AACd,QAAM,EAAE,OAAO,cAAc,IAAI,aAAa;AAC9C,QAAM,OAAO,QAAQ,OAAO,+BAAO,OAAO,IAAI;AAE9C,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,IAAI;AAAA,MACJ,WAAW,GAAG,8CAA8C,SAAS;AAAA,OACjE,QAJL;AAAA,MAME;AAAA;AAAA,EACH;AAEJ,CAAC;AACD,YAAY,cAAc;;;ACnKjB,IAAAC,uBAAA;AADF,IAAM,eAAe,CAAC,EAAE,SAAS,MAAyB;AAC/D,SAAO,8CAAC,OAAE,WAAU,wCAAwC,UAAS;AACvE;;;ALuBM,IAAAC,uBAAA;AAXC,IAAMC,YAAW,CAAC,OAKJ;AALI,eACvB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,EApBF,IAiByB,IAIpB,kBAJoB,IAIpB;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AApBF,MAAAC;AAuBE,QAAM,WAAO,wCAAe;AAE5B,QAAM,UAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM;AAClD,MAAI,CAAC;AACH,WACE,+CAAC,SAAI,WAAU,+BACb;AAAA,oDAAC,6BAAe,MAAO;AAAA,MACtB,SAAS,8CAACC,QAAA,EAAM,SAAS,MAAM,IAAK,iBAAM;AAAA,MAC1C,SAAS,8CAAC,gBAAc,iBAAM;AAAA,OACjC;AAGJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,KAAK;AAAA,MACd,OAAMD,MAAA,MAAM,SAAN,OAAAA,MAAc;AAAA,MACpB,QAAQ,CAAC,EAAE,MAAM,MACf,+CAAC,YAAS,WAAU,uEAClB;AAAA,sDAAC,eACC;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,MAAM;AAAA,YACf,iBAAiB,MAAM;AAAA;AAAA,QACzB,GACF;AAAA,QACC,SACC,8CAAC,SAAI,WAAU,0BACb,wDAAC,aAAW,iBAAM,GACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;AMxDA,IAAAE,UAAuB;AASjB,IAAAC,uBAAA;AAHN,IAAM,QAAc;AAAA,EAClB,CAAC,IAA+B,QAAQ;AAAvC,iBAAE,aAAW,KAPhB,IAOG,IAAsB,kBAAtB,IAAsB,CAApB,aAAW;AACZ,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,SACI;AAAA,IACN;AAAA,EAEJ;AACF;AACA,MAAM,cAAc;;;ACnBpB,IAAAC,gBAAwB;;;ACapB,IAAAC,uBAAA;AANG,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA,eAAe;AACjB,MAAuB;AACrB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,gCAAgC,SAAS;AAAA,MACvD,eAAa,GAAG,UAAU;AAAA,MAE1B;AAAA,sDAACC,OAAA,EAAK,MAAK,kBAAiB,MAAM,IAAI,WAAU,oBAAmB;AAAA,QACnE,8CAAC,UAAK,WAAU,4BAA4B,UAAS;AAAA;AAAA;AAAA,EACvD;AAEJ;;;ACDQ,IAAAC,uBAAA;AAVD,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AACjB,MAAsB;AACpB,SACE,+CAAC,SACE;AAAA,aACC,+CAACC,QAAA,EAAM,eAAa,GAAG,MAAM,UAC1B;AAAA,SAAG,KAAK,IAAI,WAAW,MAAM,EAAE;AAAA,MAAI;AAAA,OACtC;AAAA,IAED;AAAA,IACA,SAAS,8CAAC,cAAW,eAAa,QAAS,iBAAM;AAAA,KACpD;AAEJ;;;AC9BA,IAAAC,gBAAwB;AACxB,IAAAC,0BAMO;AAEA,IAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,EACA;AACF,MAG0E;AACxE,QAAM,WAAO,wCAAe;AAE5B,QAAM,cAAU,uBAAQ,MAAM;AAC5B,WAAO,CAAC,eAAe,CAAC,EAAC,6BAAM;AAAA,EACjC,GAAG,CAAC,aAAa,IAAI,CAAC;AAEtB,QAAM,eAAW,iCAAQ;AAEzB,QAAM,mBAAe,uBAAQ,MAAM;AACjC,WAAO,UAAU,KAAK,UAAU,SAAS;AAAA,EAC3C,GAAG,CAAC,UAAU,MAAM,OAAO,CAAC;AAE5B,QAAM,iBAAa,uCAAc;AAAA,IAC/B,SAAS;AAAA,IACT,MAAM,QAAQ;AAAA,EAChB,CAAC;AAED,SAAO,UAAU,WAAW,QAAQ,CAAC;AACvC;;;AHDM,IAAAC,uBAAA;AA1BC,IAAMC,SAAQ,CAAC,OAMJ;AANI,eACpB;AAAA,mBAAe;AAAA,IACf,cAAc;AAAA,IACd;AAAA,IACA;AAAA,EAXF,IAOsB,IAKjB,kBALiB,IAKjB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,WAAW,yBAAyB;AAAA,IACxC,MAAM,MAAM,QAAQ;AAAA,IACpB;AAAA,EACF,CAAC;AAED,QAAM,iBAAa,uBAAQ,MAAM;AAC/B,WAAO,kCACF,WACA;AAAA,EAEP,GAAG,CAAC,UAAU,KAAK,CAAC;AAEpB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,MAAM;AAAA,MACb,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AAAA,MAChB,eAAa;AAAA,MAEb,yDAAC,SAAI,WAAW,GAAG,2BAA2B,kBAAkB,GAC9D;AAAA;AAAA,UAAC;AAAA,2CACK,aADL;AAAA,YAEC,eAAa;AAAA,YACb,WAAW;AAAA,cACT,MAAM;AAAA,cACN,MAAM,SACJ;AAAA,YACJ;AAAA;AAAA,QACF;AAAA,QACC;AAAA,SACH;AAAA;AAAA,EACF;AAEJ;;;AI5CA,iCAIO;AAIP,IAAAC,gBAAqC;AAkD/B,IAAAC,uBAAA;AA5CC,IAAM,cAAc,CAAC,UAA4B;AACtD,QAAM,WAAW,yBAAyB;AAAA,IACxC,MAAM,MAAM,QAAQ;AAAA,IACpB,aAAa,MAAM;AAAA,EACrB,CAAC;AAED,QAAM,iBAAa,uBAAQ,MAAM;AAC/B,WAAO,kCACF,WACA;AAAA,EAEP,GAAG,CAAC,UAAU,KAAK,CAAC;AAEpB,QAAM,oBAAgB;AAAA,IACpB,CACE,MAKA,eACG;AAtCT;AAuCM,YAAM,iBAAiB;AAAA,QACrB,QAAQ;AAAA,UACN,OAAO,KAAK;AAAA,UACZ,MAAM,MAAM;AAAA,QACd;AAAA,QACA,eAAe;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,MAAM,MAAM;AAAA,QACd;AAAA,MACF;AAEA,kBAAM,aAAN,+BAAiB;AACjB,kBAAM,kBAAN,+BAAsB,MAAM;AAC5B,UAAI,SAAS,UAAU;AACrB,iBAAS,SAAS,KAAK,cAAc;AAAA,MACvC;AAAA,IACF;AAAA,IACA,CAAC,OAAO,QAAQ;AAAA,EAClB;AAEA,SACE,8CAAC,4CAAc,QAAd,EACC;AAAA,IAAC;AAAA,qCACK,aADL;AAAA,MAEC,aAAa;AAAA,MACb,OAAO,MAAM;AAAA,MACb;AAAA;AAAA,EACF,IACF;AAEJ;;;ACpEA,IAAAC,UAAuB;;;ACDvB,IAAAC,gBAAsC;AAU/B,IAAM,UAAU,CAAC,OAAuC;AAAvC,eAAE,OAV1B,IAUwB,IAAW,oBAAX,IAAW,CAAT;AACxB,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAS,EAAE;AAErC,QAAM,gBAAY;AAAA,IAChB,CAAC,eAAuB;AACtB,UAAI,CAAC,cAAc,CAAC,KAAM,QAAO;AAGjC,YAAM,aAAa,WAAW,QAAQ,iBAAiB,EAAE;AAEzD,UAAI,cAAc;AAClB,UAAI,aAAa;AAEjB,eAAS,IAAI,GAAG,IAAI,KAAK,UAAU,aAAa,WAAW,QAAQ,KAAK;AACtE,cAAM,WAAW,KAAK,CAAC;AACvB,cAAM,YAAY,WAAW,UAAU;AAEvC,YAAI,aAAa,KAAK;AAEpB,cAAI,KAAK,KAAK,SAAS,GAAG;AACxB,2BAAe;AACf;AAAA,UACF,OAAO;AAEL;AACA;AAAA,UACF;AAAA,QACF,WAAW,aAAa,KAAK;AAE3B,cAAI,WAAW,KAAK,SAAS,GAAG;AAC9B,gBAAI,OAAO;AAEX,gBAAI,QAAQ,cAAc,YAAa,QAAO,KAAK,YAAY;AAAA,qBACtD,QAAQ,cAAc;AAC7B,qBAAO,KAAK,YAAY;AAC1B,2BAAe;AACf;AAAA,UACF,OAAO;AAEL;AACA;AAAA,UACF;AAAA,QACF,OAAO;AAEL,yBAAe;AAAA,QACjB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,MAAM,QAAQ,SAAS;AAAA,EAC1B;AAEA,QAAM,qBAAiB;AAAA,IACrB,CAAC,aAAqB;AACpB,YAAM,cAAc,UAAU,QAAQ;AACtC,eAAS,WAAW;AAAA,IACtB;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAGA,QAAM,kBAAc,2BAAY,MAAM;AACpC,WAAO,MAAM,QAAQ,iBAAiB,EAAE;AAAA,EAC1C,GAAG,CAAC,KAAK,CAAC;AAGV,QAAM,iBAAa,2BAAY,MAAM;AACnC,WAAO,MAAM,WAAW,KAAK;AAAA,EAC/B,GAAG,CAAC,OAAO,IAAI,CAAC;AAGhB,QAAM,cAAU,2BAAY,MAAM;AAEhC,WAAO,WAAW,KAAK,MAAM,SAAS;AAAA,EACxC,GAAG,CAAC,YAAY,KAAK,CAAC;AAGtB,QAAM,YAAQ,2BAAY,MAAM;AAC9B,aAAS,EAAE;AAAA,EACb,GAAG,CAAC,CAAC;AAGL,QAAM,mBAAe;AAAA,IACnB,OAAO;AAAA,MACL;AAAA,MACA,UAAU,CAAC,MAA2C;AACpD,uBAAe,EAAE,OAAO,KAAK;AAAA,MAC/B;AAAA,MACA,aAAa,QAAQ;AAAA,IACvB;AAAA,IACA,CAAC,OAAO,gBAAgB,QAAQ,WAAW;AAAA,EAC7C;AAEA,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,IACV,UAAU,YAAY;AAAA,IACtB,YAAY,WAAW;AAAA,IACvB,SAAS,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA,IACA,aAAa,QAAQ,eAAe,KAAK,QAAQ,SAAS,GAAG;AAAA,IAC7D,WAAW,aAAa;AAAA,EAC1B;AACF;;;AD7GA,IAAAC,gBAAuB;AAyDnB,IAAAC,uBAAA;AAnDG,IAAM,YAAY,CAAC,OAMJ;AANI,eACxB;AAAA,mBAAe;AAAA,IACf,cAAc;AAAA,IACd;AAAA,IACA,OAAO;AAAA,EAhBT,IAY0B,IAKrB,kBALqB,IAKrB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,WAAW,yBAAyB;AAAA,IACxC,MAAM,MAAM,QAAQ;AAAA,IACpB;AAAA,EACF,CAAC;AAED,QAAM,aAAmB,gBAAQ,MAAM;AACrC,WAAO,kCACF,WACA;AAAA,EAEP,GAAG,CAAC,UAAU,KAAK,CAAC;AAEpB,QAAM,EAAE,UAAU,IAAI,QAAQ,EAAE,KAAK,CAAC;AAEtC,QAAM,eAAW,sBAAyB,IAAI;AAE9C,QAAM,mBAAyB;AAAA,IAC7B,CAAC,UAAkB;AACjB,UAAI,SAAS,WAAW,MAAM;AAC5B,cAAM,cAAc,UAAU,KAAK;AACnC,iBAAS,QAAQ,QAAQ;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,CAAC,WAAW,IAAI;AAAA,EAClB;AAEA,QAAM,eAAqB;AAAA,IACzB,CAAC,MAA2C;AA9ChD,UAAAC;AA+CM,YAAM,cAAc,OAAO,UAAU,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO;AAEhE,YAAM,WAAW,iCACZ,IADY;AAAA,QAEf,QAAQ,iCACH,EAAE,SADC;AAAA,UAEN,OAAO;AAAA,QACT;AAAA,MACF;AACA,uBAAiB,WAAW;AAC5B,cAAOA,MAAA,yCAAY,aAAZ,gBAAAA,IAAA,iBAAuB;AAAA,IAChC;AAAA,IACA,CAAC,WAAW,YAAY,MAAM,gBAAgB;AAAA,EAChD;AAEA,SACE;AAAA,IAACC;AAAA,IAAA,iCACK,aADL;AAAA,MAEC,KAAK;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA,eAAa;AAAA,MACb,aAAa;AAAA;AAAA,EACf;AAEJ;;;AExEA,IAAAC,gBAA2B;;;ACE3B,IAAAC,mCAAkC;AA2C9B,IAAAC,uBAAA;AAvCJ,IAAM,sBAAkB,sCAAI,wCAAwC;AAAA,EAClE,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAED,IAAM,qBAAiB,sCAAI,6BAA6B;AAAA,EACtD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AASM,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,SACE,+CAAC,UAAK,WAAW,gBAAgB,EAAE,KAAK,CAAC,GACvC;AAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW,GAAG,eAAe,EAAE,KAAK,CAAC,GAAG,SAAS;AAAA;AAAA,IACnD;AAAA,IACC;AAAA,KACH;AAEJ;;;AClDA,IAAAC,UAAuB;AAIvB,IAAM,cAAc;AACpB,IAAM,qBAAqB;AAgB3B,IAAI,QAAQ;AAEZ,SAAS,QAAQ;AACf,WAAS,QAAQ,KAAK,OAAO;AAC7B,SAAO,MAAM,SAAS;AACxB;AA0BA,IAAM,gBAAgB,oBAAI,IAA2C;AAErE,IAAM,mBAAmB,CAAC,YAAoB;AAC5C,MAAI,cAAc,IAAI,OAAO,GAAG;AAC9B;AAAA,EACF;AAEA,QAAM,UAAU,WAAW,MAAM;AAC/B,kBAAc,OAAO,OAAO;AAC5B,aAAS;AAAA,MACP,MAAM;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH,GAAG,kBAAkB;AAErB,gBAAc,IAAI,SAAS,OAAO;AACpC;AAEO,IAAM,UAAU,CAAC,OAAc,WAA0B;AAC9D,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,iCACF,QADE;AAAA,QAEL,QAAQ,CAAC,OAAO,OAAO,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,WAAW;AAAA,MAC9D;AAAA,IAEF,KAAK;AACH,aAAO,iCACF,QADE;AAAA,QAEL,QAAQ,MAAM,OAAO;AAAA,UAAI,CAAC,MACxB,EAAE,OAAO,OAAO,MAAM,KAAK,kCAAK,IAAM,OAAO,SAAU;AAAA,QACzD;AAAA,MACF;AAAA,IAEF,KAAK,iBAAiB;AACpB,YAAM,EAAE,QAAQ,IAAI;AAIpB,UAAI,SAAS;AACX,yBAAiB,OAAO;AAAA,MAC1B,OAAO;AACL,cAAM,OAAO,QAAQ,CAACC,WAAU;AAC9B,2BAAiBA,OAAM,EAAE;AAAA,QAC3B,CAAC;AAAA,MACH;AAEA,aAAO,iCACF,QADE;AAAA,QAEL,QAAQ,MAAM,OAAO;AAAA,UAAI,CAAC,MACxB,EAAE,OAAO,WAAW,YAAY,SAC5B,iCACK,IADL;AAAA,YAEE,MAAM;AAAA,UACR,KACA;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK;AACH,UAAI,OAAO,YAAY,QAAW;AAChC,eAAO,iCACF,QADE;AAAA,UAEL,QAAQ,CAAC;AAAA,QACX;AAAA,MACF;AACA,aAAO,iCACF,QADE;AAAA,QAEL,QAAQ,MAAM,OAAO,OAAO,CAAC,MAAM,EAAE,OAAO,OAAO,OAAO;AAAA,MAC5D;AAAA,EACJ;AACF;AAEA,IAAM,YAA2C,CAAC;AAElD,IAAI,cAAqB,EAAE,QAAQ,CAAC,EAAE;AAEtC,SAAS,SAAS,QAAgB;AAChC,gBAAc,QAAQ,aAAa,MAAM;AACzC,YAAU,QAAQ,CAAC,aAAa;AAC9B,aAAS,WAAW;AAAA,EACtB,CAAC;AACH;AAIA,SAAS,MAAM,IAAqB;AAArB,MAAK,kBAAL,IAAK;AAClB,QAAM,KAAK,MAAM;AAEjB,QAAM,SAAS,CAACC,WACd,SAAS;AAAA,IACP,MAAM;AAAA,IACN,OAAO,iCAAKA,SAAL,EAAY,GAAG;AAAA,EACxB,CAAC;AACH,QAAM,UAAU,MAAM,SAAS,EAAE,MAAM,iBAAiB,SAAS,GAAG,CAAC;AAErE,WAAS;AAAA,IACP,MAAM;AAAA,IACN,OAAO,iCACF,QADE;AAAA,MAEL;AAAA,MACA,MAAM;AAAA,MACN,cAAc,CAAC,SAAS;AACtB,YAAI,CAAC,KAAM,SAAQ;AAAA,MACrB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,WAAW;AAClB,QAAM,CAAC,OAAO,QAAQ,IAAU,iBAAgB,WAAW;AAE3D,EAAM,kBAAU,MAAM;AACpB,cAAU,KAAK,QAAQ;AACvB,WAAO,MAAM;AACX,YAAM,QAAQ,UAAU,QAAQ,QAAQ;AACxC,UAAI,QAAQ,IAAI;AACd,kBAAU,OAAO,OAAO,CAAC;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,iCACF,QADE;AAAA,IAEL;AAAA,IACA,SAAS,CAAC,YAAqB,SAAS,EAAE,MAAM,iBAAiB,QAAQ,CAAC;AAAA,EAC5E;AACF;;;AC1LA,IAAAC,UAAuB;AACvB,sBAAiC;AACjC,IAAAC,mCAAuC;AACvC,IAAAC,uBAAkB;AAUhB,IAAAC,uBAAA;AANF,IAAM,gBAAgC;AAEtC,IAAM,gBAAsB,mBAG1B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAdL,IAcG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,cAAc,cAA8B,yBAAS;AAErD,IAAM,oBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,aACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,IAAM,QAAc,mBAIlB,CAAC,IAAkC,QAAQ;AAA1C,eAAE,aAAW,QA/ChB,IA+CG,IAAyB,kBAAzB,IAAyB,CAAvB,aAAW;AACd,SACE;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,OAC/C;AAAA,EACN;AAEJ,CAAC;AACD,MAAM,cAA8B,qBAAK;AAEzC,IAAM,cAAoB,mBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA7DL,IA6DG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAA8B,uBAAO;AAEjD,IAAM,aAAmB,mBAGvB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA5EL,IA4EG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,eAAY;AAAA,OACR,QAPL;AAAA,MASC,wDAAC,0BAAE,WAAU,WAAU;AAAA;AAAA,EACzB;AAAA,CACD;AACD,WAAW,cAA8B,sBAAM;AAE/C,IAAM,aAAmB,mBAGvB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA9FL,IA8FG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,yCAAyC,SAAS;AAAA,OAC5D;AAAA,EACN;AAAA,CACD;AACD,WAAW,cAA8B,sBAAM;AAE/C,IAAM,mBAAyB,mBAG7B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA1GL,IA0GG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,sBAAsB,SAAS;AAAA,OACzC;AAAA,EACN;AAAA,CACD;AACD,iBAAiB,cAA8B,4BAAY;;;AC7F/C,IAAAC,uBAAA;AARL,SAAS,UAAU;AACxB,QAAM,EAAE,OAAO,IAAI,SAAS;AAE5B,SACE,+CAAC,iBACE;AAAA,WAAO,IAAI,SAAU,IAA8C;AAA9C,mBAAE,MAAI,OAAO,aAAa,OAjBtD,IAiB4B,IAAqC,kBAArC,IAAqC,CAAnC,MAAI,SAAO,eAAa;AAC9C,aACE,+CAAC,wCAAmB,QAAnB,EACC;AAAA,uDAAC,SAAI,WAAU,cACZ;AAAA,mBAAS,8CAAC,cAAY,iBAAM;AAAA,UAC5B,eACC,8CAAC,oBAAkB,uBAAY;AAAA,WAEnC;AAAA,QACC;AAAA,QACD,8CAAC,cAAW;AAAA,YARF,EASZ;AAAA,IAEJ,CAAC;AAAA,IACD,8CAAC,iBAAc;AAAA,KACjB;AAEJ;;;AJpBM,IAAAC,uBAAA;AAHC,IAAMC,cAAS;AAAA,EACpB,CAAC,IAA0C,QAAQ;AAAlD,iBAAE,YAAU,UAAU,QAZzB,IAYG,IAAkC,iBAAlC,IAAkC,CAAhC,YAAU,YAAU;AACrB,WACE,+CAAC,yCAAa,OAAb,EAAmB,UAAU,YAAY,SAAS,KAChD;AAAA,iBAAW,8CAAC,WAAQ,WAAU,cAAa;AAAA,MAC3C;AAAA,QACH;AAAA,EAEJ;AACF;AAEAA,QAAO,cAAc;;;AKpBrB,IAAAC,gBAA+C;AAgEvC,IAAAC,uBAAA;AAnDD,IAAM,gBAAgB,CAAC,OAOJ;AAPI,eAC5B;AAAA,WAAO,CAAC;AAAA,IACR,QAAQ,MAAM;AAAA,IAAC;AAAA,IACf,eAAe;AAAA,IACf,WAAW,MAAM;AAAA,IAAC;AAAA,IAClB,cAAc;AAAA,EApBhB,IAe8B,IAMzB,kBANyB,IAMzB;AAAA,IALH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,CAAC,YAAY,aAAa,QAAI,wBAAS,YAAY;AAEzD,QAAM,WAAW,yBAAyB;AAAA,IACxC,MAAM,MAAM,QAAQ;AAAA,IACpB;AAAA,EACF,CAAC;AAED,QAAM,iBAAa,uBAAQ,MAAM;AAC/B,QAAI,qCAAU,OAAO;AACnB,aAAO,SAAS;AAAA,IAClB;AACA,WAAO;AAAA,EACT,GAAG,CAAC,MAAM,QAAQ,CAAC;AAEnB,QAAM,gBAAY,2BAAY,MAAM;AAClC,UAAM,eAAe,WAAW,KAAK;AACrC,QAAI,cAAc;AAChB,UAAI,qCAAU,UAAU;AACtB,iBAAS,SAAS,CAAC,GAAG,YAAY,YAAY,CAAC;AAAA,MACjD,OAAO;AACL,cAAM,YAAY;AAAA,MACpB;AACA,oBAAc,EAAE;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,YAAY,UAAU,OAAO,UAAU,CAAC;AAE5C,QAAM,mBAAe;AAAA,IACnB,CAAC,UAAkB;AACjB,UAAI,qCAAU,UAAU;AACtB,cAAM,UAAU,WAAW;AAAA,UACzB,CAACC,IAAW,MAAc,MAAM;AAAA,QAClC;AACA,iBAAS,SAAS,OAAO;AAAA,MAC3B,OAAO;AACL,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF;AAAA,IACA,CAAC,UAAU,YAAY,QAAQ;AAAA,EACjC;AAEA,QAAM,kBAAc,2BAAY,MAAM;AACpC,WAAO,yCAAY,IAAI,CAAC,MAAc,UAAkB;AACtD,aACE,+CAAC,SAAe,WAAU,wBACvB;AAAA;AAAA,QACD;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS,MAAM,aAAa,KAAK;AAAA,YAEjC,wDAACC,OAAA,EAAK,MAAK,YAAW;AAAA;AAAA,QACxB;AAAA,WATQ,IAUV;AAAA,IAEJ;AAAA,EACF,GAAG,CAAC,YAAY,YAAY,CAAC;AAE7B,QAAM,mBAAe;AAAA,IACnB,MACE,8CAACD,SAAA,EAAO,MAAK,UAAS,SAAS,WAAW,UAAU,CAAC,YACnD,wDAACC,OAAA,EAAK,MAAK,SAAQ,GACrB;AAAA,IAEF,CAAC,WAAW,UAAU;AAAA,EACxB;AAEA,SACE,+CAAC,SAAI,WAAU,uBACb;AAAA;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC,aAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,MAAM;AACf,wBAAc,EAAE,OAAO,KAAK;AAAA,QAC9B;AAAA,QACA,OAAO;AAAA;AAAA,IACT;AAAA,IACC,YAAY;AAAA,KACf;AAEJ;;;ACtGA,IAAAC,UAAuB;AACvB,sBAAiC;AACjC,IAAAC,uBAAkB;AAkBhB,IAAAC,uBAAA;AAZF,IAAM,SAAyB;AAI/B,IAAM,eAA+B;AAErC,IAAM,cAA8B;AAEpC,IAAM,gBAAsB,mBAG1B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YArBL,IAqBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,gBAAsB,mBAG1B,CAAC,IAAmC,QAAK;AAAxC,eAAE,aAAW,SApChB,IAoCG,IAA0B,kBAA1B,IAA0B,CAAxB,aAAW;AACd,wDAAC,gBACC;AAAA,kDAAC,iBAAc;AAAA,IACf;AAAA,MAAiB;AAAA,MAAhB;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,SACI,QANL;AAAA,QAQE;AAAA;AAAA,UACD,+CAAiB,uBAAhB,EAAsB,WAAU,iRAC/B;AAAA,0DAAC,0BAAE,WAAU,WAAU;AAAA,YACvB,8CAAC,UAAK,WAAU,WAAU,mBAAK;AAAA,aACjC;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAAA,CACD;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,eAAe,CAAC,OAGmB;AAHnB,eACpB;AAAA;AAAA,EA1DF,IAyDsB,IAEjB,kBAFiB,IAEjB;AAAA,IADH;AAAA;AAGA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA;AAEF,aAAa,cAAc;AAE3B,IAAM,eAAe,CAAC,OAGmB;AAHnB,eACpB;AAAA;AAAA,EAxEF,IAuEsB,IAEjB,kBAFiB,IAEjB;AAAA,IADH;AAAA;AAGA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA;AAEF,aAAa,cAAc;AAE3B,IAAM,cAAoB,mBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAxFL,IAwFG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAA8B,sBAAM;AAEhD,IAAM,oBAA0B,mBAG9B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAvGL,IAuGG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN;AAAA,CACD;AACD,kBAAkB,cAA8B,4BAAY;;;ACnG5D,IAAAC,gBAA0C;AAsBlC,IAAAC,uBAAA;AAXD,SAASC,QAAO,IAOP;AAPO,eACrB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,MAAM;AAAA,EA3BjB,IAsBuB,IAMlB,kBANkB,IAMlB;AAAA,IALH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE,8CAAC,yCAAoB,QAApB,EACC,yDAAC,iBAAc,WACb;AAAA,mDAAC,gBACE;AAAA,eAAS,8CAAC,eAAa,iBAAM;AAAA,MAC7B,eAAe,8CAAC,qBAAmB,uBAAY;AAAA,OAClD;AAAA,IACC;AAAA,IACA,UAAU,8CAAC,gBAAc,iBAAO,GAAE;AAAA,KACrC,IACF;AAEJ;AAMO,IAAM,iBAAiB,CAAC,OAQJ;AARI,eAC7B;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,MAAM;AAAA,IACf,WAAW,MAAM;AAAA,IAAC;AAAA,EAtDpB,IAgD+B,IAO1B,kBAP0B,IAO1B;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,gBAAY,sBAAuB,IAAI;AAE7C,SACE,8CAAC,yCAAoB,QAApB,EACC,wDAAC,iBAAc,WAAsB,KAAK,WACxC,yDAAC,UAAK,UAAoB,WAAU,uBAClC;AAAA,mDAAC,gBACE;AAAA,eAAS,8CAAC,eAAa,iBAAM;AAAA,MAC7B,eACC,8CAAC,qBAAmB,uBAAY;AAAA,OAEpC;AAAA,IACC;AAAA,IACA,UACC,8CAAC,gBACC,yDAAC,SAAI,WAAU,+BACb;AAAA,oDAAC,eAAY,SAAO,MAClB,wDAACC,SAAA,EAAO,MAAK,UAAS,SAAQ,aAAY,oBAE1C,GACF;AAAA,MACC,OAAO;AAAA,OACV,GACF;AAAA,KAEJ,GACF,IACF;AAEJ;;;ACpFA,2BAAsC;AAEtC,IAAM,cAAmC;AAEzC,IAAMC,sBAA0C;AAEhD,IAAMC,sBAA0C;;;ACRhD,IAAAC,iBAA4B;;;ACE5B,IAAAC,UAAuB;AACvB,kBAA0C;AAOxC,IAAAC,uBAAA;AADF,IAAM,SAAS,CAAC,OAAyD;AAAzD,eAAE,0BAAwB,KAT1C,IASgB,IAAmC,kBAAnC,IAAmC,CAAjC;AAChB;AAAA,IAAC,YAAAC,OAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,OACI;AAAA,EACN;AAAA;AAEF,OAAO,cAAc;AAErB,IAAM,gBAAgB,YAAAA,OAAgB;AAEtC,IAAM,eAAe,YAAAA,OAAgB;AAErC,IAAM,cAAc,YAAAA,OAAgB;AAEpC,IAAM,gBAAsB,mBAG1B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA1BL,IA0BG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC,YAAAA,OAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,kCAAkC,SAAS;AAAA,OACrD;AAAA,EACN;AAAA,CACD;AACD,cAAc,cAAc,YAAAA,OAAgB,QAAQ;AAEpD,IAAM,gBAAsB,mBAG1B,CAAC,IAAmC,QAAK;AAAxC,eAAE,aAAW,SAtChB,IAsCG,IAA0B,kBAA1B,IAA0B,CAAxB,aAAW;AACd,wDAAC,gBACC;AAAA,kDAAC,iBAAc;AAAA,IACf;AAAA,MAAC,YAAAA,OAAgB;AAAA,MAAhB;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,SACI,QANL;AAAA,QAQC;AAAA,wDAAC,SAAI,WAAU,oDAAmD;AAAA,UACjE;AAAA;AAAA;AAAA,IACH;AAAA,KACF;AAAA,CACD;AACD,cAAc,cAAc;AAE5B,IAAM,eAAe,CAAC,OAGmB;AAHnB,eACpB;AAAA;AAAA,EAzDF,IAwDsB,IAEjB,kBAFiB,IAEjB;AAAA,IADH;AAAA;AAGA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,6CAA6C,SAAS;AAAA,OAChE;AAAA,EACN;AAAA;AAEF,aAAa,cAAc;AAE3B,IAAM,eAAe,CAAC,OAGmB;AAHnB,eACpB;AAAA;AAAA,EApEF,IAmEsB,IAEjB,kBAFiB,IAEjB;AAAA,IADH;AAAA;AAGA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,mCAAmC,SAAS;AAAA,OACtD;AAAA,EACN;AAAA;AAEF,aAAa,cAAc;AAE3B,IAAM,cAAoB,mBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAjFL,IAiFG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC,YAAAA,OAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAAc,YAAAA,OAAgB,MAAM;AAEhD,IAAM,oBAA0B,mBAG9B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAhGL,IAgGG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC,YAAAA,OAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN;AAAA,CACD;AACD,kBAAkB,cAAc,YAAAA,OAAgB,YAAY;;;AC1EtD,IAAAC,uBAAA;AANC,SAAS,aAAa,IAA4C;AAA5C,eAAE,YAvB/B,IAuB6B,IAAgB,kBAAhB,IAAgB,CAAd;AAC7B,SACE,8CAAC,yCAAW,QAAX,EAIC,wDAAC,iBAAc,WAAuB,gBAAM,UAAS,IACvD;AAEJ;;;AC9BA,IAAAC,UAAuB;AACvB,qBAAgC;AAChC,IAAAC,mCAAuC;AACvC,IAAAC,uBAAkB;AAgBhB,IAAAC,uBAAA;AAZF,IAAM,QAAuB;AAM7B,IAAM,cAA6B;AAEnC,IAAM,eAAqB,mBAGzB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YApBL,IAoBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAgB;AAAA,IAAf;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QALL;AAAA,MAMC;AAAA;AAAA,EACF;AAAA,CACD;AACD,aAAa,cAA6B,uBAAQ;AAElD,IAAM,oBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,KAAK;AAAA,QACL,QACE;AAAA,QACF,MAAM;AAAA,QACN,OACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAMA,IAAM,eAAqB,mBAGzB,CAAC,IAAmD,QAAK;AAAxD,eAAE,SAAO,SAAS,WAAW,SA1DhC,IA0DG,IAA0C,kBAA1C,IAA0C,CAAxC,QAAgB,aAAW;AAC9B,wDAAC,eACC;AAAA,kDAAC,gBAAa;AAAA,IACd;AAAA,MAAgB;AAAA,MAAf;AAAA,QACC;AAAA,QACA,WAAW,GAAG,cAAc,EAAE,KAAK,CAAC,GAAG,SAAS;AAAA,SAC5C,QAHL;AAAA,QAKC;AAAA,yDAAgB,sBAAf,EAAqB,WAAU,4OAC9B;AAAA,0DAAC,0BAAE,WAAU,WAAU;AAAA,YACvB,8CAAC,UAAK,WAAU,WAAU,mBAAK;AAAA,aACjC;AAAA,UACC;AAAA;AAAA;AAAA,IACH;AAAA,KACF;AAAA,CACD;AACD,aAAa,cAA6B,uBAAQ;AAElD,IAAM,cAAc,CAAC,OAGoB;AAHpB,eACnB;AAAA;AAAA,EA7EF,IA4EqB,IAEhB,kBAFgB,IAEhB;AAAA,IADH;AAAA;AAGA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA;AAEF,YAAY,cAAc;AAE1B,IAAM,cAAc,CAAC,OAGoB;AAHpB,eACnB;AAAA;AAAA,EA3FF,IA0FqB,IAEhB,kBAFgB,IAEhB;AAAA,IADH;AAAA;AAGA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA;AAEF,YAAY,cAAc;AAE1B,IAAM,aAAmB,mBAGvB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA3GL,IA2GG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAgB;AAAA,IAAf;AAAA,MACC;AAAA,MACA,WAAW,GAAG,yCAAyC,SAAS;AAAA,OAC5D;AAAA,EACN;AAAA,CACD;AACD,WAAW,cAA6B,qBAAM;AAE9C,IAAM,mBAAyB,mBAG7B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAvHL,IAuHG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAgB;AAAA,IAAf;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN;AAAA,CACD;AACD,iBAAiB,cAA6B,2BAAY;;;AC9GpD,IAAAC,uBAAA;AAHC,SAASC,OAAM,IAAqD;AAArD,eAAE,QAAM,WAAW,SAbzC,IAasB,IAAgC,kBAAhC,IAAgC,CAA9B,QAAM,aAAW;AACvC,SACE,8CAAC,wCAAmB,QAAnB,EACC,wDAAC,gBAAa,MAAY,WACvB,UACH,IACF;AAEJ;;;ACnBA,IAAAC,UAAuB;AACvB,IAAAC,qBAAqB;AACrB,IAAAC,mCAAkC;AAClC,IAAAC,uBAA0B;;;ACL1B,IAAAC,UAAuB;AAEvB,IAAM,oBAAoB;AAEnB,SAAS,cAAc;AAC5B,QAAM,CAAC,UAAU,WAAW,IAAU,iBAA8B,MAAS;AAE7E,EAAM,kBAAU,MAAM;AACpB,UAAM,MAAM,OAAO,WAAW,eAAe,oBAAoB,CAAC,KAAK;AACvE,UAAM,WAAW,MAAM;AACrB,kBAAY,OAAO,aAAa,iBAAiB;AAAA,IACnD;AACA,QAAI,iBAAiB,UAAU,QAAQ;AACvC,gBAAY,OAAO,aAAa,iBAAiB;AACjD,WAAO,MAAM,IAAI,oBAAoB,UAAU,QAAQ;AAAA,EACzD,GAAG,CAAC,CAAC;AAEL,SAAO,CAAC,CAAC;AACX;;;AChBA,IAAAC,UAAuB;AACvB,yBAAoC;AAYhC,IAAAC,uBAAA;AARJ,IAAMC,aAAkB;AAAA,EAItB,CACE,IACA,QACA;AAFA,iBAAE,aAAW,cAAc,cAAc,aAAa,KAZ1D,IAYI,IAA+D,kBAA/D,IAA+D,CAA7D,aAAW,eAA4B;AAGzC;AAAA,MAAoB;AAAA,MAAnB;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,gBAAgB,eAAe,mBAAmB;AAAA,UAClD;AAAA,QACF;AAAA,SACI;AAAA,IACN;AAAA;AAEJ;AACAA,WAAU,cAAiC,wBAAK;;;ACrB5C,IAAAC,uBAAA;AALJ,SAAS,SAAS,IAGuB;AAHvB,eAChB;AAAA;AAAA,EAHF,IAEkB,IAEb,kBAFa,IAEb;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,0CAA0C,SAAS;AAAA,OAC7D;AAAA,EACN;AAEJ;;;ACVA,IAAAC,UAAuB;AACvB,uBAAkC;AAe9B,IAAAC,uBAAA;AAXJ,IAAM,kBAAmC;AAEzC,IAAM,UAA2B;AAEjC,IAAM,iBAAkC;AAExC,IAAM,iBAAuB,mBAG3B,CAAC,IAAyC,QAAK;AAA9C,eAAE,aAAW,aAAa,EAhB7B,IAgBG,IAAgC,kBAAhC,IAAgC,CAA9B,aAAW;AACd,uDAAkB,yBAAjB,EACC;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN,GACF;AAAA,CACD;AACD,eAAe,cAA+B,yBAAQ;;;AJyG5C,IAAAC,uBAAA;AAjHV,IAAM,sBAAsB;AAC5B,IAAM,yBAAyB,KAAK,KAAK,KAAK;AAC9C,IAAM,gBAAgB;AACtB,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAC3B,IAAM,4BAA4B;AAYlC,IAAM,iBAAuB,sBAAqC,IAAI;AAEtE,SAAS,aAAa;AACpB,QAAM,UAAgB,mBAAW,cAAc;AAC/C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,SAAO;AACT;AAEA,IAAM,kBAAwB;AAAA,EAQ5B,CACE,IASA,QACG;AAVH,iBACE;AAAA,oBAAc;AAAA,MACd,MAAM;AAAA,MACN,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IAhEN,IA0DI,IAOK,kBAPL,IAOK;AAAA,MANH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,WAAW,YAAY;AAC7B,UAAM,CAAC,YAAY,aAAa,IAAU,iBAAS,KAAK;AAIxD,UAAM,CAAC,OAAO,QAAQ,IAAU,iBAAS,WAAW;AACpD,UAAM,OAAO,8BAAY;AACzB,UAAM,UAAgB;AAAA,MACpB,CAAC,UAAmD;AAClD,cAAM,YAAY,OAAO,UAAU,aAAa,MAAM,IAAI,IAAI;AAC9D,YAAI,aAAa;AACf,sBAAY,SAAS;AAAA,QACvB,OAAO;AACL,mBAAS,SAAS;AAAA,QACpB;AAGA,iBAAS,SAAS,GAAG,mBAAmB,IAAI,SAAS,qBAAqB,sBAAsB;AAAA,MAClG;AAAA,MACA,CAAC,aAAa,IAAI;AAAA,IACpB;AAGA,UAAM,gBAAsB,oBAAY,MAAM;AAC5C,aAAO,WACH,cAAc,CAACC,UAAS,CAACA,KAAI,IAC7B,QAAQ,CAACA,UAAS,CAACA,KAAI;AAAA,IAC7B,GAAG,CAAC,UAAU,SAAS,aAAa,CAAC;AAGrC,IAAM,kBAAU,MAAM;AACpB,YAAM,gBAAgB,CAAC,UAAyB;AAC9C,YACE,MAAM,QAAQ,8BACb,MAAM,WAAW,MAAM,UACxB;AACA,gBAAM,eAAe;AACrB,wBAAc;AAAA,QAChB;AAAA,MACF;AAEA,aAAO,iBAAiB,WAAW,aAAa;AAChD,aAAO,MAAM,OAAO,oBAAoB,WAAW,aAAa;AAAA,IAClE,GAAG,CAAC,aAAa,CAAC;AAIlB,UAAM,QAAQ,OAAO,aAAa;AAElC,UAAM,eAAqB;AAAA,MACzB,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,CAAC,OAAO,MAAM,SAAS,UAAU,YAAY,eAAe,aAAa;AAAA,IAC3E;AAEA,WACE,8CAAC,eAAe,UAAf,EAAwB,OAAO,cAC9B,wDAAC,mBAAgB,eAAe,GAC9B;AAAA,MAAC;AAAA;AAAA,QACC,OACE;AAAA,UACE,mBAAmB;AAAA,UACnB,wBAAwB;AAAA,WACrB;AAAA,QAGP,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,SACI,QAbL;AAAA,QAeE;AAAA;AAAA,IACH,GACF,GACF;AAAA,EAEJ;AACF;AACA,gBAAgB,cAAc;AAE9B,IAAM,UAAgB;AAAA,EAQpB,CACE,IAQA,QACG;AATH,iBACE;AAAA,aAAO;AAAA,MACP,UAAU;AAAA,MACV,cAAc;AAAA,MACd;AAAA,MACA;AAAA,IA5KN,IAuKI,IAMK,kBANL,IAMK;AAAA,MALH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,EAAE,UAAU,OAAO,YAAY,cAAc,IAAI,WAAW;AAElE,QAAI,gBAAgB,QAAQ;AAC1B,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,WACI,QANL;AAAA,UAQE;AAAA;AAAA,MACH;AAAA,IAEJ;AAEA,QAAI,UAAU;AACZ,aACE,8CAAC,sCAAM,MAAM,YAAY,cAAc,iBAAmB,QAAzD,EACC;AAAA,QAAC;AAAA;AAAA,UACC,gBAAa;AAAA,UACb,eAAY;AAAA,UACZ,WAAU;AAAA,UACV,OACE;AAAA,YACE,mBAAmB;AAAA,UACrB;AAAA,UAEF;AAAA,UAEA,wDAAC,SAAI,WAAU,+BAA+B,UAAS;AAAA;AAAA,MACzD,IACF;AAAA,IAEJ;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA,QACV,cAAY;AAAA,QACZ,oBAAkB,UAAU,cAAc,cAAc;AAAA,QACxD,gBAAc;AAAA,QACd,aAAW;AAAA,QAGX;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,YAAY,cAAc,YAAY,UAClC,yFACA;AAAA,cACN;AAAA;AAAA,UACF;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,SAAS,SACL,mFACA;AAAA;AAAA,gBAEJ,YAAY,cAAc,YAAY,UAClC,kGACA;AAAA,gBACJ;AAAA,cACF;AAAA,eACI,QAZL;AAAA,cAcC;AAAA,gBAAC;AAAA;AAAA,kBACC,gBAAa;AAAA,kBACb,WAAU;AAAA,kBAET;AAAA;AAAA,cACH;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,QAAQ,cAAc;AAEtB,IAAM,iBAAuB,mBAG3B,CAAC,IAAkC,QAAQ;AAA1C,eAAE,aAAW,QAxQhB,IAwQG,IAAyB,kBAAzB,IAAyB,CAAvB,aAAW;AACd,QAAM,EAAE,cAAc,IAAI,WAAW;AAErC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAW,GAAG,WAAW,SAAS;AAAA,MAClC,SAAS,CAAC,UAAU;AAClB,2CAAU;AACV,sBAAc;AAAA,MAChB;AAAA,OACI,QAVL;AAAA,MAYC;AAAA,sDAAC,kCAAU;AAAA,QACX,8CAAC,UAAK,WAAU,WAAU,4BAAc;AAAA;AAAA;AAAA,EAC1C;AAEJ,CAAC;AACD,eAAe,cAAc;AAE7B,IAAM,cAAoB,mBAGxB,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YAlSL,IAkSG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,QAAM,EAAE,cAAc,IAAI,WAAW;AAErC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,cAAW;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,OAAM;AAAA,MACN,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ,CAAC;AACD,YAAY,cAAc;AAE1B,IAAM,eAAqB,mBAGzB,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YA/TL,IA+TG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ,CAAC;AACD,aAAa,cAAc;AAE3B,IAAM,eAAqB,mBAGzB,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YAjVL,IAiVG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ,CAAC;AACD,aAAa,cAAc;AAE3B,IAAM,gBAAsB,mBAG1B,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YAnWL,IAmWG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,2BAA2B,SAAS;AAAA,OAC9C;AAAA,EACN;AAEJ,CAAC;AACD,cAAc,cAAc;AAE5B,IAAM,gBAAsB,mBAG1B,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YAlXL,IAkXG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,2BAA2B,SAAS;AAAA,OAC9C;AAAA,EACN;AAEJ,CAAC;AACD,cAAc,cAAc;AAE5B,IAAM,mBAAyB,mBAG7B,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YAjYL,IAiYG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,SACE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN;AAEJ,CAAC;AACD,iBAAiB,cAAc;AAE/B,IAAM,iBAAuB,mBAG3B,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YAhZL,IAgZG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ,CAAC;AACD,eAAe,cAAc;AAE7B,IAAM,eAAqB,mBAGzB,CAAC,IAAyB,QAAQ;AAAjC,eAAE,YAlaL,IAkaG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,6CAA6C,SAAS;AAAA,OAChE;AAAA,EACN;AAEJ,CAAC;AACD,aAAa,cAAc;AAE3B,IAAM,oBAA0B,mBAG9B,CAAC,IAA0C,QAAQ;AAAlD,eAAE,aAAW,UAAU,MAjb1B,IAibG,IAAiC,kBAAjC,IAAiC,CAA/B,aAAW;AACd,QAAM,OAAO,UAAU,0BAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ,CAAC;AACD,kBAAkB,cAAc;AAEhC,IAAM,qBAA2B,mBAG/B,CAAC,IAA0C,QAAQ;AAAlD,eAAE,aAAW,UAAU,MAtc1B,IAscG,IAAiC,kBAAjC,IAAiC,CAA/B,aAAW;AACd,QAAM,OAAO,UAAU,0BAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ,CAAC;AACD,mBAAmB,cAAc;AAEjC,IAAM,sBAA4B,mBAGhC,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA7dL,IA6dG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,kBAAkB,SAAS;AAAA,OACrC;AAAA,EACN;AAAA,CACD;AACD,oBAAoB,cAAc;AAElC,IAAM,cAAoB,mBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA1eL,IA0eG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,sCAAsC,SAAS;AAAA,OACzD;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAAc;AAE1B,IAAM,kBAAwB,mBAG5B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAvfL,IAufG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,4BAA4B,SAAS;AAAA,OAC/C;AAAA,EACN;AAAA,CACD;AACD,gBAAgB,cAAc;AAE9B,IAAM,gCAA4B;AAAA,EAChC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,IAAM,oBAA0B;AAAA,EAQ9B,CACE,IASA,QACG;AAVH,iBACE;AAAA,gBAAU;AAAA,MACV,WAAW;AAAA,MACX,UAAU;AAAA,MACV,OAAO;AAAA,MACP;AAAA,MACA;AAAA,IAtiBN,IAgiBI,IAOK,kBAPL,IAOK;AAAA,MANH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,OAAO,UAAU,0BAAO;AAC9B,UAAM,EAAE,UAAU,MAAM,IAAI,WAAW;AAEvC,UAAM,SACJ;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,gBAAa;AAAA,QACb,aAAW;AAAA,QACX,eAAa;AAAA,QACb,WAAW,GAAG,0BAA0B,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,SACjE;AAAA,IACN;AAGF,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,YAAY,UAAU;AAC/B,gBAAU;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,WACE,+CAAC,WACC;AAAA,oDAAC,kBAAe,SAAO,MAAE,kBAAO;AAAA,MAChC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAM;AAAA,UACN,QAAQ,UAAU,eAAe;AAAA,WAC7B;AAAA,MACN;AAAA,OACF;AAAA,EAEJ;AACF;AACA,kBAAkB,cAAc;AAEhC,IAAM,oBAA0B,mBAM9B,CAAC,IAA+D,QAAQ;AAAvE,eAAE,aAAW,UAAU,OAAO,cAAc,MAxlB/C,IAwlBG,IAAsD,kBAAtD,IAAsD,CAApD,aAAW,WAAiB;AAC/B,QAAM,OAAO,UAAU,0BAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eACE;AAAA,QACF;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ,CAAC;AACD,kBAAkB,cAAc;AAEhC,IAAM,mBAAyB,mBAG7B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YApnBL,IAonBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,iBAAiB,cAAc;AAE/B,IAAM,sBAA4B,mBAKhC,CAAC,IAA2C,QAAQ;AAAnD,eAAE,aAAW,WAAW,MA3oB3B,IA2oBG,IAAkC,kBAAlC,IAAkC,CAAhC,aAAW;AAEd,QAAM,QAAc,gBAAQ,MAAM;AAChC,WAAO,GAAG,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,IAAI,EAAE;AAAA,EAC/C,GAAG,CAAC,CAAC;AAEL,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,+CAA+C,SAAS;AAAA,OAClE,QAJL;AAAA,MAME;AAAA,oBACC;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,gBAAa;AAAA;AAAA,QACf;AAAA,QAEF;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,gBAAa;AAAA,YACb,OACE;AAAA,cACE,oBAAoB;AAAA,YACtB;AAAA;AAAA,QAEJ;AAAA;AAAA;AAAA,EACF;AAEJ,CAAC;AACD,oBAAoB,cAAc;AAElC,IAAM,iBAAuB,mBAG3B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA/qBL,IA+qBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,eAAe,cAAc;AAE7B,IAAM,qBAA2B,mBAG/B,CAAC,IAAc,QAAK;AAAnB,MAAK,kBAAL,IAAK;AAAiB,uDAAC,uBAAG,OAAc,MAAO;AAAA,CAAE;AACpD,mBAAmB,cAAc;AAEjC,IAAM,uBAA6B,mBAOjC,CAAC,IAAiE,QAAQ;AAAzE,eAAE,YAAU,OAAO,OAAO,MAAM,UAAU,UA1sB7C,IA0sBG,IAAwD,kBAAxD,IAAwD,CAAtD,WAAiB,QAAa,YAAU;AAC3C,QAAM,OAAO,UAAU,0BAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,aAAW;AAAA,MACX,eAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,SAAS,QAAQ;AAAA,QACjB,SAAS,QAAQ;AAAA,QACjB;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ,CAAC;AACD,qBAAqB,cAAc;;;AK5tBnC,IAAAC,uBAAmC;;;ACAnC,IAAAC,uBAAqC;AAqCvB,IAAAC,uBAAA;AApBP,SAAS,aAAa;AAAA,EAC3B;AACF,GAMG;AACD,QAAM,EAAE,SAAS,IAAI,WAAW;AAEhC,SACE,8CAAC,eACC,wDAAC,mBACC,wDAAC,gBACC,wDAAC,uBAAoB,SAAO,MAC1B;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MAEV;AAAA,sDAAC,SAAI,WAAU,uHAEf;AAAA,QACA,+CAAC,SAAI,WAAU,+CACb;AAAA,wDAAC,UAAK,WAAU,0BAA0B,yCAAO,MAAK;AAAA,UACtD,8CAAC,UAAK,WAAU,oBAAoB,yCAAO,MAAK;AAAA,WAClD;AAAA,QACA,8CAAC,uCAAe,WAAU,WAAU;AAAA;AAAA;AAAA,EACtC,GACF,GA+BF,GACF,GACF;AAEJ;;;ACzDI,IAAAC,uBAAA;AAfG,SAAS,MAAM;AAAA,EACpB;AACF,GAWG;AACD,SACE,+EACG,gBAAM,IAAI,CAAC,MAAM,UAAU;AA5BlC;AA6BQ,WACE,+CAAC,gBACC;AAAA,oDAAC,qBAAmB,eAAK,OAAM;AAAA,MAC/B,8CAAC,eACE,qBAAK,UAAL,mBAAY,IAAI,CAAC,YAChB,8CAAC,mBACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAO;AAAA,UACP,WAAW;AAAA,aACT,mCAAS,aAAY;AAAA,UACvB;AAAA,UAEA,yDAAC,OAAE,MAAM,QAAQ,KACd;AAAA,gDAAS,SAAQ,QAAQ,KAAK;AAAA,YAC/B,8CAAC,UAAM,kBAAQ,OAAM;AAAA,aACvB;AAAA;AAAA,MACF,KAXoB,QAAQ,KAY9B,IAEJ;AAAA,SAlBiB,KAmBnB;AAAA,EAEJ,CAAC,GACH;AAEJ;;;AFbgB,IAAAC,uBAAA;AAJT,SAAS,WAAW,IASP;AATO,eACzB;AAAA,aAAS,CAAC;AAAA,IACV,aAAa;AAAA,MACX,MAAM;AAAA,MACN,MAAM,MAAM,8CAAC,2CAAmB;AAAA,MAChC,MAAM;AAAA,IACR;AAAA,IACA;AAAA,EA5CF,IAqC2B,IAQtB,kBARsB,IAQtB;AAAA,IAPH;AAAA,IACA;AAAA,IAKA;AAAA;AAGA,SACE,+CAAC,wCAAQ,aAAY,UAAW,QAA/B,EACC;AAAA,kDAAC,iBACC,wDAAC,gBAAa,OAAO,YAAY,GACnC;AAAA,IACA,8CAAC,kBACC,wDAAC,SAAM,OAAO,QAAQ,GACxB;AAAA,IACC,UAAU,8CAAC,iBAAe,iBAAO,GAAE;AAAA,IACpC,8CAAC,eAAY;AAAA,MACf;AAEJ;;;AG3DA,IAAAC,UAAuB;AACvB,IAAAC,qBAAqB;AACrB,IAAAC,wBAA6C;AASpB,IAAAC,uBAAA;AALzB,IAAM,aAAmB,mBAKvB,CAAC,IAAc,QAAK;AAAnB,MAAK,kBAAL,IAAK;AAAiB,uDAAC,wBAAI,KAAU,cAAW,gBAAiB,MAAO;AAAA,CAAE;AAC7E,WAAW,cAAc;AAEzB,IAAM,iBAAuB,mBAG3B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAjBL,IAiBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,eAAe,cAAc;AAE7B,IAAM,iBAAuB,mBAG3B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAhCL,IAgCG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,oCAAoC,SAAS;AAAA,OACvD;AAAA,EACN;AAAA,CACD;AACD,eAAe,cAAc;AAE7B,IAAM,iBAAuB,mBAK3B,CAAC,IAAkC,QAAQ;AAA1C,eAAE,WAAS,UA9Cd,IA8CG,IAAyB,kBAAzB,IAAyB,CAAvB,WAAS;AACZ,QAAM,OAAO,UAAU,0BAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,2CAA2C,SAAS;AAAA,OAC9D;AAAA,EACN;AAEJ,CAAC;AACD,eAAe,cAAc;AAE7B,IAAM,iBAAuB,mBAG3B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA9DL,IA8DG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,iBAAc;AAAA,MACd,gBAAa;AAAA,MACb,WAAW,GAAG,+BAA+B,SAAS;AAAA,OAClD;AAAA,EACN;AAAA,CACD;AACD,eAAe,cAAc;AAE7B,IAAM,sBAAsB,CAAC,OAIE;AAJF,eAC3B;AAAA;AAAA,IACA;AAAA,EA5EF,IA0E6B,IAGxB,kBAHwB,IAGxB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,GAAG,+BAA+B,SAAS;AAAA,OAClD,QAJL;AAAA,MAME,wCAAY,8CAAC,sCAAa;AAAA;AAAA,EAC7B;AAAA;AAEF,oBAAoB,cAAc;AAElC,IAAM,qBAAqB,CAAC,OAGK;AAHL,eAC1B;AAAA;AAAA,EA3FF,IA0F4B,IAEvB,kBAFuB,IAEvB;AAAA,IADH;AAAA;AAGA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,GAAG,4CAA4C,SAAS;AAAA,OAC/D,QAJL;AAAA,MAMC;AAAA,sDAAC,wCAAe,WAAU,WAAU;AAAA,QACpC,8CAAC,UAAK,WAAU,WAAU,kBAAI;AAAA;AAAA;AAAA,EAChC;AAAA;AAEF,mBAAmB,cAAc;;;ACvGjC,IAAAC,iBAAoD;AA4BhD,IAAAC,uBAAA;AAbJ,IAAMC,sBAAiB,8BAAc,CAAC,CAAuB;AAEtD,SAASC,iBAAgB;AAAA,EAC9B;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AACrB,GAAyB;AACvB,QAAM,CAAC,aAAa,cAAc,QAAI,yBAAS,gBAAgB;AAC/D,QAAM,CAAC,aAAa,cAAc,QAAI,yBAAS,WAAW;AAE1D,QAAM,iBAAiB,MAAM,eAAe,CAAC,SAAS,CAAC,IAAI;AAE3D,SACE;AAAA,IAACD,gBAAe;AAAA,IAAf;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEO,SAASE,cAAa;AAC3B,QAAM,cAAU,2BAAWF,eAAc;AAEzC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AAEA,SAAO;AACT;;;ACfQ,IAAAG,uBAAA;AAhBR,IAAM,WAAmC;AAAA,EACvC,WAAW;AAAA,EACX,OAAO;AAAA,EACP,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AACX;AAEA,IAAM,oBAAoB,CAAC,EAAE,QAAQ,MAAM,MAAM,MAA2B;AAC1E,MAAI,QAAQ;AACV,WACE,8CAAC,kBACC,wDAAC,kBAAe,WAAU,cAAc,iBAAM,GAChD;AAAA,EAEJ;AAEA,SACE,+CAAC,kBACC;AAAA,kDAAC,kBAAe,MAAM,MAAM,WAAU,cACnC,iBACH;AAAA,IACA,8CAAC,uBAAoB;AAAA,KACvB;AAEJ;AAEO,IAAM,gBAAgB,MAAM;AACjC,QAAM,EAAE,YAAY,IAAIC,YAAW;AAEnC,QAAM,kBAAkB,YACrB,MAAM,GAAG,EACT,OAAO,OAAO,EACd,IAAI,CAAC,SAAS,OAAO,UAAU;AAC9B,UAAM,OAAO,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AACpD,UAAM,SAAS,UAAU,MAAM,SAAS;AACxC,UAAM,QAAQ,SAAS,OAAO,KAAK;AAEnC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AAEH,SACE,8CAAC,YAAO,WAAU,4KAChB,yDAAC,SAAI,WAAU,2BACb;AAAA,kDAAC,kBAAe,WAAU,iBAAgB;AAAA,IAC1C,8CAACC,YAAA,EAAU,aAAY,YAAW,WAAU,OAAM;AAAA,IAClD,8CAAC,cACC,yDAAC,kBACC;AAAA,qDAAC,kBACC;AAAA,sDAAC,kBAAe,MAAK,KAAI,WAAU,cAAa,kBAEhD;AAAA,QACA,8CAAC,uBAAoB;AAAA,SACvB;AAAA,MACC,gBAAgB,IAAI,CAAC,SACpB,8CAAC,sCAAsC,OAAf,KAAK,IAAgB,CAC9C;AAAA,OACH,GACF;AAAA,KACF,GACF;AAEJ;;;ACpFM,IAAAC,uBAAA;AAHC,IAAM,gBAAgB,MAAM;AACjC,SACE,+CAAC,YAAO,WAAU,YAChB;AAAA,kDAACC,YAAA,EAAU;AAAA,IACX,+CAAC,SAAI,WAAU,6DACb;AAAA,qDAAC,UAAK,WAAU,iCAAgC;AAAA;AAAA,SAC3C,oBAAI,KAAK,GAAE,YAAY;AAAA,QAAE;AAAA,SAC9B;AAAA,MACA,8CAAC,UAAK,WAAU,iCAAgC,6CAEhD;AAAA,OACF;AAAA,KACF;AAEJ;;;ACiBQ,IAAAC,uBAAA;AAdD,IAAMC,WAAU,CAAC,OAOJ;AAPI,eACtB;AAAA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,EAxBF,IAmBwB,IAMnB,iBANmB,IAMnB;AAAA,IALH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MAEA,yDAAC,mBACC;AAAA,sDAAC,+BAAe,KAAM;AAAA,QACtB,+CAAC,gBAAa,WAAU,6BACtB;AAAA,wDAAC,iBAAc;AAAA,UACf;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,cACF;AAAA,cAEC;AAAA;AAAA,UACH;AAAA,UACC,cAAc,8CAAC,iBAAc;AAAA,WAChC;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;;;AC/CA,IAAAC,wBAOO;AAiBP,IAAAC,iBAA4B;AAkBtB,IAAAC,uBAAA;AAhBC,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA,eAAe,MAAM;AAAA,EAAC;AACxB,GAQG;AACD,QAAM,EAAE,SAAS,IAAI,WAAW;AAEhC,QAAM,4BAAwB,4BAAY,MAAM;AAC9C,WACE,gFACE;AAAA,qDAAC,UAAO,WAAU,sBAChB;AAAA,sDAAC,eAAY,KAAK,6BAAM,QAAQ,KAAK,6BAAM,MAAM;AAAA,QACjD,8CAAC,kBAAe,WAAU,cAAa,gBAAE;AAAA,SAC3C;AAAA,MACA,+CAAC,SAAI,WAAU,+CACb;AAAA,sDAAC,UAAK,WAAU,0BAA0B,uCAAM,MAAK;AAAA,QACrD,8CAAC,UAAK,WAAU,oBAAoB,uCAAM,OAAM;AAAA,SAClD;AAAA,OACF;AAAA,EAEJ,GAAG,CAAC,IAAI,CAAC;AAET,SACE,8CAAC,eACC,wDAAC,mBACC,yDAAC,gBACC;AAAA,kDAAC,uBAAoB,SAAO,MAC1B;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QAET;AAAA,gCAAsB;AAAA,UACvB,8CAAC,wCAAe,WAAU,kBAAiB;AAAA;AAAA;AAAA,IAC7C,GACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAM,WAAW,WAAW;AAAA,QAC5B,OAAM;AAAA,QACN,YAAY;AAAA,QAEZ;AAAA,wDAAC,qBAAkB,WAAU,mBAC3B,wDAAC,SAAI,WAAU,yDACZ,gCAAsB,GACzB,GACF;AAAA,UACA,8CAAC,yBAAsB;AAAA,UACvB,8CAAC,qBACC,yDAAC,oBACC;AAAA,0DAAC,kCAAS;AAAA,YAAE;AAAA,aAEd,GACF;AAAA,UACA,8CAAC,yBAAsB;AAAA,UACvB,+CAAC,qBACC;AAAA,2DAAC,oBACC;AAAA,4DAAC,oCAAW;AAAA,cAAE;AAAA,eAEhB;AAAA,YACA,+CAAC,oBACC;AAAA,4DAAC,oCAAW;AAAA,cAAE;AAAA,eAEhB;AAAA,YACA,+CAAC,oBACC;AAAA,4DAAC,8BAAK;AAAA,cAAE;AAAA,eAEV;AAAA,aACF;AAAA,UACA,8CAAC,yBAAsB;AAAA,UACvB,+CAAC,oBAAiB,SAAS,cACzB;AAAA,0DAAC,gCAAO;AAAA,YAAE;AAAA,aAEZ;AAAA;AAAA;AAAA,IACF;AAAA,KACF,GACF,GACF;AAEJ;;;AC9FQ,IAAAC,uBAAA;AATD,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAuB;AACrB,SACE,+CAAC,SAAI,WAAU,oBACb;AAAA,mDAAC,SAAI,WAAU,wBACb;AAAA,qDAAC,SACE;AAAA,iBAAS,8CAAC,QAAK,SAAQ,SAAS,iBAAM;AAAA,QACtC,YAAY,8CAAC,QAAK,SAAQ,SAAS,oBAAS;AAAA,SAC/C;AAAA,MACC;AAAA,OACH;AAAA,IACA,8CAAC,SAAI,WAAU,QAAQ,UAAS;AAAA,KAClC;AAEJ;;;AC1BA,IAAAC,UAAuB;AACvB,oBAA+B;AAU7B,IAAAC,uBAAA;AANF,IAAM,OAAqB;AAE3B,IAAM,WAAiB,mBAGrB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAZL,IAYG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAe;AAAA,IAAd;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,SAAS,cAA4B,mBAAK;AAE1C,IAAM,cAAoB,mBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA3BL,IA2BG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAe;AAAA,IAAd;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAA4B,sBAAQ;AAEhD,IAAM,cAAoB,mBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA1CL,IA0CG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAe;AAAA,IAAd;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAA4B,sBAAQ;;;ACxB5C,IAAAC,uBAAA;AAPG,IAAMC,QAA4B,CAAC;AAAA,EACxC;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AACF,MAAM;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,KAAK,cAAc,EAAE;AAAA,MAC5B,eAAe,CAAC,UAAU;AACxB,cAAM,QAAQ,KAAK,UAAU,CAAC,QAAQ,IAAI,UAAU,KAAK;AACzD,YAAI,YAAa,aAAY,KAAK;AAAA,MACpC;AAAA,MACA,WAAW,GAAG,UAAU,SAAS;AAAA,MAEjC;AAAA,sDAAC,YACE,eAAK,IAAI,CAAC,KAAK,UACd,8CAAC,eAAwB,OAAO,IAAI,OACjC,cAAI,SADW,KAElB,CACD,GACH;AAAA,QACC,KAAK,IAAI,CAAC,KAAK,UACd,8CAAC,eAAwB,OAAO,IAAI,OACjC,cAAI,WADW,KAElB,CACD;AAAA;AAAA;AAAA,EACH;AAEJ;;;ArB7BQ,IAAAC,uBAAA;AAPD,IAAM,QAAQ,CAAC,EAAE,MAAM,UAAU,MAAM;AAAC,GAAG,MAAM,MAAkB;AACxE,QAAM,kBAAc,4BAAY,MAAM;AACpC,WAAO,KAAK,IAAI,CAAC,EAAE,OAAO,GAAG,GAAG,UAAU;AACxC,YAAM,SAAS,UAAU,KAAK,SAAS;AACvC,YAAM,WAAW,OAAO,UAAU,YAAY,MAAM;AAEpD,aACE,+CAAC,SAAgB,WAAW,GAAG,CAAC,UAAU,0BAA0B,GAClE;AAAA,sDAAC,SACC;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM,WAAW,QAAQ,EAAE;AAAA,YACpC,SAAS,WAAW,YAAY;AAAA,YAChC,MAAK;AAAA,YACL,WAAU;AAAA,YAET,qBAAW,8CAACC,OAAA,EAAK,MAAK,WAAU,IAAK,QAAQ;AAAA;AAAA,QAChD,GACF;AAAA,QACC,SAAS,8CAAC,OAAE,WAAU,YAAY,iBAAM;AAAA,QACxC,CAAC,UACA;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,aAAY;AAAA,YACZ,WAAW,GAAG,YAAY,oBAAoB;AAAA;AAAA,QAChD;AAAA,WAhBM,KAwBV;AAAA,IAEJ,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,SAAS,KAAK,CAAC;AACzB,SAAO,8CAAC,SAAI,WAAU,eAAe,sBAAY,GAAE;AACrD;;;AsBhDA,IAAAC,UAAuB;AACvB,2BAAsC;AAepC,IAAAC,uBAAA;AAVF,IAAM,cAAmC;AAEzC,IAAM,qBAA0C;AAEhD,IAAM,oBAAyC;AAE/C,IAAM,qBAA2B,mBAG/B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAjBL,IAiBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QALL;AAAA,MAMC;AAAA;AAAA,EACF;AAAA,CACD;AACD,mBAAmB,cAAmC,6BAAQ;AAE9D,IAAM,qBAA2B,mBAG/B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAhCL,IAgCG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,wDAAC,qBACC;AAAA,kDAAC,sBAAmB;AAAA,IACpB;AAAA,MAAsB;AAAA,MAArB;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,SACI;AAAA,IACN;AAAA,KACF;AAAA,CACD;AACD,mBAAmB,cAAmC,6BAAQ;AAE9D,IAAM,oBAAoB,CAAC,OAGc;AAHd,eACzB;AAAA;AAAA,EAhDF,IA+C2B,IAEtB,kBAFsB,IAEtB;AAAA,IADH;AAAA;AAGA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA;AAEF,kBAAkB,cAAc;AAEhC,IAAM,oBAAoB,CAAC,OAGc;AAHd,eACzB;AAAA;AAAA,EA9DF,IA6D2B,IAEtB,kBAFsB,IAEtB;AAAA,IADH;AAAA;AAGA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA;AAEF,kBAAkB,cAAc;AAEhC,IAAM,mBAAyB,mBAG7B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA9EL,IA8EG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,yBAAyB,SAAS;AAAA,OAC5C;AAAA,EACN;AAAA,CACD;AACD,iBAAiB,cAAmC,2BAAM;AAE1D,IAAM,yBAA+B,mBAGnC,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA1FL,IA0FG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN;AAAA,CACD;AACD,uBAAuB,cACA,iCAAY;AAEnC,IAAM,oBAA0B,mBAG9B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAvGL,IAuGG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,eAAe,GAAG,SAAS;AAAA,OACrC;AAAA,EACN;AAAA,CACD;AACD,kBAAkB,cAAmC,4BAAO;AAE5D,IAAM,oBAA0B,mBAG9B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAnHL,IAmHG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT,eAAe,EAAE,SAAS,UAAU,CAAC;AAAA,QACrC;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,kBAAkB,cAAmC,4BAAO;;;ACjGtD,IAAAC,uBAAA;AATC,IAAMC,eAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AACtB,SACE,+CAAC,eACC;AAAA,kDAAC,sBAAmB,SAAO,MAAE,UAAS;AAAA,IACtC,+CAAC,sBACC;AAAA,qDAAC,qBACC;AAAA,sDAAC,oBAAkB,iBAAM;AAAA,QACxB,eACC,8CAAC,0BAAwB,uBAAY;AAAA,SAEzC;AAAA,MACA,+CAAC,qBACC;AAAA,sDAAC,qBAAkB,SAAS,UAAU,oBAAM;AAAA,QAC5C,8CAAC,qBAAkB,SAAS,WAAW,sBAAQ;AAAA,SACjD;AAAA,OACF;AAAA,KACF;AAEJ;;;AC1CA,IAAAC,iBAA+C;AAC/C,IAAAC,0BAA+B;AAC/B,IAAAC,iBAAc;AAmEN,IAAAC,uBAAA;AApDD,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA,OAAO,CAAC;AAAA,EACR;AAAA,EACA,eAAe,MAAM;AAAA,EAAC;AAAA,EACtB;AACF,MAA8B;AAC5B,QAAM,WAAO,wCAAe;AAC5B,QAAM,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAM,CAAC,YAAY,aAAa,QAAI,yBAAS,EAAE;AAE/C,QAAM,gBAAY,wBAAQ,MAAM;AAC9B,QAAI,UAAU;AACZ,aAAO,eAAAC,QAAE,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC;AAAA,IACvC;AACA,WAAO;AAAA,EACT,GAAG,CAAC,UAAU,MAAM,MAAM,IAAI,CAAC;AAE/B,QAAM,mBAAe,wBAAQ,MAAM;AArCrC;AAsCI,QAAI,UAAU;AACZ,cAAO,oBAAAA,QAAE,IAAI,KAAK,UAAU,QAAQ,IAAI,MAAjC,mBAAoC;AAAA,IAC7C;AACA,WAAO;AAAA,EACT,GAAG,CAAC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAEhC,QAAM,iBAAa,4BAAY,MAAM;AACnC,QAAI,CAAC,WAAW,OAAQ;AACxB,QAAI,UAAU;AACZ,WAAK,SAAS,MAAM,CAAC,GAAG,WAAW,UAAU,CAAC;AAAA,IAChD,OAAO;AACL,mDAAe,UAAU,OAAO,UAAU;AAAA,IAC5C;AACA,kBAAc,EAAE;AAAA,EAClB,GAAG,CAAC,WAAW,YAAY,UAAU,MAAM,MAAM,YAAY,CAAC;AAE9D,QAAM,iBAAa;AAAA,IACjB,CAAC,UAAkB;AACjB,UAAI,UAAU;AACZ,aAAK;AAAA,UACH;AAAA,UACA,UAAU,OAAO,CAACA,IAAW,MAAc,MAAM,KAAK;AAAA,QACxD;AAAA,MACF,OAAO;AACL,qDAAe,UAAU,OAAO,CAACA,IAAW,MAAc,MAAM,KAAK;AAAA,MACvE;AAAA,IACF;AAAA,IACA,CAAC,UAAU,MAAM,MAAM,WAAW,YAAY;AAAA,EAChD;AAEA,QAAM,oBAAgB,4BAAY,MAAM;AACtC,WAAO,uCAAW,IAAI,CAAC,MAAc,UAAkB;AACrD,aACE,+CAAC,SAAgB,WAAU,6BACzB;AAAA,sDAAC,SAAK,gBAAK;AAAA,QACX;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM,WAAW,KAAK;AAAA,YAC/B,SAAS;AAAA,YACT,MAAM;AAAA,YACN,MAAK;AAAA,YAEL,wDAACC,OAAA,EAAK,MAAK,YAAW,WAAU,oBAAmB;AAAA;AAAA,QACrD;AAAA,WATQ,KAUV;AAAA,IAEJ;AAAA,EACF,GAAG,CAAC,WAAW,UAAU,CAAC;AAE1B,SACE,+CAAC,SACE;AAAA,aAAS;AAAA,MACR,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;AACnC,sBAAc,KAAK;AAAA,MACrB;AAAA,MACA,SAAS;AAAA,MACT,OAAO;AAAA,MACP,OAAO;AAAA,IACT,CAAC;AAAA,IACA,cAAc;AAAA,KACjB;AAEJ;;;ACzEgB,IAAAC,uBAAA;AAfT,IAAM,oBAAoB,CAAC,OAGJ;AAHI,eAChC;AAAA,WAAO,CAAC;AAAA,EAZV,IAWkC,IAE7B,kBAF6B,IAE7B;AAAA,IADH;AAAA;AAGA,SACE,8CAAC,kDAAkB,QAAgB,QAAlC,EACE,WAAC,EAAE,UAAU,SAAS,MAAM,MAAM;AACjC,WACE;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC;AAAA,QACA;AAAA,QACA,aAAW;AAAA,QACX,WACE,8CAACC,SAAA,EAAO,MAAK,UAAS,SAAS,MAAM,QAAQ,GAC3C,wDAACC,OAAA,EAAK,MAAK,SAAQ,GACrB;AAAA;AAAA,IAEJ;AAAA,EAEJ,IACF;AAEJ;;;AClCA,IAAAC,iBAA4B;AAuCxB,IAAAC,uBAAA;AAhBG,IAAM,aAAa,CAAC,OAOJ;AAPI,eACzB;AAAA;AAAA,IACA;AAAA,IACA,WAAW,MAAM;AAAA,IAAC;AAAA,IAClB,mBAAmB,MAAM;AAAA,IAAC;AAAA,IAC1B;AAAA,EA5BF,IAuB2B,IAMtB,iBANsB,IAMtB;AAAA,IALH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,eAAW;AAAA,IACf,CAACC,WAAkB;AACjB,eAASA,MAAK;AACd,uBAAiBA,MAAK;AAAA,IACxB;AAAA,IACA,CAAC,UAAU,gBAAgB;AAAA,EAC7B;AACA,SACE;AAAA,IAAC;AAAA,qCACK,OADL;AAAA,MAEC,eAAe;AAAA,MACf,cAAc;AAAA,MACd;AAAA,MAEA;AAAA,sDAAC,iBACC,wDAAC,eAAY,aAA0B,GACzC;AAAA,QACA,8CAAC,iBACE,6CAAS,IAAI,CAAC,QAAQ,UACrB,8CAAC,cAAuB,OAAO,OAAO,OAAO,KAAK,GAC/C,iBAAO,SADO,KAEjB,IAEJ;AAAA;AAAA;AAAA,EACF;AAEJ;;;AC7CA,IAAAC,0BAA+B;AA4BzB,IAAAC,uBAAA;AAhBC,IAAMC,UAAS,CAAC,OAUJ;AAVI,eACrB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAhCF,IAwBuB,IASlB,kBATkB,IASlB;AAAA,IARH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,WAAO,wCAAe;AAC5B,QAAM,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE5B,MAAI,CAAC,WAAW,aAAa;AAC3B,WACE,+CAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACtC;AAAA,eAAS,8CAACC,QAAA,EAAO,iBAAM;AAAA,MACxB,8CAAC,6BAAW,SAAkB,eAA8B,MAAO;AAAA,MAClE,eACC,8CAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,MAE3D,SAAS,8CAAC,gBAAc,iBAAM;AAAA,OACjC;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,KAAK;AAAA,MACd;AAAA,MACA,QAAQ,CAAC,EAAE,MAAM,MACf,+CAAC,YAAS,WACP;AAAA,iBAAS,8CAAC,aAAW,iBAAM;AAAA,QAC5B,8CAAC,eACC;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,aACI,QACA;AAAA,QACN,GACF;AAAA,QACC,eAAe,8CAAC,mBAAiB,uBAAY;AAAA,QAC9C,8CAAC,eAAY;AAAA,SACf;AAAA;AAAA,EAEJ;AAEJ;;;AChES,IAAAC,uBAAA;AADF,IAAMC,SAAQ,CAAC,UAAsB;AAC1C,SAAO,8CAACA,QAAA,mBAAmB,MAAO;AACpC;;;ACPA,IAAAC,UAAuB;AACvB,IAAAC,wBAA0B;AAE1B,cAAyB;AAgEP,IAAAC,uBAAA;AAtDX,SAAS,gBAAgB;AAAA,EAC9B,UAAU,CAAC;AAAA,EACX,WAAW,CAAC;AAAA,EACZ,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,cAAc;AAAA,EACd;AACF,GAAyB;AACvB,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAC5C,QAAM,CAAC,YAAY,aAAa,IAAU,iBAAS,EAAE;AACrD,QAAM,WAAiB,eAAyB,IAAI;AAEpD,QAAM,mBAAmB,CAAC,kBAA0B;AAClD,aAAS,SAAS,OAAO,CAAC,UAAU,UAAU,aAAa,CAAC;AAAA,EAC9D;AAEA,QAAM,mBAAmB,CAAC,UAAkB;AAC1C,QAAI,SAAS,SAAS,KAAK,GAAG;AAC5B,eAAS,SAAS,OAAO,CAAC,MAAM,MAAM,KAAK,CAAC;AAAA,IAC9C,OAAO;AACL,eAAS,CAAC,GAAG,UAAU,KAAK,CAAC;AAAA,IAC/B;AAAA,EACF;AAEA,QAAM,kBAAkB,QAAQ;AAAA,IAAO,CAAC,WACtC,OAAO,MAAM,YAAY,EAAE,SAAS,WAAW,YAAY,CAAC;AAAA,EAC9D;AAEA,SACE,+CAAS,cAAR,EAAa,MAAY,cAAc,SACtC;AAAA,kDAAS,iBAAR,EAAgB,SAAO,MACtB;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QAEC;AAAA,mBAAS,IAAI,CAAC,UAAU;AACvB,kBAAM,SAAS,QAAQ,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK;AACpD,gBAAI,CAAC,OAAQ,QAAO;AAEpB,mBACE;AAAA,cAAC;AAAA;AAAA,gBAEC,WAAU;AAAA,gBAET;AAAA,yBAAO;AAAA,kBACR;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,SAAS,CAAC,MAAM;AACd,0BAAE,gBAAgB;AAClB,yCAAiB,KAAK;AAAA,sBACxB;AAAA,sBACA,WAAU;AAAA,sBAEV;AAAA,sEAAC,2BAAE,WAAU,WAAU;AAAA,wBACvB,+CAAC,UAAK,WAAU,WAAU;AAAA;AAAA,0BAAQ,OAAO;AAAA,2BAAM;AAAA;AAAA;AAAA,kBACjD;AAAA;AAAA;AAAA,cAdK;AAAA,YAeP;AAAA,UAEJ,CAAC;AAAA,UACD,8CAAC,SAAI,WAAU,UACZ,mBAAS,WAAW,KACnB,8CAAC,UAAK,WAAU,yBAAyB,uBAAY,GAEzD;AAAA;AAAA;AAAA,IACF,GACF;AAAA,IAEA,8CAAS,gBAAR,EACC;AAAA,MAAS;AAAA,MAAR;AAAA,QACC,WAAU;AAAA,QACV,OAAM;AAAA,QACN,YAAY;AAAA,QAEZ;AAAA,yDAAC,SAAI,WAAU,sDACb;AAAA,0DAAC,gCAAO,WAAU,iCAAgC;AAAA,YAClD;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK;AAAA,gBACL,OAAO;AAAA,gBACP,UAAU,CAAC,MAAM,cAAc,EAAE,OAAO,KAAK;AAAA,gBAC7C,aAAY;AAAA,gBACZ,WAAU;AAAA;AAAA,YACZ;AAAA,aACF;AAAA,UACA,8CAAC,SAAI,WAAU,+BACZ,0BAAgB,WAAW,IAC1B,8CAAC,SAAI,WAAU,uDAAsD,+BAErE,IAEA,gBAAgB,IAAI,CAAC,WACnB;AAAA,YAAC;AAAA;AAAA,cAEC,SAAS,MAAM,iBAAiB,OAAO,KAAK;AAAA,cAC5C,WAAW;AAAA,gBACT;AAAA,gBACA,SAAS,SAAS,OAAO,KAAK,KAAK;AAAA,cACrC;AAAA,cAEA;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAW;AAAA,sBACT;AAAA,sBACA,SAAS,SAAS,OAAO,KAAK,KAC5B;AAAA,oBACJ;AAAA,oBAEC,mBAAS,SAAS,OAAO,KAAK,KAC7B,8CAAC,UAAK,WAAU,eAAc,oBAAC;AAAA;AAAA,gBAEnC;AAAA,gBACC,OAAO;AAAA;AAAA;AAAA,YAlBH,OAAO;AAAA,UAmBd,CACD,GAEL;AAAA;AAAA;AAAA,IACF,GACF;AAAA,KACF;AAEJ;;;AC3HA,IAAAC,0BAA+B;AAyBzB,IAAAC,uBAAA;AAdC,SAAS,YAAY,IAQP;AARO,eAC1B;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,EA5BjB,IAsB4B,IAOvB,kBAPuB,IAOvB;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,WAAO,wCAAe;AAC5B,QAAM,UAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE5C,MAAI,CAAC;AACH,WACE,+CAAC,SAAI,WAAU,kCACZ;AAAA,eAAS,8CAACC,QAAA,EAAM,SAAS,MAAO,iBAAM;AAAA,MACvC,8CAAC,oCAAoB,MAAO;AAAA,OAC9B;AAGJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,KAAK;AAAA,MACd;AAAA,MACA,QAAQ,CAACC,QAAkC;AAAlC,YAAS,EAAP,OAAOC,IA9CxB,IA8CeD,KAAS,KAAAC,KAAE,QA9C1B,IA8CwB,IAAY,iBAAZ,IAAY,CAAV;AAClB,eACE;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,eAAa,SAAS,aAAa,MAAM,KAAK;AAAA,YAE7C;AAAA,uBACC;AAAA,gBAAC;AAAA;AAAA,kBACC,SAAS;AAAA,kBACT,eAAa,SAAS,cAAc,MAAM,KAAK;AAAA,kBAE9C,aAAG,KAAK,GAAG,WAAW,OAAO,EAAE;AAAA;AAAA,cAClC;AAAA,cAEF,8CAAC,eACC,wDAAC,SAAI,WAAU,sCACb,wDAAC,iEAAoB,QAAW,OAA/B,EAAqC,UAAU,QAAO,GACzD,GACF;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,eAAa,SAAS,gBAAgB,MAAM,KAAK;AAAA;AAAA,cACnD;AAAA;AAAA;AAAA,QACF;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;;;ACxEA,IAAAC,UAAuB;AACvB,uBAAkC;AAoB9B,IAAAC,uBAAA;AAZJ,IAAM,SAAe,mBAGnB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAdL,IAcG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QALL;AAAA,MAMC;AAAA,MAEA;AAAA,QAAkB;AAAA,QAAjB;AAAA,UACC,WAAW;AAAA,YACT;AAAA,UACF;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAAA,CACD;AACD,OAAO,cAA+B,sBAAK;;;ACzB3C,IAAAC,0BAA+B;AAyBzB,IAAAC,uBAAA;AAXC,SAASC,QAAO,IAKP;AALO,eACrB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,EAtBF,IAmBuB,IAIlB,kBAJkB,IAIlB;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAtBF,MAAAC;AAyBE,QAAM,WAAO,wCAAe;AAC5B,QAAM,UAAU,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM;AAElD,MAAI,CAAC;AACH,WACE,+CAAC,SAAI,WAAU,+BACb;AAAA,oDAAC,2BAAa,MAAO;AAAA,MACpB,SAAS,8CAACC,QAAA,EAAM,SAAS,MAAM,IAAK,iBAAM;AAAA,OAC7C;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,KAAK;AAAA,MACd,OAAMD,MAAA,MAAM,SAAN,OAAAA,MAAc;AAAA,MACpB,QAAQ,CAAC,EAAE,MAAM,MACf;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,GAAG,WAAW,uCAAuC;AAAA,UAEhE;AAAA,0DAAC,eACC,wDAACD,SAAA,EAAO,SAAS,MAAM,OAAO,iBAAiB,MAAM,UAAU,GACjE;AAAA,YACA,8CAAC,aAAW,iBAAM;AAAA;AAAA;AAAA,MACpB;AAAA;AAAA,EAEJ;AAEJ;","names":["AlertDialog","Button","Card","Checkbox","CollapsibleContent","CollapsibleTrigger","Dialog","Icon","Input","Select","Separator","Sheet","Sidebar","Switch","Tabs","React","React","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react_icons","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react_icons","import_jsx_runtime","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","import_react_icons","import_jsx_runtime","Icon","_a","_b","React","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","Card","import_react_hook_form","React","import_lucide_react","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","Label","import_react_hook_form","React","import_react_slot","import_jsx_runtime","Label","import_jsx_runtime","import_jsx_runtime","Checkbox","_a","Label","React","import_jsx_runtime","import_react","import_jsx_runtime","Icon","import_jsx_runtime","Label","import_react","import_react_hook_form","import_jsx_runtime","Input","import_react","import_jsx_runtime","React","import_react","import_react","import_jsx_runtime","_a","Input","import_react","import_class_variance_authority","import_jsx_runtime","Icon","React","toast","props","React","import_class_variance_authority","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","Button","import_react","import_jsx_runtime","_","Button","Icon","React","import_lucide_react","import_jsx_runtime","import_react","import_jsx_runtime","Dialog","Button","CollapsibleTrigger","CollapsibleContent","import_react","React","import_jsx_runtime","DrawerPrimitive","import_jsx_runtime","React","import_class_variance_authority","import_lucide_react","import_jsx_runtime","import_jsx_runtime","Sheet","React","import_react_slot","import_class_variance_authority","import_lucide_react","React","React","import_jsx_runtime","Separator","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","open","Separator","import_lucide_react","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","import_react_slot","import_lucide_react","import_jsx_runtime","import_react","import_jsx_runtime","SidebarContext","SidebarProvider","useSidebar","import_jsx_runtime","useSidebar","Separator","import_jsx_runtime","Separator","import_jsx_runtime","Sidebar","SidebarProvider","import_lucide_react","import_react","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","Tabs","import_jsx_runtime","Button","Icon","Separator","React","import_jsx_runtime","import_jsx_runtime","AlertDialog","import_react","import_react_hook_form","import_lodash","import_jsx_runtime","_","Button","Icon","import_jsx_runtime","Button","Icon","import_react","import_jsx_runtime","value","import_react_hook_form","import_jsx_runtime","Select","Label","import_jsx_runtime","Label","React","import_lucide_react","import_jsx_runtime","import_react_hook_form","import_jsx_runtime","Label","_a","_b","React","import_jsx_runtime","import_react_hook_form","import_jsx_runtime","Switch","_a","Label"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/ui/button.tsx","../src/lib/utils.ts","../src/components/data-display/Icon/index.tsx","../src/components/actions/Button/index.tsx","../src/components/ui/card.tsx","../src/components/data-display/Card/index.tsx","../src/components/data-display/DataTable/index.tsx","../src/components/ui/table.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/data-display/Typography/index.tsx","../src/components/forms/Input/index.tsx","../src/components/ui/input.tsx","../src/components/ui/field.tsx","../src/components/ui/label.tsx","../src/components/ui/separator.tsx","../src/components/forms/FormField/index.tsx","../src/components/forms/NumericInput/index.tsx","../src/components/forms/PatternInput/index.tsx","../src/components/forms/Select/index.tsx","../src/components/ui/popover.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../src/components/forms/TextArea/index.tsx","../src/components/ui/textarea.tsx","../src/components/forms/RadioGroup/index.tsx","../src/components/ui/radio-group.tsx","../src/components/forms/Switch/index.tsx","../src/components/ui/switch.tsx","../src/components/forms/DatePicker/index.tsx","../src/components/ui/calendar.tsx","../src/components/feedback/Dialog/index.tsx","../src/components/ui/sonner.tsx","../src/components/feedback/Sonner/index.tsx","../src/components/feedback/Alert/index.tsx","../src/components/ui/alert.tsx","../src/components/feedback/AlertDialog/index.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/tabs.tsx","../src/components/layout/Tabs/index.tsx"],"sourcesContent":["export * from \"./components\";\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","// src/components/data-display/Icon/index.tsx\nimport * as React from \"react\"\nimport type { IconType } from \"react-icons\"\nimport * as FiIcons from \"react-icons/fi\"\nimport * as FaIcons from \"react-icons/fa\"\nimport * as Fa6Icons from \"react-icons/fa6\"\nimport * as MdIcons from \"react-icons/md\"\nimport * as HiIcons from \"react-icons/hi\"\nimport * as Hi2Icons from \"react-icons/hi2\"\nimport * as BiIcons from \"react-icons/bi\"\nimport * as AiIcons from \"react-icons/ai\"\nimport * as BsIcons from \"react-icons/bs\"\nimport * as IoIcons from \"react-icons/io\"\nimport * as Io5Icons from \"react-icons/io5\"\nimport * as RiIcons from \"react-icons/ri\"\nimport * as TbIcons from \"react-icons/tb\"\nimport * as CgIcons from \"react-icons/cg\"\nimport * as VscIcons from \"react-icons/vsc\"\nimport * as SiIcons from \"react-icons/si\"\nimport * as GoIcons from \"react-icons/go\"\nimport * as DiIcons from \"react-icons/di\"\nimport * as GrIcons from \"react-icons/gr\"\nimport * as WiIcons from \"react-icons/wi\"\nimport * as ImIcons from \"react-icons/im\"\nimport * as RxIcons from \"react-icons/rx\"\nimport * as LuIcons from \"react-icons/lu\"\n\n// Mapeamento de prefixos para bibliotecas de ícones\nconst iconLibraries: Record<string, Record<string, IconType>> = {\n Fi: FiIcons as Record<string, IconType>,\n Fa: FaIcons as Record<string, IconType>,\n Fa6: Fa6Icons as Record<string, IconType>,\n Md: MdIcons as Record<string, IconType>,\n Hi: HiIcons as Record<string, IconType>,\n Hi2: Hi2Icons as Record<string, IconType>,\n Bi: BiIcons as Record<string, IconType>,\n Ai: AiIcons as Record<string, IconType>,\n Bs: BsIcons as Record<string, IconType>,\n Io: IoIcons as Record<string, IconType>,\n Io5: Io5Icons as Record<string, IconType>,\n Ri: RiIcons as Record<string, IconType>,\n Tb: TbIcons as Record<string, IconType>,\n Cg: CgIcons as Record<string, IconType>,\n Vsc: VscIcons as Record<string, IconType>,\n Si: SiIcons as Record<string, IconType>,\n Go: GoIcons as Record<string, IconType>,\n Di: DiIcons as Record<string, IconType>,\n Gr: GrIcons as Record<string, IconType>,\n Wi: WiIcons as Record<string, IconType>,\n Im: ImIcons as Record<string, IconType>,\n Rx: RxIcons as Record<string, IconType>,\n Lu: LuIcons as Record<string, IconType>,\n}\n\n/**\n * Obtém o componente de ícone baseado no nome\n */\nfunction getIconByName(iconName: string): IconType | null {\n // Tenta identificar o prefixo (2 ou 3 caracteres)\n const prefix2 = iconName.substring(0, 2)\n const prefix3 = iconName.substring(0, 3)\n\n // Tenta primeiro com prefixo de 3 caracteres (ex: Fa6, Hi2, Io5)\n if (iconLibraries[prefix3]) {\n const icon = iconLibraries[prefix3][iconName]\n if (icon) return icon\n }\n\n // Tenta com prefixo de 2 caracteres\n if (iconLibraries[prefix2]) {\n const icon = iconLibraries[prefix2][iconName]\n if (icon) return icon\n }\n\n return null\n}\n\nexport interface IconProps extends Omit<React.SVGProps<SVGSVGElement>, \"ref\"> {\n /**\n * Nome do ícone do `react-icons` como string.\n * Exemplos: \"MdHome\", \"FiUser\", \"FaHeart\", \"Hi2ArrowRight\", etc.\n * O componente identifica automaticamente a biblioteca baseado no prefixo.\n */\n iconName: string\n /**\n * Tamanho do ícone em pixels ou qualquer valor CSS válido.\n * Atalho para a prop `size` do `react-icons`.\n * @default 20\n */\n size?: number | string\n /**\n * Texto descritivo para acessibilidade.\n * Se informado, o ícone terá `role=\"img\"` e `aria-label`.\n * Se omitido, o ícone será decorativo (`aria-hidden=\"true\"`).\n */\n \"aria-label\"?: string\n}\n\n/**\n * Componente de ícone genérico do Design System.\n *\n * Ele padroniza o uso de `react-icons` na aplicação, garantindo\n * tamanho, acessibilidade e extensibilidade consistentes.\n *\n * A cor do ícone pode ser controlada via:\n * - Prop `color` (valor CSS direto, ex: `color=\"#000\"`, `color=\"red\"`)\n * - Classes Tailwind CSS no `className` (ex: `className=\"text-primary\"`, `className=\"text-red-500\"`)\n *\n * @example\n * ```tsx\n * <Icon iconName=\"MdHome\" size={24} color=\"#000\" aria-label=\"Página inicial\" />\n * <Icon iconName=\"FiUser\" size={20} className=\"text-red-500\" />\n * <Icon iconName=\"Fa6Heart\" size={16} aria-label=\"Favorito\" />\n * ```\n */\nexport const Icon = ({ iconName, size = 20, className, \"aria-label\": ariaLabel, ...rest }: IconProps) => {\n const IconComponent = React.useMemo(() => {\n const icon = getIconByName(iconName)\n if (!icon) {\n console.warn(`Ícone \"${iconName}\" não encontrado. Verifique se o nome está correto.`)\n return null\n }\n return icon\n }, [iconName])\n\n const accessibilityProps = ariaLabel\n ? {\n role: \"img\",\n \"aria-label\": ariaLabel,\n }\n : {\n \"aria-hidden\": true,\n }\n\n if (!IconComponent) {\n return null\n }\n\n return (\n <IconComponent\n size={size}\n className={className}\n {...accessibilityProps}\n {...rest}\n />\n )\n}\n\nIcon.displayName = \"Icon\"\n\nexport type { IconType }\n\n","// src/components/actions/Button/index.tsx\nimport * as React from \"react\"\nimport { Button as UIButton } from \"@/components/ui/button\"\nimport type { ButtonProps as UIButtonProps } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/data-display/Icon\"\n\nexport type ButtonProps = UIButtonProps\n\n/**\n * Botão padrão do Design System.\n * Reexporta o primitivo do shadcn com a mesma API.\n */\nexport const Button = UIButton\n\nexport interface ButtonIconProps extends Omit<ButtonProps, \"children\" | \"size\"> {\n /**\n * Nome do ícone do `react-icons` que será renderizado dentro do botão.\n * Exemplo: \"MdHome\", \"FiUser\", \"FaHeart\".\n */\n iconName: string\n /**\n * Cor do ícone. Valor CSS direto (ex: `\"#fff\"`, `\"red\"`).\n * Encaminhada para a prop `color` do componente `Icon`.\n */\n iconColor?: string\n /**\n * Classes CSS do Tailwind para estilizar o ícone.\n * Exemplo: `iconClassName=\"text-white\"`, `iconClassName=\"text-primary\"`.\n * Encaminhada para a prop `className` do componente `Icon`.\n */\n iconClassName?: string\n /**\n * Texto acessível para leitores de tela.\n * Use quando o botão não tiver label de texto visível.\n */\n \"aria-label\": string\n /**\n * Define se o botão deve ser apenas ícone (circular) ou ícone + texto.\n * - `true`: usa `size=\"icon\"` e não renderiza children\n * - `false`: renderiza ícone seguido do children\n * @default true\n */\n iconOnly?: boolean\n}\n\n/**\n * Variação de botão com ícone.\n *\n * - `iconOnly=true`: renderiza somente o ícone, usando o tamanho `icon` do botão.\n * - `iconOnly=false`: renderiza ícone + children, usando o tamanho padrão do botão.\n *\n * @example\n * <ButtonIcon iconName=\"MdHome\" iconColor=\"#fff\" aria-label=\"Ir para home\" />\n * <ButtonIcon iconName=\"FiUser\" iconOnly={false} iconClassName=\"text-primary\" aria-label=\"Perfil do usuário\">\n * Perfil\n * </ButtonIcon>\n */\nexport const ButtonIcon = ({\n iconName,\n iconColor,\n iconClassName,\n iconOnly = true,\n className,\n children,\n \"aria-label\": ariaLabel,\n size,\n ...rest\n}: ButtonIconProps & { children?: React.ReactNode; size?: ButtonProps[\"size\"] }) => {\n const content = (\n <>\n <Icon iconName={iconName} color={iconColor} className={iconClassName} aria-label={iconOnly ? ariaLabel : undefined} />\n {!iconOnly && children}\n </>\n )\n\n return (\n <UIButton\n {...rest}\n className={className}\n aria-label={ariaLabel}\n size={iconOnly ? \"icon\" : size}\n >\n {content}\n </UIButton>\n )\n}\n\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow\",\n className\n )}\n {...props}\n />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","// src/components/data-display/Card/index.tsx\nimport * as React from \"react\"\n\nimport {\n Card as UICard,\n CardHeader as UICardHeader,\n CardFooter as UICardFooter,\n CardTitle as UICardTitle,\n CardDescription as UICardDescription,\n CardContent as UICardContent,\n} from \"@/components/ui/card\"\n\n/**\n * Card raiz (primitivo) baseado no shadcn.\n *\n * Use quando precisar de controle total sobre a estrutura do card.\n */\nexport const CardRoot = UICard\nexport type CardRootProps = React.ComponentProps<typeof UICard>\n\n/**\n * Cabeçalho do Card (primitivo).\n *\n * Normalmente contém `CardTitle` e `CardDescription`.\n */\nexport const CardHeader = UICardHeader\nexport type CardHeaderProps = React.ComponentProps<typeof UICardHeader>\n\n/**\n * Título do Card (primitivo).\n */\nexport const CardTitle = UICardTitle\nexport type CardTitleProps = React.ComponentProps<typeof UICardTitle>\n\n/**\n * Descrição do Card (primitivo).\n */\nexport const CardDescription = UICardDescription\nexport type CardDescriptionProps = React.ComponentProps<typeof UICardDescription>\n\n/**\n * Conteúdo principal do Card (primitivo).\n */\nexport const CardContent = UICardContent\nexport type CardContentProps = React.ComponentProps<typeof UICardContent>\n\n/**\n * Rodapé do Card (primitivo).\n *\n * Ideal para ações (botões) ou informações complementares.\n */\nexport const CardFooter = UICardFooter\nexport type CardFooterProps = React.ComponentProps<typeof UICardFooter>\n\nexport interface CardProps extends Omit<CardRootProps, \"children\" | \"title\"> {\n /**\n * Imagem ou mídia a ser exibida no topo do card.\n * Pode ser uma URL de imagem, um elemento React, ou qualquer conteúdo.\n */\n image?: React.ReactNode\n /**\n * Título do card.\n * Quando informado, é renderizado dentro de `CardHeader` usando `CardTitle`.\n */\n title?: React.ReactNode\n /**\n * Badge ou tag a ser exibida ao lado do título (ex: \"Featured\", \"Novo\", etc.).\n * Renderizado no mesmo nível do título, alinhado à direita.\n */\n badge?: React.ReactNode\n /**\n * Descrição do card.\n * Quando informada, é renderizada dentro de `CardHeader` usando `CardDescription`.\n */\n description?: React.ReactNode\n /**\n * Conteúdo principal do card.\n * Renderizado dentro de `CardContent`.\n */\n children?: React.ReactNode\n /**\n * Conteúdo do rodapé do card.\n * Renderizado dentro de `CardFooter` (ex: botões de ação).\n */\n footer?: React.ReactNode\n}\n\n/**\n * Card padrão do Design System.\n *\n * Fornece uma estrutura de layout comum:\n * - Imagem/mídia opcional no topo (`image`)\n * - Header opcional com `title`, `badge` e `description`\n * - Content com `children`\n * - Footer opcional com `footer`\n *\n * Quando precisar de mais flexibilidade, use os primitivos:\n * `CardRoot`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `CardFooter`.\n */\nexport const Card = ({\n image,\n title,\n badge,\n description,\n children,\n footer,\n ...rest\n}: CardProps) => {\n const hasHeader = title || description || badge\n\n return (\n <CardRoot {...rest}>\n {image && (\n <div className=\"overflow-hidden rounded-t-xl\">\n {typeof image === \"string\" ? (\n <img src={image} alt=\"\" className=\"w-full h-auto object-cover\" />\n ) : (\n image\n )}\n </div>\n )}\n\n {hasHeader && (\n <CardHeader>\n {(title || badge) && (\n <div className=\"flex items-start justify-between gap-4\">\n {title && <CardTitle className=\"flex-1\">{title}</CardTitle>}\n {badge && (\n <div className=\"flex-shrink-0 mt-0.5\">{badge}</div>\n )}\n </div>\n )}\n {description && <CardDescription>{description}</CardDescription>}\n </CardHeader>\n )}\n\n {children && <CardContent>{children}</CardContent>}\n\n {footer && <CardFooter>{footer}</CardFooter>}\n </CardRoot>\n )\n}\n\n","// src/components/data-display/DataTable/index.tsx\n\"use client\"\n\nimport * as React from \"react\"\nimport {\n ColumnDef,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type Table as TanStackTable,\n type Column,\n type Row,\n} from \"@tanstack/react-table\"\nimport { ArrowUpDown, ChevronDown, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button as UIButton } from \"@/components/ui/button\"\nimport {\n Table as UITable,\n TableBody as UITableBody,\n TableCell as UITableCell,\n TableHead as UITableHead,\n TableHeader as UITableHeader,\n TableRow as UITableRow,\n} from \"@/components/ui/table\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\n/**\n * Table raiz (primitivo) baseado no shadcn.\n */\nexport const Table = UITable\nexport type TableProps = React.ComponentProps<typeof UITable>\n\n/**\n * TableHeader (primitivo).\n */\nexport const TableHeader = UITableHeader\nexport type TableHeaderProps = React.ComponentProps<typeof UITableHeader>\n\n/**\n * TableBody (primitivo).\n */\nexport const TableBody = UITableBody\nexport type TableBodyProps = React.ComponentProps<typeof UITableBody>\n\n/**\n * TableRow (primitivo).\n */\nexport const TableRow = UITableRow\nexport type TableRowProps = React.ComponentProps<typeof UITableRow>\n\n/**\n * TableHead (primitivo).\n */\nexport const TableHead = UITableHead\nexport type TableHeadProps = React.ComponentProps<typeof UITableHead>\n\n/**\n * TableCell (primitivo).\n */\nexport const TableCell = UITableCell\nexport type TableCellProps = React.ComponentProps<typeof UITableCell>\n\nexport interface DataTableColumnHeaderProps<TData, TValue>\n extends React.HTMLAttributes<HTMLDivElement> {\n column: Column<TData, TValue>\n title: string\n}\n\n/**\n * Componente de cabeçalho de coluna com ordenação.\n */\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>\n }\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <UIButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-3 h-8 data-[state=open]:bg-accent\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n >\n <span>{title}</span>\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </UIButton>\n </div>\n )\n}\n\nexport interface DataTableRowActionsProps<TData> {\n row: Row<TData>\n actions?: Array<{\n label: string\n onClick: (row: TData) => void\n icon?: React.ReactNode\n variant?: \"default\" | \"destructive\"\n }>\n}\n\n/**\n * Componente de ações da linha (menu dropdown).\n */\nexport function DataTableRowActions<TData>({\n row,\n actions = [],\n}: DataTableRowActionsProps<TData>) {\n if (actions.length === 0) {\n return null\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <UIButton variant=\"ghost\" className=\"h-8 w-8 p-0\">\n <span className=\"sr-only\">Abrir menu</span>\n <MoreHorizontal className=\"h-4 w-4\" />\n </UIButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuLabel>Ações</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {actions.map((action, index) => (\n <DropdownMenuItem\n key={index}\n onClick={() => action.onClick(row.original)}\n className={action.variant === \"destructive\" ? \"text-destructive\" : \"\"}\n >\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport interface DataTableToolbarProps<TData> {\n table: TanStackTable<TData>\n searchKey?: string\n searchPlaceholder?: string\n filterComponent?: React.ReactNode\n actions?: React.ReactNode\n}\n\n/**\n * Barra de ferramentas do DataTable (busca, filtros, visibilidade de colunas).\n */\nexport function DataTableToolbar<TData>({\n table,\n searchKey,\n searchPlaceholder = \"Buscar...\",\n filterComponent,\n actions,\n}: DataTableToolbarProps<TData>) {\n const isFiltered = table.getState().columnFilters.length > 0\n\n return (\n <div className=\"flex items-center justify-between\">\n <div className=\"flex flex-1 items-center space-x-2\">\n {searchKey && (\n <input\n placeholder={searchPlaceholder}\n value={(table.getColumn(searchKey)?.getFilterValue() as string) ?? \"\"}\n onChange={(event) =>\n table.getColumn(searchKey)?.setFilterValue(event.target.value)\n }\n className=\"h-8 w-[150px] lg:w-[250px] rounded-md border border-input bg-background px-3 py-1 text-sm\"\n />\n )}\n {filterComponent}\n {isFiltered && (\n <UIButton\n variant=\"ghost\"\n onClick={() => table.resetColumnFilters()}\n className=\"h-8 px-2 lg:px-3\"\n >\n Limpar\n <span className=\"sr-only\">Limpar filtros</span>\n </UIButton>\n )}\n </div>\n <div className=\"flex items-center space-x-2\">\n {actions}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <UIButton variant=\"outline\" className=\"ml-auto h-8\">\n Colunas <ChevronDown className=\"ml-2 h-4 w-4\" />\n </UIButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </div>\n )\n}\n\nexport interface DataTablePaginationProps<TData> {\n table: TanStackTable<TData>\n}\n\n/**\n * Componente de paginação do DataTable.\n */\nexport function DataTablePagination<TData>({ table }: DataTablePaginationProps<TData>) {\n return (\n <div className=\"flex items-center justify-between px-2\">\n <div className=\"flex-1 text-sm text-muted-foreground\">\n {table.getFilteredSelectedRowModel().rows.length} de{\" \"}\n {table.getFilteredRowModel().rows.length} linha(s) selecionada(s).\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Linhas por página</p>\n <select\n value={table.getState().pagination.pageSize}\n onChange={(e) => {\n table.setPageSize(Number(e.target.value))\n }}\n className=\"h-8 w-[70px] rounded-md border border-input bg-background px-2 text-sm\"\n >\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <option key={pageSize} value={pageSize}>\n {pageSize}\n </option>\n ))}\n </select>\n </div>\n <div className=\"flex w-[100px] items-center justify-center text-sm font-medium\">\n Página {table.getState().pagination.pageIndex + 1} de {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2\">\n <UIButton\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Ir para primeira página</span>\n {\"<<\"}\n </UIButton>\n <UIButton\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Ir para página anterior</span>\n {\"<\"}\n </UIButton>\n <UIButton\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Ir para próxima página</span>\n {\">\"}\n </UIButton>\n <UIButton\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Ir para última página</span>\n {\">>\"}\n </UIButton>\n </div>\n </div>\n </div>\n )\n}\n\nexport interface DataTableProps<TData, TValue> {\n /**\n * Definições das colunas da tabela.\n */\n columns: ColumnDef<TData, TValue>[]\n /**\n * Dados da tabela.\n */\n data: TData[]\n /**\n * Chave da coluna usada para busca (opcional).\n */\n searchKey?: string\n /**\n * Placeholder do campo de busca.\n */\n searchPlaceholder?: string\n /**\n * Componente de filtro customizado.\n */\n filterComponent?: React.ReactNode\n /**\n * Ações adicionais na toolbar.\n */\n toolbarActions?: React.ReactNode\n /**\n * Ações da linha (menu dropdown).\n */\n rowActions?: Array<{\n label: string\n onClick: (row: TData) => void\n icon?: React.ReactNode\n variant?: \"default\" | \"destructive\"\n }>\n /**\n * Classes CSS adicionais para a tabela.\n */\n className?: string\n /**\n * Classes CSS adicionais para o container.\n */\n containerClassName?: string\n /**\n * Mostrar toolbar (busca, filtros, etc.).\n * @default true\n */\n showToolbar?: boolean\n /**\n * Mostrar paginação.\n * @default true\n */\n showPagination?: boolean\n /**\n * Tamanho da página inicial.\n * @default 10\n */\n pageSize?: number\n}\n\n/**\n * DataTable padrão do Design System.\n *\n * Componente de tabela completo com ordenação, filtros, busca, paginação e ações.\n * Baseado em @tanstack/react-table.\n *\n * @example\n * ```tsx\n * import { DataTable, type ColumnDef } from \"@phsa.tec/design-system-react\"\n *\n * interface User {\n * id: string\n * name: string\n * email: string\n * }\n *\n * const columns: ColumnDef<User>[] = [\n * {\n * accessorKey: \"name\",\n * header: \"Nome\",\n * },\n * {\n * accessorKey: \"email\",\n * header: \"E-mail\",\n * },\n * ]\n *\n * function MyTable() {\n * const data: User[] = [\n * { id: \"1\", name: \"João\", email: \"joao@example.com\" },\n * { id: \"2\", name: \"Maria\", email: \"maria@example.com\" },\n * ]\n *\n * return <DataTable columns={columns} data={data} searchKey=\"name\" />\n * }\n * ```\n */\nexport function DataTable<TData, TValue>({\n columns,\n data,\n searchKey,\n searchPlaceholder,\n filterComponent,\n toolbarActions,\n rowActions,\n className,\n containerClassName,\n showToolbar = true,\n showPagination = true,\n pageSize = 10,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([])\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({})\n const [rowSelection, setRowSelection] = React.useState({})\n\n // Adicionar coluna de ações se rowActions for fornecido\n const columnsWithActions = React.useMemo(() => {\n if (!rowActions || rowActions.length === 0) {\n return columns\n }\n\n return [\n ...columns,\n {\n id: \"actions\",\n cell: ({ row }: { row: Row<TData> }) => (\n <DataTableRowActions row={row} actions={rowActions} />\n ),\n } as ColumnDef<TData, TValue>,\n ]\n }, [columns, rowActions])\n\n const table = useReactTable({\n data,\n columns: columnsWithActions,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n },\n initialState: {\n pagination: {\n pageSize,\n },\n },\n })\n\n return (\n <div className={cn(\"space-y-4\", containerClassName)}>\n {showToolbar && (\n <DataTableToolbar\n table={table}\n searchKey={searchKey}\n searchPlaceholder={searchPlaceholder}\n filterComponent={filterComponent}\n actions={toolbarActions}\n />\n )}\n <div className=\"rounded-md border\">\n <Table className={className}>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n )\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() && \"selected\"}>\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n Nenhum resultado encontrado.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n {showPagination && <DataTablePagination table={table} />}\n </div>\n )\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", inset && \"pl-8\", className)}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)} {...props} />\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","// src/components/data-display/Typography/index.tsx\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Componente H1 padronizado.\n */\nexport const H1 = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h1\n ref={ref}\n className={cn(\n \"scroll-m-20 text-4xl font-extrabold tracking-tight text-balance\",\n className\n )}\n {...props}\n />\n )\n)\nH1.displayName = \"H1\"\n\n/**\n * Componente H2 padronizado.\n */\nexport const H2 = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h2\n ref={ref}\n className={cn(\n \"scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0\",\n className\n )}\n {...props}\n />\n )\n)\nH2.displayName = \"H2\"\n\n/**\n * Componente H3 padronizado.\n */\nexport const H3 = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"scroll-m-20 text-2xl font-semibold tracking-tight\", className)}\n {...props}\n />\n )\n)\nH3.displayName = \"H3\"\n\n/**\n * Componente H4 padronizado.\n */\nexport const H4 = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h4\n ref={ref}\n className={cn(\"scroll-m-20 text-xl font-semibold tracking-tight\", className)}\n {...props}\n />\n )\n)\nH4.displayName = \"H4\"\n\n/**\n * Componente de parágrafo padronizado.\n */\nexport const P = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"leading-7 [&:not(:first-child)]:mt-6\", className)} {...props} />\n )\n)\nP.displayName = \"P\"\n\n/**\n * Componente de blockquote padronizado.\n */\nexport const Blockquote = React.forwardRef<\n HTMLQuoteElement,\n React.BlockquoteHTMLAttributes<HTMLQuoteElement>\n>(({ className, ...props }, ref) => (\n <blockquote\n ref={ref}\n className={cn(\"mt-6 border-l-2 pl-6 italic\", className)}\n {...props}\n />\n))\nBlockquote.displayName = \"Blockquote\"\n\n/**\n * Componente de lista não ordenada padronizada.\n */\nexport const Ul = React.forwardRef<HTMLUListElement, React.HTMLAttributes<HTMLUListElement>>(\n ({ className, ...props }, ref) => (\n <ul ref={ref} className={cn(\"my-6 ml-6 list-disc [&>li]:mt-2\", className)} {...props} />\n )\n)\nUl.displayName = \"Ul\"\n\n/**\n * Componente de lista ordenada padronizada.\n */\nexport const Ol = React.forwardRef<HTMLOListElement, React.HTMLAttributes<HTMLOListElement>>(\n ({ className, ...props }, ref) => (\n <ol ref={ref} className={cn(\"my-6 ml-6 list-decimal [&>li]:mt-2\", className)} {...props} />\n )\n)\nOl.displayName = \"Ol\"\n\n/**\n * Componente de item de lista padronizado.\n */\nexport const Li = React.forwardRef<HTMLLIElement, React.LiHTMLAttributes<HTMLLIElement>>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n )\n)\nLi.displayName = \"Li\"\n\n/**\n * Componente de código inline padronizado.\n */\nexport const Code = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n ({ className, ...props }, ref) => (\n <code\n ref={ref}\n className={cn(\n \"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold\",\n className\n )}\n {...props}\n />\n )\n)\nCode.displayName = \"Code\"\n\n/**\n * Componente de código em bloco padronizado.\n */\nexport const Pre = React.forwardRef<HTMLPreElement, React.HTMLAttributes<HTMLPreElement>>(\n ({ className, ...props }, ref) => (\n <pre\n ref={ref}\n className={cn(\n \"mb-4 mt-6 overflow-x-auto rounded-lg border bg-muted p-4\",\n className\n )}\n {...props}\n />\n )\n)\nPre.displayName = \"Pre\"\n\n/**\n * Componente de texto lead (destaque) padronizado.\n */\nexport const Lead = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-xl text-muted-foreground\", className)} {...props} />\n )\n)\nLead.displayName = \"Lead\"\n\n/**\n * Componente de texto large padronizado.\n */\nexport const Large = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"text-lg font-semibold\", className)} {...props} />\n )\n)\nLarge.displayName = \"Large\"\n\n/**\n * Componente de texto small padronizado.\n */\nexport const Small = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n ({ className, ...props }, ref) => (\n <small ref={ref} className={cn(\"text-sm font-medium leading-none\", className)} {...props} />\n )\n)\nSmall.displayName = \"Small\"\n\n/**\n * Componente de texto muted padronizado.\n */\nexport const Muted = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n )\n)\nMuted.displayName = \"Muted\"\n\n/**\n * Componente de tabela padronizada para uso em tipografia.\n * Renomeado para TypographyTable para evitar conflito com Table do DataTable.\n */\nexport const TypographyTable = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"my-6 w-full overflow-y-auto\">\n <table ref={ref} className={cn(\"w-full\", className)} {...props} />\n </div>\n )\n)\nTypographyTable.displayName = \"TypographyTable\"\n\n/**\n * Componente de cabeçalho de tabela padronizado para tipografia.\n */\nexport const TypographyThead = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"\", className)} {...props} />\n))\nTypographyThead.displayName = \"TypographyThead\"\n\n/**\n * Componente de corpo de tabela padronizado para tipografia.\n */\nexport const TypographyTbody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />\n))\nTypographyTbody.displayName = \"TypographyTbody\"\n\n/**\n * Componente de linha de tabela padronizada para tipografia.\n */\nexport const TypographyTr = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr ref={ref} className={cn(\"m-0 border-t p-0 even:bg-muted\", className)} {...props} />\n )\n)\nTypographyTr.displayName = \"TypographyTr\"\n\n/**\n * Componente de célula de cabeçalho de tabela padronizada para tipografia.\n */\nexport const TypographyTh = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\", className)}\n {...props}\n />\n))\nTypographyTh.displayName = \"TypographyTh\"\n\n/**\n * Componente de célula de tabela padronizada para tipografia.\n */\nexport const TypographyTd = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\", className)}\n {...props}\n />\n))\nTypographyTd.displayName = \"TypographyTd\"\n\n/**\n * Componente Typography - Container para agrupar elementos tipográficos.\n *\n * Útil para aplicar estilos consistentes a um bloco de texto.\n */\nexport interface TypographyProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Variante de espaçamento entre elementos.\n * @default \"normal\"\n */\n spacing?: \"tight\" | \"normal\" | \"relaxed\"\n /**\n * Alinhamento do texto.\n */\n align?: \"left\" | \"center\" | \"right\" | \"justify\"\n}\n\nexport const Typography = React.forwardRef<HTMLDivElement, TypographyProps>(\n ({ className, spacing = \"normal\", align, ...props }, ref) => {\n const spacingClasses = {\n tight: \"space-y-2\",\n normal: \"space-y-4\",\n relaxed: \"space-y-6\",\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n spacingClasses[spacing],\n align && `text-${align}`,\n className\n )}\n {...props}\n />\n )\n }\n)\nTypography.displayName = \"Typography\"\n","// src/components/forms/Input/index.tsx\nimport * as React from \"react\"\nimport { Input as UIInput } from \"@/components/ui/input\"\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n} from \"@/components/ui/field\"\n\nexport type InputProps = React.ComponentProps<\"input\">\n\n/**\n * Campo de entrada padrão do Design System.\n *\n * Pode ser usado de duas formas:\n * 1. Como input simples: <Input placeholder=\"...\" />\n * 2. Com Field integrado: <Input label=\"Nome\" description=\"...\" />\n *\n * Quando usado com props do Field (label, description, error), automaticamente\n * cria o Field ao redor do input.\n */\nexport interface InputWithFieldProps extends InputProps {\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n orientation?: \"vertical\" | \"horizontal\" | \"responsive\"\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputWithFieldProps>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n orientation = \"vertical\",\n fieldClassName,\n className,\n ...inputProps\n },\n ref\n ) => {\n const id = React.useId()\n const inputId = providedId || id\n const hasError = invalid || !!error\n const hasFieldProps = label !== undefined || description !== undefined || error !== undefined\n\n // Se tem props do Field, cria o Field automaticamente\n if (hasFieldProps) {\n return (\n <Field\n orientation={orientation}\n data-invalid={hasError}\n className={fieldClassName}\n >\n {label && (\n <FieldLabel htmlFor={inputId}>\n {label}\n </FieldLabel>\n )}\n <FieldContent>\n <UIInput\n id={inputId}\n ref={ref}\n className={className}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${inputId}-description ${hasError ? `${inputId}-error` : \"\"}`.trim()\n : undefined\n }\n {...inputProps}\n />\n {description && (\n <FieldDescription id={`${inputId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError id={`${inputId}-error`} errors={Array.isArray(error) ? error : undefined}>\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n )\n }\n\n // Input simples sem Field\n return <UIInput ref={ref} className={className} {...inputProps} />\n }\n)\n\nInput.displayName = \"Input\"\n\n// Mantém InputField como alias para compatibilidade\nexport type InputFieldProps = InputWithFieldProps\nexport const InputField = Input\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n","\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/ui/label\"\nimport { Separator } from \"@/components/ui/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6\",\n \"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field data-[invalid=true]:text-destructive flex w-full gap-3\",\n {\n variants: {\n orientation: {\n vertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n horizontal: [\n \"flex-row items-center\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start\",\n ],\n responsive: [\n \"@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4\",\n \"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm font-medium leading-snug group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors) {\n return null\n }\n\n if (errors?.length === 1 && errors[0]?.message) {\n return errors[0].message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {errors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","// src/components/forms/FormField/index.tsx\n\"use client\"\n\nimport * as React from \"react\"\nimport { Controller, useFormContext } from \"react-hook-form\"\n\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n} from \"@/components/ui/field\"\nimport { Input } from \"@/components/forms/Input\"\n\nexport interface FormFieldProps {\n /**\n * Nome do campo no formulário (`react-hook-form`).\n */\n name: string\n /**\n * Rótulo visível do campo.\n */\n label?: React.ReactNode\n /**\n * Texto de ajuda exibido abaixo do campo.\n */\n description?: React.ReactNode\n /**\n * Props adicionais encaminhadas para o componente `Input`.\n */\n inputProps?: React.ComponentProps<typeof Input>\n}\n\n/**\n * Campo de formulário integrado ao `react-hook-form`.\n *\n * Combina os primitivos `Field` e `Input` do design system,\n * exibindo automaticamente label, descrição e mensagens de erro.\n */\nexport const FormField = ({\n name,\n label,\n description,\n inputProps,\n}: FormFieldProps) => {\n const { control } = useFormContext()\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState }) => (\n <Field data-invalid={!!fieldState.error}>\n {label && <FieldLabel htmlFor={field.name}>{label}</FieldLabel>}\n <FieldContent>\n <Input id={field.name} {...field} {...inputProps} />\n {description && (\n <FieldDescription>{description}</FieldDescription>\n )}\n <FieldError\n errors={\n fieldState.error ? [{ message: fieldState.error.message }] : []\n }\n />\n </FieldContent>\n </Field>\n )}\n />\n )\n}\n\n","// src/components/forms/NumericInput/index.tsx\nimport * as React from \"react\"\nimport {\n NumericFormat,\n type NumericFormatProps,\n} from \"react-number-format\"\n\nimport { Input as UIInput } from \"@/components/ui/input\"\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n} from \"@/components/ui/field\"\n\n// Wrapper do Input que aceita as props do NumericFormat\nconst NumericInputBase = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\">\n>((props, ref) => {\n return <UIInput ref={ref} {...props} />\n})\n\nNumericInputBase.displayName = \"NumericInputBase\"\n\nexport type NumericInputBaseProps = Omit<\n NumericFormatProps,\n \"customInput\" | \"getInputRef\"\n>\n\nexport interface NumericInputProps extends NumericInputBaseProps {\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n orientation?: \"vertical\" | \"horizontal\" | \"responsive\"\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string\n}\n\n/**\n * Input numérico com máscara/formatação usando `react-number-format`,\n * integrado com o sistema de Field (label, descrição, erro).\n *\n * Exemplos de uso:\n *\n * - Moeda:\n * <NumericInput\n * label=\"Valor\"\n * prefix=\"R$ \"\n * thousandSeparator=\".\"\n * decimalSeparator=\",\"\n * decimalScale={2}\n * />\n *\n * - Percentual:\n * <NumericInput\n * label=\"Taxa\"\n * suffix=\"%\"\n * decimalScale={2}\n * />\n */\nexport const NumericInput = React.forwardRef<\n HTMLInputElement,\n NumericInputProps\n>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n orientation = \"vertical\",\n fieldClassName,\n className,\n ...numericProps\n },\n ref\n ) => {\n const id = React.useId()\n const inputId = providedId || id\n const hasError = invalid || !!error\n\n const hasFieldProps =\n label !== undefined || description !== undefined || error !== undefined\n\n const inputElement = (\n <NumericFormat\n {...numericProps}\n customInput={NumericInputBase}\n getInputRef={ref}\n className={className}\n id={inputId}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${inputId}-description ${hasError ? `${inputId}-error` : \"\"}`.trim()\n : undefined\n }\n />\n )\n\n if (!hasFieldProps) {\n return inputElement\n }\n\n return (\n <Field\n orientation={orientation}\n data-invalid={hasError}\n className={fieldClassName}\n >\n {label && (\n <FieldLabel htmlFor={inputId}>\n {label}\n </FieldLabel>\n )}\n <FieldContent>\n {inputElement}\n {description && (\n <FieldDescription id={`${inputId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError\n id={`${inputId}-error`}\n errors={Array.isArray(error) ? error : undefined}\n >\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n )\n }\n)\n\nNumericInput.displayName = \"NumericInput\"\n","// src/components/forms/PatternInput/index.tsx\nimport * as React from \"react\"\nimport {\n PatternFormat,\n type PatternFormatProps,\n} from \"react-number-format\"\n\nimport { Input as UIInput } from \"@/components/ui/input\"\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n} from \"@/components/ui/field\"\n\n// Wrapper do Input que aceita as props do PatternFormat\nconst PatternInputBase = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\">\n>((props, ref) => {\n return <UIInput ref={ref} {...props} />\n})\n\nPatternInputBase.displayName = \"PatternInputBase\"\n\nexport type PatternInputBaseProps = Omit<\n PatternFormatProps,\n \"customInput\" | \"getInputRef\"\n>\n\nexport interface PatternInputProps extends PatternInputBaseProps {\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n orientation?: \"vertical\" | \"horizontal\" | \"responsive\"\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string\n}\n\n/**\n * Input com formatação de padrão usando `react-number-format`,\n * integrado com o sistema de Field (label, descrição, erro).\n *\n * Exemplos de uso:\n *\n * - Telefone:\n * <PatternInput\n * label=\"Telefone\"\n * format=\"(##) #####-####\"\n * allowEmptyFormatting\n * mask=\"_\"\n * />\n *\n * - CPF:\n * <PatternInput\n * label=\"CPF\"\n * format=\"###.###.###-##\"\n * allowEmptyFormatting\n * mask=\"_\"\n * />\n *\n * - CEP:\n * <PatternInput\n * label=\"CEP\"\n * format=\"#####-###\"\n * allowEmptyFormatting\n * mask=\"_\"\n * />\n */\nexport const PatternInput = React.forwardRef<\n HTMLInputElement,\n PatternInputProps\n>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n orientation = \"vertical\",\n fieldClassName,\n className,\n ...patternProps\n },\n ref\n ) => {\n const id = React.useId()\n const inputId = providedId || id\n const hasError = invalid || !!error\n\n const hasFieldProps =\n label !== undefined || description !== undefined || error !== undefined\n\n const inputElement = (\n <PatternFormat\n {...patternProps}\n customInput={PatternInputBase}\n getInputRef={ref}\n className={className}\n id={inputId}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${inputId}-description ${hasError ? `${inputId}-error` : \"\"}`.trim()\n : undefined\n }\n />\n )\n\n if (!hasFieldProps) {\n return inputElement\n }\n\n return (\n <Field\n orientation={orientation}\n data-invalid={hasError}\n className={fieldClassName}\n >\n {label && (\n <FieldLabel htmlFor={inputId}>\n {label}\n </FieldLabel>\n )}\n <FieldContent>\n {inputElement}\n {description && (\n <FieldDescription id={`${inputId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError\n id={`${inputId}-error`}\n errors={Array.isArray(error) ? error : undefined}\n >\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n )\n }\n)\n\nPatternInput.displayName = \"PatternInput\"\n","// src/components/forms/Select/index.tsx\n\"use client\"\n\nimport * as React from \"react\"\nimport { Check, ChevronDown, X } from \"lucide-react\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n} from \"@/components/ui/field\"\nimport { cn } from \"@/lib/utils\"\nimport { Command, CommandGroup, CommandInput, CommandItem, CommandList, CommandEmpty, } from \"@/components/ui/command\"\n\nexport interface SelectOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface SelectGroupOption {\n label: string\n options: SelectOption[]\n}\n\nexport type SelectBaseProps = {\n /**\n * Opções do select. Pode ser um array simples ou com grupos.\n */\n options: SelectOption[] | SelectGroupOption[]\n /**\n * Placeholder quando nenhum valor está selecionado.\n */\n placeholder?: string\n /**\n * Valor selecionado (controlado).\n */\n value?: string\n /**\n * Callback quando o valor muda.\n */\n onValueChange?: (value: string) => void\n /**\n * Valor padrão (não controlado).\n */\n defaultValue?: string\n /**\n * Se o select está desabilitado.\n */\n disabled?: boolean\n /**\n * Habilita busca no select.\n */\n searchable?: boolean\n /**\n * Placeholder do campo de busca.\n */\n searchPlaceholder?: string\n}\n\nexport interface SelectWithFieldProps extends SelectBaseProps {\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n orientation?: \"vertical\" | \"horizontal\" | \"responsive\"\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string\n /**\n * ID do campo. Se não fornecido, será gerado automaticamente.\n */\n id?: string\n}\n\n/**\n * Select padrão do Design System com suporte a busca opcional.\n *\n * Pode ser usado de duas formas:\n * 1. Como select simples: <Select options={[...]} />\n * 2. Com Field integrado: <Select label=\"Estado\" options={[...]} />\n * 3. Com busca: <Select options={[...]} searchable />\n *\n * Quando usado com props do Field (label, description, error), automaticamente\n * cria o Field ao redor do select.\n */\nexport const Select = React.forwardRef<\n HTMLButtonElement,\n SelectWithFieldProps\n>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n orientation = \"vertical\",\n fieldClassName,\n options,\n placeholder = \"Selecione...\",\n value,\n onValueChange,\n disabled,\n searchable = false,\n searchPlaceholder = \"Buscar...\",\n },\n ref\n ) => {\n const id = React.useId()\n const selectId = providedId || id\n const hasError = invalid || !!error\n const hasFieldProps =\n label !== undefined ||\n description !== undefined ||\n error !== undefined\n\n const [open, setOpen] = React.useState(false)\n const [searchValue, setSearchValue] = React.useState(\"\")\n\n // Encontra o label do valor selecionado\n const selectedOption = React.useMemo(() => {\n if (!value) return null\n\n const findOption = (\n opts: SelectOption[] | SelectGroupOption[]\n ): SelectOption | null => {\n for (const opt of opts) {\n if (\"options\" in opt) {\n const found = opt.options.find((o) => o.value === value)\n if (found) return found\n } else {\n if (opt.value === value) return opt\n }\n }\n return null\n }\n\n return findOption(options)\n }, [value, options])\n\n // Filtra opções baseado na busca\n const filteredOptions = React.useMemo(() => {\n if (!searchable || !searchValue) return options\n\n const searchLower = searchValue.toLowerCase()\n\n const filterOptions = (opts: SelectOption[]): SelectOption[] => {\n return opts.filter(\n (opt) => opt.label.toLowerCase().includes(searchLower)\n )\n }\n\n // Verifica se é array de grupos\n const isGrouped = options.length > 0 && \"label\" in options[0] && \"options\" in options[0]\n\n if (isGrouped) {\n return (options as SelectGroupOption[])\n .map((group) => ({\n ...group,\n options: filterOptions(group.options),\n }))\n .filter((group) => group.options.length > 0)\n }\n\n return filterOptions(options as SelectOption[])\n }, [options, searchValue, searchable])\n\n const renderOptions = () => {\n if (filteredOptions.length === 0) return null\n\n // Verifica se é array de grupos\n const isGrouped =\n filteredOptions.length > 0 &&\n \"label\" in filteredOptions[0] &&\n \"options\" in filteredOptions[0]\n\n if (isGrouped) {\n return (filteredOptions as SelectGroupOption[]).map(\n (group, groupIndex) => (\n <CommandGroup key={group.label || groupIndex} heading={group.label}>\n {group.options.map((option) => (\n <CommandItem\n key={option.value}\n value={`${option.value} ${option.label}`}\n disabled={option.disabled}\n onSelect={() => {\n onValueChange?.(option.value)\n setOpen(false)\n setSearchValue(\"\")\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n value === option.value ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )\n )\n }\n\n return (filteredOptions as SelectOption[]).map((option) => (\n <CommandItem\n key={option.value}\n value={`${option.value} ${option.label}`}\n disabled={option.disabled}\n onSelect={() => {\n onValueChange?.(option.value)\n setOpen(false)\n setSearchValue(\"\")\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n value === option.value ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {option.label}\n </CommandItem>\n ))\n }\n\n const selectComponent = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n id={selectId}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={`${selectId}-listbox`}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${selectId}-description ${hasError ? `${selectId}-error` : \"\"}`.trim()\n : undefined\n }\n disabled={disabled}\n className={cn(\n \"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n !selectedOption && \"text-muted-foreground\"\n )}\n >\n {selectedOption ? selectedOption.label : placeholder}\n <ChevronDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n id={`${selectId}-listbox`}\n className=\"w-[var(--radix-popover-trigger-width)] p-0\"\n align=\"start\"\n sideOffset={4}\n >\n <Command shouldFilter={false}>\n {searchable && (\n <CommandInput\n placeholder={searchPlaceholder}\n value={searchValue}\n onValueChange={setSearchValue}\n />\n )}\n <CommandList className=\"max-h-[300px] overflow-y-auto p-1\">\n <CommandEmpty className=\"px-2 py-6 text-center text-sm text-muted-foreground\">\n Nenhum resultado encontrado.\n </CommandEmpty>\n {renderOptions()}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n\n // Se tem props do Field, cria o Field automaticamente\n if (hasFieldProps) {\n return (\n <Field\n orientation={orientation}\n data-invalid={hasError}\n className={fieldClassName}\n >\n {label && <FieldLabel htmlFor={selectId}>{label}</FieldLabel>}\n <FieldContent>\n {selectComponent}\n {description && (\n <FieldDescription id={`${selectId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError\n id={`${selectId}-error`}\n errors={Array.isArray(error) ? error : undefined}\n >\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n )\n }\n\n // Select simples sem Field\n return selectComponent\n }\n)\n\nSelect.displayName = \"Select\"\n\n// ============================================================================\n// MultiSelect - Select com múltiplas seleções e busca\n// ============================================================================\n\nexport interface MultiSelectWithFieldProps {\n /**\n * Opções do select.\n */\n options: SelectOption[]\n /**\n * Valores selecionados (controlado).\n */\n value?: string[]\n /**\n * Callback quando os valores mudam.\n */\n onValueChange?: (values: string[]) => void\n /**\n * Valores padrão (não controlado).\n */\n defaultValue?: string[]\n /**\n * Placeholder quando nenhum valor está selecionado.\n */\n placeholder?: string\n /**\n * Se o select está desabilitado.\n */\n disabled?: boolean\n /**\n * Placeholder do campo de busca.\n */\n searchPlaceholder?: string\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n orientation?: \"vertical\" | \"horizontal\" | \"responsive\"\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string\n /**\n * ID do campo. Se não fornecido, será gerado automaticamente.\n */\n id?: string\n /**\n * Máximo de itens que podem ser selecionados.\n */\n maxSelected?: number\n /**\n * Número máximo de opções visíveis no input. Quando há mais opções selecionadas,\n * apenas as primeiras N são mostradas com um indicador do restante.\n * Padrão: 5\n */\n maxVisible?: number\n}\n\n/**\n * Select com múltiplas seleções e busca integrada usando Command.\n *\n * Permite selecionar múltiplos valores com busca/filtro.\n */\nexport const MultiSelect = React.forwardRef<\n HTMLButtonElement,\n MultiSelectWithFieldProps\n>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n orientation = \"vertical\",\n fieldClassName,\n options,\n placeholder = \"Selecione...\",\n value,\n onValueChange,\n defaultValue,\n disabled,\n searchPlaceholder = \"Buscar...\",\n maxSelected,\n maxVisible = 5,\n },\n ref\n ) => {\n const id = React.useId()\n const selectId = providedId || id\n const hasError = invalid || !!error\n const hasFieldProps =\n label !== undefined ||\n description !== undefined ||\n error !== undefined\n\n const [open, setOpen] = React.useState(false)\n const [searchValue, setSearchValue] = React.useState(\"\")\n const isControlled = value !== undefined\n const [internalValues, setInternalValues] = React.useState<string[]>(\n () => defaultValue || []\n )\n const selectedValues = isControlled ? value : internalValues\n\n const handleSelect = (optionValue: string) => {\n const newValues = selectedValues.includes(optionValue)\n ? selectedValues.filter((v) => v !== optionValue)\n : maxSelected && selectedValues.length >= maxSelected\n ? selectedValues\n : [...selectedValues, optionValue]\n\n if (!isControlled) {\n setInternalValues(newValues)\n }\n onValueChange?.(newValues)\n }\n\n const handleRemove = (e: React.MouseEvent, optionValue: string) => {\n e.stopPropagation()\n const newValues = selectedValues.filter((v) => v !== optionValue)\n if (!isControlled) {\n setInternalValues(newValues)\n }\n onValueChange?.(newValues)\n }\n\n const selectedOptions = React.useMemo(() => {\n return options.filter((opt) => selectedValues.includes(opt.value))\n }, [options, selectedValues])\n\n // Filtra opções baseado na busca\n const filteredOptions = React.useMemo(() => {\n if (!searchValue) return options\n\n const searchLower = searchValue.toLowerCase()\n return options.filter((opt) =>\n opt.label.toLowerCase().includes(searchLower)\n )\n }, [options, searchValue])\n\n const renderOptions = () => {\n return filteredOptions.map((option) => {\n const isSelected = selectedValues.includes(option.value)\n const isDisabled =\n option.disabled ||\n (maxSelected !== undefined &&\n !isSelected &&\n selectedValues.length >= maxSelected)\n\n return (\n <CommandItem\n key={option.value}\n value={`${option.value} ${option.label}`}\n disabled={isDisabled}\n onSelect={() => handleSelect(option.value)}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n isSelected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {option.label}\n </CommandItem>\n )\n })\n }\n\n const selectComponent = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n id={selectId}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={`${selectId}-listbox`}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${selectId}-description ${hasError ? `${selectId}-error` : \"\"}`.trim()\n : undefined\n }\n disabled={disabled}\n className={cn(\n \"flex min-h-9 w-full items-center gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n selectedValues.length === 0 && \"text-muted-foreground\"\n )}\n >\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center gap-1\">\n {selectedValues.length === 0 ? (\n <span className=\"truncate\">{placeholder}</span>\n ) : (\n <>\n {selectedOptions.slice(0, maxVisible).map((option) => (\n <span\n key={option.value}\n className=\"inline-flex shrink-0 items-center gap-1 rounded bg-secondary px-2 py-0.5 text-xs\"\n >\n {option.label}\n <button\n type=\"button\"\n onClick={(e) => handleRemove(e, option.value)}\n className=\"ml-0.5 rounded-full hover:bg-secondary-foreground/20 focus:outline-none focus:ring-1 focus:ring-ring\"\n aria-label={`Remover ${option.label}`}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n handleRemove(e as unknown as React.MouseEvent, option.value)\n }\n }}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </span>\n ))}\n {selectedOptions.length > maxVisible && (\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n +{selectedOptions.length - maxVisible} mais\n </span>\n )}\n {maxSelected && selectedValues.length >= maxSelected && (\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n (máx. {maxSelected})\n </span>\n )}\n </>\n )}\n </div>\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n id={`${selectId}-listbox`}\n className=\"w-[var(--radix-popover-trigger-width)] p-0\"\n align=\"start\"\n sideOffset={4}\n >\n <Command shouldFilter={false}>\n <CommandInput\n placeholder={searchPlaceholder}\n value={searchValue}\n onValueChange={setSearchValue}\n />\n <CommandList className=\"max-h-[300px] overflow-y-auto p-1\">\n <CommandEmpty className=\"px-2 py-6 text-center text-sm text-muted-foreground\">\n Nenhum resultado encontrado.\n </CommandEmpty>\n {renderOptions()}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n\n // Se tem props do Field, cria o Field automaticamente\n if (hasFieldProps) {\n return (\n <Field\n orientation={orientation}\n data-invalid={hasError}\n className={fieldClassName}\n >\n {label && <FieldLabel htmlFor={selectId}>{label}</FieldLabel>}\n <FieldContent>\n {selectComponent}\n {description && (\n <FieldDescription id={`${selectId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError\n id={`${selectId}-error`}\n errors={Array.isArray(error) ? error : undefined}\n >\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n )\n }\n\n // MultiSelect simples sem Field\n return selectComponent\n }\n)\n\nMultiSelect.displayName = \"MultiSelect\"\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { Search } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Dialog, DialogContent } from \"@/components/ui/dialog\"\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { XIcon } from \"lucide-react\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 isolate z-50\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-4 rounded-xl p-4 text-sm ring-1 duration-100 sm:max-w-sm fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n <Button variant=\"ghost\" className=\"absolute top-2 right-2\" size=\"icon\">\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </Button>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"gap-2 flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-base leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","// src/components/forms/TextArea/index.tsx\nimport * as React from \"react\"\nimport { Textarea as UITextarea } from \"@/components/ui/textarea\"\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n} from \"@/components/ui/field\"\n\nexport type TextAreaProps = React.ComponentProps<\"textarea\">\n\n/**\n * Campo de texto multilinha padrão do Design System.\n *\n * Pode ser usado de duas formas:\n * 1. Como textarea simples: <TextArea placeholder=\"...\" />\n * 2. Com Field integrado: <TextArea label=\"Descrição\" description=\"...\" />\n *\n * Quando usado com props do Field (label, description, error), automaticamente\n * cria o Field ao redor do textarea.\n */\nexport interface TextAreaWithFieldProps extends TextAreaProps {\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n orientation?: \"vertical\" | \"horizontal\" | \"responsive\"\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string\n}\n\nexport const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaWithFieldProps>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n orientation = \"vertical\",\n fieldClassName,\n className,\n ...textareaProps\n },\n ref\n ) => {\n const id = React.useId()\n const textareaId = providedId || id\n const hasError = invalid || !!error\n const hasFieldProps = label !== undefined || description !== undefined || error !== undefined\n\n // Se tem props do Field, cria o Field automaticamente\n if (hasFieldProps) {\n return (\n <Field\n orientation={orientation}\n data-invalid={hasError}\n className={fieldClassName}\n >\n {label && (\n <FieldLabel htmlFor={textareaId}>\n {label}\n </FieldLabel>\n )}\n <FieldContent>\n <UITextarea\n id={textareaId}\n ref={ref}\n className={className}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${textareaId}-description ${hasError ? `${textareaId}-error` : \"\"}`.trim()\n : undefined\n }\n {...textareaProps}\n />\n {description && (\n <FieldDescription id={`${textareaId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError id={`${textareaId}-error`} errors={Array.isArray(error) ? error : undefined}>\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n )\n }\n\n // TextArea simples sem Field\n return <UITextarea ref={ref} className={className} {...textareaProps} />\n }\n)\n\nTextArea.displayName = \"TextArea\"\n\n// Mantém TextAreaField como alias para compatibilidade\nexport type TextAreaFieldProps = TextAreaWithFieldProps\nexport const TextAreaField = TextArea\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Textarea = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<\"textarea\">\n>(({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n})\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n","// src/components/forms/RadioGroup/index.tsx\n\"use client\"\n\nimport * as React from \"react\"\nimport {\n RadioGroup as UIRadioGroup,\n RadioGroupItem,\n} from \"@/components/ui/radio-group\"\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n} from \"@/components/ui/field\"\nimport { Label } from \"@/components/ui/label\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface RadioGroupOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport type RadioGroupBaseProps = {\n /**\n * Opções do radio group.\n */\n options: RadioGroupOption[]\n /**\n * Valor selecionado (controlado).\n */\n value?: string\n /**\n * Callback quando o valor muda.\n */\n onValueChange?: (value: string) => void\n /**\n * Valor padrão (não controlado).\n */\n defaultValue?: string\n /**\n * Se o radio group está desabilitado.\n */\n disabled?: boolean\n /**\n * Orientação dos itens (vertical ou horizontal).\n */\n orientation?: \"vertical\" | \"horizontal\"\n /**\n * Classes CSS adicionais para o container do RadioGroup.\n */\n className?: string\n}\n\nexport interface RadioGroupWithFieldProps extends RadioGroupBaseProps {\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n fieldOrientation?: \"vertical\" | \"horizontal\" | \"responsive\"\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string\n /**\n * ID do campo. Se não fornecido, será gerado automaticamente.\n */\n id?: string\n}\n\n/**\n * RadioGroup padrão do Design System.\n *\n * Pode ser usado de duas formas:\n * 1. Como radio group simples: <RadioGroup options={[...]} />\n * 2. Com Field integrado: <RadioGroup label=\"Opção\" options={[...]} />\n *\n * Quando usado com props do Field (label, description, error), automaticamente\n * cria o Field ao redor do radio group.\n */\nexport const RadioGroup = React.forwardRef<\n React.ElementRef<typeof UIRadioGroup>,\n RadioGroupWithFieldProps\n>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n fieldOrientation = \"vertical\",\n fieldClassName,\n options,\n value,\n onValueChange,\n defaultValue,\n disabled,\n orientation = \"vertical\",\n className,\n },\n ref\n ) => {\n const id = React.useId()\n const radioGroupId = providedId || id\n const hasError = invalid || !!error\n const hasFieldProps =\n label !== undefined ||\n description !== undefined ||\n error !== undefined\n\n const radioGroupComponent = (\n <UIRadioGroup\n ref={ref}\n id={radioGroupId}\n value={value}\n onValueChange={onValueChange}\n defaultValue={defaultValue}\n disabled={disabled}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${radioGroupId}-description ${hasError ? `${radioGroupId}-error` : \"\"}`.trim()\n : undefined\n }\n className={cn(\n orientation === \"horizontal\" && \"flex flex-row gap-4\",\n orientation === \"vertical\" && \"grid gap-2\",\n className\n )}\n >\n {options.map((option) => {\n const optionId = `${radioGroupId}-${option.value}`\n return (\n <div\n key={option.value}\n className={cn(\n \"flex items-center space-x-2\",\n disabled || option.disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\"\n )}\n >\n <RadioGroupItem\n value={option.value}\n id={optionId}\n disabled={disabled || option.disabled}\n />\n <Label\n htmlFor={optionId}\n className={cn(\n \"font-normal\",\n (disabled || option.disabled) ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n >\n {option.label}\n </Label>\n </div>\n )\n })}\n </UIRadioGroup>\n )\n\n // Se tem props do Field, cria o Field automaticamente\n if (hasFieldProps) {\n return (\n <Field\n orientation={fieldOrientation}\n data-invalid={hasError}\n className={fieldClassName}\n >\n {label && <FieldLabel htmlFor={radioGroupId}>{label}</FieldLabel>}\n <FieldContent>\n {radioGroupComponent}\n {description && (\n <FieldDescription id={`${radioGroupId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError\n id={`${radioGroupId}-error`}\n errors={Array.isArray(error) ? error : undefined}\n >\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n )\n }\n\n // RadioGroup simples sem Field\n return radioGroupComponent\n }\n)\n\nRadioGroup.displayName = \"RadioGroup\"\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-3.5 w-3.5 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","// src/components/forms/Switch/index.tsx\n\"use client\";\n\nimport * as React from \"react\";\nimport { Switch as UISwitch } from \"@/components/ui/switch\";\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n} from \"@/components/ui/field\";\n\nexport type SwitchProps = React.ComponentProps<typeof UISwitch>;\n\n/**\n * Switch padrão do Design System.\n *\n * Pode ser usado de duas formas:\n * 1. Como switch simples: <Switch />\n * 2. Com Field integrado: <Switch label=\"Ativar notificações\" description=\"...\" />\n *\n * Quando usado com props do Field (label, description, error), automaticamente\n * cria o Field ao redor do switch.\n */\nexport interface SwitchWithFieldProps extends SwitchProps {\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode;\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode;\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>;\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean;\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string;\n /**\n * ID do campo. Se não fornecido, será gerado automaticamente.\n */\n id?: string;\n /**\n * Posição do label em relação ao switch (left ou right).\n * Padrão: \"right\"\n */\n labelPosition?: \"left\" | \"right\";\n}\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof UISwitch>,\n SwitchWithFieldProps\n>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n fieldClassName,\n labelPosition = \"right\",\n className,\n disabled,\n ...switchProps\n },\n ref\n ) => {\n const id = React.useId();\n const switchId = providedId || id;\n const hasError = invalid || !!error;\n\n const renderFieldContent = React.useCallback(() => {\n return <FieldContent>\n {label && (\n <FieldLabel htmlFor={switchId}>\n {label}\n </FieldLabel>\n )}\n {description && (\n <FieldDescription id={`${switchId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError\n id={`${switchId}-error`}\n errors={Array.isArray(error) ? error : undefined}\n >\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n }, [label, description, error, switchId])\n\n const renderSwitch = React.useCallback(() => {\n return (\n <>\n {labelPosition === 'left' && renderFieldContent()}\n <UISwitch\n id={switchId}\n ref={ref}\n className={className}\n disabled={disabled}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${switchId}-description ${hasError ? `${switchId}-error` : \"\"}`.trim()\n : undefined\n }\n {...switchProps}\n />\n {labelPosition === 'right' && renderFieldContent()}\n </>\n )\n }, [labelPosition, renderFieldContent, switchId, ref, className, disabled, hasError, description, error, switchProps])\n\n\n return (\n <Field\n orientation='horizontal'\n data-invalid={hasError}\n className={fieldClassName}\n >\n {renderSwitch()}\n </Field>\n );\n }\n);\n\nSwitch.displayName = \"Switch\";\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","// src/components/forms/DatePicker/index.tsx\n\"use client\"\n\nimport * as React from \"react\"\nimport { format } from \"date-fns\"\nimport { Calendar as CalendarIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button as UIButton } from \"@/components/ui/button\"\nimport { Calendar as UICalendar } from \"@/components/ui/calendar\"\nimport {\n Popover as UIPopover,\n PopoverContent as UIPopoverContent,\n PopoverTrigger as UIPopoverTrigger,\n} from \"@/components/ui/popover\"\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n} from \"@/components/ui/field\"\nimport type { DayPickerProps, DateRange } from \"react-day-picker\"\n\n/**\n * Calendar raiz (primitivo) baseado no react-day-picker.\n *\n * Use quando precisar de controle total sobre o calendário.\n */\nexport const Calendar = UICalendar\nexport type CalendarProps = React.ComponentProps<typeof UICalendar>\n\n/**\n * Popover raiz (primitivo) baseado no Radix UI.\n */\nexport const Popover = UIPopover\nexport type PopoverProps = React.ComponentProps<typeof UIPopover>\n\n/**\n * PopoverTrigger (primitivo).\n */\nexport const PopoverTrigger = UIPopoverTrigger\nexport type PopoverTriggerProps = React.ComponentProps<typeof UIPopoverTrigger>\n\n/**\n * PopoverContent (primitivo).\n */\nexport const PopoverContent = UIPopoverContent\nexport type PopoverContentProps = React.ComponentProps<typeof UIPopoverContent>\n\n/**\n * Props base compartilhadas entre todos os tipos de DatePicker.\n */\nexport interface DatePickerBaseProps {\n /**\n * Placeholder exibido quando nenhuma data está selecionada.\n * @default \"Selecione uma data\"\n */\n placeholder?: string\n /**\n * Formato da data exibida no botão.\n * Usa date-fns format. Padrão: \"PPP\" (ex: \"January 1, 2024\")\n */\n dateFormat?: string\n /**\n * Define se o DatePicker está desabilitado.\n */\n disabled?: boolean\n /**\n * Classes CSS adicionais para o botão trigger.\n */\n buttonClassName?: string\n /**\n * Classes CSS adicionais para o conteúdo do popover.\n */\n popoverContentClassName?: string\n /**\n * Classes CSS adicionais para o calendário.\n */\n calendarClassName?: string\n /**\n * Props adicionais passadas para o componente Calendar.\n */\n calendarProps?: Omit<DayPickerProps, \"selected\" | \"onSelect\" | \"mode\" | \"disabled\">\n /**\n * Define se o calendário deve mostrar dias fora do mês.\n * @default true\n */\n showOutsideDays?: boolean\n /**\n * Data mínima selecionável.\n */\n minDate?: Date\n /**\n * Data máxima selecionável.\n */\n maxDate?: Date\n /**\n * Datas desabilitadas.\n */\n disabledDates?: Date[]\n}\n\n/**\n * Hook compartilhado para lógica comum dos DatePickers.\n */\nfunction useDatePickerCommon({\n minDate,\n maxDate,\n disabledDates,\n}: Pick<DatePickerBaseProps, \"minDate\" | \"maxDate\" | \"disabledDates\">) {\n const [open, setOpen] = React.useState(false)\n\n // Normalizar datas para comparar apenas a data (sem hora)\n const normalizeDate = React.useCallback((d: Date) => {\n const normalized = new Date(d)\n normalized.setHours(0, 0, 0, 0)\n return normalized\n }, [])\n\n // Criar função disabled\n const getDisabledFn = React.useCallback(() => {\n if (!minDate && !maxDate && !disabledDates?.length) {\n return undefined\n }\n\n return (dateToCheck: Date) => {\n const normalizedDate = normalizeDate(dateToCheck)\n\n if (minDate) {\n const normalizedMin = normalizeDate(minDate)\n if (normalizedDate < normalizedMin) return true\n }\n if (maxDate) {\n const normalizedMax = normalizeDate(maxDate)\n if (normalizedDate > normalizedMax) return true\n }\n if (disabledDates?.some((d) => normalizeDate(d).getTime() === normalizedDate.getTime())) {\n return true\n }\n return false\n }\n }, [minDate, maxDate, disabledDates, normalizeDate])\n\n return {\n open,\n setOpen,\n normalizeDate,\n getDisabledFn,\n }\n}\n\n/**\n * Props para DatePickerSingle - seleção de data única.\n */\nexport interface DatePickerSingleBaseProps extends DatePickerBaseProps {\n /**\n * Data selecionada.\n */\n date?: Date\n /**\n * Callback chamado quando a data é selecionada.\n */\n onSelect?: (date: Date | undefined) => void\n}\n\n/**\n * Props para DatePickerSingle com suporte a Field.\n */\nexport interface DatePickerSingleProps extends DatePickerSingleBaseProps {\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n orientation?: \"vertical\" | \"horizontal\" | \"responsive\"\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string\n /**\n * ID do campo. Se não fornecido, será gerado automaticamente.\n */\n id?: string\n}\n\n/**\n * DatePicker para seleção de data única.\n *\n * Pode ser usado de duas formas:\n * 1. Como DatePicker simples: <DatePickerSingle date={date} onSelect={setDate} />\n * 2. Com Field integrado: <DatePickerSingle label=\"Data\" date={date} onSelect={setDate} />\n *\n * Quando usado com props do Field (label, description, error), automaticamente\n * cria o Field ao redor do DatePicker.\n *\n * @example\n * ```tsx\n * import { DatePickerSingle } from \"@phsa.tec/design-system-react\"\n *\n * function MyForm() {\n * const [date, setDate] = React.useState<Date>()\n *\n * return (\n * <DatePickerSingle\n * label=\"Data de nascimento\"\n * description=\"Selecione sua data de nascimento\"\n * date={date}\n * onSelect={setDate}\n * placeholder=\"Selecione uma data\"\n * />\n * )\n * }\n * ```\n */\nexport const DatePickerSingle = React.forwardRef<HTMLButtonElement, DatePickerSingleProps>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n orientation = \"vertical\",\n fieldClassName,\n date,\n onSelect,\n placeholder = \"Selecione uma data\",\n dateFormat = \"PPP\",\n disabled,\n buttonClassName,\n popoverContentClassName,\n calendarClassName,\n calendarProps,\n showOutsideDays = true,\n minDate,\n maxDate,\n disabledDates,\n ...rest\n },\n ref\n ) => {\n const id = React.useId()\n const datePickerId = providedId || id\n const hasError = invalid || !!error\n const hasFieldProps = label !== undefined || description !== undefined || error !== undefined\n\n const { open, setOpen, getDisabledFn } = useDatePickerCommon({\n minDate,\n maxDate,\n disabledDates,\n })\n\n const handleSelect = React.useCallback(\n (selected: Date | undefined) => {\n onSelect?.(selected)\n if (selected) {\n setOpen(false)\n }\n },\n [onSelect, setOpen]\n )\n\n const buttonText = date ? format(date, dateFormat) : <span>{placeholder}</span>\n const isDateEmpty = !date\n\n const datePickerComponent = (\n <Popover open={open} onOpenChange={setOpen} {...rest}>\n <PopoverTrigger asChild>\n <UIButton\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n data-empty={isDateEmpty}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${datePickerId}-description ${hasError ? `${datePickerId}-error` : \"\"}`.trim()\n : undefined\n }\n className={cn(\n \"w-[280px] justify-start text-left font-normal\",\n \"data-[empty=true]:text-muted-foreground\",\n buttonClassName\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {buttonText}\n </UIButton>\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-auto p-0\", popoverContentClassName)} align=\"start\">\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={handleSelect}\n showOutsideDays={showOutsideDays}\n className={calendarClassName}\n disabled={getDisabledFn()}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n )\n\n // Se tem props do Field, cria o Field automaticamente\n if (hasFieldProps) {\n return (\n <Field\n orientation={orientation}\n data-invalid={hasError}\n className={fieldClassName}\n >\n {label && (\n <FieldLabel htmlFor={datePickerId}>\n {label}\n </FieldLabel>\n )}\n <FieldContent>\n {datePickerComponent}\n {description && (\n <FieldDescription id={`${datePickerId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError id={`${datePickerId}-error`} errors={Array.isArray(error) ? error : undefined}>\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n )\n }\n\n // DatePicker simples sem Field\n return datePickerComponent\n }\n)\n\nDatePickerSingle.displayName = \"DatePickerSingle\"\n\n/**\n * Props para DatePickerRange - seleção de range de datas.\n */\nexport interface DatePickerRangeBaseProps extends DatePickerBaseProps {\n /**\n * Range de datas selecionado.\n */\n date?: DateRange\n /**\n * Callback chamado quando o range é selecionado.\n */\n onSelect?: (range: DateRange | undefined) => void\n}\n\n/**\n * Props para DatePickerRange com suporte a Field.\n */\nexport interface DatePickerRangeProps extends DatePickerRangeBaseProps {\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n orientation?: \"vertical\" | \"horizontal\" | \"responsive\"\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string\n /**\n * ID do campo. Se não fornecido, será gerado automaticamente.\n */\n id?: string\n}\n\n/**\n * DatePicker para seleção de range de datas.\n *\n * Pode ser usado de duas formas:\n * 1. Como DatePicker simples: <DatePickerRange date={range} onSelect={setRange} />\n * 2. Com Field integrado: <DatePickerRange label=\"Período\" date={range} onSelect={setRange} />\n *\n * Quando usado com props do Field (label, description, error), automaticamente\n * cria o Field ao redor do DatePicker.\n *\n * @example\n * ```tsx\n * import { DatePickerRange } from \"@phsa.tec/design-system-react\"\n * import type { DateRange } from \"react-day-picker\"\n *\n * function MyForm() {\n * const [range, setRange] = React.useState<DateRange>()\n *\n * return (\n * <DatePickerRange\n * label=\"Período de viagem\"\n * description=\"Selecione as datas de ida e volta\"\n * date={range}\n * onSelect={setRange}\n * placeholder=\"Selecione um range\"\n * />\n * )\n * }\n * ```\n */\nexport const DatePickerRange = React.forwardRef<HTMLButtonElement, DatePickerRangeProps>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n orientation = \"vertical\",\n fieldClassName,\n date,\n onSelect,\n placeholder = \"Selecione um range de datas\",\n dateFormat = \"PPP\",\n disabled,\n buttonClassName,\n popoverContentClassName,\n calendarClassName,\n calendarProps,\n showOutsideDays = true,\n minDate,\n maxDate,\n disabledDates,\n ...rest\n },\n ref\n ) => {\n const id = React.useId()\n const datePickerId = providedId || id\n const hasError = invalid || !!error\n const hasFieldProps = label !== undefined || description !== undefined || error !== undefined\n\n const { open, setOpen, getDisabledFn } = useDatePickerCommon({\n minDate,\n maxDate,\n disabledDates,\n })\n\n const handleSelect = React.useCallback(\n (selected: DateRange | undefined) => {\n onSelect?.(selected)\n if (selected?.from && selected?.to) {\n setOpen(false)\n }\n },\n [onSelect, setOpen]\n )\n\n const renderButtonText = () => {\n if (date?.from && date?.to) {\n return `${format(date.from, dateFormat)} - ${format(date.to, dateFormat)}`\n }\n if (date?.from) {\n return format(date.from, dateFormat)\n }\n return <span>{placeholder}</span>\n }\n\n const isDateEmpty = !date?.from\n\n const datePickerComponent = (\n <Popover open={open} onOpenChange={setOpen} {...rest}>\n <PopoverTrigger asChild>\n <UIButton\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n data-empty={isDateEmpty}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${datePickerId}-description ${hasError ? `${datePickerId}-error` : \"\"}`.trim()\n : undefined\n }\n className={cn(\n \"w-[280px] justify-start text-left font-normal\",\n \"data-[empty=true]:text-muted-foreground\",\n buttonClassName\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {renderButtonText()}\n </UIButton>\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-auto p-0\", popoverContentClassName)} align=\"start\">\n <Calendar\n mode=\"range\"\n selected={date}\n onSelect={handleSelect}\n showOutsideDays={showOutsideDays}\n className={calendarClassName}\n disabled={getDisabledFn()}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n )\n\n // Se tem props do Field, cria o Field automaticamente\n if (hasFieldProps) {\n return (\n <Field\n orientation={orientation}\n data-invalid={hasError}\n className={fieldClassName}\n >\n {label && (\n <FieldLabel htmlFor={datePickerId}>\n {label}\n </FieldLabel>\n )}\n <FieldContent>\n {datePickerComponent}\n {description && (\n <FieldDescription id={`${datePickerId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError id={`${datePickerId}-error`} errors={Array.isArray(error) ? error : undefined}>\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n )\n }\n\n // DatePicker simples sem Field\n return datePickerComponent\n }\n)\n\nDatePickerRange.displayName = \"DatePickerRange\"\n\n/**\n * Props para DatePickerMultiple - seleção de múltiplas datas.\n */\nexport interface DatePickerMultipleBaseProps extends DatePickerBaseProps {\n /**\n * Datas selecionadas.\n */\n date?: Date[]\n /**\n * Callback chamado quando as datas são selecionadas.\n */\n onSelect?: (dates: Date[]) => void\n}\n\n/**\n * Props para DatePickerMultiple com suporte a Field.\n */\nexport interface DatePickerMultipleProps extends DatePickerMultipleBaseProps {\n /**\n * Label do campo. Quando fornecido, cria o Field automaticamente.\n */\n label?: React.ReactNode\n /**\n * Descrição ou texto de ajuda do campo.\n */\n description?: React.ReactNode\n /**\n * Mensagem de erro ou array de erros.\n */\n error?: React.ReactNode | Array<{ message?: string } | undefined>\n /**\n * Define se o campo está inválido.\n */\n invalid?: boolean\n /**\n * Orientação do Field (vertical, horizontal, responsive).\n */\n orientation?: \"vertical\" | \"horizontal\" | \"responsive\"\n /**\n * Classes CSS adicionais para o container do Field.\n */\n fieldClassName?: string\n /**\n * ID do campo. Se não fornecido, será gerado automaticamente.\n */\n id?: string\n}\n\n/**\n * DatePicker para seleção de múltiplas datas.\n *\n * Pode ser usado de duas formas:\n * 1. Como DatePicker simples: <DatePickerMultiple date={dates} onSelect={setDates} />\n * 2. Com Field integrado: <DatePickerMultiple label=\"Datas\" date={dates} onSelect={setDates} />\n *\n * Quando usado com props do Field (label, description, error), automaticamente\n * cria o Field ao redor do DatePicker.\n *\n * @example\n * ```tsx\n * import { DatePickerMultiple } from \"@phsa.tec/design-system-react\"\n *\n * function MyForm() {\n * const [dates, setDates] = React.useState<Date[]>([])\n *\n * return (\n * <DatePickerMultiple\n * label=\"Datas disponíveis\"\n * description=\"Selecione todas as datas que deseja\"\n * date={dates}\n * onSelect={setDates}\n * placeholder=\"Selecione múltiplas datas\"\n * />\n * )\n * }\n * ```\n */\nexport const DatePickerMultiple = React.forwardRef<HTMLButtonElement, DatePickerMultipleProps>(\n (\n {\n id: providedId,\n label,\n description,\n error,\n invalid,\n orientation = \"vertical\",\n fieldClassName,\n date,\n onSelect,\n placeholder = \"Selecione múltiplas datas\",\n dateFormat = \"PPP\",\n disabled,\n buttonClassName,\n popoverContentClassName,\n calendarClassName,\n calendarProps,\n showOutsideDays = true,\n minDate,\n maxDate,\n disabledDates,\n ...rest\n },\n ref\n ) => {\n const id = React.useId()\n const datePickerId = providedId || id\n const hasError = invalid || !!error\n const hasFieldProps = label !== undefined || description !== undefined || error !== undefined\n\n const { open, setOpen, getDisabledFn } = useDatePickerCommon({\n minDate,\n maxDate,\n disabledDates,\n })\n\n const handleSelect = React.useCallback(\n (selected: Date[]) => {\n onSelect?.(selected)\n },\n [onSelect]\n )\n\n const renderButtonText = () => {\n if (date && date.length > 0) {\n if (date.length === 1) {\n return format(date[0], dateFormat)\n }\n return `${date.length} datas selecionadas`\n }\n return <span>{placeholder}</span>\n }\n\n const isDateEmpty = !date?.length\n\n // Para mode=\"multiple\", o Calendar requer required={true}\n const calendarPropsForMultiple = {\n ...calendarProps,\n required: true,\n } as typeof calendarProps & { required: true }\n\n const datePickerComponent = (\n <Popover open={open} onOpenChange={setOpen} {...rest}>\n <PopoverTrigger asChild>\n <UIButton\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n data-empty={isDateEmpty}\n aria-invalid={hasError}\n aria-describedby={\n description || error\n ? `${datePickerId}-description ${hasError ? `${datePickerId}-error` : \"\"}`.trim()\n : undefined\n }\n className={cn(\n \"w-[280px] justify-start text-left font-normal\",\n \"data-[empty=true]:text-muted-foreground\",\n buttonClassName\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {renderButtonText()}\n </UIButton>\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-auto p-0\", popoverContentClassName)} align=\"start\">\n <Calendar\n mode=\"multiple\"\n selected={date}\n onSelect={handleSelect}\n showOutsideDays={showOutsideDays}\n className={calendarClassName}\n disabled={getDisabledFn()}\n {...calendarPropsForMultiple}\n />\n </PopoverContent>\n </Popover>\n )\n\n // Se tem props do Field, cria o Field automaticamente\n if (hasFieldProps) {\n return (\n <Field\n orientation={orientation}\n data-invalid={hasError}\n className={fieldClassName}\n >\n {label && (\n <FieldLabel htmlFor={datePickerId}>\n {label}\n </FieldLabel>\n )}\n <FieldContent>\n {datePickerComponent}\n {description && (\n <FieldDescription id={`${datePickerId}-description`}>\n {description}\n </FieldDescription>\n )}\n {error && (\n <FieldError id={`${datePickerId}-error`} errors={Array.isArray(error) ? error : undefined}>\n {!Array.isArray(error) ? error : undefined}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n )\n }\n\n // DatePicker simples sem Field\n return datePickerComponent\n }\n)\n\nDatePickerMultiple.displayName = \"DatePickerMultiple\"\n\n/**\n * DatePicker padrão - alias para DatePickerSingle para manter compatibilidade.\n *\n * @deprecated Use DatePickerSingle, DatePickerRange ou DatePickerMultiple diretamente.\n * Este componente será removido em uma versão futura.\n *\n * @example\n * ```tsx\n * import { DatePicker } from \"@phsa.tec/design-system-react\"\n *\n * function MyForm() {\n * const [date, setDate] = React.useState<Date>()\n *\n * return (\n * <DatePicker\n * date={date}\n * onSelect={setDate}\n * placeholder=\"Selecione uma data\"\n * />\n * )\n * }\n * ```\n */\nexport const DatePicker = DatePickerSingle\n\n/**\n * @deprecated Use DatePickerSingleProps\n */\nexport type DatePickerProps = DatePickerSingleProps\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport { DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/ui/button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"relative flex flex-col gap-4 md:flex-row\",\n defaultClassNames.months\n ),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"bg-popover absolute inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal\",\n defaultClassNames.weekday\n ),\n week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n week_number_header: cn(\n \"w-[--cell-size] select-none\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-muted-foreground select-none text-[0.8rem]\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"bg-accent rounded-l-md\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"bg-accent rounded-r-md\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-[--cell-size] items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","// src/components/feedback/Dialog/index.tsx\nimport * as React from \"react\"\n\nimport {\n Dialog as UIDialog,\n DialogTrigger as UIDialogTrigger,\n DialogPortal as UIDialogPortal,\n DialogClose as UIDialogClose,\n DialogOverlay as UIDialogOverlay,\n DialogContent as UIDialogContent,\n DialogHeader as UIDialogHeader,\n DialogFooter as UIDialogFooter,\n DialogTitle as UIDialogTitle,\n DialogDescription as UIDialogDescription,\n} from \"@/components/ui/dialog\"\n\n/**\n * Dialog raiz (primitivo) baseado no shadcn.\n *\n * Use quando precisar de controle total sobre a estrutura do dialog.\n */\nexport const DialogRoot = UIDialog\nexport type DialogRootProps = React.ComponentProps<typeof UIDialog>\n\n/**\n * Trigger do Dialog (primitivo).\n *\n * Elemento que abre o dialog quando clicado.\n */\nexport const DialogTrigger = UIDialogTrigger\nexport type DialogTriggerProps = React.ComponentProps<typeof UIDialogTrigger>\n\n/**\n * Portal do Dialog (primitivo).\n *\n * Controla onde o dialog é renderizado no DOM.\n */\nexport const DialogPortal = UIDialogPortal\nexport type DialogPortalProps = React.ComponentProps<typeof UIDialogPortal>\n\n/**\n * Overlay do Dialog (primitivo).\n *\n * Fundo escuro que aparece atrás do dialog.\n */\nexport const DialogOverlay = UIDialogOverlay\nexport type DialogOverlayProps = React.ComponentProps<typeof UIDialogOverlay>\n\n/**\n * Botão de fechar do Dialog (primitivo).\n */\nexport const DialogClose = UIDialogClose\nexport type DialogCloseProps = React.ComponentProps<typeof UIDialogClose>\n\n/**\n * Conteúdo principal do Dialog (primitivo).\n *\n * Container que envolve todo o conteúdo do dialog.\n */\nexport const DialogContent = UIDialogContent\nexport type DialogContentProps = React.ComponentProps<typeof UIDialogContent>\n\n/**\n * Cabeçalho do Dialog (primitivo).\n *\n * Normalmente contém `DialogTitle` e `DialogDescription`.\n */\nexport const DialogHeader = UIDialogHeader\nexport type DialogHeaderProps = React.ComponentProps<typeof UIDialogHeader>\n\n/**\n * Rodapé do Dialog (primitivo).\n *\n * Ideal para ações (botões) ou informações complementares.\n */\nexport const DialogFooter = UIDialogFooter\nexport type DialogFooterProps = React.ComponentProps<typeof UIDialogFooter>\n\n/**\n * Título do Dialog (primitivo).\n */\nexport const DialogTitle = UIDialogTitle\nexport type DialogTitleProps = React.ComponentProps<typeof UIDialogTitle>\n\n/**\n * Descrição do Dialog (primitivo).\n */\nexport const DialogDescription = UIDialogDescription\nexport type DialogDescriptionProps = React.ComponentProps<typeof UIDialogDescription>\n\nexport interface DialogProps extends Omit<DialogRootProps, \"children\"> {\n /**\n * Elemento que aciona a abertura do dialog.\n * Normalmente um botão ou link.\n */\n trigger?: React.ReactNode\n /**\n * Título do dialog.\n * Quando informado, é renderizado dentro de `DialogHeader` usando `DialogTitle`.\n */\n title?: React.ReactNode\n /**\n * Descrição do dialog.\n * Quando informada, é renderizada dentro de `DialogHeader` usando `DialogDescription`.\n */\n description?: React.ReactNode\n /**\n * Conteúdo principal do dialog.\n * Renderizado dentro de `DialogContent`.\n */\n children?: React.ReactNode\n /**\n * Conteúdo do rodapé do dialog.\n * Renderizado dentro de `DialogFooter` (ex: botões de ação).\n */\n footer?: React.ReactNode\n /**\n * Controla se o dialog está aberto ou fechado.\n * Use para controlar o estado do dialog externamente.\n */\n open?: boolean\n /**\n * Callback chamado quando o estado de abertura do dialog muda.\n */\n onOpenChange?: (open: boolean) => void\n}\n\n/**\n * Dialog padrão do Design System.\n *\n * Fornece uma estrutura de layout comum:\n * - Trigger opcional (`trigger`)\n * - Header opcional com `title` e `description`\n * - Content com `children`\n * - Footer opcional com `footer`\n *\n * Quando precisar de mais flexibilidade, use os primitivos:\n * `DialogRoot`, `DialogTrigger`, `DialogContent`, `DialogHeader`, `DialogTitle`,\n * `DialogDescription`, `DialogFooter`, etc.\n */\nexport const Dialog = ({\n trigger,\n title,\n description,\n children,\n footer,\n open,\n onOpenChange,\n ...rest\n}: DialogProps) => {\n const hasHeader = title || description\n\n return (\n <DialogRoot open={open} onOpenChange={onOpenChange} {...rest}>\n {trigger && <DialogTrigger asChild>{trigger}</DialogTrigger>}\n <DialogContent>\n {hasHeader && (\n <DialogHeader>\n {title && <DialogTitle>{title}</DialogTitle>}\n {description && <DialogDescription>{description}</DialogDescription>}\n </DialogHeader>\n )}\n\n {children && <div className=\"py-4\">{children}</div>}\n\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogContent>\n </DialogRoot>\n )\n}\n","\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner } from \"sonner\"\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n description: \"group-[.toast]:text-muted-foreground\",\n actionButton:\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n cancelButton:\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n },\n }}\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","// src/components/feedback/Sonner/index.tsx\nimport * as React from \"react\"\nimport { Toaster as UIToaster } from \"@/components/ui/sonner\"\n\n/**\n * Toaster raiz (primitivo) baseado no sonner.\n *\n * Componente que renderiza o container de toasts.\n * Deve ser adicionado na raiz da aplicação (ex: layout.tsx).\n *\n * @example\n * ```tsx\n * import { Toaster } from \"@phsa.tec/design-system-react\"\n *\n * function App() {\n * return (\n * <>\n * <YourApp />\n * <Toaster />\n * </>\n * )\n * }\n * ```\n */\nexport const Toaster = UIToaster\nexport type ToasterProps = React.ComponentProps<typeof UIToaster>\n\n/**\n * Função para exibir notificações toast.\n *\n * Re-exporta a função `toast` do sonner com todos os seus métodos:\n * - `toast()` - toast padrão\n * - `toast.success()` - toast de sucesso\n * - `toast.error()` - toast de erro\n * - `toast.warning()` - toast de aviso\n * - `toast.info()` - toast informativo\n * - `toast.loading()` - toast de carregamento\n * - `toast.promise()` - toast para promises\n * - `toast.custom()` - toast customizado\n * - `toast.dismiss()` - fechar toast\n * - `toast.message()` - toast com mensagem\n *\n * @example\n * ```tsx\n * import { toast } from \"@phsa.tec/design-system-react\"\n *\n * // Toast simples\n * toast(\"Operação realizada com sucesso!\")\n *\n * // Toast de sucesso\n * toast.success(\"Dados salvos com sucesso!\")\n *\n * // Toast de erro\n * toast.error(\"Erro ao salvar dados\")\n *\n * // Toast com descrição\n * toast.success(\"Perfil atualizado\", {\n * description: \"Suas alterações foram salvas.\"\n * })\n *\n * // Toast com ação\n * toast(\"Item removido\", {\n * action: {\n * label: \"Desfazer\",\n * onClick: () => console.log(\"Desfazer\")\n * }\n * })\n *\n * // Toast de promise\n * toast.promise(saveData(), {\n * loading: \"Salvando...\",\n * success: \"Dados salvos!\",\n * error: \"Erro ao salvar\"\n * })\n * ```\n */\n// Re-exportar a função toast do sonner\n// Usando re-export direto para manter todos os métodos e tipos\nexport { toast, type ToastT } from \"sonner\"\n","// src/components/feedback/Alert/index.tsx\nimport * as React from \"react\"\nimport { AlertCircle, CheckCircle2, Info, AlertTriangle, X } from \"lucide-react\"\n\nimport {\n Alert as UIAlert,\n AlertTitle as UIAlertTitle,\n AlertDescription as UIAlertDescription,\n} from \"@/components/ui/alert\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Alert raiz (primitivo) baseado no shadcn.\n *\n * Use quando precisar de controle total sobre a estrutura do alert.\n */\nexport const AlertRoot = UIAlert\nexport type AlertRootProps = React.ComponentProps<typeof UIAlert>\n\n/**\n * Título do Alert (primitivo).\n */\nexport const AlertTitle = UIAlertTitle\nexport type AlertTitleProps = React.ComponentProps<typeof UIAlertTitle>\n\n/**\n * Descrição do Alert (primitivo).\n */\nexport const AlertDescription = UIAlertDescription\nexport type AlertDescriptionProps = React.ComponentProps<typeof UIAlertDescription>\n\nexport type AlertVariant = \"default\" | \"destructive\" | \"success\" | \"warning\" | \"info\"\n\nexport interface AlertProps extends Omit<AlertRootProps, \"variant\" | \"children\" | \"title\"> {\n /**\n * Variante do alert.\n * @default \"default\"\n */\n variant?: AlertVariant\n /**\n * Ícone exibido no alert.\n * Se não fornecido, um ícone padrão será usado baseado na variante.\n */\n icon?: React.ReactNode\n /**\n * Título do alert.\n */\n title?: React.ReactNode\n /**\n * Descrição ou conteúdo do alert.\n */\n description?: React.ReactNode\n /**\n * Conteúdo adicional do alert.\n */\n children?: React.ReactNode\n /**\n * Mostrar botão de fechar.\n * @default false\n */\n dismissible?: boolean\n /**\n * Callback chamado quando o alert é fechado.\n */\n onDismiss?: () => void\n /**\n * Classes CSS adicionais para o container.\n */\n containerClassName?: string\n}\n\nconst variantIcons: Record<AlertVariant, React.ComponentType<{ className?: string }>> = {\n default: Info,\n destructive: AlertCircle,\n success: CheckCircle2,\n warning: AlertTriangle,\n info: Info,\n}\n\nconst variantStyles: Record<AlertVariant, string> = {\n default: \"bg-background text-foreground\",\n destructive: \"border-destructive/50 text-destructive dark:border-destructive\",\n success: \"border-green-500/50 text-green-600 dark:border-green-500 dark:text-green-400\",\n warning: \"border-yellow-500/50 text-yellow-600 dark:border-yellow-500 dark:text-yellow-400\",\n info: \"border-blue-500/50 text-blue-600 dark:border-blue-500 dark:text-blue-400\",\n}\n\n/**\n * Alert padrão do Design System.\n *\n * Componente de alerta para exibir mensagens importantes ao usuário.\n * Suporta diferentes variantes: default, destructive, success, warning, info.\n *\n * @example\n * ```tsx\n * import { Alert } from \"@phsa.tec/design-system-react\"\n *\n * // Alert simples\n * <Alert title=\"Atenção\" description=\"Esta é uma mensagem importante.\" />\n *\n * // Alert de sucesso\n * <Alert variant=\"success\" title=\"Sucesso!\" description=\"Operação realizada com sucesso.\" />\n *\n * // Alert com ícone customizado\n * <Alert\n * variant=\"warning\"\n * icon={<CustomIcon />}\n * title=\"Aviso\"\n * description=\"Verifique os dados antes de continuar.\"\n * />\n * ```\n */\nexport const Alert = ({\n variant = \"default\",\n icon,\n title,\n description,\n children,\n dismissible = false,\n onDismiss,\n className,\n containerClassName,\n ...rest\n}: AlertProps) => {\n const [isVisible, setIsVisible] = React.useState(true)\n\n const handleDismiss = () => {\n setIsVisible(false)\n onDismiss?.()\n }\n\n if (!isVisible) {\n return null\n }\n\n const IconComponent = variantIcons[variant]\n const defaultIcon = icon !== undefined ? icon : <IconComponent className=\"h-4 w-4\" />\n\n // Mapear variantes customizadas para as variantes do shadcn\n const shadcnVariant = variant === \"destructive\" ? \"destructive\" : \"default\"\n\n return (\n <AlertRoot\n variant={shadcnVariant}\n className={cn(\n variantStyles[variant],\n dismissible && \"pr-10\",\n className\n )}\n {...rest}\n >\n {defaultIcon}\n <div className={cn(\"flex-1\", containerClassName)}>\n {title && <AlertTitle>{title}</AlertTitle>}\n {description && <AlertDescription>{description}</AlertDescription>}\n {children && <div className=\"mt-2\">{children}</div>}\n </div>\n {dismissible && (\n <button\n onClick={handleDismiss}\n 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\"\n aria-label=\"Fechar alerta\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </AlertRoot>\n )\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n","// src/components/feedback/AlertDialog/index.tsx\nimport * as React from \"react\"\n\nimport {\n AlertDialog as UIAlertDialog,\n AlertDialogTrigger as UIAlertDialogTrigger,\n AlertDialogPortal as UIAlertDialogPortal,\n AlertDialogOverlay as UIAlertDialogOverlay,\n AlertDialogContent as UIAlertDialogContent,\n AlertDialogHeader as UIAlertDialogHeader,\n AlertDialogFooter as UIAlertDialogFooter,\n AlertDialogTitle as UIAlertDialogTitle,\n AlertDialogDescription as UIAlertDialogDescription,\n AlertDialogAction as UIAlertDialogAction,\n AlertDialogCancel as UIAlertDialogCancel,\n} from \"@/components/ui/alert-dialog\"\nimport { Button } from \"@/components/actions/Button\"\n\n/**\n * AlertDialog raiz (primitivo) baseado no Radix UI.\n *\n * Use quando precisar de controle total sobre a estrutura do alert dialog.\n */\nexport const AlertDialogRoot = UIAlertDialog\nexport type AlertDialogRootProps = React.ComponentProps<typeof UIAlertDialog>\n\n/**\n * Trigger do AlertDialog (primitivo).\n *\n * Elemento que abre o alert dialog quando clicado.\n */\nexport const AlertDialogTrigger = UIAlertDialogTrigger\nexport type AlertDialogTriggerProps = React.ComponentProps<typeof UIAlertDialogTrigger>\n\n/**\n * Portal do AlertDialog (primitivo).\n */\nexport const AlertDialogPortal = UIAlertDialogPortal\nexport type AlertDialogPortalProps = React.ComponentProps<typeof UIAlertDialogPortal>\n\n/**\n * Overlay do AlertDialog (primitivo).\n */\nexport const AlertDialogOverlay = UIAlertDialogOverlay\nexport type AlertDialogOverlayProps = React.ComponentProps<typeof UIAlertDialogOverlay>\n\n/**\n * Conteúdo principal do AlertDialog (primitivo).\n */\nexport const AlertDialogContent = UIAlertDialogContent\nexport type AlertDialogContentProps = React.ComponentProps<typeof UIAlertDialogContent>\n\n/**\n * Cabeçalho do AlertDialog (primitivo).\n */\nexport const AlertDialogHeader = UIAlertDialogHeader\nexport type AlertDialogHeaderProps = React.ComponentProps<typeof UIAlertDialogHeader>\n\n/**\n * Rodapé do AlertDialog (primitivo).\n */\nexport const AlertDialogFooter = UIAlertDialogFooter\nexport type AlertDialogFooterProps = React.ComponentProps<typeof UIAlertDialogFooter>\n\n/**\n * Título do AlertDialog (primitivo).\n */\nexport const AlertDialogTitle = UIAlertDialogTitle\nexport type AlertDialogTitleProps = React.ComponentProps<typeof UIAlertDialogTitle>\n\n/**\n * Descrição do AlertDialog (primitivo).\n */\nexport const AlertDialogDescription = UIAlertDialogDescription\nexport type AlertDialogDescriptionProps = React.ComponentProps<typeof UIAlertDialogDescription>\n\n/**\n * Botão de ação do AlertDialog (primitivo).\n */\nexport const AlertDialogAction = UIAlertDialogAction\nexport type AlertDialogActionProps = React.ComponentProps<typeof UIAlertDialogAction>\n\n/**\n * Botão de cancelar do AlertDialog (primitivo).\n */\nexport const AlertDialogCancel = UIAlertDialogCancel\nexport type AlertDialogCancelProps = React.ComponentProps<typeof UIAlertDialogCancel>\n\nexport interface AlertDialogProps extends Omit<AlertDialogRootProps, \"children\"> {\n /**\n * Elemento que aciona a abertura do alert dialog.\n * Normalmente um botão ou link.\n */\n trigger?: React.ReactNode\n /**\n * Título do alert dialog.\n * Quando informado, é renderizado dentro de `AlertDialogHeader` usando `AlertDialogTitle`.\n */\n title?: React.ReactNode\n /**\n * Descrição do alert dialog.\n * Quando informada, é renderizada dentro de `AlertDialogHeader` usando `AlertDialogDescription`.\n */\n description?: React.ReactNode\n /**\n * Conteúdo principal do alert dialog.\n * Renderizado dentro de `AlertDialogContent`.\n */\n children?: React.ReactNode\n /**\n * Label do botão de ação principal (confirmar).\n * @default \"Confirmar\"\n */\n actionLabel?: string\n /**\n * Label do botão de cancelar.\n * @default \"Cancelar\"\n */\n cancelLabel?: string\n /**\n * Variante do botão de ação.\n * @default \"default\"\n */\n actionVariant?: \"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\"\n /**\n * Callback chamado quando o botão de ação é clicado.\n */\n onAction?: () => void\n /**\n * Callback chamado quando o botão de cancelar é clicado.\n */\n onCancel?: () => void\n /**\n * Mostrar botão de cancelar.\n * @default true\n */\n showCancel?: boolean\n /**\n * Conteúdo customizado do rodapé.\n * Quando fornecido, substitui os botões padrão.\n */\n footer?: React.ReactNode\n /**\n * Controla se o alert dialog está aberto ou fechado.\n * Use para controlar o estado externamente.\n */\n open?: boolean\n /**\n * Callback chamado quando o estado de abertura muda.\n */\n onOpenChange?: (open: boolean) => void\n}\n\n/**\n * AlertDialog padrão do Design System.\n *\n * Componente de dialog de alerta usado para confirmações críticas.\n * Diferente do Dialog comum, não pode ser fechado clicando fora ou pressionando ESC -\n * apenas através dos botões de ação.\n *\n * @example\n * ```tsx\n * import { AlertDialog } from \"@phsa.tec/design-system-react\"\n *\n * // Confirmação simples\n * <AlertDialog\n * trigger={<Button>Excluir</Button>}\n * title=\"Confirmar exclusão\"\n * description=\"Esta ação não pode ser desfeita.\"\n * onAction={() => console.log(\"Confirmado\")}\n * />\n *\n * // Com ações customizadas\n * <AlertDialog\n * trigger={<Button>Salvar</Button>}\n * title=\"Salvar alterações?\"\n * description=\"Você tem alterações não salvas.\"\n * actionLabel=\"Salvar\"\n * cancelLabel=\"Descartar\"\n * onAction={handleSave}\n * onCancel={handleDiscard}\n * />\n * ```\n */\nexport const AlertDialog = ({\n trigger,\n title,\n description,\n children,\n actionLabel = \"Confirmar\",\n cancelLabel = \"Cancelar\",\n actionVariant = \"default\",\n onAction,\n onCancel,\n showCancel = true,\n footer,\n open,\n onOpenChange,\n ...rest\n}: AlertDialogProps) => {\n const [internalOpen, setInternalOpen] = React.useState(false)\n const isControlled = open !== undefined\n const isOpen = isControlled ? open : internalOpen\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen)\n }\n onOpenChange?.(newOpen)\n }\n\n const handleAction = () => {\n onAction?.()\n handleOpenChange(false)\n }\n\n const handleCancel = () => {\n onCancel?.()\n handleOpenChange(false)\n }\n\n const hasHeader = title || description\n\n return (\n <AlertDialogRoot open={isOpen} onOpenChange={handleOpenChange} {...rest}>\n {trigger && <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>}\n <AlertDialogContent>\n {hasHeader && (\n <AlertDialogHeader>\n {title && <AlertDialogTitle>{title}</AlertDialogTitle>}\n {description && <AlertDialogDescription>{description}</AlertDialogDescription>}\n </AlertDialogHeader>\n )}\n\n {children && <div className=\"py-4\">{children}</div>}\n\n {footer ? (\n <AlertDialogFooter>{footer}</AlertDialogFooter>\n ) : (\n <AlertDialogFooter>\n {showCancel && (\n <AlertDialogCancel asChild>\n <Button variant=\"outline\" onClick={handleCancel}>\n {cancelLabel}\n </Button>\n </AlertDialogCancel>\n )}\n <AlertDialogAction asChild>\n <Button variant={actionVariant} onClick={handleAction}>\n {actionLabel}\n </Button>\n </AlertDialogAction>\n </AlertDialogFooter>\n )}\n </AlertDialogContent>\n </AlertDialogRoot>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className\n )}\n {...props}\n />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","// src/components/layout/Tabs/index.tsx\nimport * as React from \"react\"\n\nimport {\n Tabs as UITabs,\n TabsList as UITabsList,\n TabsTrigger as UITabsTrigger,\n TabsContent as UITabsContent,\n} from \"@/components/ui/tabs\"\n\n/**\n * Tabs raiz (primitivo) baseado no Radix UI.\n *\n * Use quando precisar de controle total sobre a estrutura das tabs.\n */\nexport const TabsRoot = UITabs\nexport type TabsRootProps = React.ComponentProps<typeof UITabs>\n\n/**\n * Lista de tabs (primitivo).\n *\n * Container que agrupa os triggers das tabs.\n */\nexport const TabsList = UITabsList\nexport type TabsListProps = React.ComponentProps<typeof UITabsList>\n\n/**\n * Trigger de tab (primitivo).\n *\n * Botão que ativa uma tab específica.\n */\nexport const TabsTrigger = UITabsTrigger\nexport type TabsTriggerProps = React.ComponentProps<typeof UITabsTrigger>\n\n/**\n * Conteúdo de tab (primitivo).\n *\n * Container que exibe o conteúdo de uma tab quando ativa.\n */\nexport const TabsContent = UITabsContent\nexport type TabsContentProps = React.ComponentProps<typeof UITabsContent>\n\nexport interface TabItem {\n /**\n * Valor único que identifica a tab.\n */\n value: string\n /**\n * Label exibido no trigger da tab.\n */\n label: React.ReactNode\n /**\n * Conteúdo exibido quando a tab está ativa.\n */\n content: React.ReactNode\n /**\n * Ícone opcional exibido antes do label.\n */\n icon?: React.ReactNode\n /**\n * Define se a tab está desabilitada.\n */\n disabled?: boolean\n /**\n * Badge ou contador exibido ao lado do label.\n */\n badge?: React.ReactNode\n}\n\nexport interface TabsProps extends Omit<TabsRootProps, \"children\"> {\n /**\n * Array de itens de tab.\n * Cada item define uma tab com seu valor, label e conteúdo.\n */\n items: TabItem[]\n /**\n * Valor da tab ativa inicialmente.\n * Se não fornecido, a primeira tab será ativa.\n */\n defaultValue?: string\n /**\n * Valor da tab ativa (controlado).\n * Use junto com `onValueChange` para controlar o estado externamente.\n */\n value?: string\n /**\n * Callback chamado quando o valor da tab muda.\n */\n onValueChange?: (value: string) => void\n /**\n * Classes CSS adicionais para o container das tabs.\n */\n className?: string\n /**\n * Classes CSS adicionais para a lista de tabs.\n */\n listClassName?: string\n /**\n * Classes CSS adicionais para o conteúdo.\n */\n contentClassName?: string\n /**\n * Orientação das tabs.\n * @default \"horizontal\"\n */\n orientation?: \"horizontal\" | \"vertical\"\n}\n\n/**\n * Tabs padrão do Design System.\n *\n * Componente de tabs para organizar conteúdo em múltiplas seções.\n * Suporta tabs horizontais e verticais, com ícones e badges opcionais.\n *\n * @example\n * ```tsx\n * import { Tabs } from \"@phsa.tec/design-system-react\"\n *\n * // Tabs simples\n * <Tabs\n * items={[\n * { value: \"tab1\", label: \"Tab 1\", content: <div>Conteúdo 1</div> },\n * { value: \"tab2\", label: \"Tab 2\", content: <div>Conteúdo 2</div> },\n * ]}\n * />\n *\n * // Tabs com ícones e badges\n * <Tabs\n * items={[\n * {\n * value: \"profile\",\n * label: \"Perfil\",\n * icon: <UserIcon />,\n * content: <ProfileContent />,\n * },\n * {\n * value: \"settings\",\n * label: \"Configurações\",\n * icon: <SettingsIcon />,\n * badge: <Badge>3</Badge>,\n * content: <SettingsContent />,\n * },\n * ]}\n * />\n * ```\n */\nexport const Tabs = ({\n items,\n defaultValue,\n value,\n onValueChange,\n className,\n listClassName,\n contentClassName,\n orientation = \"horizontal\",\n ...rest\n}: TabsProps) => {\n const defaultTabValue = defaultValue || (items.length > 0 ? items[0].value : undefined)\n\n return (\n <TabsRoot\n defaultValue={defaultTabValue}\n value={value}\n onValueChange={onValueChange}\n orientation={orientation}\n className={className}\n {...rest}\n >\n <TabsList className={listClassName}>\n {items.map((item) => (\n <TabsTrigger\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className=\"flex items-center gap-2\"\n >\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span>{item.label}</span>\n {item.badge && <span className=\"ml-1\">{item.badge}</span>}\n </TabsTrigger>\n ))}\n </TabsList>\n {items.map((item) => (\n <TabsContent key={item.value} value={item.value} className={contentClassName}>\n {item.content}\n </TabsContent>\n ))}\n </TabsRoot>\n )\n}\n"],"mappings":"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","names":["Alert","AlertDescription","AlertDialog","AlertDialogAction","AlertDialogCancel","AlertDialogContent","AlertDialogDescription","AlertDialogFooter","AlertDialogHeader","AlertDialogOverlay","AlertDialogPortal","AlertDialogTitle","AlertDialogTrigger","AlertTitle","Button","Calendar","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","Dialog","DialogClose","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogOverlay","DialogPortal","DialogTitle","DialogTrigger","Input","Popover","PopoverContent","PopoverTrigger","RadioGroup","Switch","Table","TableBody","TableCell","TableHead","TableHeader","TableRow","Tabs","TabsContent","TabsList","TabsTrigger","Toaster","React","import_jsx_runtime","import_jsx_runtime","Button","React","import_jsx_runtime","import_jsx_runtime","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Card","React","import_lucide_react","React","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","Table","TableHeader","TableBody","TableRow","TableHead","TableCell","_a","React","import_jsx_runtime","React","React","import_jsx_runtime","import_class_variance_authority","React","import_class_variance_authority","import_jsx_runtime","Label","React","import_jsx_runtime","Separator","import_jsx_runtime","Label","_a","import_jsx_runtime","Input","import_jsx_runtime","Input","React","import_jsx_runtime","React","import_react_number_format","import_jsx_runtime","React","import_lucide_react","React","import_jsx_runtime","React","import_lucide_react","import_lucide_react","import_jsx_runtime","DialogPrimitive","import_jsx_runtime","CommandPrimitive","CommandPrimitive","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","React","React","import_lucide_react","import_jsx_runtime","RadioGroup","import_jsx_runtime","RadioGroup","Label","React","React","import_jsx_runtime","import_jsx_runtime","Switch","React","import_lucide_react","React","import_lucide_react","import_jsx_runtime","_a","_b","className","props","import_jsx_runtime","Calendar","Popover","PopoverTrigger","PopoverContent","CalendarIcon","import_jsx_runtime","DialogTrigger","DialogPortal","DialogOverlay","DialogClose","DialogContent","DialogHeader","DialogFooter","DialogTitle","DialogDescription","Dialog","import_jsx_runtime","Sonner","import_sonner","Toaster","React","import_lucide_react","React","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","AlertTitle","AlertDescription","Alert","React","React","import_jsx_runtime","import_jsx_runtime","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","AlertDialog","Button","React","import_jsx_runtime","import_jsx_runtime","TabsList","TabsTrigger","TabsContent","Tabs"]}