@snksergio/design-system 0.48.0 → 0.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +1 -1
  2. package/dist-lib/chunks/{panel-57Pt_bL9.cjs → panel-Bly-rNP9.cjs} +2 -2
  3. package/dist-lib/chunks/{panel-57Pt_bL9.cjs.map → panel-Bly-rNP9.cjs.map} +1 -1
  4. package/dist-lib/chunks/{panel-DlZeQw7G.mjs → panel-DA6K3a3n.mjs} +2 -2
  5. package/dist-lib/chunks/{panel-DlZeQw7G.mjs.map → panel-DA6K3a3n.mjs.map} +1 -1
  6. package/dist-lib/chunks/{sheet-7v5vamnP.mjs → sheet-DIpYkRYS.mjs} +32 -32
  7. package/dist-lib/chunks/{sheet-7v5vamnP.mjs.map → sheet-DIpYkRYS.mjs.map} +1 -1
  8. package/dist-lib/chunks/{sheet-BZlQ0gKA.cjs → sheet-rg6uupt1.cjs} +33 -33
  9. package/dist-lib/chunks/{sheet-BZlQ0gKA.cjs.map → sheet-rg6uupt1.cjs.map} +1 -1
  10. package/dist-lib/chunks/{toggle-group-DYGba7RP.cjs → toggle-group-C9rrkkmh.cjs} +159 -52
  11. package/dist-lib/chunks/toggle-group-C9rrkkmh.cjs.map +1 -0
  12. package/dist-lib/chunks/{toggle-group-CnAN6ZnT.mjs → toggle-group-mXbG8_Jm.mjs} +237 -130
  13. package/dist-lib/chunks/toggle-group-mXbG8_Jm.mjs.map +1 -0
  14. package/dist-lib/index.cjs +303 -45
  15. package/dist-lib/index.cjs.map +1 -1
  16. package/dist-lib/index.mjs +308 -50
  17. package/dist-lib/index.mjs.map +1 -1
  18. package/dist-lib/preview/clientes.cjs +2 -2
  19. package/dist-lib/preview/clientes.mjs +2 -2
  20. package/dist-lib/shadcn.cjs +3 -2
  21. package/dist-lib/shadcn.cjs.map +1 -1
  22. package/dist-lib/shadcn.mjs +82 -81
  23. package/dist-lib/src/components/index.d.ts +1 -0
  24. package/dist-lib/src/components/index.d.ts.map +1 -1
  25. package/dist-lib/src/components/shadcn/carousel.d.ts +28 -1
  26. package/dist-lib/src/components/shadcn/carousel.d.ts.map +1 -1
  27. package/dist-lib/src/components/ui/CardCheckbox/card-checkbox.d.ts +30 -31
  28. package/dist-lib/src/components/ui/CardCheckbox/card-checkbox.d.ts.map +1 -1
  29. package/dist-lib/src/components/ui/CardCheckbox/card-checkbox.styles.d.ts +5 -0
  30. package/dist-lib/src/components/ui/CardCheckbox/card-checkbox.styles.d.ts.map +1 -1
  31. package/dist-lib/src/components/ui/CardOption/card-option.d.ts +27 -0
  32. package/dist-lib/src/components/ui/CardOption/card-option.d.ts.map +1 -0
  33. package/dist-lib/src/components/ui/CardOption/card-option.styles.d.ts +381 -0
  34. package/dist-lib/src/components/ui/CardOption/card-option.styles.d.ts.map +1 -0
  35. package/dist-lib/src/components/ui/CardOption/card-option.types.d.ts +76 -0
  36. package/dist-lib/src/components/ui/CardOption/card-option.types.d.ts.map +1 -0
  37. package/dist-lib/src/components/ui/CardOption/index.d.ts +4 -0
  38. package/dist-lib/src/components/ui/CardOption/index.d.ts.map +1 -0
  39. package/dist-lib/src/components/ui/ColorPicker/color-picker.styles.d.ts +18 -0
  40. package/dist-lib/src/components/ui/ColorPicker/color-picker.styles.d.ts.map +1 -1
  41. package/dist-lib/src/components/ui/ColorPicker/color-picker.types.d.ts +4 -1
  42. package/dist-lib/src/components/ui/ColorPicker/color-picker.types.d.ts.map +1 -1
  43. package/package.json +1 -1
  44. package/dist-lib/chunks/toggle-group-CnAN6ZnT.mjs.map +0 -1
  45. package/dist-lib/chunks/toggle-group-DYGba7RP.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sheet-BZlQ0gKA.cjs","sources":["../../src/components/shadcn/alert-dialog.tsx","../../src/components/shadcn/checkbox.tsx","../../src/components/shadcn/textarea.tsx","../../src/components/shadcn/select.tsx","../../src/components/shadcn/switch.tsx","../../src/components/shadcn/calendar.tsx","../../src/components/shadcn/pagination.tsx","../../src/components/shadcn/sheet.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, dividindo a largura do footer em partes iguais.\r\n //\r\n // O `sm:[&>*]:flex-1` é o que faz os botões OCUPAREM o footer, e ele não é opcional:\r\n // `items-stretch` age no eixo cruzado, então em `flex-row` ele não estica nada no eixo\r\n // principal. Sem o flex-1, botão fica na largura do próprio texto e o par encosta à\r\n // esquerda — que é o oposto do desenho do DS (compare com o `AlertModal`, que\r\n // compensava passando `fullWidth` em cada Button). A opinião passou pra cá: montar um\r\n // alert dialog na mão agora sai certo sem ninguém lembrar do `fullWidth`.\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse items-stretch gap-gp-md sm:flex-row sm:[&>*]:flex-1\",\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 { 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","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\"\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 { 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 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"],"names":["AlertDialogPrimitive","React","jsx","cn","jsxs","CheckboxPrimitive","Minus","Check","cva","SelectPrimitive","ChevronDown","ChevronUp","SwitchPrimitives","getDefaultClassNames","DayPicker","ChevronLeftIcon","ChevronRightIcon","ChevronLeft","ChevronRight","ChevronsLeft","ChevronsRight","MoreHorizontal","SheetPrimitive","X"],"mappings":"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"}
