@snksergio/design-system 0.38.1 → 0.38.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"textarea-BOEpteRb.cjs","sources":["../../src/components/shadcn/alert-dialog.tsx","../../src/components/shadcn/checkbox.tsx","../../src/components/shadcn/calendar.tsx","../../src/components/shadcn/pagination.tsx","../../src/components/shadcn/select.tsx","../../src/components/shadcn/sheet.tsx","../../src/components/shadcn/switch.tsx","../../src/components/shadcn/textarea.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * AlertDialog — variante do Dialog pra confirmação destrutiva/crítica.\r\n *\r\n * Diferenças vs. Dialog:\r\n * - role=\"alertdialog\" (assistive tech anuncia diferente)\r\n * - Foco vai pro botão `Cancel` (mais seguro como ação default)\r\n * - Não fecha ao clicar fora ou apertar ESC (decisão forçada)\r\n *\r\n * Estilo alinhado com `.tbl-confirm-dialog` do sandbox: 420px, body 32/28/24,\r\n * radius-2xl, shadow-2xl, outline halo, ícone 56x56 com bg-tone-muted.\r\n *\r\n * Pra um wrapper \"one-shot\" com tone + ícone + botões → use <AlertModal>.\r\n */\r\n\r\nconst AlertDialog = AlertDialogPrimitive.Root;\r\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\r\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\r\n\r\nconst AlertDialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/30 supports-[backdrop-filter]:backdrop-blur-sm\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\r\n\r\nconst AlertDialogContent = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPortal>\r\n <AlertDialogOverlay />\r\n <AlertDialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] sm:max-w-[420px]\",\r\n \"translate-x-[-50%] translate-y-[-50%]\",\r\n \"rounded-radius-2xl bg-bg-surface text-fg-default\",\r\n \"border border-border-default shadow-sh-2xl outline-float\",\r\n \"duration-200\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </AlertDialogPortal>\r\n));\r\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\r\n\r\nconst AlertDialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center text-center gap-gp-lg\",\r\n \"px-pad-4xl pt-[32px] pb-pad-3xl\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\r\n\r\nconst AlertDialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n // Mobile: empilha vertical, confirm em cima (flex-col-reverse põe Cancel embaixo)\r\n // sm+: lado a lado horizontal\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse items-stretch gap-gp-md sm:flex-row\",\r\n \"px-pad-3xl pb-pad-3xl\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\r\n\r\nconst AlertDialogTitle = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-body-xl font-bold tracking-[-0.01em] text-fg-default leading-tight\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\r\n\r\nconst AlertDialogDescription = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\r\n \"text-body-sm font-normal leading-[1.5] text-fg-muted max-w-[340px]\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogDescription.displayName =\r\n AlertDialogPrimitive.Description.displayName;\r\n\r\nconst AlertDialogAction = AlertDialogPrimitive.Action;\r\nconst AlertDialogCancel = AlertDialogPrimitive.Cancel;\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogTrigger,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n};\r\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check, Minus } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Checkbox — alinhado com `.tbl-checkbox` do design-and-table-v2.\n *\n * Specs:\n * - 16x16, border 1.5px border-input, radius 4px (radius-xs)\n * - bg-input (light) / dark:bg-bg-muted\n * - hover: border-default (mais visível)\n * - checked/indeterminate: bg-brand + border-brand\n * - check icon: branco (fg-on-brand)\n * - focus: shadow-sh-ring (brand glow)\n */\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer relative flex size-4 shrink-0 items-center justify-center cursor-pointer\",\n \"rounded-radius-xs\",\n \"bg-bg-input dark:bg-bg-muted\",\n \"border-[1.5px] border-border-input\",\n \"transition-[background-color,border-color,box-shadow] outline-none\",\n \"hover:border-border-default\",\n \"focus-visible:shadow-sh-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-bg-brand data-[state=checked]:border-border-brand\",\n \"data-[state=indeterminate]:bg-bg-brand data-[state=indeterminate]:border-border-brand\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"grid place-content-center text-fg-on-brand\")}\n >\n {props.checked === \"indeterminate\" ? (\n <Minus className=\"size-3\" strokeWidth={3} />\n ) : (\n <Check className=\"size-3\" strokeWidth={3} />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import * as React from \"react\"\r\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\r\nimport { DayPicker, getDefaultClassNames, type DayButton } from \"react-day-picker\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nfunction Calendar({\r\n className,\r\n classNames,\r\n showOutsideDays = true,\r\n captionLayout = \"label\",\r\n components,\r\n ...props\r\n}: React.ComponentProps<typeof DayPicker>) {\r\n const defaultClassNames = getDefaultClassNames()\r\n\r\n return (\r\n <DayPicker\r\n showOutsideDays={showOutsideDays}\r\n className={cn(\r\n \"group/calendar bg-transparent p-0 [--cell-size:2.5rem]\",\r\n className\r\n )}\r\n captionLayout={captionLayout}\r\n classNames={{\r\n root: cn(\"w-full\", defaultClassNames.root),\r\n months: cn(\"relative flex flex-col gap-gp-2xl sm:flex-row sm:gap-gp-4xl\", defaultClassNames.months),\r\n month: cn(\"flex w-full flex-col gap-gp-2xl\", defaultClassNames.month),\r\n nav: cn(\r\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between\",\r\n defaultClassNames.nav\r\n ),\r\n button_previous: cn(\r\n \"inline-flex items-center justify-center size-[--cell-size] rounded-full text-fg-muted hover:bg-bg-muted transition-colors select-none aria-disabled:opacity-30\",\r\n defaultClassNames.button_previous\r\n ),\r\n button_next: cn(\r\n \"inline-flex items-center justify-center size-[--cell-size] rounded-full text-fg-muted hover:bg-bg-muted transition-colors select-none aria-disabled:opacity-30\",\r\n defaultClassNames.button_next\r\n ),\r\n month_caption: cn(\r\n \"flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]\",\r\n defaultClassNames.month_caption\r\n ),\r\n caption_label: cn(\r\n \"text-body-md font-medium font-semibold select-none\",\r\n captionLayout === \"dropdown\" ? \"hidden\" : \"\",\r\n defaultClassNames.caption_label\r\n ),\r\n dropdowns: cn(\r\n \"flex items-center gap-gp-md\",\r\n defaultClassNames.dropdowns\r\n ),\r\n dropdown: cn(\r\n \"cursor-pointer appearance-none bg-transparent text-body-md font-medium font-semibold text-fg-default outline-none\",\r\n defaultClassNames.dropdown\r\n ),\r\n months_dropdown: cn(\"\", defaultClassNames.months_dropdown),\r\n years_dropdown: cn(\"\", defaultClassNames.years_dropdown),\r\n table: \"w-full border-collapse\",\r\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\r\n weekday: cn(\r\n \"flex-1 min-w-8 max-w-12 text-body-sm font-normal text-fg-muted select-none text-center\",\r\n defaultClassNames.weekday\r\n ),\r\n week: cn(\"mt-gp-md flex w-full\", defaultClassNames.week),\r\n day: cn(\r\n // flex-1: cada dia ocupa 1/7 igual ao header de weekdays (que usa flex-1).\r\n // Sem isso o dia dimensionava por aspect-square e desalinhava das colunas.\r\n \"group/day relative flex-1 aspect-square min-w-8 max-w-12 p-0 text-center select-none\",\r\n defaultClassNames.day\r\n ),\r\n range_start: cn(\"rounded-l-full\", defaultClassNames.range_start),\r\n range_end: cn(\"rounded-r-full\", defaultClassNames.range_end),\r\n range_middle: cn(\"\", defaultClassNames.range_middle),\r\n today: cn(\"\", defaultClassNames.today),\r\n outside: cn(\r\n \"text-fg-subtle opacity-40\",\r\n defaultClassNames.outside\r\n ),\r\n disabled: cn(\"text-fg-disabled opacity-50\", defaultClassNames.disabled),\r\n hidden: cn(\"invisible\", defaultClassNames.hidden),\r\n ...classNames,\r\n }}\r\n components={{\r\n Root: ({ className: rootCn, rootRef, ...rootProps }) => (\r\n <div data-slot=\"calendar\" ref={rootRef} className={cn(rootCn)} {...rootProps} />\r\n ),\r\n Chevron: ({ orientation }) => {\r\n if (orientation === \"left\") return <ChevronLeftIcon className=\"size-4\" />\r\n return <ChevronRightIcon className=\"size-4\" />\r\n },\r\n DayButton: CalendarDayButton,\r\n ...components,\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction CalendarDayButton({\r\n className,\r\n day,\r\n modifiers,\r\n ...props\r\n}: React.ComponentProps<typeof DayButton>) {\r\n const ref = React.useRef<HTMLButtonElement>(null)\r\n React.useEffect(() => {\r\n if (modifiers.focused) ref.current?.focus()\r\n }, [modifiers.focused])\r\n\r\n const isRangeStart = modifiers.range_start;\r\n const isRangeEnd = modifiers.range_end;\r\n const isRangeMiddle = modifiers.range_middle;\r\n const isSingleSelected =\r\n modifiers.selected && !isRangeStart && !isRangeEnd && !isRangeMiddle;\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n data-selected-single={isSingleSelected}\r\n data-range-start={isRangeStart || undefined}\r\n data-range-end={isRangeEnd || undefined}\r\n data-range-middle={isRangeMiddle || undefined}\r\n className={cn(\r\n \"relative flex aspect-square w-full items-center justify-center text-body-md font-normal leading-none outline-none transition-colors\",\r\n\r\n // Default shape\r\n \"rounded-full\",\r\n\r\n // Hover\r\n \"hover:bg-bg-muted\",\r\n\r\n // Single selected\r\n \"data-[selected-single=true]:bg-bg-brand data-[selected-single=true]:text-fg-on-brand data-[selected-single=true]:hover:bg-bg-brand\",\r\n\r\n // Range start\r\n \"data-[range-start]:bg-bg-brand data-[range-start]:text-fg-on-brand data-[range-start]:rounded-full data-[range-start]:hover:bg-bg-brand\",\r\n\r\n // Range end\r\n \"data-[range-end]:bg-bg-brand data-[range-end]:text-fg-on-brand data-[range-end]:rounded-full data-[range-end]:hover:bg-bg-brand\",\r\n\r\n // Range middle\r\n \"data-[range-middle]:bg-bg-brand-subtle data-[range-middle]:text-fg-brand data-[range-middle]:rounded-none\",\r\n\r\n // Today\r\n modifiers.today && !isSingleSelected && !isRangeStart && !isRangeEnd && !isRangeMiddle &&\r\n \"bg-bg-brand text-fg-on-brand font-semibold hover:bg-bg-brand\",\r\n\r\n // Outside\r\n modifiers.outside && \"text-fg-subtle opacity-40 hover:bg-transparent\",\r\n\r\n // Disabled\r\n modifiers.disabled && \"opacity-30 pointer-events-none\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Calendar, CalendarDayButton }\r\n","import * as React from \"react\";\r\nimport {\r\n ChevronLeft,\r\n ChevronRight,\r\n ChevronsLeft,\r\n ChevronsRight,\r\n MoreHorizontal,\r\n} from \"lucide-react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * Pagination — primitives baixo nível pra paginação.\r\n *\r\n * Visual alinhado com `.tbl-footer-right` do design-and-table-v2:\r\n * - Nav buttons (« ‹ › »): 36×36 com border, radius-lg\r\n * - Pages container: bg-muted, radius-lg, padding 3px (segmented look)\r\n * - Page item: 30×30 transparente; active = bg-accent + shadow-sm + font-semibold\r\n *\r\n * Pra um wrapper \"one-shot\" com pageSize + range + nav → use <FooterTable>.\r\n */\r\n\r\n/* ── Root nav ────────────────────────────────────────────────────────── */\r\nconst Pagination = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"Paginação\"\r\n className={cn(\"inline-flex items-center gap-gp-xs\", className)}\r\n {...props}\r\n />\r\n);\r\nPagination.displayName = \"Pagination\";\r\n\r\n/* ── Content (container das page items — visual segmented) ──────────── */\r\nconst PaginationContent = React.forwardRef<\r\n HTMLUListElement,\r\n React.ComponentProps<\"ul\">\r\n>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex items-center gap-[2px]\",\r\n \"bg-bg-muted rounded-radius-lg p-[3px] mx-gp-sm h-form-md\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nPaginationContent.displayName = \"PaginationContent\";\r\n\r\n/* ── Item wrapper (li) ───────────────────────────────────────────────── */\r\nconst PaginationItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentProps<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"\", className)} {...props} />\r\n));\r\nPaginationItem.displayName = \"PaginationItem\";\r\n\r\n/* ── Link (número) — dentro do PaginationContent ──────────────────── */\r\nconst paginationLinkVariants = cva(\r\n [\r\n \"inline-flex items-center justify-center\",\r\n \"min-w-[30px] h-[30px] px-pad-md\",\r\n \"rounded-radius-md text-body-sm font-medium tabular-nums\",\r\n \"outline-none cursor-pointer transition-[background-color,color,box-shadow]\",\r\n \"focus-visible:shadow-sh-ring\",\r\n \"disabled:opacity-50 disabled:pointer-events-none\",\r\n ],\r\n {\r\n variants: {\r\n isActive: {\r\n true: \"bg-bg-accent text-fg-default font-semibold shadow-sh-sm\",\r\n false: \"bg-transparent text-fg-muted hover:text-fg-default\",\r\n },\r\n },\r\n defaultVariants: { isActive: false },\r\n },\r\n);\r\n\r\nexport type PaginationLinkProps = {\r\n isActive?: boolean;\r\n} & React.ButtonHTMLAttributes<HTMLButtonElement> &\r\n VariantProps<typeof paginationLinkVariants>;\r\n\r\nconst PaginationLink = React.forwardRef<\r\n HTMLButtonElement,\r\n PaginationLinkProps\r\n>(({ className, isActive, type = \"button\", ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-current={isActive ? \"page\" : undefined}\r\n className={cn(paginationLinkVariants({ isActive }), className)}\r\n {...props}\r\n />\r\n));\r\nPaginationLink.displayName = \"PaginationLink\";\r\n\r\n/* ── Nav buttons (« ‹ › ») — fora do Content, com border individual ── */\r\nconst paginationNavVariants = cva([\r\n \"inline-flex items-center justify-center shrink-0\",\r\n \"size-form-md rounded-radius-lg\",\r\n \"border border-border-default bg-transparent text-fg-default\",\r\n \"outline-none cursor-pointer transition-[background-color,color,opacity,border-color,box-shadow]\",\r\n \"hover:bg-bg-muted\",\r\n \"focus-visible:shadow-sh-ring\",\r\n \"disabled:opacity-35 disabled:pointer-events-none\",\r\n \"[&_svg]:size-4\",\r\n]);\r\n\r\ntype NavBtnProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\r\n\r\nconst PaginationPrevious = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Página anterior\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronLeft />\r\n </button>\r\n ),\r\n);\r\nPaginationPrevious.displayName = \"PaginationPrevious\";\r\n\r\nconst PaginationNext = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Próxima página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronRight />\r\n </button>\r\n ),\r\n);\r\nPaginationNext.displayName = \"PaginationNext\";\r\n\r\nconst PaginationFirst = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Primeira página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronsLeft />\r\n </button>\r\n ),\r\n);\r\nPaginationFirst.displayName = \"PaginationFirst\";\r\n\r\nconst PaginationLast = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Última página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronsRight />\r\n </button>\r\n ),\r\n);\r\nPaginationLast.displayName = \"PaginationLast\";\r\n\r\n/* ── Ellipsis ────────────────────────────────────────────────────────── */\r\nconst PaginationEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n aria-hidden=\"true\"\r\n className={cn(\r\n \"inline-flex items-center justify-center min-w-[22px] h-[30px]\",\r\n \"text-body-sm font-normal text-fg-muted tracking-wider select-none\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"size-4\" />\r\n </span>\r\n);\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\r\n\r\n/**\r\n * Helper — gera array de páginas com ellipsis.\r\n *\r\n * Regras:\r\n * - Total ≤ 7 páginas → mostra todas\r\n * - Senão → [1, 2, …, page-1, page, page+1, …, last-1, last]\r\n *\r\n * Retorna `number[]` com `\"ellipsis\"` como string nos gaps.\r\n *\r\n * Ex (page=5, total=20): [1, 2, \"ellipsis\", 4, 5, 6, \"ellipsis\", 19, 20]\r\n */\r\nexport function getPaginationRange(page: number, total: number): (number | \"ellipsis\")[] {\r\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\r\n const set = new Set([1, 2, total - 1, total, page - 1, page, page + 1]);\r\n const sorted = [...set]\r\n .filter((n) => n >= 1 && n <= total)\r\n .sort((a, b) => a - b);\r\n const out: (number | \"ellipsis\")[] = [];\r\n sorted.forEach((n, i) => {\r\n if (i > 0 && n - sorted[i - 1] > 1) out.push(\"ellipsis\");\r\n out.push(n);\r\n });\r\n return out;\r\n}\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationPrevious,\r\n PaginationNext,\r\n PaginationFirst,\r\n PaginationLast,\r\n PaginationEllipsis,\r\n paginationLinkVariants,\r\n paginationNavVariants,\r\n};\r\n","import * as React from \"react\"\r\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\r\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Select = SelectPrimitive.Root\r\n\r\nconst SelectGroup = SelectPrimitive.Group\r\n\r\nconst SelectValue = SelectPrimitive.Value\r\n\r\nexport type SelectTriggerState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\nconst SelectTrigger = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> & {\r\n state?: SelectTriggerState;\r\n }\r\n>(({ className, children, state = \"default\", ...props }, ref) => (\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex min-h-form-lg w-full items-center justify-between gap-gp-md\",\r\n \"rounded-radius-lg px-pad-xl\",\r\n \"bg-bg-input dark:bg-bg-muted\",\r\n \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\",\r\n \"border border-border-input\",\r\n \"text-body-sm font-normal text-fg-default\",\r\n \"transition-[color,box-shadow,background-color,border-color] outline-none\",\r\n \"data-[placeholder]:text-fg-muted data-[placeholder]:opacity-70\",\r\n state === \"default\" && \"focus-visible:border-border-brand data-[state=open]:border-border-brand focus-visible:shadow-sh-ring data-[state=open]:shadow-sh-ring\",\r\n state === \"error\" && \"border-border-danger-muted focus-visible:border-border-danger-muted data-[state=open]:border-border-danger-muted focus-visible:shadow-sh-ring-danger data-[state=open]:shadow-sh-ring-danger\",\r\n state === \"warning\" && \"border-border-warning-muted focus-visible:border-border-warning-muted data-[state=open]:border-border-warning-muted focus-visible:shadow-sh-ring-warning data-[state=open]:shadow-sh-ring-warning\",\r\n state === \"success\" && \"border-border-success-muted focus-visible:border-border-success-muted data-[state=open]:border-border-success-muted focus-visible:shadow-sh-ring-success data-[state=open]:shadow-sh-ring-success\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-bg-input dark:disabled:hover:bg-bg-muted\",\r\n \"[&>span]:line-clamp-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"size-4 text-fg-muted shrink-0\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n))\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\r\n\r\nconst SelectScrollUpButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollUpButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-pad-xs\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronUp className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollUpButton>\r\n))\r\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\r\n\r\nconst SelectScrollDownButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollDownButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-pad-xs\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronDown className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollDownButton>\r\n))\r\nSelectScrollDownButton.displayName =\r\n SelectPrimitive.ScrollDownButton.displayName\r\n\r\nconst SelectContent = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\r\n>(({ className, children, position = \"popper\", ...props }, ref) => (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden\",\r\n \"rounded-[12px] bg-bg-dropdown border border-border-default shadow-sh-lg outline-float\",\r\n \"before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150\",\r\n \"text-fg-default\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n \"origin-[--radix-select-content-transform-origin]\",\r\n position === \"popper\" &&\r\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\",\r\n className\r\n )}\r\n position={position}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.Viewport\r\n className={cn(\r\n \"p-pad-sm\",\r\n position === \"popper\" &&\r\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\r\n )}\r\n >\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n))\r\nSelectContent.displayName = SelectPrimitive.Content.displayName\r\n\r\nconst SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label\r\n ref={ref}\r\n className={cn(\"py-pad-sm pl-8 pr-2 text-body-md font-medium text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectLabel.displayName = SelectPrimitive.Label.displayName\r\n\r\nconst SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full cursor-default select-none items-center gap-pad-md\",\r\n \"rounded-radius-sm py-pad-md pl-8 pr-pad-lg\",\r\n \"text-body-sm font-medium text-fg-muted\",\r\n \"outline-none transition-colors\",\r\n \"focus:bg-bg-muted focus:text-fg-default\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n \"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-fg-muted\",\r\n \"focus:[&_svg]:text-fg-default\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n))\r\nSelectItem.displayName = SelectPrimitive.Item.displayName\r\n\r\nconst SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-border-default\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\r\n\r\nexport {\r\n Select,\r\n SelectGroup,\r\n SelectValue,\r\n SelectTrigger,\r\n SelectContent,\r\n SelectLabel,\r\n SelectItem,\r\n SelectSeparator,\r\n SelectScrollUpButton,\r\n SelectScrollDownButton,\r\n}\r\n","import * as React from \"react\"\r\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Sheet = SheetPrimitive.Root\r\n\r\nconst SheetTrigger = SheetPrimitive.Trigger\r\n\r\nconst SheetClose = SheetPrimitive.Close\r\n\r\nconst SheetPortal = SheetPrimitive.Portal\r\n\r\nconst SheetOverlay = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-overlay-scrim data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\r\n\r\nconst sheetVariants = cva(\r\n \"fixed z-50 bg-bg-surface dark:bg-bg-canvas text-fg-default shadow-sh-2xl ease-[cubic-bezier(0.4,0,0.2,1)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-[220ms] data-[state=open]:duration-[220ms] data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\r\n {\r\n variants: {\r\n side: {\r\n top: \"inset-x-0 top-0 border-b border-border-default data-[state=closed]:slide-out-to-top-12 data-[state=open]:slide-in-from-top-12\",\r\n bottom:\r\n \"inset-x-0 bottom-0 border-t border-border-default data-[state=closed]:slide-out-to-bottom-12 data-[state=open]:slide-in-from-bottom-12\",\r\n left: \"inset-y-0 left-0 h-full w-3/4 border-r border-border-default data-[state=closed]:slide-out-to-left-12 data-[state=open]:slide-in-from-left-12 sm:max-w-sm\",\r\n right:\r\n \"inset-y-0 right-0 h-full w-3/4 border-l border-border-default data-[state=closed]:slide-out-to-right-12 data-[state=open]:slide-in-from-right-12 sm:max-w-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n side: \"right\",\r\n },\r\n }\r\n)\r\n\r\ninterface SheetContentProps\r\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\r\n VariantProps<typeof sheetVariants> {\r\n /** Esconde o botão \"X\" (Close) no canto superior direito. Default: false. */\r\n hideClose?: boolean\r\n}\r\n\r\nconst SheetContent = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Content>,\r\n SheetContentProps\r\n>(({ side = \"right\", className, children, hideClose, ...props }, ref) => (\r\n <SheetPortal>\r\n <SheetOverlay />\r\n <SheetPrimitive.Content\r\n ref={ref}\r\n className={cn(sheetVariants({ side }), className)}\r\n {...props}\r\n >\r\n {children}\r\n {!hideClose && (\r\n <SheetPrimitive.Close className=\"absolute right-pad-2xl top-pad-2xl rounded-radius-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary disabled:pointer-events-none data-[state=open]:bg-bg-muted text-fg-muted\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </SheetPrimitive.Close>\r\n )}\r\n </SheetPrimitive.Content>\r\n </SheetPortal>\r\n))\r\nSheetContent.displayName = SheetPrimitive.Content.displayName\r\n\r\nconst SheetHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col gap-gp-sm text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetHeader.displayName = \"SheetHeader\"\r\n\r\nconst SheetFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse gap-gp-md sm:flex-row sm:justify-end\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetFooter.displayName = \"SheetFooter\"\r\n\r\nconst SheetTitle = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-body-lg font-medium font-semibold text-fg-default\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetTitle.displayName = SheetPrimitive.Title.displayName\r\n\r\nconst SheetDescription = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-body-md text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetDescription.displayName = SheetPrimitive.Description.displayName\r\n\r\nexport {\r\n Sheet,\r\n SheetPortal,\r\n SheetOverlay,\r\n SheetTrigger,\r\n SheetClose,\r\n SheetContent,\r\n SheetHeader,\r\n SheetFooter,\r\n SheetTitle,\r\n SheetDescription,\r\n}\r\n","import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Switch — alinhado com `.tbl-toggle` do design-and-table-v2.\n *\n * Specs:\n * - Track: 42x24, radius-full\n * - off light: bg-emphasis (gray[100] — visível em fundo branco)\n * - off dark: bg-accent (alpha branco 12% — visível em fundo escuro)\n * - on: bg-brand\n * - Thumb: 20x20, white com shadow, transform 0.18s\n * - Focus: shadow-sh-ring (brand glow)\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 relative inline-flex h-[24px] w-[42px] shrink-0 cursor-pointer items-center\",\n \"rounded-radius-full\",\n \"transition-[background-color,box-shadow] duration-150 outline-none\",\n \"data-[state=unchecked]:bg-bg-emphasis dark:data-[state=unchecked]:bg-bg-accent\",\n \"data-[state=checked]:bg-bg-brand\",\n \"focus-visible:shadow-sh-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block size-[20px] rounded-radius-full bg-white\",\n \"shadow-[0_1px_2px_rgba(0,0,0,0.10)]\",\n \"transition-transform duration-[180ms] ease-[cubic-bezier(0.4,0,0.2,1)]\",\n \"data-[state=unchecked]:translate-x-[2px]\",\n \"data-[state=checked]:translate-x-[20px]\"\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * Textarea — alinhado com `.tbl-form-textarea` do design-and-table-v2.\r\n *\r\n * Specs:\r\n * - min-h: 100px, padding: 10px 12px, radius: 10px\r\n * - bg-input (light) / dark:bg-bg-muted, border-input 1px\r\n * - font: 13px, line-height: 1.5, resize vertical\r\n * - focus: border-brand + shadow-sh-ring\r\n *\r\n * Features: state prop (default | error | warning | success) pra feedback visual.\r\n */\r\n\r\nexport type TextareaState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\nconst textareaVariants = cva(\r\n [\r\n \"flex min-h-[100px] w-full resize-y\",\r\n \"bg-bg-input dark:bg-bg-muted\",\r\n \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\",\r\n \"border border-border-input rounded-radius-lg\",\r\n \"px-pad-xl py-pad-lg\",\r\n \"text-body-sm font-normal leading-[1.5] text-fg-default\",\r\n \"placeholder:text-fg-muted placeholder:opacity-70\",\r\n \"transition-[color,box-shadow,background-color,border-color] outline-none\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-bg-input dark:disabled:hover:bg-bg-muted\",\r\n ],\r\n {\r\n variants: {\r\n state: {\r\n default: \"focus-visible:border-border-brand focus-visible:shadow-sh-ring\",\r\n error: \"border-border-danger-muted focus-visible:border-border-danger-muted focus-visible:shadow-sh-ring-danger\",\r\n warning: \"border-border-warning-muted focus-visible:border-border-warning-muted focus-visible:shadow-sh-ring-warning\",\r\n success: \"border-border-success-muted focus-visible:border-border-success-muted focus-visible:shadow-sh-ring-success\",\r\n },\r\n },\r\n defaultVariants: {\r\n state: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport interface TextareaProps\r\n extends React.ComponentProps<\"textarea\">,\r\n VariantProps<typeof textareaVariants> {}\r\n\r\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, state, ...props }, ref) => {\r\n return (\r\n <textarea\r\n className={cn(textareaVariants({ state }), className)}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nTextarea.displayName = \"Textarea\"\r\n\r\nexport { Textarea, textareaVariants }\r\n"],"names":["AlertDialogPrimitive","React","jsx","cn","jsxs","CheckboxPrimitive","Minus","Check","getDefaultClassNames","DayPicker","ChevronLeftIcon","ChevronRightIcon","cva","ChevronLeft","ChevronRight","ChevronsLeft","ChevronsRight","MoreHorizontal","SelectPrimitive","ChevronDown","ChevronUp","SheetPrimitive","X","SwitchPrimitives"],"mappings":"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"}
1
+ {"version":3,"file":"textarea-BOEpteRb.cjs","sources":["../../src/components/shadcn/alert-dialog.tsx","../../src/components/shadcn/checkbox.tsx","../../src/components/shadcn/calendar.tsx","../../src/components/shadcn/pagination.tsx","../../src/components/shadcn/select.tsx","../../src/components/shadcn/sheet.tsx","../../src/components/shadcn/switch.tsx","../../src/components/shadcn/textarea.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * AlertDialog — variante do Dialog pra confirmação destrutiva/crítica.\r\n *\r\n * Diferenças vs. Dialog, TODAS medidas no browser (2026-08-13) e não deduzidas:\r\n * - `role=\"alertdialog\"` (assistive tech anuncia diferente) ✔ confirmado\r\n * - Foco inicial no botão `Cancel`, que é o default seguro ✔ confirmado\r\n * - **Não fecha ao clicar fora** ✔ confirmado — e o Dialog comum, no MESMO teste,\r\n * fecha. A diferença é real.\r\n *\r\n * ⚠️ **ESC FECHA.** Este bloco afirmava \"não fecha ao clicar fora ou apertar ESC\"; a\r\n * segunda metade era falsa. O Radix trata as duas coisas em canais separados: o\r\n * pointer-down externo o AlertDialog bloqueia, o ESC não. Quem precisasse de uma decisão\r\n * inescapável (o caso que a frase prometia cobrir) sairia daqui acreditando estar\r\n * protegido. Pra travar de verdade, no consumidor:\r\n *\r\n * <AlertDialogContent onEscapeKeyDown={(e) => e.preventDefault()}>\r\n *\r\n * Estilo alinhado com `.tbl-confirm-dialog` do sandbox: 420px, body 32/28/24,\r\n * radius-2xl, shadow-2xl, outline halo, ícone 56x56 com bg-tone-muted.\r\n *\r\n * Pra um wrapper \"one-shot\" com tone + ícone + botões → use <AlertModal>. Doc e a\r\n * comparação dos três (AlertModal / AlertDialog / Dialog): página `#/alert-dialog`.\r\n */\r\n\r\nconst AlertDialog = AlertDialogPrimitive.Root;\r\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\r\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\r\n\r\nconst AlertDialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/30 supports-[backdrop-filter]:backdrop-blur-sm\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\r\n\r\nconst AlertDialogContent = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPortal>\r\n <AlertDialogOverlay />\r\n <AlertDialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] sm:max-w-[420px]\",\r\n \"translate-x-[-50%] translate-y-[-50%]\",\r\n \"rounded-radius-2xl bg-bg-surface text-fg-default\",\r\n \"border border-border-default shadow-sh-2xl outline-float\",\r\n \"duration-200\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </AlertDialogPortal>\r\n));\r\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\r\n\r\nconst AlertDialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center text-center gap-gp-lg\",\r\n \"px-pad-4xl pt-[32px] pb-pad-3xl\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\r\n\r\nconst AlertDialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n // Mobile: empilha vertical, confirm em cima (flex-col-reverse põe Cancel embaixo)\r\n // sm+: lado a lado horizontal\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse items-stretch gap-gp-md sm:flex-row\",\r\n \"px-pad-3xl pb-pad-3xl\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\r\n\r\nconst AlertDialogTitle = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-body-xl font-bold tracking-[-0.01em] text-fg-default leading-tight\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\r\n\r\nconst AlertDialogDescription = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\r\n \"text-body-sm font-normal leading-[1.5] text-fg-muted max-w-[340px]\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogDescription.displayName =\r\n AlertDialogPrimitive.Description.displayName;\r\n\r\nconst AlertDialogAction = AlertDialogPrimitive.Action;\r\nconst AlertDialogCancel = AlertDialogPrimitive.Cancel;\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogTrigger,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n};\r\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check, Minus } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Checkbox — alinhado com `.tbl-checkbox` do design-and-table-v2.\n *\n * Specs:\n * - 16x16, border 1.5px border-input, radius 4px (radius-xs)\n * - bg-input (light) / dark:bg-bg-muted\n * - hover: border-default (mais visível)\n * - checked/indeterminate: bg-brand + border-brand\n * - check icon: branco (fg-on-brand)\n * - focus: shadow-sh-ring (brand glow)\n */\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer relative flex size-4 shrink-0 items-center justify-center cursor-pointer\",\n \"rounded-radius-xs\",\n \"bg-bg-input dark:bg-bg-muted\",\n \"border-[1.5px] border-border-input\",\n \"transition-[background-color,border-color,box-shadow] outline-none\",\n \"hover:border-border-default\",\n \"focus-visible:shadow-sh-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-bg-brand data-[state=checked]:border-border-brand\",\n \"data-[state=indeterminate]:bg-bg-brand data-[state=indeterminate]:border-border-brand\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"grid place-content-center text-fg-on-brand\")}\n >\n {props.checked === \"indeterminate\" ? (\n <Minus className=\"size-3\" strokeWidth={3} />\n ) : (\n <Check className=\"size-3\" strokeWidth={3} />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import * as React from \"react\"\r\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\r\nimport { DayPicker, getDefaultClassNames, type DayButton } from \"react-day-picker\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nfunction Calendar({\r\n className,\r\n classNames,\r\n showOutsideDays = true,\r\n captionLayout = \"label\",\r\n components,\r\n ...props\r\n}: React.ComponentProps<typeof DayPicker>) {\r\n const defaultClassNames = getDefaultClassNames()\r\n\r\n return (\r\n <DayPicker\r\n showOutsideDays={showOutsideDays}\r\n className={cn(\r\n \"group/calendar bg-transparent p-0 [--cell-size:2.5rem]\",\r\n className\r\n )}\r\n captionLayout={captionLayout}\r\n classNames={{\r\n root: cn(\"w-full\", defaultClassNames.root),\r\n months: cn(\"relative flex flex-col gap-gp-2xl sm:flex-row sm:gap-gp-4xl\", defaultClassNames.months),\r\n month: cn(\"flex w-full flex-col gap-gp-2xl\", defaultClassNames.month),\r\n nav: cn(\r\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between\",\r\n defaultClassNames.nav\r\n ),\r\n button_previous: cn(\r\n \"inline-flex items-center justify-center size-[--cell-size] rounded-full text-fg-muted hover:bg-bg-muted transition-colors select-none aria-disabled:opacity-30\",\r\n defaultClassNames.button_previous\r\n ),\r\n button_next: cn(\r\n \"inline-flex items-center justify-center size-[--cell-size] rounded-full text-fg-muted hover:bg-bg-muted transition-colors select-none aria-disabled:opacity-30\",\r\n defaultClassNames.button_next\r\n ),\r\n month_caption: cn(\r\n \"flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]\",\r\n defaultClassNames.month_caption\r\n ),\r\n caption_label: cn(\r\n \"text-body-md font-medium font-semibold select-none\",\r\n captionLayout === \"dropdown\" ? \"hidden\" : \"\",\r\n defaultClassNames.caption_label\r\n ),\r\n dropdowns: cn(\r\n \"flex items-center gap-gp-md\",\r\n defaultClassNames.dropdowns\r\n ),\r\n dropdown: cn(\r\n \"cursor-pointer appearance-none bg-transparent text-body-md font-medium font-semibold text-fg-default outline-none\",\r\n defaultClassNames.dropdown\r\n ),\r\n months_dropdown: cn(\"\", defaultClassNames.months_dropdown),\r\n years_dropdown: cn(\"\", defaultClassNames.years_dropdown),\r\n table: \"w-full border-collapse\",\r\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\r\n weekday: cn(\r\n \"flex-1 min-w-8 max-w-12 text-body-sm font-normal text-fg-muted select-none text-center\",\r\n defaultClassNames.weekday\r\n ),\r\n week: cn(\"mt-gp-md flex w-full\", defaultClassNames.week),\r\n day: cn(\r\n // flex-1: cada dia ocupa 1/7 igual ao header de weekdays (que usa flex-1).\r\n // Sem isso o dia dimensionava por aspect-square e desalinhava das colunas.\r\n \"group/day relative flex-1 aspect-square min-w-8 max-w-12 p-0 text-center select-none\",\r\n defaultClassNames.day\r\n ),\r\n range_start: cn(\"rounded-l-full\", defaultClassNames.range_start),\r\n range_end: cn(\"rounded-r-full\", defaultClassNames.range_end),\r\n range_middle: cn(\"\", defaultClassNames.range_middle),\r\n today: cn(\"\", defaultClassNames.today),\r\n outside: cn(\r\n \"text-fg-subtle opacity-40\",\r\n defaultClassNames.outside\r\n ),\r\n disabled: cn(\"text-fg-disabled opacity-50\", defaultClassNames.disabled),\r\n hidden: cn(\"invisible\", defaultClassNames.hidden),\r\n ...classNames,\r\n }}\r\n components={{\r\n Root: ({ className: rootCn, rootRef, ...rootProps }) => (\r\n <div data-slot=\"calendar\" ref={rootRef} className={cn(rootCn)} {...rootProps} />\r\n ),\r\n Chevron: ({ orientation }) => {\r\n if (orientation === \"left\") return <ChevronLeftIcon className=\"size-4\" />\r\n return <ChevronRightIcon className=\"size-4\" />\r\n },\r\n DayButton: CalendarDayButton,\r\n ...components,\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction CalendarDayButton({\r\n className,\r\n day,\r\n modifiers,\r\n ...props\r\n}: React.ComponentProps<typeof DayButton>) {\r\n const ref = React.useRef<HTMLButtonElement>(null)\r\n React.useEffect(() => {\r\n if (modifiers.focused) ref.current?.focus()\r\n }, [modifiers.focused])\r\n\r\n const isRangeStart = modifiers.range_start;\r\n const isRangeEnd = modifiers.range_end;\r\n const isRangeMiddle = modifiers.range_middle;\r\n const isSingleSelected =\r\n modifiers.selected && !isRangeStart && !isRangeEnd && !isRangeMiddle;\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n data-selected-single={isSingleSelected}\r\n data-range-start={isRangeStart || undefined}\r\n data-range-end={isRangeEnd || undefined}\r\n data-range-middle={isRangeMiddle || undefined}\r\n className={cn(\r\n \"relative flex aspect-square w-full items-center justify-center text-body-md font-normal leading-none outline-none transition-colors\",\r\n\r\n // Default shape\r\n \"rounded-full\",\r\n\r\n // Hover\r\n \"hover:bg-bg-muted\",\r\n\r\n // Single selected\r\n \"data-[selected-single=true]:bg-bg-brand data-[selected-single=true]:text-fg-on-brand data-[selected-single=true]:hover:bg-bg-brand\",\r\n\r\n // Range start\r\n \"data-[range-start]:bg-bg-brand data-[range-start]:text-fg-on-brand data-[range-start]:rounded-full data-[range-start]:hover:bg-bg-brand\",\r\n\r\n // Range end\r\n \"data-[range-end]:bg-bg-brand data-[range-end]:text-fg-on-brand data-[range-end]:rounded-full data-[range-end]:hover:bg-bg-brand\",\r\n\r\n // Range middle\r\n \"data-[range-middle]:bg-bg-brand-subtle data-[range-middle]:text-fg-brand data-[range-middle]:rounded-none\",\r\n\r\n // Today\r\n modifiers.today && !isSingleSelected && !isRangeStart && !isRangeEnd && !isRangeMiddle &&\r\n \"bg-bg-brand text-fg-on-brand font-semibold hover:bg-bg-brand\",\r\n\r\n // Outside\r\n modifiers.outside && \"text-fg-subtle opacity-40 hover:bg-transparent\",\r\n\r\n // Disabled\r\n modifiers.disabled && \"opacity-30 pointer-events-none\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Calendar, CalendarDayButton }\r\n","import * as React from \"react\";\r\nimport {\r\n ChevronLeft,\r\n ChevronRight,\r\n ChevronsLeft,\r\n ChevronsRight,\r\n MoreHorizontal,\r\n} from \"lucide-react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * Pagination — primitives baixo nível pra paginação.\r\n *\r\n * Visual alinhado com `.tbl-footer-right` do design-and-table-v2:\r\n * - Nav buttons (« ‹ › »): 36×36 com border, radius-lg\r\n * - Pages container: bg-muted, radius-lg, padding 3px (segmented look)\r\n * - Page item: 30×30 transparente; active = bg-accent + shadow-sm + font-semibold\r\n *\r\n * Pra um wrapper \"one-shot\" com pageSize + range + nav → use <FooterTable>.\r\n */\r\n\r\n/* ── Root nav ────────────────────────────────────────────────────────── */\r\nconst Pagination = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"Paginação\"\r\n className={cn(\"inline-flex items-center gap-gp-xs\", className)}\r\n {...props}\r\n />\r\n);\r\nPagination.displayName = \"Pagination\";\r\n\r\n/* ── Content (container das page items — visual segmented) ──────────── */\r\nconst PaginationContent = React.forwardRef<\r\n HTMLUListElement,\r\n React.ComponentProps<\"ul\">\r\n>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex items-center gap-[2px]\",\r\n \"bg-bg-muted rounded-radius-lg p-[3px] mx-gp-sm h-form-md\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nPaginationContent.displayName = \"PaginationContent\";\r\n\r\n/* ── Item wrapper (li) ───────────────────────────────────────────────── */\r\nconst PaginationItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentProps<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"\", className)} {...props} />\r\n));\r\nPaginationItem.displayName = \"PaginationItem\";\r\n\r\n/* ── Link (número) — dentro do PaginationContent ──────────────────── */\r\nconst paginationLinkVariants = cva(\r\n [\r\n \"inline-flex items-center justify-center\",\r\n \"min-w-[30px] h-[30px] px-pad-md\",\r\n \"rounded-radius-md text-body-sm font-medium tabular-nums\",\r\n \"outline-none cursor-pointer transition-[background-color,color,box-shadow]\",\r\n \"focus-visible:shadow-sh-ring\",\r\n \"disabled:opacity-50 disabled:pointer-events-none\",\r\n ],\r\n {\r\n variants: {\r\n isActive: {\r\n true: \"bg-bg-accent text-fg-default font-semibold shadow-sh-sm\",\r\n false: \"bg-transparent text-fg-muted hover:text-fg-default\",\r\n },\r\n },\r\n defaultVariants: { isActive: false },\r\n },\r\n);\r\n\r\nexport type PaginationLinkProps = {\r\n isActive?: boolean;\r\n} & React.ButtonHTMLAttributes<HTMLButtonElement> &\r\n VariantProps<typeof paginationLinkVariants>;\r\n\r\nconst PaginationLink = React.forwardRef<\r\n HTMLButtonElement,\r\n PaginationLinkProps\r\n>(({ className, isActive, type = \"button\", ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-current={isActive ? \"page\" : undefined}\r\n className={cn(paginationLinkVariants({ isActive }), className)}\r\n {...props}\r\n />\r\n));\r\nPaginationLink.displayName = \"PaginationLink\";\r\n\r\n/* ── Nav buttons (« ‹ › ») — fora do Content, com border individual ── */\r\nconst paginationNavVariants = cva([\r\n \"inline-flex items-center justify-center shrink-0\",\r\n \"size-form-md rounded-radius-lg\",\r\n \"border border-border-default bg-transparent text-fg-default\",\r\n \"outline-none cursor-pointer transition-[background-color,color,opacity,border-color,box-shadow]\",\r\n \"hover:bg-bg-muted\",\r\n \"focus-visible:shadow-sh-ring\",\r\n \"disabled:opacity-35 disabled:pointer-events-none\",\r\n \"[&_svg]:size-4\",\r\n]);\r\n\r\ntype NavBtnProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\r\n\r\nconst PaginationPrevious = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Página anterior\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronLeft />\r\n </button>\r\n ),\r\n);\r\nPaginationPrevious.displayName = \"PaginationPrevious\";\r\n\r\nconst PaginationNext = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Próxima página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronRight />\r\n </button>\r\n ),\r\n);\r\nPaginationNext.displayName = \"PaginationNext\";\r\n\r\nconst PaginationFirst = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Primeira página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronsLeft />\r\n </button>\r\n ),\r\n);\r\nPaginationFirst.displayName = \"PaginationFirst\";\r\n\r\nconst PaginationLast = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Última página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronsRight />\r\n </button>\r\n ),\r\n);\r\nPaginationLast.displayName = \"PaginationLast\";\r\n\r\n/* ── Ellipsis ────────────────────────────────────────────────────────── */\r\nconst PaginationEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n aria-hidden=\"true\"\r\n className={cn(\r\n \"inline-flex items-center justify-center min-w-[22px] h-[30px]\",\r\n \"text-body-sm font-normal text-fg-muted tracking-wider select-none\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"size-4\" />\r\n </span>\r\n);\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\r\n\r\n/**\r\n * Helper — gera array de páginas com ellipsis.\r\n *\r\n * Regras:\r\n * - Total ≤ 7 páginas → mostra todas\r\n * - Senão → [1, 2, …, page-1, page, page+1, …, last-1, last]\r\n *\r\n * Retorna `number[]` com `\"ellipsis\"` como string nos gaps.\r\n *\r\n * Ex (page=5, total=20): [1, 2, \"ellipsis\", 4, 5, 6, \"ellipsis\", 19, 20]\r\n */\r\nexport function getPaginationRange(page: number, total: number): (number | \"ellipsis\")[] {\r\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\r\n const set = new Set([1, 2, total - 1, total, page - 1, page, page + 1]);\r\n const sorted = [...set]\r\n .filter((n) => n >= 1 && n <= total)\r\n .sort((a, b) => a - b);\r\n const out: (number | \"ellipsis\")[] = [];\r\n sorted.forEach((n, i) => {\r\n if (i > 0 && n - sorted[i - 1] > 1) out.push(\"ellipsis\");\r\n out.push(n);\r\n });\r\n return out;\r\n}\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationPrevious,\r\n PaginationNext,\r\n PaginationFirst,\r\n PaginationLast,\r\n PaginationEllipsis,\r\n paginationLinkVariants,\r\n paginationNavVariants,\r\n};\r\n","import * as React from \"react\"\r\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\r\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Select = SelectPrimitive.Root\r\n\r\nconst SelectGroup = SelectPrimitive.Group\r\n\r\nconst SelectValue = SelectPrimitive.Value\r\n\r\nexport type SelectTriggerState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\nconst SelectTrigger = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> & {\r\n state?: SelectTriggerState;\r\n }\r\n>(({ className, children, state = \"default\", ...props }, ref) => (\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex min-h-form-lg w-full items-center justify-between gap-gp-md\",\r\n \"rounded-radius-lg px-pad-xl\",\r\n \"bg-bg-input dark:bg-bg-muted\",\r\n \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\",\r\n \"border border-border-input\",\r\n \"text-body-sm font-normal text-fg-default\",\r\n \"transition-[color,box-shadow,background-color,border-color] outline-none\",\r\n \"data-[placeholder]:text-fg-muted data-[placeholder]:opacity-70\",\r\n state === \"default\" && \"focus-visible:border-border-brand data-[state=open]:border-border-brand focus-visible:shadow-sh-ring data-[state=open]:shadow-sh-ring\",\r\n state === \"error\" && \"border-border-danger-muted focus-visible:border-border-danger-muted data-[state=open]:border-border-danger-muted focus-visible:shadow-sh-ring-danger data-[state=open]:shadow-sh-ring-danger\",\r\n state === \"warning\" && \"border-border-warning-muted focus-visible:border-border-warning-muted data-[state=open]:border-border-warning-muted focus-visible:shadow-sh-ring-warning data-[state=open]:shadow-sh-ring-warning\",\r\n state === \"success\" && \"border-border-success-muted focus-visible:border-border-success-muted data-[state=open]:border-border-success-muted focus-visible:shadow-sh-ring-success data-[state=open]:shadow-sh-ring-success\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-bg-input dark:disabled:hover:bg-bg-muted\",\r\n \"[&>span]:line-clamp-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"size-4 text-fg-muted shrink-0\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n))\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\r\n\r\nconst SelectScrollUpButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollUpButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-pad-xs\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronUp className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollUpButton>\r\n))\r\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\r\n\r\nconst SelectScrollDownButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollDownButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-pad-xs\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronDown className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollDownButton>\r\n))\r\nSelectScrollDownButton.displayName =\r\n SelectPrimitive.ScrollDownButton.displayName\r\n\r\nconst SelectContent = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\r\n>(({ className, children, position = \"popper\", ...props }, ref) => (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden\",\r\n \"rounded-[12px] bg-bg-dropdown border border-border-default shadow-sh-lg outline-float\",\r\n \"before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150\",\r\n \"text-fg-default\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n \"origin-[--radix-select-content-transform-origin]\",\r\n position === \"popper\" &&\r\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\",\r\n className\r\n )}\r\n position={position}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.Viewport\r\n className={cn(\r\n \"p-pad-sm\",\r\n position === \"popper\" &&\r\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\r\n )}\r\n >\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n))\r\nSelectContent.displayName = SelectPrimitive.Content.displayName\r\n\r\nconst SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label\r\n ref={ref}\r\n className={cn(\"py-pad-sm pl-8 pr-2 text-body-md font-medium text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectLabel.displayName = SelectPrimitive.Label.displayName\r\n\r\nconst SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full cursor-default select-none items-center gap-pad-md\",\r\n \"rounded-radius-sm py-pad-md pl-8 pr-pad-lg\",\r\n \"text-body-sm font-medium text-fg-muted\",\r\n \"outline-none transition-colors\",\r\n \"focus:bg-bg-muted focus:text-fg-default\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n \"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-fg-muted\",\r\n \"focus:[&_svg]:text-fg-default\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n))\r\nSelectItem.displayName = SelectPrimitive.Item.displayName\r\n\r\nconst SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-border-default\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\r\n\r\nexport {\r\n Select,\r\n SelectGroup,\r\n SelectValue,\r\n SelectTrigger,\r\n SelectContent,\r\n SelectLabel,\r\n SelectItem,\r\n SelectSeparator,\r\n SelectScrollUpButton,\r\n SelectScrollDownButton,\r\n}\r\n","import * as React from \"react\"\r\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Sheet = SheetPrimitive.Root\r\n\r\nconst SheetTrigger = SheetPrimitive.Trigger\r\n\r\nconst SheetClose = SheetPrimitive.Close\r\n\r\nconst SheetPortal = SheetPrimitive.Portal\r\n\r\nconst SheetOverlay = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-overlay-scrim data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\r\n\r\nconst sheetVariants = cva(\r\n \"fixed z-50 bg-bg-surface dark:bg-bg-canvas text-fg-default shadow-sh-2xl ease-[cubic-bezier(0.4,0,0.2,1)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-[220ms] data-[state=open]:duration-[220ms] data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\r\n {\r\n variants: {\r\n side: {\r\n top: \"inset-x-0 top-0 border-b border-border-default data-[state=closed]:slide-out-to-top-12 data-[state=open]:slide-in-from-top-12\",\r\n bottom:\r\n \"inset-x-0 bottom-0 border-t border-border-default data-[state=closed]:slide-out-to-bottom-12 data-[state=open]:slide-in-from-bottom-12\",\r\n left: \"inset-y-0 left-0 h-full w-3/4 border-r border-border-default data-[state=closed]:slide-out-to-left-12 data-[state=open]:slide-in-from-left-12 sm:max-w-sm\",\r\n right:\r\n \"inset-y-0 right-0 h-full w-3/4 border-l border-border-default data-[state=closed]:slide-out-to-right-12 data-[state=open]:slide-in-from-right-12 sm:max-w-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n side: \"right\",\r\n },\r\n }\r\n)\r\n\r\ninterface SheetContentProps\r\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\r\n VariantProps<typeof sheetVariants> {\r\n /** Esconde o botão \"X\" (Close) no canto superior direito. Default: false. */\r\n hideClose?: boolean\r\n}\r\n\r\nconst SheetContent = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Content>,\r\n SheetContentProps\r\n>(({ side = \"right\", className, children, hideClose, ...props }, ref) => (\r\n <SheetPortal>\r\n <SheetOverlay />\r\n <SheetPrimitive.Content\r\n ref={ref}\r\n className={cn(sheetVariants({ side }), className)}\r\n {...props}\r\n >\r\n {children}\r\n {!hideClose && (\r\n <SheetPrimitive.Close className=\"absolute right-pad-2xl top-pad-2xl rounded-radius-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary disabled:pointer-events-none data-[state=open]:bg-bg-muted text-fg-muted\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </SheetPrimitive.Close>\r\n )}\r\n </SheetPrimitive.Content>\r\n </SheetPortal>\r\n))\r\nSheetContent.displayName = SheetPrimitive.Content.displayName\r\n\r\nconst SheetHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col gap-gp-sm text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetHeader.displayName = \"SheetHeader\"\r\n\r\nconst SheetFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse gap-gp-md sm:flex-row sm:justify-end\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetFooter.displayName = \"SheetFooter\"\r\n\r\nconst SheetTitle = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-body-lg font-medium font-semibold text-fg-default\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetTitle.displayName = SheetPrimitive.Title.displayName\r\n\r\nconst SheetDescription = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-body-md text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetDescription.displayName = SheetPrimitive.Description.displayName\r\n\r\nexport {\r\n Sheet,\r\n SheetPortal,\r\n SheetOverlay,\r\n SheetTrigger,\r\n SheetClose,\r\n SheetContent,\r\n SheetHeader,\r\n SheetFooter,\r\n SheetTitle,\r\n SheetDescription,\r\n}\r\n","import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Switch — alinhado com `.tbl-toggle` do design-and-table-v2.\n *\n * Specs:\n * - Track: 42x24, radius-full\n * - off light: bg-emphasis (gray[100] — visível em fundo branco)\n * - off dark: bg-accent (alpha branco 12% — visível em fundo escuro)\n * - on: bg-brand\n * - Thumb: 20x20, white com shadow, transform 0.18s\n * - Focus: shadow-sh-ring (brand glow)\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 relative inline-flex h-[24px] w-[42px] shrink-0 cursor-pointer items-center\",\n \"rounded-radius-full\",\n \"transition-[background-color,box-shadow] duration-150 outline-none\",\n \"data-[state=unchecked]:bg-bg-emphasis dark:data-[state=unchecked]:bg-bg-accent\",\n \"data-[state=checked]:bg-bg-brand\",\n \"focus-visible:shadow-sh-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block size-[20px] rounded-radius-full bg-white\",\n \"shadow-[0_1px_2px_rgba(0,0,0,0.10)]\",\n \"transition-transform duration-[180ms] ease-[cubic-bezier(0.4,0,0.2,1)]\",\n \"data-[state=unchecked]:translate-x-[2px]\",\n \"data-[state=checked]:translate-x-[20px]\"\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * Textarea — alinhado com `.tbl-form-textarea` do design-and-table-v2.\r\n *\r\n * Specs:\r\n * - min-h: 100px, padding: 10px 12px, radius: 10px\r\n * - bg-input (light) / dark:bg-bg-muted, border-input 1px\r\n * - font: 13px, line-height: 1.5, resize vertical\r\n * - focus: border-brand + shadow-sh-ring\r\n *\r\n * Features: state prop (default | error | warning | success) pra feedback visual.\r\n */\r\n\r\nexport type TextareaState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\nconst textareaVariants = cva(\r\n [\r\n \"flex min-h-[100px] w-full resize-y\",\r\n \"bg-bg-input dark:bg-bg-muted\",\r\n \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\",\r\n \"border border-border-input rounded-radius-lg\",\r\n \"px-pad-xl py-pad-lg\",\r\n \"text-body-sm font-normal leading-[1.5] text-fg-default\",\r\n \"placeholder:text-fg-muted placeholder:opacity-70\",\r\n \"transition-[color,box-shadow,background-color,border-color] outline-none\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-bg-input dark:disabled:hover:bg-bg-muted\",\r\n ],\r\n {\r\n variants: {\r\n state: {\r\n default: \"focus-visible:border-border-brand focus-visible:shadow-sh-ring\",\r\n error: \"border-border-danger-muted focus-visible:border-border-danger-muted focus-visible:shadow-sh-ring-danger\",\r\n warning: \"border-border-warning-muted focus-visible:border-border-warning-muted focus-visible:shadow-sh-ring-warning\",\r\n success: \"border-border-success-muted focus-visible:border-border-success-muted focus-visible:shadow-sh-ring-success\",\r\n },\r\n },\r\n defaultVariants: {\r\n state: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport interface TextareaProps\r\n extends React.ComponentProps<\"textarea\">,\r\n VariantProps<typeof textareaVariants> {}\r\n\r\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, state, ...props }, ref) => {\r\n return (\r\n <textarea\r\n className={cn(textareaVariants({ state }), className)}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nTextarea.displayName = \"Textarea\"\r\n\r\nexport { Textarea, textareaVariants }\r\n"],"names":["AlertDialogPrimitive","React","jsx","cn","jsxs","CheckboxPrimitive","Minus","Check","getDefaultClassNames","DayPicker","ChevronLeftIcon","ChevronRightIcon","cva","ChevronLeft","ChevronRight","ChevronsLeft","ChevronsRight","MoreHorizontal","SelectPrimitive","ChevronDown","ChevronUp","SheetPrimitive","X","SwitchPrimitives"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"textarea-C1QmGVPr.mjs","sources":["../../src/components/shadcn/alert-dialog.tsx","../../src/components/shadcn/checkbox.tsx","../../src/components/shadcn/calendar.tsx","../../src/components/shadcn/pagination.tsx","../../src/components/shadcn/select.tsx","../../src/components/shadcn/sheet.tsx","../../src/components/shadcn/switch.tsx","../../src/components/shadcn/textarea.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * AlertDialog — variante do Dialog pra confirmação destrutiva/crítica.\r\n *\r\n * Diferenças vs. Dialog:\r\n * - role=\"alertdialog\" (assistive tech anuncia diferente)\r\n * - Foco vai pro botão `Cancel` (mais seguro como ação default)\r\n * - Não fecha ao clicar fora ou apertar ESC (decisão forçada)\r\n *\r\n * Estilo alinhado com `.tbl-confirm-dialog` do sandbox: 420px, body 32/28/24,\r\n * radius-2xl, shadow-2xl, outline halo, ícone 56x56 com bg-tone-muted.\r\n *\r\n * Pra um wrapper \"one-shot\" com tone + ícone + botões → use <AlertModal>.\r\n */\r\n\r\nconst AlertDialog = AlertDialogPrimitive.Root;\r\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\r\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\r\n\r\nconst AlertDialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/30 supports-[backdrop-filter]:backdrop-blur-sm\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\r\n\r\nconst AlertDialogContent = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPortal>\r\n <AlertDialogOverlay />\r\n <AlertDialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] sm:max-w-[420px]\",\r\n \"translate-x-[-50%] translate-y-[-50%]\",\r\n \"rounded-radius-2xl bg-bg-surface text-fg-default\",\r\n \"border border-border-default shadow-sh-2xl outline-float\",\r\n \"duration-200\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </AlertDialogPortal>\r\n));\r\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\r\n\r\nconst AlertDialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center text-center gap-gp-lg\",\r\n \"px-pad-4xl pt-[32px] pb-pad-3xl\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\r\n\r\nconst AlertDialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n // Mobile: empilha vertical, confirm em cima (flex-col-reverse põe Cancel embaixo)\r\n // sm+: lado a lado horizontal\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse items-stretch gap-gp-md sm:flex-row\",\r\n \"px-pad-3xl pb-pad-3xl\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\r\n\r\nconst AlertDialogTitle = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-body-xl font-bold tracking-[-0.01em] text-fg-default leading-tight\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\r\n\r\nconst AlertDialogDescription = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\r\n \"text-body-sm font-normal leading-[1.5] text-fg-muted max-w-[340px]\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogDescription.displayName =\r\n AlertDialogPrimitive.Description.displayName;\r\n\r\nconst AlertDialogAction = AlertDialogPrimitive.Action;\r\nconst AlertDialogCancel = AlertDialogPrimitive.Cancel;\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogTrigger,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n};\r\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check, Minus } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Checkbox — alinhado com `.tbl-checkbox` do design-and-table-v2.\n *\n * Specs:\n * - 16x16, border 1.5px border-input, radius 4px (radius-xs)\n * - bg-input (light) / dark:bg-bg-muted\n * - hover: border-default (mais visível)\n * - checked/indeterminate: bg-brand + border-brand\n * - check icon: branco (fg-on-brand)\n * - focus: shadow-sh-ring (brand glow)\n */\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer relative flex size-4 shrink-0 items-center justify-center cursor-pointer\",\n \"rounded-radius-xs\",\n \"bg-bg-input dark:bg-bg-muted\",\n \"border-[1.5px] border-border-input\",\n \"transition-[background-color,border-color,box-shadow] outline-none\",\n \"hover:border-border-default\",\n \"focus-visible:shadow-sh-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-bg-brand data-[state=checked]:border-border-brand\",\n \"data-[state=indeterminate]:bg-bg-brand data-[state=indeterminate]:border-border-brand\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"grid place-content-center text-fg-on-brand\")}\n >\n {props.checked === \"indeterminate\" ? (\n <Minus className=\"size-3\" strokeWidth={3} />\n ) : (\n <Check className=\"size-3\" strokeWidth={3} />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import * as React from \"react\"\r\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\r\nimport { DayPicker, getDefaultClassNames, type DayButton } from \"react-day-picker\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nfunction Calendar({\r\n className,\r\n classNames,\r\n showOutsideDays = true,\r\n captionLayout = \"label\",\r\n components,\r\n ...props\r\n}: React.ComponentProps<typeof DayPicker>) {\r\n const defaultClassNames = getDefaultClassNames()\r\n\r\n return (\r\n <DayPicker\r\n showOutsideDays={showOutsideDays}\r\n className={cn(\r\n \"group/calendar bg-transparent p-0 [--cell-size:2.5rem]\",\r\n className\r\n )}\r\n captionLayout={captionLayout}\r\n classNames={{\r\n root: cn(\"w-full\", defaultClassNames.root),\r\n months: cn(\"relative flex flex-col gap-gp-2xl sm:flex-row sm:gap-gp-4xl\", defaultClassNames.months),\r\n month: cn(\"flex w-full flex-col gap-gp-2xl\", defaultClassNames.month),\r\n nav: cn(\r\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between\",\r\n defaultClassNames.nav\r\n ),\r\n button_previous: cn(\r\n \"inline-flex items-center justify-center size-[--cell-size] rounded-full text-fg-muted hover:bg-bg-muted transition-colors select-none aria-disabled:opacity-30\",\r\n defaultClassNames.button_previous\r\n ),\r\n button_next: cn(\r\n \"inline-flex items-center justify-center size-[--cell-size] rounded-full text-fg-muted hover:bg-bg-muted transition-colors select-none aria-disabled:opacity-30\",\r\n defaultClassNames.button_next\r\n ),\r\n month_caption: cn(\r\n \"flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]\",\r\n defaultClassNames.month_caption\r\n ),\r\n caption_label: cn(\r\n \"text-body-md font-medium font-semibold select-none\",\r\n captionLayout === \"dropdown\" ? \"hidden\" : \"\",\r\n defaultClassNames.caption_label\r\n ),\r\n dropdowns: cn(\r\n \"flex items-center gap-gp-md\",\r\n defaultClassNames.dropdowns\r\n ),\r\n dropdown: cn(\r\n \"cursor-pointer appearance-none bg-transparent text-body-md font-medium font-semibold text-fg-default outline-none\",\r\n defaultClassNames.dropdown\r\n ),\r\n months_dropdown: cn(\"\", defaultClassNames.months_dropdown),\r\n years_dropdown: cn(\"\", defaultClassNames.years_dropdown),\r\n table: \"w-full border-collapse\",\r\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\r\n weekday: cn(\r\n \"flex-1 min-w-8 max-w-12 text-body-sm font-normal text-fg-muted select-none text-center\",\r\n defaultClassNames.weekday\r\n ),\r\n week: cn(\"mt-gp-md flex w-full\", defaultClassNames.week),\r\n day: cn(\r\n // flex-1: cada dia ocupa 1/7 igual ao header de weekdays (que usa flex-1).\r\n // Sem isso o dia dimensionava por aspect-square e desalinhava das colunas.\r\n \"group/day relative flex-1 aspect-square min-w-8 max-w-12 p-0 text-center select-none\",\r\n defaultClassNames.day\r\n ),\r\n range_start: cn(\"rounded-l-full\", defaultClassNames.range_start),\r\n range_end: cn(\"rounded-r-full\", defaultClassNames.range_end),\r\n range_middle: cn(\"\", defaultClassNames.range_middle),\r\n today: cn(\"\", defaultClassNames.today),\r\n outside: cn(\r\n \"text-fg-subtle opacity-40\",\r\n defaultClassNames.outside\r\n ),\r\n disabled: cn(\"text-fg-disabled opacity-50\", defaultClassNames.disabled),\r\n hidden: cn(\"invisible\", defaultClassNames.hidden),\r\n ...classNames,\r\n }}\r\n components={{\r\n Root: ({ className: rootCn, rootRef, ...rootProps }) => (\r\n <div data-slot=\"calendar\" ref={rootRef} className={cn(rootCn)} {...rootProps} />\r\n ),\r\n Chevron: ({ orientation }) => {\r\n if (orientation === \"left\") return <ChevronLeftIcon className=\"size-4\" />\r\n return <ChevronRightIcon className=\"size-4\" />\r\n },\r\n DayButton: CalendarDayButton,\r\n ...components,\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction CalendarDayButton({\r\n className,\r\n day,\r\n modifiers,\r\n ...props\r\n}: React.ComponentProps<typeof DayButton>) {\r\n const ref = React.useRef<HTMLButtonElement>(null)\r\n React.useEffect(() => {\r\n if (modifiers.focused) ref.current?.focus()\r\n }, [modifiers.focused])\r\n\r\n const isRangeStart = modifiers.range_start;\r\n const isRangeEnd = modifiers.range_end;\r\n const isRangeMiddle = modifiers.range_middle;\r\n const isSingleSelected =\r\n modifiers.selected && !isRangeStart && !isRangeEnd && !isRangeMiddle;\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n data-selected-single={isSingleSelected}\r\n data-range-start={isRangeStart || undefined}\r\n data-range-end={isRangeEnd || undefined}\r\n data-range-middle={isRangeMiddle || undefined}\r\n className={cn(\r\n \"relative flex aspect-square w-full items-center justify-center text-body-md font-normal leading-none outline-none transition-colors\",\r\n\r\n // Default shape\r\n \"rounded-full\",\r\n\r\n // Hover\r\n \"hover:bg-bg-muted\",\r\n\r\n // Single selected\r\n \"data-[selected-single=true]:bg-bg-brand data-[selected-single=true]:text-fg-on-brand data-[selected-single=true]:hover:bg-bg-brand\",\r\n\r\n // Range start\r\n \"data-[range-start]:bg-bg-brand data-[range-start]:text-fg-on-brand data-[range-start]:rounded-full data-[range-start]:hover:bg-bg-brand\",\r\n\r\n // Range end\r\n \"data-[range-end]:bg-bg-brand data-[range-end]:text-fg-on-brand data-[range-end]:rounded-full data-[range-end]:hover:bg-bg-brand\",\r\n\r\n // Range middle\r\n \"data-[range-middle]:bg-bg-brand-subtle data-[range-middle]:text-fg-brand data-[range-middle]:rounded-none\",\r\n\r\n // Today\r\n modifiers.today && !isSingleSelected && !isRangeStart && !isRangeEnd && !isRangeMiddle &&\r\n \"bg-bg-brand text-fg-on-brand font-semibold hover:bg-bg-brand\",\r\n\r\n // Outside\r\n modifiers.outside && \"text-fg-subtle opacity-40 hover:bg-transparent\",\r\n\r\n // Disabled\r\n modifiers.disabled && \"opacity-30 pointer-events-none\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Calendar, CalendarDayButton }\r\n","import * as React from \"react\";\r\nimport {\r\n ChevronLeft,\r\n ChevronRight,\r\n ChevronsLeft,\r\n ChevronsRight,\r\n MoreHorizontal,\r\n} from \"lucide-react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * Pagination — primitives baixo nível pra paginação.\r\n *\r\n * Visual alinhado com `.tbl-footer-right` do design-and-table-v2:\r\n * - Nav buttons (« ‹ › »): 36×36 com border, radius-lg\r\n * - Pages container: bg-muted, radius-lg, padding 3px (segmented look)\r\n * - Page item: 30×30 transparente; active = bg-accent + shadow-sm + font-semibold\r\n *\r\n * Pra um wrapper \"one-shot\" com pageSize + range + nav → use <FooterTable>.\r\n */\r\n\r\n/* ── Root nav ────────────────────────────────────────────────────────── */\r\nconst Pagination = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"Paginação\"\r\n className={cn(\"inline-flex items-center gap-gp-xs\", className)}\r\n {...props}\r\n />\r\n);\r\nPagination.displayName = \"Pagination\";\r\n\r\n/* ── Content (container das page items — visual segmented) ──────────── */\r\nconst PaginationContent = React.forwardRef<\r\n HTMLUListElement,\r\n React.ComponentProps<\"ul\">\r\n>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex items-center gap-[2px]\",\r\n \"bg-bg-muted rounded-radius-lg p-[3px] mx-gp-sm h-form-md\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nPaginationContent.displayName = \"PaginationContent\";\r\n\r\n/* ── Item wrapper (li) ───────────────────────────────────────────────── */\r\nconst PaginationItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentProps<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"\", className)} {...props} />\r\n));\r\nPaginationItem.displayName = \"PaginationItem\";\r\n\r\n/* ── Link (número) — dentro do PaginationContent ──────────────────── */\r\nconst paginationLinkVariants = cva(\r\n [\r\n \"inline-flex items-center justify-center\",\r\n \"min-w-[30px] h-[30px] px-pad-md\",\r\n \"rounded-radius-md text-body-sm font-medium tabular-nums\",\r\n \"outline-none cursor-pointer transition-[background-color,color,box-shadow]\",\r\n \"focus-visible:shadow-sh-ring\",\r\n \"disabled:opacity-50 disabled:pointer-events-none\",\r\n ],\r\n {\r\n variants: {\r\n isActive: {\r\n true: \"bg-bg-accent text-fg-default font-semibold shadow-sh-sm\",\r\n false: \"bg-transparent text-fg-muted hover:text-fg-default\",\r\n },\r\n },\r\n defaultVariants: { isActive: false },\r\n },\r\n);\r\n\r\nexport type PaginationLinkProps = {\r\n isActive?: boolean;\r\n} & React.ButtonHTMLAttributes<HTMLButtonElement> &\r\n VariantProps<typeof paginationLinkVariants>;\r\n\r\nconst PaginationLink = React.forwardRef<\r\n HTMLButtonElement,\r\n PaginationLinkProps\r\n>(({ className, isActive, type = \"button\", ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-current={isActive ? \"page\" : undefined}\r\n className={cn(paginationLinkVariants({ isActive }), className)}\r\n {...props}\r\n />\r\n));\r\nPaginationLink.displayName = \"PaginationLink\";\r\n\r\n/* ── Nav buttons (« ‹ › ») — fora do Content, com border individual ── */\r\nconst paginationNavVariants = cva([\r\n \"inline-flex items-center justify-center shrink-0\",\r\n \"size-form-md rounded-radius-lg\",\r\n \"border border-border-default bg-transparent text-fg-default\",\r\n \"outline-none cursor-pointer transition-[background-color,color,opacity,border-color,box-shadow]\",\r\n \"hover:bg-bg-muted\",\r\n \"focus-visible:shadow-sh-ring\",\r\n \"disabled:opacity-35 disabled:pointer-events-none\",\r\n \"[&_svg]:size-4\",\r\n]);\r\n\r\ntype NavBtnProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\r\n\r\nconst PaginationPrevious = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Página anterior\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronLeft />\r\n </button>\r\n ),\r\n);\r\nPaginationPrevious.displayName = \"PaginationPrevious\";\r\n\r\nconst PaginationNext = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Próxima página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronRight />\r\n </button>\r\n ),\r\n);\r\nPaginationNext.displayName = \"PaginationNext\";\r\n\r\nconst PaginationFirst = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Primeira página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronsLeft />\r\n </button>\r\n ),\r\n);\r\nPaginationFirst.displayName = \"PaginationFirst\";\r\n\r\nconst PaginationLast = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Última página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronsRight />\r\n </button>\r\n ),\r\n);\r\nPaginationLast.displayName = \"PaginationLast\";\r\n\r\n/* ── Ellipsis ────────────────────────────────────────────────────────── */\r\nconst PaginationEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n aria-hidden=\"true\"\r\n className={cn(\r\n \"inline-flex items-center justify-center min-w-[22px] h-[30px]\",\r\n \"text-body-sm font-normal text-fg-muted tracking-wider select-none\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"size-4\" />\r\n </span>\r\n);\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\r\n\r\n/**\r\n * Helper — gera array de páginas com ellipsis.\r\n *\r\n * Regras:\r\n * - Total ≤ 7 páginas → mostra todas\r\n * - Senão → [1, 2, …, page-1, page, page+1, …, last-1, last]\r\n *\r\n * Retorna `number[]` com `\"ellipsis\"` como string nos gaps.\r\n *\r\n * Ex (page=5, total=20): [1, 2, \"ellipsis\", 4, 5, 6, \"ellipsis\", 19, 20]\r\n */\r\nexport function getPaginationRange(page: number, total: number): (number | \"ellipsis\")[] {\r\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\r\n const set = new Set([1, 2, total - 1, total, page - 1, page, page + 1]);\r\n const sorted = [...set]\r\n .filter((n) => n >= 1 && n <= total)\r\n .sort((a, b) => a - b);\r\n const out: (number | \"ellipsis\")[] = [];\r\n sorted.forEach((n, i) => {\r\n if (i > 0 && n - sorted[i - 1] > 1) out.push(\"ellipsis\");\r\n out.push(n);\r\n });\r\n return out;\r\n}\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationPrevious,\r\n PaginationNext,\r\n PaginationFirst,\r\n PaginationLast,\r\n PaginationEllipsis,\r\n paginationLinkVariants,\r\n paginationNavVariants,\r\n};\r\n","import * as React from \"react\"\r\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\r\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Select = SelectPrimitive.Root\r\n\r\nconst SelectGroup = SelectPrimitive.Group\r\n\r\nconst SelectValue = SelectPrimitive.Value\r\n\r\nexport type SelectTriggerState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\nconst SelectTrigger = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> & {\r\n state?: SelectTriggerState;\r\n }\r\n>(({ className, children, state = \"default\", ...props }, ref) => (\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex min-h-form-lg w-full items-center justify-between gap-gp-md\",\r\n \"rounded-radius-lg px-pad-xl\",\r\n \"bg-bg-input dark:bg-bg-muted\",\r\n \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\",\r\n \"border border-border-input\",\r\n \"text-body-sm font-normal text-fg-default\",\r\n \"transition-[color,box-shadow,background-color,border-color] outline-none\",\r\n \"data-[placeholder]:text-fg-muted data-[placeholder]:opacity-70\",\r\n state === \"default\" && \"focus-visible:border-border-brand data-[state=open]:border-border-brand focus-visible:shadow-sh-ring data-[state=open]:shadow-sh-ring\",\r\n state === \"error\" && \"border-border-danger-muted focus-visible:border-border-danger-muted data-[state=open]:border-border-danger-muted focus-visible:shadow-sh-ring-danger data-[state=open]:shadow-sh-ring-danger\",\r\n state === \"warning\" && \"border-border-warning-muted focus-visible:border-border-warning-muted data-[state=open]:border-border-warning-muted focus-visible:shadow-sh-ring-warning data-[state=open]:shadow-sh-ring-warning\",\r\n state === \"success\" && \"border-border-success-muted focus-visible:border-border-success-muted data-[state=open]:border-border-success-muted focus-visible:shadow-sh-ring-success data-[state=open]:shadow-sh-ring-success\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-bg-input dark:disabled:hover:bg-bg-muted\",\r\n \"[&>span]:line-clamp-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"size-4 text-fg-muted shrink-0\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n))\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\r\n\r\nconst SelectScrollUpButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollUpButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-pad-xs\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronUp className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollUpButton>\r\n))\r\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\r\n\r\nconst SelectScrollDownButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollDownButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-pad-xs\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronDown className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollDownButton>\r\n))\r\nSelectScrollDownButton.displayName =\r\n SelectPrimitive.ScrollDownButton.displayName\r\n\r\nconst SelectContent = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\r\n>(({ className, children, position = \"popper\", ...props }, ref) => (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden\",\r\n \"rounded-[12px] bg-bg-dropdown border border-border-default shadow-sh-lg outline-float\",\r\n \"before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150\",\r\n \"text-fg-default\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n \"origin-[--radix-select-content-transform-origin]\",\r\n position === \"popper\" &&\r\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\",\r\n className\r\n )}\r\n position={position}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.Viewport\r\n className={cn(\r\n \"p-pad-sm\",\r\n position === \"popper\" &&\r\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\r\n )}\r\n >\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n))\r\nSelectContent.displayName = SelectPrimitive.Content.displayName\r\n\r\nconst SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label\r\n ref={ref}\r\n className={cn(\"py-pad-sm pl-8 pr-2 text-body-md font-medium text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectLabel.displayName = SelectPrimitive.Label.displayName\r\n\r\nconst SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full cursor-default select-none items-center gap-pad-md\",\r\n \"rounded-radius-sm py-pad-md pl-8 pr-pad-lg\",\r\n \"text-body-sm font-medium text-fg-muted\",\r\n \"outline-none transition-colors\",\r\n \"focus:bg-bg-muted focus:text-fg-default\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n \"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-fg-muted\",\r\n \"focus:[&_svg]:text-fg-default\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n))\r\nSelectItem.displayName = SelectPrimitive.Item.displayName\r\n\r\nconst SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-border-default\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\r\n\r\nexport {\r\n Select,\r\n SelectGroup,\r\n SelectValue,\r\n SelectTrigger,\r\n SelectContent,\r\n SelectLabel,\r\n SelectItem,\r\n SelectSeparator,\r\n SelectScrollUpButton,\r\n SelectScrollDownButton,\r\n}\r\n","import * as React from \"react\"\r\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Sheet = SheetPrimitive.Root\r\n\r\nconst SheetTrigger = SheetPrimitive.Trigger\r\n\r\nconst SheetClose = SheetPrimitive.Close\r\n\r\nconst SheetPortal = SheetPrimitive.Portal\r\n\r\nconst SheetOverlay = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-overlay-scrim data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\r\n\r\nconst sheetVariants = cva(\r\n \"fixed z-50 bg-bg-surface dark:bg-bg-canvas text-fg-default shadow-sh-2xl ease-[cubic-bezier(0.4,0,0.2,1)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-[220ms] data-[state=open]:duration-[220ms] data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\r\n {\r\n variants: {\r\n side: {\r\n top: \"inset-x-0 top-0 border-b border-border-default data-[state=closed]:slide-out-to-top-12 data-[state=open]:slide-in-from-top-12\",\r\n bottom:\r\n \"inset-x-0 bottom-0 border-t border-border-default data-[state=closed]:slide-out-to-bottom-12 data-[state=open]:slide-in-from-bottom-12\",\r\n left: \"inset-y-0 left-0 h-full w-3/4 border-r border-border-default data-[state=closed]:slide-out-to-left-12 data-[state=open]:slide-in-from-left-12 sm:max-w-sm\",\r\n right:\r\n \"inset-y-0 right-0 h-full w-3/4 border-l border-border-default data-[state=closed]:slide-out-to-right-12 data-[state=open]:slide-in-from-right-12 sm:max-w-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n side: \"right\",\r\n },\r\n }\r\n)\r\n\r\ninterface SheetContentProps\r\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\r\n VariantProps<typeof sheetVariants> {\r\n /** Esconde o botão \"X\" (Close) no canto superior direito. Default: false. */\r\n hideClose?: boolean\r\n}\r\n\r\nconst SheetContent = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Content>,\r\n SheetContentProps\r\n>(({ side = \"right\", className, children, hideClose, ...props }, ref) => (\r\n <SheetPortal>\r\n <SheetOverlay />\r\n <SheetPrimitive.Content\r\n ref={ref}\r\n className={cn(sheetVariants({ side }), className)}\r\n {...props}\r\n >\r\n {children}\r\n {!hideClose && (\r\n <SheetPrimitive.Close className=\"absolute right-pad-2xl top-pad-2xl rounded-radius-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary disabled:pointer-events-none data-[state=open]:bg-bg-muted text-fg-muted\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </SheetPrimitive.Close>\r\n )}\r\n </SheetPrimitive.Content>\r\n </SheetPortal>\r\n))\r\nSheetContent.displayName = SheetPrimitive.Content.displayName\r\n\r\nconst SheetHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col gap-gp-sm text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetHeader.displayName = \"SheetHeader\"\r\n\r\nconst SheetFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse gap-gp-md sm:flex-row sm:justify-end\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetFooter.displayName = \"SheetFooter\"\r\n\r\nconst SheetTitle = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-body-lg font-medium font-semibold text-fg-default\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetTitle.displayName = SheetPrimitive.Title.displayName\r\n\r\nconst SheetDescription = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-body-md text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetDescription.displayName = SheetPrimitive.Description.displayName\r\n\r\nexport {\r\n Sheet,\r\n SheetPortal,\r\n SheetOverlay,\r\n SheetTrigger,\r\n SheetClose,\r\n SheetContent,\r\n SheetHeader,\r\n SheetFooter,\r\n SheetTitle,\r\n SheetDescription,\r\n}\r\n","import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Switch — alinhado com `.tbl-toggle` do design-and-table-v2.\n *\n * Specs:\n * - Track: 42x24, radius-full\n * - off light: bg-emphasis (gray[100] — visível em fundo branco)\n * - off dark: bg-accent (alpha branco 12% — visível em fundo escuro)\n * - on: bg-brand\n * - Thumb: 20x20, white com shadow, transform 0.18s\n * - Focus: shadow-sh-ring (brand glow)\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 relative inline-flex h-[24px] w-[42px] shrink-0 cursor-pointer items-center\",\n \"rounded-radius-full\",\n \"transition-[background-color,box-shadow] duration-150 outline-none\",\n \"data-[state=unchecked]:bg-bg-emphasis dark:data-[state=unchecked]:bg-bg-accent\",\n \"data-[state=checked]:bg-bg-brand\",\n \"focus-visible:shadow-sh-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block size-[20px] rounded-radius-full bg-white\",\n \"shadow-[0_1px_2px_rgba(0,0,0,0.10)]\",\n \"transition-transform duration-[180ms] ease-[cubic-bezier(0.4,0,0.2,1)]\",\n \"data-[state=unchecked]:translate-x-[2px]\",\n \"data-[state=checked]:translate-x-[20px]\"\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * Textarea — alinhado com `.tbl-form-textarea` do design-and-table-v2.\r\n *\r\n * Specs:\r\n * - min-h: 100px, padding: 10px 12px, radius: 10px\r\n * - bg-input (light) / dark:bg-bg-muted, border-input 1px\r\n * - font: 13px, line-height: 1.5, resize vertical\r\n * - focus: border-brand + shadow-sh-ring\r\n *\r\n * Features: state prop (default | error | warning | success) pra feedback visual.\r\n */\r\n\r\nexport type TextareaState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\nconst textareaVariants = cva(\r\n [\r\n \"flex min-h-[100px] w-full resize-y\",\r\n \"bg-bg-input dark:bg-bg-muted\",\r\n \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\",\r\n \"border border-border-input rounded-radius-lg\",\r\n \"px-pad-xl py-pad-lg\",\r\n \"text-body-sm font-normal leading-[1.5] text-fg-default\",\r\n \"placeholder:text-fg-muted placeholder:opacity-70\",\r\n \"transition-[color,box-shadow,background-color,border-color] outline-none\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-bg-input dark:disabled:hover:bg-bg-muted\",\r\n ],\r\n {\r\n variants: {\r\n state: {\r\n default: \"focus-visible:border-border-brand focus-visible:shadow-sh-ring\",\r\n error: \"border-border-danger-muted focus-visible:border-border-danger-muted focus-visible:shadow-sh-ring-danger\",\r\n warning: \"border-border-warning-muted focus-visible:border-border-warning-muted focus-visible:shadow-sh-ring-warning\",\r\n success: \"border-border-success-muted focus-visible:border-border-success-muted focus-visible:shadow-sh-ring-success\",\r\n },\r\n },\r\n defaultVariants: {\r\n state: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport interface TextareaProps\r\n extends React.ComponentProps<\"textarea\">,\r\n VariantProps<typeof textareaVariants> {}\r\n\r\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, state, ...props }, ref) => {\r\n return (\r\n <textarea\r\n className={cn(textareaVariants({ state }), className)}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nTextarea.displayName = \"Textarea\"\r\n\r\nexport { Textarea, textareaVariants }\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"textarea-C1QmGVPr.mjs","sources":["../../src/components/shadcn/alert-dialog.tsx","../../src/components/shadcn/checkbox.tsx","../../src/components/shadcn/calendar.tsx","../../src/components/shadcn/pagination.tsx","../../src/components/shadcn/select.tsx","../../src/components/shadcn/sheet.tsx","../../src/components/shadcn/switch.tsx","../../src/components/shadcn/textarea.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * AlertDialog — variante do Dialog pra confirmação destrutiva/crítica.\r\n *\r\n * Diferenças vs. Dialog, TODAS medidas no browser (2026-08-13) e não deduzidas:\r\n * - `role=\"alertdialog\"` (assistive tech anuncia diferente) ✔ confirmado\r\n * - Foco inicial no botão `Cancel`, que é o default seguro ✔ confirmado\r\n * - **Não fecha ao clicar fora** ✔ confirmado — e o Dialog comum, no MESMO teste,\r\n * fecha. A diferença é real.\r\n *\r\n * ⚠️ **ESC FECHA.** Este bloco afirmava \"não fecha ao clicar fora ou apertar ESC\"; a\r\n * segunda metade era falsa. O Radix trata as duas coisas em canais separados: o\r\n * pointer-down externo o AlertDialog bloqueia, o ESC não. Quem precisasse de uma decisão\r\n * inescapável (o caso que a frase prometia cobrir) sairia daqui acreditando estar\r\n * protegido. Pra travar de verdade, no consumidor:\r\n *\r\n * <AlertDialogContent onEscapeKeyDown={(e) => e.preventDefault()}>\r\n *\r\n * Estilo alinhado com `.tbl-confirm-dialog` do sandbox: 420px, body 32/28/24,\r\n * radius-2xl, shadow-2xl, outline halo, ícone 56x56 com bg-tone-muted.\r\n *\r\n * Pra um wrapper \"one-shot\" com tone + ícone + botões → use <AlertModal>. Doc e a\r\n * comparação dos três (AlertModal / AlertDialog / Dialog): página `#/alert-dialog`.\r\n */\r\n\r\nconst AlertDialog = AlertDialogPrimitive.Root;\r\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\r\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\r\n\r\nconst AlertDialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/30 supports-[backdrop-filter]:backdrop-blur-sm\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\r\n\r\nconst AlertDialogContent = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPortal>\r\n <AlertDialogOverlay />\r\n <AlertDialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] sm:max-w-[420px]\",\r\n \"translate-x-[-50%] translate-y-[-50%]\",\r\n \"rounded-radius-2xl bg-bg-surface text-fg-default\",\r\n \"border border-border-default shadow-sh-2xl outline-float\",\r\n \"duration-200\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </AlertDialogPortal>\r\n));\r\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\r\n\r\nconst AlertDialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center text-center gap-gp-lg\",\r\n \"px-pad-4xl pt-[32px] pb-pad-3xl\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\r\n\r\nconst AlertDialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n // Mobile: empilha vertical, confirm em cima (flex-col-reverse põe Cancel embaixo)\r\n // sm+: lado a lado horizontal\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse items-stretch gap-gp-md sm:flex-row\",\r\n \"px-pad-3xl pb-pad-3xl\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\r\n\r\nconst AlertDialogTitle = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-body-xl font-bold tracking-[-0.01em] text-fg-default leading-tight\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\r\n\r\nconst AlertDialogDescription = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\r\n \"text-body-sm font-normal leading-[1.5] text-fg-muted max-w-[340px]\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nAlertDialogDescription.displayName =\r\n AlertDialogPrimitive.Description.displayName;\r\n\r\nconst AlertDialogAction = AlertDialogPrimitive.Action;\r\nconst AlertDialogCancel = AlertDialogPrimitive.Cancel;\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogTrigger,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n};\r\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check, Minus } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Checkbox — alinhado com `.tbl-checkbox` do design-and-table-v2.\n *\n * Specs:\n * - 16x16, border 1.5px border-input, radius 4px (radius-xs)\n * - bg-input (light) / dark:bg-bg-muted\n * - hover: border-default (mais visível)\n * - checked/indeterminate: bg-brand + border-brand\n * - check icon: branco (fg-on-brand)\n * - focus: shadow-sh-ring (brand glow)\n */\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer relative flex size-4 shrink-0 items-center justify-center cursor-pointer\",\n \"rounded-radius-xs\",\n \"bg-bg-input dark:bg-bg-muted\",\n \"border-[1.5px] border-border-input\",\n \"transition-[background-color,border-color,box-shadow] outline-none\",\n \"hover:border-border-default\",\n \"focus-visible:shadow-sh-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-bg-brand data-[state=checked]:border-border-brand\",\n \"data-[state=indeterminate]:bg-bg-brand data-[state=indeterminate]:border-border-brand\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"grid place-content-center text-fg-on-brand\")}\n >\n {props.checked === \"indeterminate\" ? (\n <Minus className=\"size-3\" strokeWidth={3} />\n ) : (\n <Check className=\"size-3\" strokeWidth={3} />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import * as React from \"react\"\r\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\r\nimport { DayPicker, getDefaultClassNames, type DayButton } from \"react-day-picker\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nfunction Calendar({\r\n className,\r\n classNames,\r\n showOutsideDays = true,\r\n captionLayout = \"label\",\r\n components,\r\n ...props\r\n}: React.ComponentProps<typeof DayPicker>) {\r\n const defaultClassNames = getDefaultClassNames()\r\n\r\n return (\r\n <DayPicker\r\n showOutsideDays={showOutsideDays}\r\n className={cn(\r\n \"group/calendar bg-transparent p-0 [--cell-size:2.5rem]\",\r\n className\r\n )}\r\n captionLayout={captionLayout}\r\n classNames={{\r\n root: cn(\"w-full\", defaultClassNames.root),\r\n months: cn(\"relative flex flex-col gap-gp-2xl sm:flex-row sm:gap-gp-4xl\", defaultClassNames.months),\r\n month: cn(\"flex w-full flex-col gap-gp-2xl\", defaultClassNames.month),\r\n nav: cn(\r\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between\",\r\n defaultClassNames.nav\r\n ),\r\n button_previous: cn(\r\n \"inline-flex items-center justify-center size-[--cell-size] rounded-full text-fg-muted hover:bg-bg-muted transition-colors select-none aria-disabled:opacity-30\",\r\n defaultClassNames.button_previous\r\n ),\r\n button_next: cn(\r\n \"inline-flex items-center justify-center size-[--cell-size] rounded-full text-fg-muted hover:bg-bg-muted transition-colors select-none aria-disabled:opacity-30\",\r\n defaultClassNames.button_next\r\n ),\r\n month_caption: cn(\r\n \"flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]\",\r\n defaultClassNames.month_caption\r\n ),\r\n caption_label: cn(\r\n \"text-body-md font-medium font-semibold select-none\",\r\n captionLayout === \"dropdown\" ? \"hidden\" : \"\",\r\n defaultClassNames.caption_label\r\n ),\r\n dropdowns: cn(\r\n \"flex items-center gap-gp-md\",\r\n defaultClassNames.dropdowns\r\n ),\r\n dropdown: cn(\r\n \"cursor-pointer appearance-none bg-transparent text-body-md font-medium font-semibold text-fg-default outline-none\",\r\n defaultClassNames.dropdown\r\n ),\r\n months_dropdown: cn(\"\", defaultClassNames.months_dropdown),\r\n years_dropdown: cn(\"\", defaultClassNames.years_dropdown),\r\n table: \"w-full border-collapse\",\r\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\r\n weekday: cn(\r\n \"flex-1 min-w-8 max-w-12 text-body-sm font-normal text-fg-muted select-none text-center\",\r\n defaultClassNames.weekday\r\n ),\r\n week: cn(\"mt-gp-md flex w-full\", defaultClassNames.week),\r\n day: cn(\r\n // flex-1: cada dia ocupa 1/7 igual ao header de weekdays (que usa flex-1).\r\n // Sem isso o dia dimensionava por aspect-square e desalinhava das colunas.\r\n \"group/day relative flex-1 aspect-square min-w-8 max-w-12 p-0 text-center select-none\",\r\n defaultClassNames.day\r\n ),\r\n range_start: cn(\"rounded-l-full\", defaultClassNames.range_start),\r\n range_end: cn(\"rounded-r-full\", defaultClassNames.range_end),\r\n range_middle: cn(\"\", defaultClassNames.range_middle),\r\n today: cn(\"\", defaultClassNames.today),\r\n outside: cn(\r\n \"text-fg-subtle opacity-40\",\r\n defaultClassNames.outside\r\n ),\r\n disabled: cn(\"text-fg-disabled opacity-50\", defaultClassNames.disabled),\r\n hidden: cn(\"invisible\", defaultClassNames.hidden),\r\n ...classNames,\r\n }}\r\n components={{\r\n Root: ({ className: rootCn, rootRef, ...rootProps }) => (\r\n <div data-slot=\"calendar\" ref={rootRef} className={cn(rootCn)} {...rootProps} />\r\n ),\r\n Chevron: ({ orientation }) => {\r\n if (orientation === \"left\") return <ChevronLeftIcon className=\"size-4\" />\r\n return <ChevronRightIcon className=\"size-4\" />\r\n },\r\n DayButton: CalendarDayButton,\r\n ...components,\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction CalendarDayButton({\r\n className,\r\n day,\r\n modifiers,\r\n ...props\r\n}: React.ComponentProps<typeof DayButton>) {\r\n const ref = React.useRef<HTMLButtonElement>(null)\r\n React.useEffect(() => {\r\n if (modifiers.focused) ref.current?.focus()\r\n }, [modifiers.focused])\r\n\r\n const isRangeStart = modifiers.range_start;\r\n const isRangeEnd = modifiers.range_end;\r\n const isRangeMiddle = modifiers.range_middle;\r\n const isSingleSelected =\r\n modifiers.selected && !isRangeStart && !isRangeEnd && !isRangeMiddle;\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n data-selected-single={isSingleSelected}\r\n data-range-start={isRangeStart || undefined}\r\n data-range-end={isRangeEnd || undefined}\r\n data-range-middle={isRangeMiddle || undefined}\r\n className={cn(\r\n \"relative flex aspect-square w-full items-center justify-center text-body-md font-normal leading-none outline-none transition-colors\",\r\n\r\n // Default shape\r\n \"rounded-full\",\r\n\r\n // Hover\r\n \"hover:bg-bg-muted\",\r\n\r\n // Single selected\r\n \"data-[selected-single=true]:bg-bg-brand data-[selected-single=true]:text-fg-on-brand data-[selected-single=true]:hover:bg-bg-brand\",\r\n\r\n // Range start\r\n \"data-[range-start]:bg-bg-brand data-[range-start]:text-fg-on-brand data-[range-start]:rounded-full data-[range-start]:hover:bg-bg-brand\",\r\n\r\n // Range end\r\n \"data-[range-end]:bg-bg-brand data-[range-end]:text-fg-on-brand data-[range-end]:rounded-full data-[range-end]:hover:bg-bg-brand\",\r\n\r\n // Range middle\r\n \"data-[range-middle]:bg-bg-brand-subtle data-[range-middle]:text-fg-brand data-[range-middle]:rounded-none\",\r\n\r\n // Today\r\n modifiers.today && !isSingleSelected && !isRangeStart && !isRangeEnd && !isRangeMiddle &&\r\n \"bg-bg-brand text-fg-on-brand font-semibold hover:bg-bg-brand\",\r\n\r\n // Outside\r\n modifiers.outside && \"text-fg-subtle opacity-40 hover:bg-transparent\",\r\n\r\n // Disabled\r\n modifiers.disabled && \"opacity-30 pointer-events-none\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Calendar, CalendarDayButton }\r\n","import * as React from \"react\";\r\nimport {\r\n ChevronLeft,\r\n ChevronRight,\r\n ChevronsLeft,\r\n ChevronsRight,\r\n MoreHorizontal,\r\n} from \"lucide-react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * Pagination — primitives baixo nível pra paginação.\r\n *\r\n * Visual alinhado com `.tbl-footer-right` do design-and-table-v2:\r\n * - Nav buttons (« ‹ › »): 36×36 com border, radius-lg\r\n * - Pages container: bg-muted, radius-lg, padding 3px (segmented look)\r\n * - Page item: 30×30 transparente; active = bg-accent + shadow-sm + font-semibold\r\n *\r\n * Pra um wrapper \"one-shot\" com pageSize + range + nav → use <FooterTable>.\r\n */\r\n\r\n/* ── Root nav ────────────────────────────────────────────────────────── */\r\nconst Pagination = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"Paginação\"\r\n className={cn(\"inline-flex items-center gap-gp-xs\", className)}\r\n {...props}\r\n />\r\n);\r\nPagination.displayName = \"Pagination\";\r\n\r\n/* ── Content (container das page items — visual segmented) ──────────── */\r\nconst PaginationContent = React.forwardRef<\r\n HTMLUListElement,\r\n React.ComponentProps<\"ul\">\r\n>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex items-center gap-[2px]\",\r\n \"bg-bg-muted rounded-radius-lg p-[3px] mx-gp-sm h-form-md\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nPaginationContent.displayName = \"PaginationContent\";\r\n\r\n/* ── Item wrapper (li) ───────────────────────────────────────────────── */\r\nconst PaginationItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentProps<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"\", className)} {...props} />\r\n));\r\nPaginationItem.displayName = \"PaginationItem\";\r\n\r\n/* ── Link (número) — dentro do PaginationContent ──────────────────── */\r\nconst paginationLinkVariants = cva(\r\n [\r\n \"inline-flex items-center justify-center\",\r\n \"min-w-[30px] h-[30px] px-pad-md\",\r\n \"rounded-radius-md text-body-sm font-medium tabular-nums\",\r\n \"outline-none cursor-pointer transition-[background-color,color,box-shadow]\",\r\n \"focus-visible:shadow-sh-ring\",\r\n \"disabled:opacity-50 disabled:pointer-events-none\",\r\n ],\r\n {\r\n variants: {\r\n isActive: {\r\n true: \"bg-bg-accent text-fg-default font-semibold shadow-sh-sm\",\r\n false: \"bg-transparent text-fg-muted hover:text-fg-default\",\r\n },\r\n },\r\n defaultVariants: { isActive: false },\r\n },\r\n);\r\n\r\nexport type PaginationLinkProps = {\r\n isActive?: boolean;\r\n} & React.ButtonHTMLAttributes<HTMLButtonElement> &\r\n VariantProps<typeof paginationLinkVariants>;\r\n\r\nconst PaginationLink = React.forwardRef<\r\n HTMLButtonElement,\r\n PaginationLinkProps\r\n>(({ className, isActive, type = \"button\", ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-current={isActive ? \"page\" : undefined}\r\n className={cn(paginationLinkVariants({ isActive }), className)}\r\n {...props}\r\n />\r\n));\r\nPaginationLink.displayName = \"PaginationLink\";\r\n\r\n/* ── Nav buttons (« ‹ › ») — fora do Content, com border individual ── */\r\nconst paginationNavVariants = cva([\r\n \"inline-flex items-center justify-center shrink-0\",\r\n \"size-form-md rounded-radius-lg\",\r\n \"border border-border-default bg-transparent text-fg-default\",\r\n \"outline-none cursor-pointer transition-[background-color,color,opacity,border-color,box-shadow]\",\r\n \"hover:bg-bg-muted\",\r\n \"focus-visible:shadow-sh-ring\",\r\n \"disabled:opacity-35 disabled:pointer-events-none\",\r\n \"[&_svg]:size-4\",\r\n]);\r\n\r\ntype NavBtnProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\r\n\r\nconst PaginationPrevious = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Página anterior\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronLeft />\r\n </button>\r\n ),\r\n);\r\nPaginationPrevious.displayName = \"PaginationPrevious\";\r\n\r\nconst PaginationNext = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Próxima página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronRight />\r\n </button>\r\n ),\r\n);\r\nPaginationNext.displayName = \"PaginationNext\";\r\n\r\nconst PaginationFirst = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Primeira página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronsLeft />\r\n </button>\r\n ),\r\n);\r\nPaginationFirst.displayName = \"PaginationFirst\";\r\n\r\nconst PaginationLast = React.forwardRef<HTMLButtonElement, NavBtnProps>(\r\n ({ className, type = \"button\", \"aria-label\": ariaLabel, ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n aria-label={ariaLabel ?? \"Última página\"}\r\n className={cn(paginationNavVariants(), className)}\r\n {...props}\r\n >\r\n <ChevronsRight />\r\n </button>\r\n ),\r\n);\r\nPaginationLast.displayName = \"PaginationLast\";\r\n\r\n/* ── Ellipsis ────────────────────────────────────────────────────────── */\r\nconst PaginationEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n aria-hidden=\"true\"\r\n className={cn(\r\n \"inline-flex items-center justify-center min-w-[22px] h-[30px]\",\r\n \"text-body-sm font-normal text-fg-muted tracking-wider select-none\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"size-4\" />\r\n </span>\r\n);\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\r\n\r\n/**\r\n * Helper — gera array de páginas com ellipsis.\r\n *\r\n * Regras:\r\n * - Total ≤ 7 páginas → mostra todas\r\n * - Senão → [1, 2, …, page-1, page, page+1, …, last-1, last]\r\n *\r\n * Retorna `number[]` com `\"ellipsis\"` como string nos gaps.\r\n *\r\n * Ex (page=5, total=20): [1, 2, \"ellipsis\", 4, 5, 6, \"ellipsis\", 19, 20]\r\n */\r\nexport function getPaginationRange(page: number, total: number): (number | \"ellipsis\")[] {\r\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\r\n const set = new Set([1, 2, total - 1, total, page - 1, page, page + 1]);\r\n const sorted = [...set]\r\n .filter((n) => n >= 1 && n <= total)\r\n .sort((a, b) => a - b);\r\n const out: (number | \"ellipsis\")[] = [];\r\n sorted.forEach((n, i) => {\r\n if (i > 0 && n - sorted[i - 1] > 1) out.push(\"ellipsis\");\r\n out.push(n);\r\n });\r\n return out;\r\n}\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationPrevious,\r\n PaginationNext,\r\n PaginationFirst,\r\n PaginationLast,\r\n PaginationEllipsis,\r\n paginationLinkVariants,\r\n paginationNavVariants,\r\n};\r\n","import * as React from \"react\"\r\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\r\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Select = SelectPrimitive.Root\r\n\r\nconst SelectGroup = SelectPrimitive.Group\r\n\r\nconst SelectValue = SelectPrimitive.Value\r\n\r\nexport type SelectTriggerState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\nconst SelectTrigger = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> & {\r\n state?: SelectTriggerState;\r\n }\r\n>(({ className, children, state = \"default\", ...props }, ref) => (\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex min-h-form-lg w-full items-center justify-between gap-gp-md\",\r\n \"rounded-radius-lg px-pad-xl\",\r\n \"bg-bg-input dark:bg-bg-muted\",\r\n \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\",\r\n \"border border-border-input\",\r\n \"text-body-sm font-normal text-fg-default\",\r\n \"transition-[color,box-shadow,background-color,border-color] outline-none\",\r\n \"data-[placeholder]:text-fg-muted data-[placeholder]:opacity-70\",\r\n state === \"default\" && \"focus-visible:border-border-brand data-[state=open]:border-border-brand focus-visible:shadow-sh-ring data-[state=open]:shadow-sh-ring\",\r\n state === \"error\" && \"border-border-danger-muted focus-visible:border-border-danger-muted data-[state=open]:border-border-danger-muted focus-visible:shadow-sh-ring-danger data-[state=open]:shadow-sh-ring-danger\",\r\n state === \"warning\" && \"border-border-warning-muted focus-visible:border-border-warning-muted data-[state=open]:border-border-warning-muted focus-visible:shadow-sh-ring-warning data-[state=open]:shadow-sh-ring-warning\",\r\n state === \"success\" && \"border-border-success-muted focus-visible:border-border-success-muted data-[state=open]:border-border-success-muted focus-visible:shadow-sh-ring-success data-[state=open]:shadow-sh-ring-success\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-bg-input dark:disabled:hover:bg-bg-muted\",\r\n \"[&>span]:line-clamp-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"size-4 text-fg-muted shrink-0\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n))\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\r\n\r\nconst SelectScrollUpButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollUpButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-pad-xs\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronUp className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollUpButton>\r\n))\r\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\r\n\r\nconst SelectScrollDownButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollDownButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-pad-xs\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronDown className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollDownButton>\r\n))\r\nSelectScrollDownButton.displayName =\r\n SelectPrimitive.ScrollDownButton.displayName\r\n\r\nconst SelectContent = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\r\n>(({ className, children, position = \"popper\", ...props }, ref) => (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden\",\r\n \"rounded-[12px] bg-bg-dropdown border border-border-default shadow-sh-lg outline-float\",\r\n \"before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150\",\r\n \"text-fg-default\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n \"origin-[--radix-select-content-transform-origin]\",\r\n position === \"popper\" &&\r\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\",\r\n className\r\n )}\r\n position={position}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.Viewport\r\n className={cn(\r\n \"p-pad-sm\",\r\n position === \"popper\" &&\r\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\r\n )}\r\n >\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n))\r\nSelectContent.displayName = SelectPrimitive.Content.displayName\r\n\r\nconst SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label\r\n ref={ref}\r\n className={cn(\"py-pad-sm pl-8 pr-2 text-body-md font-medium text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectLabel.displayName = SelectPrimitive.Label.displayName\r\n\r\nconst SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full cursor-default select-none items-center gap-pad-md\",\r\n \"rounded-radius-sm py-pad-md pl-8 pr-pad-lg\",\r\n \"text-body-sm font-medium text-fg-muted\",\r\n \"outline-none transition-colors\",\r\n \"focus:bg-bg-muted focus:text-fg-default\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n \"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-fg-muted\",\r\n \"focus:[&_svg]:text-fg-default\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n))\r\nSelectItem.displayName = SelectPrimitive.Item.displayName\r\n\r\nconst SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-border-default\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\r\n\r\nexport {\r\n Select,\r\n SelectGroup,\r\n SelectValue,\r\n SelectTrigger,\r\n SelectContent,\r\n SelectLabel,\r\n SelectItem,\r\n SelectSeparator,\r\n SelectScrollUpButton,\r\n SelectScrollDownButton,\r\n}\r\n","import * as React from \"react\"\r\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Sheet = SheetPrimitive.Root\r\n\r\nconst SheetTrigger = SheetPrimitive.Trigger\r\n\r\nconst SheetClose = SheetPrimitive.Close\r\n\r\nconst SheetPortal = SheetPrimitive.Portal\r\n\r\nconst SheetOverlay = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-overlay-scrim data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\r\n\r\nconst sheetVariants = cva(\r\n \"fixed z-50 bg-bg-surface dark:bg-bg-canvas text-fg-default shadow-sh-2xl ease-[cubic-bezier(0.4,0,0.2,1)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-[220ms] data-[state=open]:duration-[220ms] data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\r\n {\r\n variants: {\r\n side: {\r\n top: \"inset-x-0 top-0 border-b border-border-default data-[state=closed]:slide-out-to-top-12 data-[state=open]:slide-in-from-top-12\",\r\n bottom:\r\n \"inset-x-0 bottom-0 border-t border-border-default data-[state=closed]:slide-out-to-bottom-12 data-[state=open]:slide-in-from-bottom-12\",\r\n left: \"inset-y-0 left-0 h-full w-3/4 border-r border-border-default data-[state=closed]:slide-out-to-left-12 data-[state=open]:slide-in-from-left-12 sm:max-w-sm\",\r\n right:\r\n \"inset-y-0 right-0 h-full w-3/4 border-l border-border-default data-[state=closed]:slide-out-to-right-12 data-[state=open]:slide-in-from-right-12 sm:max-w-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n side: \"right\",\r\n },\r\n }\r\n)\r\n\r\ninterface SheetContentProps\r\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\r\n VariantProps<typeof sheetVariants> {\r\n /** Esconde o botão \"X\" (Close) no canto superior direito. Default: false. */\r\n hideClose?: boolean\r\n}\r\n\r\nconst SheetContent = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Content>,\r\n SheetContentProps\r\n>(({ side = \"right\", className, children, hideClose, ...props }, ref) => (\r\n <SheetPortal>\r\n <SheetOverlay />\r\n <SheetPrimitive.Content\r\n ref={ref}\r\n className={cn(sheetVariants({ side }), className)}\r\n {...props}\r\n >\r\n {children}\r\n {!hideClose && (\r\n <SheetPrimitive.Close className=\"absolute right-pad-2xl top-pad-2xl rounded-radius-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary disabled:pointer-events-none data-[state=open]:bg-bg-muted text-fg-muted\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </SheetPrimitive.Close>\r\n )}\r\n </SheetPrimitive.Content>\r\n </SheetPortal>\r\n))\r\nSheetContent.displayName = SheetPrimitive.Content.displayName\r\n\r\nconst SheetHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col gap-gp-sm text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetHeader.displayName = \"SheetHeader\"\r\n\r\nconst SheetFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse gap-gp-md sm:flex-row sm:justify-end\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetFooter.displayName = \"SheetFooter\"\r\n\r\nconst SheetTitle = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-body-lg font-medium font-semibold text-fg-default\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetTitle.displayName = SheetPrimitive.Title.displayName\r\n\r\nconst SheetDescription = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-body-md text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetDescription.displayName = SheetPrimitive.Description.displayName\r\n\r\nexport {\r\n Sheet,\r\n SheetPortal,\r\n SheetOverlay,\r\n SheetTrigger,\r\n SheetClose,\r\n SheetContent,\r\n SheetHeader,\r\n SheetFooter,\r\n SheetTitle,\r\n SheetDescription,\r\n}\r\n","import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Switch — alinhado com `.tbl-toggle` do design-and-table-v2.\n *\n * Specs:\n * - Track: 42x24, radius-full\n * - off light: bg-emphasis (gray[100] — visível em fundo branco)\n * - off dark: bg-accent (alpha branco 12% — visível em fundo escuro)\n * - on: bg-brand\n * - Thumb: 20x20, white com shadow, transform 0.18s\n * - Focus: shadow-sh-ring (brand glow)\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 relative inline-flex h-[24px] w-[42px] shrink-0 cursor-pointer items-center\",\n \"rounded-radius-full\",\n \"transition-[background-color,box-shadow] duration-150 outline-none\",\n \"data-[state=unchecked]:bg-bg-emphasis dark:data-[state=unchecked]:bg-bg-accent\",\n \"data-[state=checked]:bg-bg-brand\",\n \"focus-visible:shadow-sh-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block size-[20px] rounded-radius-full bg-white\",\n \"shadow-[0_1px_2px_rgba(0,0,0,0.10)]\",\n \"transition-transform duration-[180ms] ease-[cubic-bezier(0.4,0,0.2,1)]\",\n \"data-[state=unchecked]:translate-x-[2px]\",\n \"data-[state=checked]:translate-x-[20px]\"\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * Textarea — alinhado com `.tbl-form-textarea` do design-and-table-v2.\r\n *\r\n * Specs:\r\n * - min-h: 100px, padding: 10px 12px, radius: 10px\r\n * - bg-input (light) / dark:bg-bg-muted, border-input 1px\r\n * - font: 13px, line-height: 1.5, resize vertical\r\n * - focus: border-brand + shadow-sh-ring\r\n *\r\n * Features: state prop (default | error | warning | success) pra feedback visual.\r\n */\r\n\r\nexport type TextareaState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\nconst textareaVariants = cva(\r\n [\r\n \"flex min-h-[100px] w-full resize-y\",\r\n \"bg-bg-input dark:bg-bg-muted\",\r\n \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\",\r\n \"border border-border-input rounded-radius-lg\",\r\n \"px-pad-xl py-pad-lg\",\r\n \"text-body-sm font-normal leading-[1.5] text-fg-default\",\r\n \"placeholder:text-fg-muted placeholder:opacity-70\",\r\n \"transition-[color,box-shadow,background-color,border-color] outline-none\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-bg-input dark:disabled:hover:bg-bg-muted\",\r\n ],\r\n {\r\n variants: {\r\n state: {\r\n default: \"focus-visible:border-border-brand focus-visible:shadow-sh-ring\",\r\n error: \"border-border-danger-muted focus-visible:border-border-danger-muted focus-visible:shadow-sh-ring-danger\",\r\n warning: \"border-border-warning-muted focus-visible:border-border-warning-muted focus-visible:shadow-sh-ring-warning\",\r\n success: \"border-border-success-muted focus-visible:border-border-success-muted focus-visible:shadow-sh-ring-success\",\r\n },\r\n },\r\n defaultVariants: {\r\n state: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport interface TextareaProps\r\n extends React.ComponentProps<\"textarea\">,\r\n VariantProps<typeof textareaVariants> {}\r\n\r\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, state, ...props }, ref) => {\r\n return (\r\n <textarea\r\n className={cn(textareaVariants({ state }), className)}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nTextarea.displayName = \"Textarea\"\r\n\r\nexport { Textarea, textareaVariants }\r\n"],"names":[],"mappings":"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"}
@@ -3,15 +3,25 @@ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
3
3
  /**
4
4
  * AlertDialog — variante do Dialog pra confirmação destrutiva/crítica.
5
5
  *
6
- * Diferenças vs. Dialog:
7
- * - role="alertdialog" (assistive tech anuncia diferente)
8
- * - Foco vai pro botão `Cancel` (mais seguro como ação default)
9
- * - Não fecha ao clicar fora ou apertar ESC (decisão forçada)
6
+ * Diferenças vs. Dialog, TODAS medidas no browser (2026-08-13) e não deduzidas:
7
+ * - `role="alertdialog"` (assistive tech anuncia diferente) ✔ confirmado
8
+ * - Foco inicial no botão `Cancel`, que é o default seguro confirmado
9
+ * - **Não fecha ao clicar fora** confirmado e o Dialog comum, no MESMO teste,
10
+ * fecha. A diferença é real.
11
+ *
12
+ * ⚠️ **ESC FECHA.** Este bloco afirmava "não fecha ao clicar fora ou apertar ESC"; a
13
+ * segunda metade era falsa. O Radix trata as duas coisas em canais separados: o
14
+ * pointer-down externo o AlertDialog bloqueia, o ESC não. Quem precisasse de uma decisão
15
+ * inescapável (o caso que a frase prometia cobrir) sairia daqui acreditando estar
16
+ * protegido. Pra travar de verdade, no consumidor:
17
+ *
18
+ * <AlertDialogContent onEscapeKeyDown={(e) => e.preventDefault()}>
10
19
  *
11
20
  * Estilo alinhado com `.tbl-confirm-dialog` do sandbox: 420px, body 32/28/24,
12
21
  * radius-2xl, shadow-2xl, outline halo, ícone 56x56 com bg-tone-muted.
13
22
  *
14
- * Pra um wrapper "one-shot" com tone + ícone + botões → use <AlertModal>.
23
+ * Pra um wrapper "one-shot" com tone + ícone + botões → use <AlertModal>. Doc e a
24
+ * comparação dos três (AlertModal / AlertDialog / Dialog): página `#/alert-dialog`.
15
25
  */
16
26
  declare const AlertDialog: React.FC<AlertDialogPrimitive.AlertDialogProps>;
17
27
  declare const AlertDialogTrigger: React.ForwardRefExoticComponent<AlertDialogPrimitive.AlertDialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/shadcn/alert-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAC;AAIrE;;;;;;;;;;;;GAYG;AAEH,QAAA,MAAM,WAAW,iDAA4B,CAAC;AAC9C,QAAA,MAAM,kBAAkB,wHAA+B,CAAC;AACxD,QAAA,MAAM,iBAAiB,uDAA8B,CAAC;AAEtD,QAAA,MAAM,kBAAkB,wKActB,CAAC;AAGH,QAAA,MAAM,kBAAkB,wKAsBtB,CAAC;AAGH,QAAA,MAAM,iBAAiB;8BAGpB,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;;CAStC,CAAC;AAGF,QAAA,MAAM,iBAAiB;8BAGpB,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;;CAWtC,CAAC;AAGF,QAAA,MAAM,gBAAgB,8KAYpB,CAAC;AAGH,QAAA,MAAM,sBAAsB,wLAY1B,CAAC;AAIH,QAAA,MAAM,iBAAiB,uHAA8B,CAAC;AACtD,QAAA,MAAM,iBAAiB,uHAA8B,CAAC;AAEtD,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GAClB,CAAC"}
1
+ {"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/shadcn/alert-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAC;AAIrE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,QAAA,MAAM,WAAW,iDAA4B,CAAC;AAC9C,QAAA,MAAM,kBAAkB,wHAA+B,CAAC;AACxD,QAAA,MAAM,iBAAiB,uDAA8B,CAAC;AAEtD,QAAA,MAAM,kBAAkB,wKActB,CAAC;AAGH,QAAA,MAAM,kBAAkB,wKAsBtB,CAAC;AAGH,QAAA,MAAM,iBAAiB;8BAGpB,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;;CAStC,CAAC;AAGF,QAAA,MAAM,iBAAiB;8BAGpB,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;;CAWtC,CAAC;AAGF,QAAA,MAAM,gBAAgB,8KAYpB,CAAC;AAGH,QAAA,MAAM,sBAAsB,wLAY1B,CAAC;AAIH,QAAA,MAAM,iBAAiB,uHAA8B,CAAC;AACtD,QAAA,MAAM,iBAAiB,uHAA8B,CAAC;AAEtD,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snksergio/design-system",
3
- "version": "0.38.1",
3
+ "version": "0.38.2",
4
4
  "//distribuicao": "Canal PRIMARIO = registry shadcn (copy-in) + CLI @snksergio/create-design-system; sobe sozinho no merge (Vercel). Canal SECUNDARIO = este pacote npm (@snksergio/design-system), publicado por passo MANUAL do mantenedor, entao costuma ficar atras do registry. SECUNDARIO descreve a ORDEM DE PUBLICACAO, nao o nivel de suporte: NAO e depreciado, e desde a 0.37.0 entrega 41 dos 42 componentes ui/ no barrel raiz + os 41 primitivos shadcn no subpath ./shadcn (so TabelaTeste, demo interno, fica de fora). Publish so pelo Passo 7 do .claude/skills/ds-dev/release.md (valida com `npm run lib:verify`, pede o token, publica, revoga). Ver DISTRIBUICAO.md.",
5
5
  "description": "iGreen Design System — internal library for SaaS CRM, admin panels and dashboards. React 19 + Tailwind v4 + Shadcn + Radix.",
6
6
  "license": "UNLICENSED",