1
+ {"version":3,"file":"sheet-rg6uupt1.cjs","sources":["../../src/components/shadcn/alert-dialog.tsx","../../src/components/shadcn/checkbox.tsx","../../src/components/shadcn/switch.tsx","../../src/components/shadcn/textarea.tsx","../../src/components/shadcn/select.tsx","../../src/components/shadcn/calendar.tsx","../../src/components/shadcn/pagination.tsx","../../src/components/shadcn/sheet.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, dividindo a largura do footer em partes iguais.\r\n //\r\n // O `sm:[&>*]:flex-1` é o que faz os botões OCUPAREM o footer, e ele não é opcional:\r\n // `items-stretch` age no eixo cruzado, então em `flex-row` ele não estica nada no eixo\r\n // principal. Sem o flex-1, botão fica na largura do próprio texto e o par encosta à\r\n // esquerda — que é o oposto do desenho do DS (compare com o `AlertModal`, que\r\n // compensava passando `fullWidth` em cada Button). A opinião passou pra cá: montar um\r\n // alert dialog na mão agora sai certo sem ninguém lembrar do `fullWidth`.\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse items-stretch gap-gp-md sm:flex-row sm:[&>*]:flex-1\",\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\"\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","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 { 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 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"],"names":["AlertDialogPrimitive","React","jsx","cn","jsxs","CheckboxPrimitive","Minus","Check","SwitchPrimitives","cva","SelectPrimitive","ChevronDown","ChevronUp","getDefaultClassNames","DayPicker","ChevronLeftIcon","ChevronRightIcon","ChevronLeft","ChevronRight","ChevronsLeft","ChevronsRight","MoreHorizontal","SheetPrimitive","X"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  const jsxRuntime = require("react/jsx-runtime");
3
3
  const React = require("react");
4
- const SeparatorPrimitive = require("@radix-ui/react-separator");
4
+ const RadioGroupPrimitive = require("@radix-ui/react-radio-group");
5
5
  const avatar = require("./avatar-DAmZ7fBZ.cjs");
6
+ const SeparatorPrimitive = require("@radix-ui/react-separator");
6
7
  const AccordionPrimitive = require("@radix-ui/react-accordion");
7
8
  const lucideReact = require("lucide-react");
8
9
  const classVarianceAuthority = require("class-variance-authority");
@@ -16,7 +17,6 @@ const LabelPrimitive = require("@radix-ui/react-label");
16
17
  const MenubarPrimitive = require("@radix-ui/react-menubar");
17
18
  const NavigationMenuPrimitive = require("@radix-ui/react-navigation-menu");
18
19
  const ProgressPrimitive = require("@radix-ui/react-progress");
19
- const RadioGroupPrimitive = require("@radix-ui/react-radio-group");
20
20
  const ScrollAreaPrimitive = require("@radix-ui/react-scroll-area");
21
21
  const SliderPrimitive = require("@radix-ui/react-slider");
22
22
  const TabsPrimitive = require("@radix-ui/react-tabs");
@@ -39,6 +39,7 @@ function _interopNamespaceDefault(e) {
39
39
  return Object.freeze(n);
40
40
  }
41
41
  const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
42
+ const RadioGroupPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(RadioGroupPrimitive);
42
43
  const SeparatorPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SeparatorPrimitive);
43
44
  const AccordionPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(AccordionPrimitive);
44
45
  const ContextMenuPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ContextMenuPrimitive);
@@ -47,12 +48,45 @@ const LabelPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(Label
47
48
  const MenubarPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(MenubarPrimitive);
48
49
  const NavigationMenuPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(NavigationMenuPrimitive);
49
50
  const ProgressPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ProgressPrimitive);
50
- const RadioGroupPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(RadioGroupPrimitive);
51
51
  const ScrollAreaPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ScrollAreaPrimitive);
52
52
  const SliderPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SliderPrimitive);
53
53
  const TabsPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(TabsPrimitive);
54
54
  const ToggleGroupPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ToggleGroupPrimitive);
55
55
  const TogglePrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(TogglePrimitive);
56
+ const RadioGroup = React__namespace.forwardRef(({ className, ...props }, ref) => {
57
+ return /* @__PURE__ */ jsxRuntime.jsx(
58
+ RadioGroupPrimitive__namespace.Root,
59
+ {
60
+ className: avatar.cn("grid w-full gap-gp-xl", className),
61
+ ...props,
62
+ ref
63
+ }
64
+ );
65
+ });
66
+ RadioGroup.displayName = RadioGroupPrimitive__namespace.Root.displayName;
67
+ const RadioGroupItem = React__namespace.forwardRef(({ className, ...props }, ref) => {
68
+ return /* @__PURE__ */ jsxRuntime.jsx(
69
+ RadioGroupPrimitive__namespace.Item,
70
+ {
71
+ ref,
72
+ className: avatar.cn(
73
+ "peer relative flex aspect-square size-4 shrink-0 cursor-pointer",
74
+ "rounded-radius-full",
75
+ "bg-bg-input dark:bg-bg-muted",
76
+ "border-[1.5px] border-border-input",
77
+ "transition-[background-color,border-color,box-shadow] outline-none",
78
+ "hover:border-border-default",
79
+ "focus-visible:shadow-sh-ring",
80
+ "disabled:cursor-not-allowed disabled:opacity-50",
81
+ "data-[state=checked]:bg-bg-brand data-[state=checked]:border-border-brand",
82
+ className
83
+ ),
84
+ ...props,
85
+ children: /* @__PURE__ */ jsxRuntime.jsx(RadioGroupPrimitive__namespace.Indicator, { className: "flex size-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-[6px] rounded-radius-full bg-fg-on-brand" }) })
86
+ }
87
+ );
88
+ });
89
+ RadioGroupItem.displayName = RadioGroupPrimitive__namespace.Item.displayName;
56
90
  const Separator = React__namespace.forwardRef(
57
91
  ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
58
92
  SeparatorPrimitive__namespace.Root,
@@ -465,12 +499,21 @@ const Carousel = React__namespace.forwardRef(
465
499
  );
466
500
  const [canScrollPrev, setCanScrollPrev] = React__namespace.useState(false);
467
501
  const [canScrollNext, setCanScrollNext] = React__namespace.useState(false);
502
+ const [selectedIndex, setSelectedIndex] = React__namespace.useState(0);
503
+ const [scrollSnaps, setScrollSnaps] = React__namespace.useState([]);
468
504
  const onSelect = React__namespace.useCallback((api2) => {
469
505
  if (!api2) {
470
506
  return;
471
507
  }
472
508
  setCanScrollPrev(api2.canScrollPrev());
473
509
  setCanScrollNext(api2.canScrollNext());
510
+ setSelectedIndex(api2.selectedScrollSnap());
511
+ }, []);
512
+ const onInit = React__namespace.useCallback((api2) => {
513
+ if (!api2) {
514
+ return;
515
+ }
516
+ setScrollSnaps(api2.scrollSnapList());
474
517
  }, []);
475
518
  const scrollPrev = React__namespace.useCallback(() => {
476
519
  api?.scrollPrev();
@@ -478,6 +521,12 @@ const Carousel = React__namespace.forwardRef(
478
521
  const scrollNext = React__namespace.useCallback(() => {
479
522
  api?.scrollNext();
480
523
  }, [api]);
524
+ const scrollTo = React__namespace.useCallback(
525
+ (index) => {
526
+ api?.scrollTo(index);
527
+ },
528
+ [api]
529
+ );
481
530
  const handleKeyDown = React__namespace.useCallback(
482
531
  (event) => {
483
532
  if (event.key === "ArrowLeft") {
@@ -500,13 +549,17 @@ const Carousel = React__namespace.forwardRef(
500
549
  if (!api) {
501
550
  return;
502
551
  }
552
+ onInit(api);
503
553
  onSelect(api);
554
+ api.on("reInit", onInit);
504
555
  api.on("reInit", onSelect);
505
556
  api.on("select", onSelect);
506
557
  return () => {
558
+ api?.off("reInit", onInit);
559
+ api?.off("reInit", onSelect);
507
560
  api?.off("select", onSelect);
508
561
  };
509
- }, [api, onSelect]);
562
+ }, [api, onInit, onSelect]);
510
563
  return /* @__PURE__ */ jsxRuntime.jsx(
511
564
  CarouselContext.Provider,
512
565
  {
@@ -518,7 +571,10 @@ const Carousel = React__namespace.forwardRef(
518
571
  scrollPrev,
519
572
  scrollNext,
520
573
  canScrollPrev,
521
- canScrollNext
574
+ canScrollNext,
575
+ selectedIndex,
576
+ scrollSnaps,
577
+ scrollTo
522
578
  },
523
579
  children: /* @__PURE__ */ jsxRuntime.jsx(
524
580
  "div",
@@ -539,18 +595,53 @@ const Carousel = React__namespace.forwardRef(
539
595
  Carousel.displayName = "Carousel";
540
596
  const CarouselContent = React__namespace.forwardRef(({ className, ...props }, ref) => {
541
597
  const { carouselRef, orientation } = useCarousel();
542
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
543
- "div",
544
- {
545
- ref,
546
- className: avatar.cn(
547
- "flex",
548
- orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
549
- className
550
- ),
551
- ...props
552
- }
553
- ) });
598
+ return (
599
+ /**
600
+ * A folga de 4px existe pra borda do slide não ser comida pelo corte.
601
+ *
602
+ * O Embla posiciona o trilho com `translate` em pixel FRACIONÁRIO, e no padrão de
603
+ * gutter do shadcn (`-ml-4` no trilho + `pl-4` no item) a borda esquerda do conteúdo
604
+ * cai **exatamente** sobre o limite do `overflow-hidden`. Medido em 2026-08-24, no
605
+ * slide 3: limite do clip em 651.5px e a borda do card em 649.99px — 1.5px inteiros
606
+ * do lado de fora, então a borda de 1px desaparecia. E variava entre medições, porque
607
+ * depende de onde o Embla para no sub-pixel: às vezes 2px dentro, às vezes fora. Só o
608
+ * primeiro slide era imune (translate 0, sem fração) — o relato foi exatamente "do
609
+ * card 2 pra frente".
610
+ *
611
+ * `overflow` corta no limite do PADDING box, então o padding dá a folga; a margem
612
+ * negativa devolve a posição, pra geometria externa não mudar. Não revela o slide
613
+ * vizinho: o que aparece nessa faixa é o gutter transparente de 16px do item.
614
+ *
615
+ * **4px e não 2px** porque o gutter do shadcn é só do lado ESQUERDO (`-ml`/`pl`): a
616
+ * direita do último card visível encosta no limite por construção. Com 2px, o caso de
617
+ * `slidesToScroll: 2` media −0.06px de folga na direita na última parada — o mesmo
618
+ * defeito, menor. Com 4px as duas bordas ficam positivas em todas as paradas.
619
+ */
620
+ /* @__PURE__ */ jsxRuntime.jsx(
621
+ "div",
622
+ {
623
+ ref: carouselRef,
624
+ className: avatar.cn(
625
+ "overflow-hidden",
626
+ // A folga vai no EIXO que rola: no vertical o gutter é `-mt`/`pt` e quem encosta
627
+ // no corte é a borda de cima. Padding no eixo errado não conserta nada.
628
+ orientation === "horizontal" ? "px-sp-xs -mx-sp-xs" : "py-sp-xs -my-sp-xs"
629
+ ),
630
+ children: /* @__PURE__ */ jsxRuntime.jsx(
631
+ "div",
632
+ {
633
+ ref,
634
+ className: avatar.cn(
635
+ "flex",
636
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
637
+ className
638
+ ),
639
+ ...props
640
+ }
641
+ )
642
+ }
643
+ )
644
+ );
554
645
  });
555
646
  CarouselContent.displayName = "CarouselContent";
556
647
  const CarouselItem = React__namespace.forwardRef(({ className, ...props }, ref) => {
@@ -621,6 +712,55 @@ const CarouselNext = React__namespace.forwardRef(({ className, ...props }, ref)
621
712
  );
622
713
  });
623
714
  CarouselNext.displayName = "CarouselNext";
715
+ const CarouselDots = React__namespace.forwardRef(({ className, ...props }, ref) => {
716
+ const { scrollSnaps, selectedIndex, scrollTo, orientation } = useCarousel();
717
+ if (scrollSnaps.length <= 1) {
718
+ return null;
719
+ }
720
+ return /* @__PURE__ */ jsxRuntime.jsx(
721
+ "div",
722
+ {
723
+ ref,
724
+ role: "group",
725
+ "aria-label": "Posição no carrossel",
726
+ className: avatar.cn(
727
+ "flex items-center justify-center gap-gp-2xs",
728
+ orientation === "vertical" && "flex-col",
729
+ className
730
+ ),
731
+ ...props,
732
+ children: scrollSnaps.map((_, i) => {
733
+ const atual = i === selectedIndex;
734
+ return /* @__PURE__ */ jsxRuntime.jsx(
735
+ "button",
736
+ {
737
+ type: "button",
738
+ onClick: () => scrollTo(i),
739
+ "aria-label": `Ir para ${i + 1} de ${scrollSnaps.length}`,
740
+ "aria-current": atual ? "true" : void 0,
741
+ className: avatar.cn(
742
+ "grid size-comp-3xs shrink-0 cursor-pointer place-items-center",
743
+ "rounded-radius-full",
744
+ // Padrão 1 — focus estático
745
+ "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-brand"
746
+ ),
747
+ children: /* @__PURE__ */ jsxRuntime.jsx(
748
+ "span",
749
+ {
750
+ className: avatar.cn(
751
+ "size-[8px] rounded-radius-full transition-colors",
752
+ atual ? "bg-bg-brand" : "bg-bg-emphasis hover:bg-bg-accent"
753
+ )
754
+ }
755
+ )
756
+ },
757
+ i
758
+ );
759
+ })
760
+ }
761
+ );
762
+ });
763
+ CarouselDots.displayName = "CarouselDots";
624
764
  const ContextMenu = ContextMenuPrimitive__namespace.Root;
625
765
  const ContextMenuTrigger = ContextMenuPrimitive__namespace.Trigger;
626
766
  const ContextMenuGroup = ContextMenuPrimitive__namespace.Group;
@@ -1306,40 +1446,6 @@ const Progress = React__namespace.forwardRef(({ className, value, ...props }, re
1306
1446
  }
1307
1447
  ));
1308
1448
  Progress.displayName = ProgressPrimitive__namespace.Root.displayName;
1309
- const RadioGroup = React__namespace.forwardRef(({ className, ...props }, ref) => {
1310
- return /* @__PURE__ */ jsxRuntime.jsx(
1311
- RadioGroupPrimitive__namespace.Root,
1312
- {
1313
- className: avatar.cn("grid w-full gap-gp-xl", className),
1314
- ...props,
1315
- ref
1316
- }
1317
- );
1318
- });
1319
- RadioGroup.displayName = RadioGroupPrimitive__namespace.Root.displayName;
1320
- const RadioGroupItem = React__namespace.forwardRef(({ className, ...props }, ref) => {
1321
- return /* @__PURE__ */ jsxRuntime.jsx(
1322
- RadioGroupPrimitive__namespace.Item,
1323
- {
1324
- ref,
1325
- className: avatar.cn(
1326
- "peer relative flex aspect-square size-4 shrink-0 cursor-pointer",
1327
- "rounded-radius-full",
1328
- "bg-bg-input dark:bg-bg-muted",
1329
- "border-[1.5px] border-border-input",
1330
- "transition-[background-color,border-color,box-shadow] outline-none",
1331
- "hover:border-border-default",
1332
- "focus-visible:shadow-sh-ring",
1333
- "disabled:cursor-not-allowed disabled:opacity-50",
1334
- "data-[state=checked]:bg-bg-brand data-[state=checked]:border-border-brand",
1335
- className
1336
- ),
1337
- ...props,
1338
- children: /* @__PURE__ */ jsxRuntime.jsx(RadioGroupPrimitive__namespace.Indicator, { className: "flex size-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-[6px] rounded-radius-full bg-fg-on-brand" }) })
1339
- }
1340
- );
1341
- });
1342
- RadioGroupItem.displayName = RadioGroupPrimitive__namespace.Item.displayName;
1343
1449
  const ScrollArea = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1344
1450
  ScrollAreaPrimitive__namespace.Root,
1345
1451
  {
@@ -1571,6 +1677,7 @@ exports.CardHeader = CardHeader;
1571
1677
  exports.CardTitle = CardTitle;
1572
1678
  exports.Carousel = Carousel;
1573
1679
  exports.CarouselContent = CarouselContent;
1680
+ exports.CarouselDots = CarouselDots;
1574
1681
  exports.CarouselItem = CarouselItem;
1575
1682
  exports.CarouselNext = CarouselNext;
1576
1683
  exports.CarouselPrevious = CarouselPrevious;
@@ -1650,4 +1757,4 @@ exports.badgeVariants = badgeVariants;
1650
1757
  exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle;
1651
1758
  exports.slotVariants = slotVariants;
1652
1759
  exports.toggleVariants = toggleVariants;
1653
- //# sourceMappingURL=toggle-group-DYGba7RP.cjs.map
1760
+ //# sourceMappingURL=toggle-group-C9rrkkmh.cjs.map