@snksergio/design-system 0.40.0 → 0.41.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 (70) hide show
  1. package/dist-lib/chunks/{avatar-DQYiVRlE.mjs → avatar-DFWEwBKu.mjs} +101 -51
  2. package/dist-lib/chunks/avatar-DFWEwBKu.mjs.map +1 -0
  3. package/dist-lib/chunks/{avatar-BiaG9OJS.cjs → avatar-eM5txRFZ.cjs} +53 -1
  4. package/dist-lib/chunks/avatar-eM5txRFZ.cjs.map +1 -0
  5. package/dist-lib/chunks/{input-CaC0B-_v.mjs → input-CfmzMYtd.mjs} +2 -2
  6. package/dist-lib/chunks/{input-CaC0B-_v.mjs.map → input-CfmzMYtd.mjs.map} +1 -1
  7. package/dist-lib/chunks/{input-DMH5rSP1.cjs → input-az2SuVXQ.cjs} +2 -2
  8. package/dist-lib/chunks/{input-DMH5rSP1.cjs.map → input-az2SuVXQ.cjs.map} +1 -1
  9. package/dist-lib/chunks/{kpi-delta-NnEu4oIs.cjs → kpi-delta-DAfakvFp.cjs} +3 -3
  10. package/dist-lib/chunks/{kpi-delta-NnEu4oIs.cjs.map → kpi-delta-DAfakvFp.cjs.map} +1 -1
  11. package/dist-lib/chunks/{kpi-delta-CjR0OsdC.mjs → kpi-delta-DaDwKOaP.mjs} +3 -3
  12. package/dist-lib/chunks/{kpi-delta-CjR0OsdC.mjs.map → kpi-delta-DaDwKOaP.mjs.map} +1 -1
  13. package/dist-lib/chunks/{page-header-DEGbgT4w.mjs → page-header--cPS_Z-a.mjs} +2 -2
  14. package/dist-lib/chunks/{page-header-DEGbgT4w.mjs.map → page-header--cPS_Z-a.mjs.map} +1 -1
  15. package/dist-lib/chunks/{page-header-Cp_9Wog4.cjs → page-header-DvAJoEfb.cjs} +2 -2
  16. package/dist-lib/chunks/{page-header-Cp_9Wog4.cjs.map → page-header-DvAJoEfb.cjs.map} +1 -1
  17. package/dist-lib/chunks/{panel-B1xKDbjB.mjs → panel-Bje0kUTh.mjs} +5 -5
  18. package/dist-lib/chunks/{panel-B1xKDbjB.mjs.map → panel-Bje0kUTh.mjs.map} +1 -1
  19. package/dist-lib/chunks/{panel-ma7e3s4C.cjs → panel-DtU3KlKY.cjs} +5 -5
  20. package/dist-lib/chunks/{panel-ma7e3s4C.cjs.map → panel-DtU3KlKY.cjs.map} +1 -1
  21. package/dist-lib/chunks/{textarea-DivoQmJw.mjs → textarea-BPRIHZVd.mjs} +2 -2
  22. package/dist-lib/chunks/{textarea-DivoQmJw.mjs.map → textarea-BPRIHZVd.mjs.map} +1 -1
  23. package/dist-lib/chunks/{textarea-c80RFmMP.cjs → textarea-K20CL_gF.cjs} +2 -2
  24. package/dist-lib/chunks/{textarea-c80RFmMP.cjs.map → textarea-K20CL_gF.cjs.map} +1 -1
  25. package/dist-lib/chunks/{tooltip-pvZ_X-Ub.cjs → toggle-group-BEPs3e0Y.cjs} +2 -54
  26. package/dist-lib/chunks/toggle-group-BEPs3e0Y.cjs.map +1 -0
  27. package/dist-lib/chunks/{tooltip-mMF4YHZg.mjs → toggle-group-XMO6ReVo.mjs} +77 -127
  28. package/dist-lib/chunks/toggle-group-XMO6ReVo.mjs.map +1 -0
  29. package/dist-lib/chunks/{useTheme-BD0nloAv.cjs → useTheme-3iZAognE.cjs} +876 -73
  30. package/dist-lib/chunks/useTheme-3iZAognE.cjs.map +1 -0
  31. package/dist-lib/chunks/{useTheme-D1QVzZDW.mjs → useTheme-B3ZakPqk.mjs} +886 -83
  32. package/dist-lib/chunks/useTheme-B3ZakPqk.mjs.map +1 -0
  33. package/dist-lib/index.cjs +40 -732
  34. package/dist-lib/index.cjs.map +1 -1
  35. package/dist-lib/index.mjs +94 -786
  36. package/dist-lib/index.mjs.map +1 -1
  37. package/dist-lib/preview/chat.cjs +3 -3
  38. package/dist-lib/preview/chat.mjs +3 -3
  39. package/dist-lib/preview/clientes.cjs +6 -6
  40. package/dist-lib/preview/clientes.mjs +6 -6
  41. package/dist-lib/preview/dashboard.cjs +4 -4
  42. package/dist-lib/preview/dashboard.mjs +4 -4
  43. package/dist-lib/shadcn.cjs +112 -112
  44. package/dist-lib/shadcn.mjs +136 -136
  45. package/dist-lib/src/components/ui/AppShell/app-shell.d.ts +1 -1
  46. package/dist-lib/src/components/ui/AppShell/app-shell.d.ts.map +1 -1
  47. package/dist-lib/src/components/ui/AppShell/app-shell.styles.d.ts +45 -1
  48. package/dist-lib/src/components/ui/AppShell/app-shell.styles.d.ts.map +1 -1
  49. package/dist-lib/src/components/ui/AppShell/app-shell.types.d.ts +106 -3
  50. package/dist-lib/src/components/ui/AppShell/app-shell.types.d.ts.map +1 -1
  51. package/dist-lib/src/components/ui/MenuSidebar/index.d.ts +2 -2
  52. package/dist-lib/src/components/ui/MenuSidebar/index.d.ts.map +1 -1
  53. package/dist-lib/src/components/ui/SingleMenuSidebar/category.d.ts +1 -1
  54. package/dist-lib/src/components/ui/SingleMenuSidebar/category.d.ts.map +1 -1
  55. package/dist-lib/src/components/ui/SingleMenuSidebar/menu-item.d.ts +25 -1
  56. package/dist-lib/src/components/ui/SingleMenuSidebar/menu-item.d.ts.map +1 -1
  57. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.d.ts +1 -1
  58. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.d.ts.map +1 -1
  59. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.types.d.ts +57 -2
  60. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.types.d.ts.map +1 -1
  61. package/dist-lib/src/utils/nav-link.d.ts.map +1 -0
  62. package/package.json +207 -207
  63. package/dist-lib/chunks/avatar-BiaG9OJS.cjs.map +0 -1
  64. package/dist-lib/chunks/avatar-DQYiVRlE.mjs.map +0 -1
  65. package/dist-lib/chunks/tooltip-mMF4YHZg.mjs.map +0 -1
  66. package/dist-lib/chunks/tooltip-pvZ_X-Ub.cjs.map +0 -1
  67. package/dist-lib/chunks/useTheme-BD0nloAv.cjs.map +0 -1
  68. package/dist-lib/chunks/useTheme-D1QVzZDW.mjs.map +0 -1
  69. package/dist-lib/src/components/ui/MenuSidebar/nav-link.d.ts.map +0 -1
  70. /package/dist-lib/src/{components/ui/MenuSidebar → utils}/nav-link.d.ts +0 -0
@@ -8,6 +8,8 @@ import * as SheetPrimitive from "@radix-ui/react-dialog";
8
8
  import * as PopoverPrimitive from "@radix-ui/react-popover";
9
9
  import { cva } from "class-variance-authority";
10
10
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
11
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
12
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
11
13
  import * as AvatarPrimitive from "@radix-ui/react-avatar";
12
14
  import { clsx } from "clsx";
13
15
  import { extendTailwindMerge } from "tailwind-merge";
@@ -1092,6 +1094,47 @@ const DropdownMenuShortcut = ({
1092
1094
  );
1093
1095
  };
1094
1096
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1097
+ const TooltipProvider = TooltipPrimitive.Provider;
1098
+ const TooltipTrigger = TooltipPrimitive.Trigger;
1099
+ const Tooltip = ({ children, ...props }) => /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { ...props, children }) });
1100
+ Tooltip.displayName = "Tooltip";
1101
+ const TooltipContent = React.forwardRef(({ className, sideOffset = 6, showArrow = true, children, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
1102
+ TooltipPrimitive.Content,
1103
+ {
1104
+ ref,
1105
+ sideOffset,
1106
+ className: cn(
1107
+ "z-50 max-w-[16rem] select-none",
1108
+ "bg-bg-emphasis text-fg-default",
1109
+ "rounded-radius-md px-pad-lg py-pad-xs",
1110
+ "text-caption-sm",
1111
+ "shadow-sh-md",
1112
+ "origin-[--radix-tooltip-content-transform-origin]",
1113
+ "data-[state=delayed-open]:animate-in data-[state=instant-open]:animate-in data-[state=closed]:animate-out",
1114
+ "data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0 data-[state=instant-open]:fade-in-0",
1115
+ "data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95 data-[state=instant-open]:zoom-in-95",
1116
+ "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
1117
+ "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1118
+ className
1119
+ ),
1120
+ ...props,
1121
+ children: [
1122
+ children,
1123
+ showArrow && /* @__PURE__ */ jsx(
1124
+ TooltipPrimitive.Arrow,
1125
+ {
1126
+ width: 11,
1127
+ height: 5,
1128
+ className: "fill-bg-emphasis"
1129
+ }
1130
+ )
1131
+ ]
1132
+ }
1133
+ ) }));
1134
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
1135
+ const Collapsible = CollapsiblePrimitive.Root;
1136
+ const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
1137
+ const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;
1095
1138
  const Avatar = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1096
1139
  AvatarPrimitive.Root,
1097
1140
  {
@@ -1126,62 +1169,69 @@ const AvatarFallback = React.forwardRef(({ className, ...props }, ref) => /* @__
1126
1169
  ));
1127
1170
  AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1128
1171
  export {
1129
- inputGroupInputVariants as $,
1172
+ PopoverTrigger as $,
1130
1173
  Avatar as A,
1131
1174
  Button as B,
1132
- Command as C,
1175
+ Collapsible as C,
1133
1176
  Dialog as D,
1134
- DropdownMenuLabel as E,
1135
- DropdownMenuPortal as F,
1136
- DropdownMenuRadioGroup as G,
1137
- DropdownMenuRadioItem as H,
1138
- DropdownMenuSeparator as I,
1139
- DropdownMenuShortcut as J,
1140
- DropdownMenuSub as K,
1141
- DropdownMenuSubContent as L,
1142
- DropdownMenuSubTrigger as M,
1143
- DropdownMenuTrigger as N,
1144
- InputGroup as O,
1145
- InputGroupAddon as P,
1146
- InputGroupButton as Q,
1147
- InputGroupInput as R,
1148
- InputGroupText as S,
1149
- InputGroupTextarea as T,
1150
- Popover as U,
1151
- PopoverAnchor as V,
1152
- PopoverClose as W,
1153
- PopoverContent as X,
1154
- PopoverTrigger as Y,
1155
- inputGroupAddonVariants as Z,
1156
- inputGroupButtonVariants as _,
1177
+ DropdownMenuContent as E,
1178
+ DropdownMenuGroup as F,
1179
+ DropdownMenuItem as G,
1180
+ DropdownMenuLabel as H,
1181
+ DropdownMenuPortal as I,
1182
+ DropdownMenuRadioGroup as J,
1183
+ DropdownMenuRadioItem as K,
1184
+ DropdownMenuSeparator as L,
1185
+ DropdownMenuShortcut as M,
1186
+ DropdownMenuSub as N,
1187
+ DropdownMenuSubContent as O,
1188
+ DropdownMenuSubTrigger as P,
1189
+ DropdownMenuTrigger as Q,
1190
+ InputGroup as R,
1191
+ InputGroupAddon as S,
1192
+ InputGroupButton as T,
1193
+ InputGroupInput as U,
1194
+ InputGroupText as V,
1195
+ InputGroupTextarea as W,
1196
+ Popover as X,
1197
+ PopoverAnchor as Y,
1198
+ PopoverClose as Z,
1199
+ PopoverContent as _,
1157
1200
  AvatarFallback as a,
1158
- inputGroupTextareaVariants as a0,
1159
- inputGroupVariants as a1,
1160
- buttonVariants as a2,
1201
+ Tooltip as a0,
1202
+ TooltipContent as a1,
1203
+ TooltipProvider as a2,
1204
+ TooltipTrigger as a3,
1205
+ inputGroupAddonVariants as a4,
1206
+ inputGroupButtonVariants as a5,
1207
+ inputGroupInputVariants as a6,
1208
+ inputGroupTextareaVariants as a7,
1209
+ inputGroupVariants as a8,
1210
+ buttonVariants as a9,
1161
1211
  AvatarImage as b,
1162
1212
  cn as c,
1163
- CommandDialog as d,
1164
- CommandEmpty as e,
1165
- CommandGroup as f,
1166
- CommandInput as g,
1167
- CommandItem as h,
1168
- CommandList as i,
1169
- CommandSeparator as j,
1170
- CommandShortcut as k,
1171
- DialogClose as l,
1172
- DialogContent as m,
1173
- DialogDescription as n,
1174
- DialogFooter as o,
1175
- DialogHeader as p,
1176
- DialogOverlay as q,
1177
- DialogPortal as r,
1178
- DialogTitle as s,
1213
+ CollapsibleContent as d,
1214
+ CollapsibleTrigger as e,
1215
+ Command as f,
1216
+ CommandDialog as g,
1217
+ CommandEmpty as h,
1218
+ CommandGroup as i,
1219
+ CommandInput as j,
1220
+ CommandItem as k,
1221
+ CommandList as l,
1222
+ CommandSeparator as m,
1223
+ CommandShortcut as n,
1224
+ DialogClose as o,
1225
+ DialogContent as p,
1226
+ DialogDescription as q,
1227
+ DialogFooter as r,
1228
+ DialogHeader as s,
1179
1229
  tv as t,
1180
- DialogTrigger as u,
1181
- DropdownMenu as v,
1182
- DropdownMenuCheckboxItem as w,
1183
- DropdownMenuContent as x,
1184
- DropdownMenuGroup as y,
1185
- DropdownMenuItem as z
1230
+ DialogOverlay as u,
1231
+ DialogPortal as v,
1232
+ DialogTitle as w,
1233
+ DialogTrigger as x,
1234
+ DropdownMenu as y,
1235
+ DropdownMenuCheckboxItem as z
1186
1236
  };
1187
- //# sourceMappingURL=avatar-DQYiVRlE.mjs.map
1237
+ //# sourceMappingURL=avatar-DFWEwBKu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-DFWEwBKu.mjs","sources":["../../src/lib/utils.ts","../../src/utils/tv.ts","../../src/components/ui/Button/button.styles.ts","../../src/components/ui/Button/button.tsx","../../src/components/shadcn/dialog.tsx","../../src/components/shadcn/command.tsx","../../src/components/shadcn/popover.tsx","../../src/components/shadcn/input-group.tsx","../../src/components/shadcn/dropdown-menu.tsx","../../src/components/shadcn/tooltip.tsx","../../src/components/shadcn/collapsible.tsx","../../src/components/shadcn/avatar.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\r\nimport { extendTailwindMerge } from \"tailwind-merge\";\r\n\r\n/**\r\n * tw-merge configurado pra reconhecer:\r\n *\r\n * 1) Presets tipográficos do iGreen DS como `font-size` (e não text-color).\r\n * Sem isso, `text-title-md` e `text-fg-default` colidem e um é removido.\r\n *\r\n * 2) Prefixos DS (pad-*, sp-*, gp-*, radius-*, sh-*, form-*) como conflitantes\r\n * com utilitários nativos do Tailwind. Sem isso, `p-pad-4xl` + `p-0` no cn()\r\n * deixava AMBOS no className final (24px + 0 = 24px ganhava).\r\n */\r\n\r\n/** Padding/Margin spacing: pad-* (padding contexts), sp-* (geral) */\r\nconst isDsPad = (v: string) => /^(pad|sp)-/.test(v);\r\n/** Gap: gp-* */\r\nconst isDsGap = (v: string) => /^gp-/.test(v);\r\n/** Border-radius: radius-* */\r\nconst isDsRadius = (v: string) => /^radius-/.test(v);\r\n/** Shadow: sh-* */\r\nconst isDsShadow = (v: string) => /^sh-/.test(v);\r\n/** Form heights: form-* (min-h, h, w, size) */\r\nconst isDsForm = (v: string) => /^form-/.test(v);\r\n\r\nconst twMerge = extendTailwindMerge({\r\n extend: {\r\n classGroups: {\r\n \"font-size\": [\r\n {\r\n // Lista 1:1 com tokens/brands/default/semantic/typography.ts.\r\n // Manter sincronizado com src/utils/tv.ts. Ver L-016.\r\n text: [\r\n // Displays (fluid clamp)\r\n \"display-2xl\", \"display-xl\", \"display-lg\", \"display-md\",\r\n // Headings (xs estático, sm-xl fluid clamp)\r\n \"heading-xl\", \"heading-lg\", \"heading-md\", \"heading-sm\", \"heading-xs\",\r\n // Titles (weight 600 default)\r\n \"title-lg\", \"title-md\", \"title-sm\",\r\n // Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)\r\n \"body-2xl\", \"body-xl\", \"body-lg\", \"body-md\", \"body-sm\", \"body-xs\",\r\n // Captions (weight 400)\r\n \"caption-md\", \"caption-sm\", \"caption-xs\",\r\n // Stat (número de métrica/KPI — estático, bold, leading tight)\r\n \"stat-xl\", \"stat-lg\", \"stat-md\", \"stat-sm\",\r\n // Code (mono regular)\r\n \"code-md\", \"code-sm\",\r\n ],\r\n },\r\n ],\r\n\r\n /* ── Padding ──────────────────────────────────────────────────────── */\r\n p: [{ p: [isDsPad] }],\r\n px: [{ px: [isDsPad] }],\r\n py: [{ py: [isDsPad] }],\r\n pt: [{ pt: [isDsPad] }],\r\n pr: [{ pr: [isDsPad] }],\r\n pb: [{ pb: [isDsPad] }],\r\n pl: [{ pl: [isDsPad] }],\r\n ps: [{ ps: [isDsPad] }],\r\n pe: [{ pe: [isDsPad] }],\r\n\r\n /* ── Margin (usa mesmo sp-*) ──────────────────────────────────────── */\r\n m: [{ m: [isDsPad] }],\r\n mx: [{ mx: [isDsPad] }],\r\n my: [{ my: [isDsPad] }],\r\n mt: [{ mt: [isDsPad] }],\r\n mr: [{ mr: [isDsPad] }],\r\n mb: [{ mb: [isDsPad] }],\r\n ml: [{ ml: [isDsPad] }],\r\n ms: [{ ms: [isDsPad] }],\r\n me: [{ me: [isDsPad] }],\r\n\r\n /* ── Inset / position (top/right/bottom/left) ─────────────────────── */\r\n inset: [{ inset: [isDsPad] }],\r\n \"inset-x\": [{ \"inset-x\": [isDsPad] }],\r\n \"inset-y\": [{ \"inset-y\": [isDsPad] }],\r\n \"top\": [{ top: [isDsPad] }],\r\n \"right\": [{ right: [isDsPad] }],\r\n \"bottom\": [{ bottom: [isDsPad] }],\r\n \"left\": [{ left: [isDsPad] }],\r\n \"start\": [{ start: [isDsPad] }],\r\n \"end\": [{ end: [isDsPad] }],\r\n\r\n /* ── Gap ──────────────────────────────────────────────────────────── */\r\n gap: [{ gap: [isDsGap] }],\r\n \"gap-x\": [{ \"gap-x\": [isDsGap] }],\r\n \"gap-y\": [{ \"gap-y\": [isDsGap] }],\r\n\r\n /* ── Rounded (todas as cantos) ────────────────────────────────────── */\r\n rounded: [{ rounded: [isDsRadius] }],\r\n \"rounded-s\": [{ \"rounded-s\": [isDsRadius] }],\r\n \"rounded-e\": [{ \"rounded-e\": [isDsRadius] }],\r\n \"rounded-t\": [{ \"rounded-t\": [isDsRadius] }],\r\n \"rounded-r\": [{ \"rounded-r\": [isDsRadius] }],\r\n \"rounded-b\": [{ \"rounded-b\": [isDsRadius] }],\r\n \"rounded-l\": [{ \"rounded-l\": [isDsRadius] }],\r\n \"rounded-ss\": [{ \"rounded-ss\": [isDsRadius] }],\r\n \"rounded-se\": [{ \"rounded-se\": [isDsRadius] }],\r\n \"rounded-ee\": [{ \"rounded-ee\": [isDsRadius] }],\r\n \"rounded-es\": [{ \"rounded-es\": [isDsRadius] }],\r\n \"rounded-tl\": [{ \"rounded-tl\": [isDsRadius] }],\r\n \"rounded-tr\": [{ \"rounded-tr\": [isDsRadius] }],\r\n \"rounded-br\": [{ \"rounded-br\": [isDsRadius] }],\r\n \"rounded-bl\": [{ \"rounded-bl\": [isDsRadius] }],\r\n\r\n /* ── Shadow ───────────────────────────────────────────────────────── */\r\n shadow: [{ shadow: [isDsShadow] }],\r\n\r\n /* ── Form sizes (min-h, h, w, size) ───────────────────────────────── */\r\n \"min-h\": [{ \"min-h\": [isDsForm] }],\r\n h: [{ h: [isDsForm] }],\r\n w: [{ w: [isDsForm] }],\r\n size: [{ size: [isDsForm] }],\r\n },\r\n },\r\n});\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","// src/utils/tv.ts\r\n// tv() customizado que ensina o tailwind-merge a reconhecer\r\n// os presets tipográficos do iGreen como font-size, não text-color.\r\nimport { tv as tvBase, type TVConfig } from \"tailwind-variants\";\r\n\r\n// Objeto de config — NÃO é o resultado de extendTailwindMerge()\r\n// TV3 recebe o config diretamente e aplica o merge internamente\r\nconst twMergeConfig = {\r\n extend: {\r\n classGroups: {\r\n \"font-size\": [\r\n {\r\n text: [\r\n // Displays (fluid clamp)\r\n \"display-2xl\", \"display-xl\", \"display-lg\", \"display-md\",\r\n // Headings (xs estático, sm-xl fluid clamp)\r\n \"heading-xl\", \"heading-lg\", \"heading-md\", \"heading-sm\", \"heading-xs\",\r\n // Titles (weight 600 default)\r\n \"title-lg\", \"title-md\", \"title-sm\",\r\n // Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)\r\n \"body-2xl\", \"body-xl\", \"body-lg\", \"body-md\", \"body-sm\", \"body-xs\",\r\n // Captions (weight 400)\r\n \"caption-md\", \"caption-sm\", \"caption-xs\",\r\n // Stat (número de métrica/KPI — estático, bold, leading tight)\r\n \"stat-xl\", \"stat-lg\", \"stat-md\", \"stat-sm\",\r\n // Code (mono regular)\r\n \"code-md\", \"code-sm\",\r\n ],\r\n },\r\n ],\r\n },\r\n },\r\n};\r\n\r\nexport const tv: typeof tvBase = (options, config) =>\r\n tvBase(options, {\r\n ...config,\r\n twMergeConfig,\r\n } as TVConfig);\r\n\r\nexport type { VariantProps } from \"tailwind-variants\";\r\n","import { tv, type VariantProps } from \"@/utils/tv\";\r\n\r\n/**\r\n * Button styles — V3 tokens (alinhado com /design-and-table-v2)\r\n *\r\n * Specs base:\r\n * - font-size 13px (text-body-md font-medium = 0.8125rem / 600)\r\n * - border-radius 10px (rounded-radius-lg)\r\n * - secondary usa fg-secondary\r\n * - rings cor-pura via ring.{brand|danger|success|warning|secondary}\r\n *\r\n * Variants color: primary/secondary/critical/success/warning\r\n * - primary → bg-brand / fg-brand / border-brand\r\n * - critical → bg-danger / fg-danger / border-danger-muted\r\n * - secondary → neutros (bg-muted, fg-secondary, border-default)\r\n *\r\n * Variants visual: filled/outline/soft/ghost\r\n *\r\n * Sizes mantidas (largura/espaçamento como estavam).\r\n *\r\n * Disabled: opacity-50 (v3 não tem bg-disabled token).\r\n */\r\nexport const buttonVariants = tv({\r\n base: [\r\n \"inline-flex items-center justify-center\",\r\n \"select-none whitespace-nowrap\",\r\n \"focus-visible:outline-none\",\r\n \"border border-transparent\",\r\n \"text-body-sm font-semibold leading-none\", // 13px / 600 — alinhado com sandbox btn\r\n \"[&_svg]:shrink-0\", // SVG não diminui; tamanho controlado por size\r\n \"transition-all duration-200 ease-out\",\r\n \"cursor-pointer\",\r\n \"focus-visible:ring-4\",\r\n ],\r\n\r\n variants: {\r\n color: {\r\n primary: \"focus-visible:ring-ring-brand\",\r\n secondary: \"focus-visible:ring-ring-secondary\",\r\n critical: \"focus-visible:ring-ring-danger\",\r\n success: \"focus-visible:ring-ring-success\",\r\n warning: \"focus-visible:ring-ring-warning\",\r\n },\r\n\r\n variant: {\r\n filled: \"\",\r\n outline: \"\",\r\n soft: \"\",\r\n ghost: \"bg-transparent\",\r\n },\r\n\r\n size: {\r\n // h28 / pad 10 / gap 6 / radius 8 / icon 12\r\n \"2xs\": \"min-h-form-xs px-pad-lg gap-gp-sm rounded-radius-md [&_svg]:size-[12px]\",\r\n // h32 / pad 12 / gap 6 / radius 8 / icon 14\r\n xs: \"min-h-form-sm px-pad-xl gap-gp-sm rounded-radius-md [&_svg]:size-[14px]\",\r\n // h36 / pad 12 / gap 6 / radius 10 / icon 14\r\n sm: \"min-h-form-md px-pad-xl gap-gp-sm rounded-radius-lg [&_svg]:size-[14px]\",\r\n // h40 / pad 16 / gap 6 / radius 10 / icon 14 (alinhado com sandbox Exportar)\r\n md: \"min-h-form-lg px-pad-2xl gap-gp-sm rounded-radius-lg [&_svg]:size-[14px]\",\r\n // h44 / pad 16 / gap 8 / radius 10 / icon 16\r\n lg: \"min-h-form-xl px-pad-2xl gap-gp-md rounded-radius-lg [&_svg]:size-[16px]\",\r\n\r\n // Icon buttons — width = height (square). Regra: SVG +2px vs versão com label\r\n // (precisa preencher mais o quadrado sem o texto carregando peso visual).\r\n \"icon-2xs\": \"size-form-xs rounded-radius-md p-0 [&_svg]:size-[14px]\", // 28×28 / +2 (12→14)\r\n \"icon-xs\": \"size-form-sm rounded-radius-md p-0 [&_svg]:size-[16px]\", // 32×32 / +2 (14→16)\r\n \"icon-sm\": \"size-form-md rounded-radius-lg p-0 [&_svg]:size-[16px]\", // 36×36 / +2 (14→16)\r\n \"icon-md\": \"size-form-lg rounded-radius-lg p-0 [&_svg]:size-[16px]\", // 40×40 / +2 (14→16)\r\n \"icon-lg\": \"size-form-xl rounded-radius-lg p-0 [&_svg]:size-[18px]\", // 44×44 / +2 (16→18)\r\n },\r\n\r\n fullWidth: {\r\n true: \"w-full flex-1\",\r\n },\r\n\r\n /**\r\n * Shape do botão:\r\n * - rounded (default): mantém o radius da `size` (varia por tamanho)\r\n * - pill: força `rounded-full` (override com `!` pra ganhar do size)\r\n */\r\n shape: {\r\n rounded: \"\",\r\n pill: \"!rounded-full\",\r\n },\r\n\r\n disabled: {\r\n true: \"pointer-events-none opacity-50\",\r\n },\r\n },\r\n\r\n compoundVariants: [\r\n // ── Primary (brand) ─────────────────────────────────────────────\r\n {\r\n color: \"primary\", variant: \"filled\",\r\n class: \"bg-bg-brand text-fg-on-brand hover:bg-bg-brand-hover\",\r\n },\r\n {\r\n color: \"primary\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-brand text-fg-brand shadow-sh-sm hover:bg-bg-brand-subtle hover:border-transparent hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"primary\", variant: \"soft\",\r\n class: \"bg-bg-brand-subtle text-fg-brand hover:bg-bg-brand-subtle-hover\",\r\n },\r\n {\r\n color: \"primary\", variant: \"ghost\",\r\n class: \"text-fg-brand hover:bg-bg-brand-subtle\",\r\n },\r\n\r\n // ── Secondary (neutro) ──────────────────────────────────────────\r\n {\r\n color: \"secondary\", variant: \"filled\",\r\n class: \"bg-bg-muted text-fg-muted hover:bg-bg-muted-hover hover:text-fg-default\",\r\n },\r\n {\r\n // Outline alinhado com `.btn.tbl-tool-btn` do design-and-table-v2:\r\n // light = bg-surface + border-subtle + fg-default + shadow-sm (mantém no hover)\r\n // dark = bg-muted + border-input + fg-muted + sem shadow\r\n color: \"secondary\", variant: \"outline\",\r\n class: [\r\n \"bg-bg-surface border-border-subtle text-fg-default shadow-sh-sm\",\r\n \"dark:bg-bg-muted dark:border-border-input dark:text-fg-muted dark:shadow-sh-none\",\r\n \"hover:bg-bg-muted-hover hover:text-fg-default\",\r\n \"dark:hover:bg-bg-muted-hover dark:hover:text-fg-default\",\r\n ].join(\" \"),\r\n },\r\n {\r\n color: \"secondary\", variant: \"soft\",\r\n class: \"bg-bg-muted text-fg-muted hover:bg-bg-muted-hover hover:text-fg-default\",\r\n },\r\n {\r\n color: \"secondary\", variant: \"ghost\",\r\n class: \"text-fg-muted hover:bg-bg-muted hover:text-fg-default\",\r\n },\r\n\r\n // ── Critical (danger) ───────────────────────────────────────────\r\n {\r\n color: \"critical\", variant: \"filled\",\r\n class: \"bg-bg-danger text-fg-on-danger hover:bg-bg-danger-hover\",\r\n },\r\n {\r\n color: \"critical\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-danger-muted text-fg-danger shadow-sh-sm hover:bg-bg-danger-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"critical\", variant: \"soft\",\r\n class: \"bg-bg-danger-muted text-fg-danger hover:bg-bg-danger-muted-hover\",\r\n },\r\n {\r\n color: \"critical\", variant: \"ghost\",\r\n class: \"text-fg-danger hover:bg-bg-danger-muted\",\r\n },\r\n\r\n // ── Success ─────────────────────────────────────────────────────\r\n {\r\n color: \"success\", variant: \"filled\",\r\n class: \"bg-bg-success text-fg-on-success hover:bg-bg-success-hover\",\r\n },\r\n {\r\n color: \"success\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-success-muted text-fg-success shadow-sh-sm hover:bg-bg-success-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"success\", variant: \"soft\",\r\n class: \"bg-bg-success-muted text-fg-success hover:bg-bg-success-muted-hover\",\r\n },\r\n {\r\n color: \"success\", variant: \"ghost\",\r\n class: \"text-fg-success hover:bg-bg-success-muted\",\r\n },\r\n\r\n // ── Warning ─────────────────────────────────────────────────────\r\n {\r\n color: \"warning\", variant: \"filled\",\r\n class: \"bg-bg-warning text-fg-on-warning hover:bg-bg-warning-hover\",\r\n },\r\n {\r\n color: \"warning\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-warning-muted text-fg-warning shadow-sh-sm hover:bg-bg-warning-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"warning\", variant: \"soft\",\r\n class: \"bg-bg-warning-muted text-fg-warning hover:bg-bg-warning-muted-hover\",\r\n },\r\n {\r\n color: \"warning\", variant: \"ghost\",\r\n class: \"text-fg-warning hover:bg-bg-warning-muted\",\r\n },\r\n\r\n // ── Disabled — SEMPRE por último ────────────────────────────────\r\n { disabled: true, class: \"pointer-events-none opacity-50\" },\r\n ],\r\n\r\n defaultVariants: {\r\n color: \"primary\",\r\n variant: \"filled\",\r\n size: \"md\",\r\n shape: \"rounded\",\r\n },\r\n});\r\n\r\nexport type ButtonVariantProps = VariantProps<typeof buttonVariants>;\r\n","import { forwardRef } from \"react\";\nimport type { ButtonProps } from \"./button.types\";\nimport { buttonVariants } from \"./button.styles\";\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n color,\n variant,\n size,\n shape,\n fullWidth,\n loading = false,\n disabled = false,\n iconLeft,\n iconRight,\n children,\n className,\n type = \"button\",\n ...rest\n },\n ref,\n ) {\n const isDisabled = disabled || loading;\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={isDisabled}\n className={buttonVariants({\n color,\n variant,\n size,\n shape,\n fullWidth,\n disabled: isDisabled,\n className,\n })}\n {...rest}\n >\n {loading && <Spinner />}\n {!loading && iconLeft}\n {children}\n {!loading && iconRight}\n </button>\n );\n },\n);\n\nfunction Spinner() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"animate-spin\"\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"28\"\n strokeDashoffset=\"8\"\n className=\"opacity-70\"\n />\n </svg>\n );\n}\n","import * as React from \"react\"\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Dialog = DialogPrimitive.Root\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger\r\n\r\nconst DialogPortal = DialogPrimitive.Portal\r\n\r\nconst DialogClose = DialogPrimitive.Close\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/30 supports-[backdrop-filter]:backdrop-blur-sm 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 />\r\n))\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\r\n /** Esconde o botão \"X\" (Close) no canto superior direito. Default: false. */\r\n hideClose?: boolean;\r\n }\r\n>(({ className, children, hideClose, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.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)] translate-x-[-50%] translate-y-[-50%] gap-gp-4xl rounded-radius-base bg-bg-surface p-pad-4xl text-body-md text-fg-default shadow-sh-xl outline-float duration-200 sm:max-w-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {!hideClose && (\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-radius-sm opacity-70 transition-opacity hover:opacity-100 outline-none ring-0 ring-ring-brand focus-visible:ring-4 disabled:pointer-events-none data-[state=open]:bg-bg-muted data-[state=open]:text-fg-muted\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n )}\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n))\r\nDialogContent.displayName = DialogPrimitive.Content.displayName\r\n\r\nconst DialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\"flex flex-col gap-gp-sm\", className)}\r\n {...props}\r\n />\r\n)\r\nDialogHeader.displayName = \"DialogHeader\"\r\n\r\nconst DialogFooter = ({\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\nDialogFooter.displayName = \"DialogFooter\"\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-title-md font-medium text-fg-default leading-none\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-body-md text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n}\r\n","\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\r\nimport { Command as CommandPrimitive } from \"cmdk\"\r\nimport { Search } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Dialog, DialogContent, DialogTitle } from \"@/components/shadcn/dialog\"\r\n\r\n/**\r\n * Command — alinhado com o views-popover do design-and-table-v2.\r\n *\r\n * Estrutura:\r\n * - <Command> raiz (flex column)\r\n * - <CommandInput> = input \"real\" boxed (bg-input + border + radius-lg + shadow)\r\n * - <CommandList> com padding 4px\r\n * - <CommandGroup> heading uppercase + items\r\n * - <CommandItem> radius-lg (10px), px 12, py 8, font 13px, ícones 18px\r\n *\r\n * Pattern do input replica `.tbl-views-pop-search` exatamente.\r\n */\r\n\r\nconst Command = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive\r\n ref={ref}\r\n className={cn(\r\n // `bg-popover`/`text-popover-foreground` são vocabulário SHADCN, não do DS —\r\n // dependem da bridge do `globals.css`/`index.css`, que NÃO viaja pros canais npm\r\n // e submódulo. Lá a var não existe e a cor cai em `currentColor` (L-039/L-040).\r\n //\r\n // ⚠️ O substituto é `bg-bg-surface`, NÃO `bg-bg-dropdown`. A primeira troca (v0.36.0)\r\n // usou `dropdown` por ser o token da receita de flutuante — mas ele é TRANSLÚCIDO no\r\n // dark (`canvas` a 70%, pareado com `before:backdrop-blur-2xl`, que este componente\r\n // não tem), enquanto a bridge resolvia `popover` pra `surface-elevated`, OPACO.\r\n // Medido: light idêntico nos dois; dark `oklch(0.225 0 0)` vs `oklab(0.205 0 0 / 0.7)`.\r\n // `bg-bg-surface` reproduz o valor original nos DOIS modos.\r\n \"flex h-full w-full flex-col overflow-hidden p-pad-xl bg-bg-surface text-fg-default\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommand.displayName = CommandPrimitive.displayName\r\n\r\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\r\n return (\r\n <Dialog {...props}>\r\n <DialogContent\r\n hideClose\r\n // A11y: Radix exige título; aqui é sr-only (paleta de comando não tem\r\n // header visível) e opt-out de descrição.\r\n aria-describedby={undefined}\r\n className={cn(\r\n \"overflow-hidden p-0 gap-0 sm:max-w-[384px]\",\r\n \"rounded-[12px] border border-border-default\",\r\n // Outline padrão de elementos flutuantes\r\n \"outline-float\"\r\n )}\r\n >\r\n <DialogTitle className=\"sr-only\">Comando</DialogTitle>\r\n <Command>{children}</Command>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n\r\n/* ── Input boxed (igual views-popover search) ─────────────────────────────── */\r\nconst CommandInput = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Input>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n cmdk-input-wrapper=\"\"\r\n className={cn(\r\n \"flex items-center gap-gp-md h-form-md px-pad-xl rounded-radius-lg\",\r\n \"bg-bg-input border border-border-subtle shadow-sh-sm\",\r\n \"transition-[border-color,box-shadow,background-color] duration-150\",\r\n \"focus-within:border-border-brand focus-within:shadow-sh-ring\",\r\n \"dark:bg-bg-muted dark:border-border-input dark:shadow-sh-none\"\r\n )}\r\n >\r\n <Search className=\"size-[14px] text-fg-muted shrink-0\" strokeWidth={1.8} />\r\n <CommandPrimitive.Input\r\n ref={ref}\r\n className={cn(\r\n \"flex-1 min-w-0 bg-transparent border-0 outline-none\",\r\n \"text-body-sm font-normal text-fg-default placeholder:text-fg-muted\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n))\r\nCommandInput.displayName = CommandPrimitive.Input.displayName\r\n\r\n/* ── List ─────────────────────────────────────────────────────────────────── */\r\nconst CommandList = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n \"max-h-[300px] overflow-y-auto overflow-x-hidden mt-pad-md scrollbar-thin\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommandList.displayName = CommandPrimitive.List.displayName\r\n\r\nconst CommandEmpty = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Empty>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\r\n>((props, ref) => (\r\n <CommandPrimitive.Empty\r\n ref={ref}\r\n className=\"py-pad-5xl text-center text-body-md text-fg-muted\"\r\n {...props}\r\n />\r\n))\r\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\r\n\r\n/* ── Group (heading uppercase 28px, sem padding extra no group) ──────────── */\r\nconst CommandGroup = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Group>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Group\r\n ref={ref}\r\n className={cn(\r\n \"overflow-hidden text-fg-default\",\r\n \"[&_[cmdk-group-heading]]:flex [&_[cmdk-group-heading]]:items-center\",\r\n \"[&_[cmdk-group-heading]]:h-[28px] [&_[cmdk-group-heading]]:px-pad-xl\",\r\n \"[&_[cmdk-group-heading]]:text-caption-xs [&_[cmdk-group-heading]]:font-bold\",\r\n \"[&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-wider\",\r\n \"[&_[cmdk-group-heading]]:text-fg-subtle\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommandGroup.displayName = CommandPrimitive.Group.displayName\r\n\r\nconst CommandSeparator = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"mx-pad-xs my-pad-xs h-px bg-border-default\", className)}\r\n {...props}\r\n />\r\n))\r\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\r\n\r\n/* ── Item: px-12 py-8, radius-lg (10px), font 13px, ícones 18px ───────────── */\r\nconst CommandItem = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center gap-gp-md\",\r\n \"rounded-radius-lg px-pad-xl py-pad-md\",\r\n \"text-body-sm font-medium text-fg-muted\",\r\n \"outline-none transition-colors\",\r\n \"data-[selected='true']:bg-bg-muted data-[selected='true']:text-fg-default data-[selected='true']:[&_svg]:text-fg-default\",\r\n \"data-[disabled='true']:pointer-events-none data-[disabled='true']:opacity-50\",\r\n \"[&_svg]:pointer-events-none [&_svg]:size-[18px] [&_svg]:shrink-0 [&_svg]:text-fg-muted\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommandItem.displayName = CommandPrimitive.Item.displayName\r\n\r\nconst CommandShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\r\n \"ml-auto text-caption-sm tracking-wider text-fg-subtle\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\nCommandShortcut.displayName = \"CommandShortcut\"\r\n\r\nexport {\r\n Command,\r\n CommandDialog,\r\n CommandInput,\r\n CommandList,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandItem,\r\n CommandShortcut,\r\n CommandSeparator,\r\n}\r\n","import * as React from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * Popover — primitives baixo nível pra menus flutuantes (Cols, Sort, Filter, Views).\r\n *\r\n * Visual unificado com DropdownMenu/Select: bg-bg-dropdown (frosted-glass no\r\n * dark via `before:backdrop-blur-2xl`), border-default, radius 12px, shadow-lg\r\n * + outline-float (halo). Padronizado pra evitar inconsistência visual entre\r\n * menus de ação (DropdownMenu) e menus de configuração (Popover de Filtros,\r\n * Sort, Cols, Views).\r\n *\r\n * Não tem `Item` próprio — o consumer monta o conteúdo do popover livremente.\r\n * Pra menus de ação com items semânticos, prefira `DropdownMenu`.\r\n */\r\n\r\nconst Popover = PopoverPrimitive.Root;\r\nconst PopoverTrigger = PopoverPrimitive.Trigger;\r\nconst PopoverAnchor = PopoverPrimitive.Anchor;\r\nconst PopoverClose = PopoverPrimitive.Close;\r\n\r\n/* ── Mobile sheet (<md) ───────────────────────────────────────────────\r\n * Em telas <md o conteúdo vira sheet bottom-up colado nas bordas: full-width,\r\n * só cantos superiores arredondados, flush, sem outline/shadow, cap 92vh.\r\n * O wrapper do Radix Popper é reposicionado no globals.css via a regra\r\n * `[data-radix-popper-content-wrapper]:has([data-mobile-sheet])` (mesma usada\r\n * pelo DropdownMenu). Animação: neutraliza o zoom e desliza de baixo. */\r\nconst POPOVER_MOBILE_SHEET = [\r\n \"max-md:w-full max-md:min-w-0 max-md:max-w-none\",\r\n \"max-md:!max-h-[92vh]\",\r\n \"max-md:rounded-b-none max-md:rounded-t-[12px]\",\r\n \"max-md:border-x-0 max-md:border-b-0\",\r\n \"max-md:outline-none max-md:shadow-none\",\r\n // Respiro de 20px (pad-3xl) no rodapé pra o conteúdo (footer/última seção)\r\n // não colar na borda inferior do device quando vira sheet.\r\n \"max-md:pb-pad-3xl\",\r\n \"max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100\",\r\n \"max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12\",\r\n].join(\" \");\r\n\r\n/** Backdrop suave — só mobile (md:hidden). Toque fecha via dismiss do Radix. */\r\nconst PopoverSheetBackdrop = () => (\r\n <div\r\n aria-hidden=\"true\"\r\n className=\"fixed inset-0 z-[55] bg-overlay-scrim pointer-events-auto md:hidden animate-in fade-in-0 duration-150\"\r\n />\r\n);\r\n\r\ntype PopoverContentProps = React.ComponentPropsWithoutRef<\r\n typeof PopoverPrimitive.Content\r\n> & {\r\n /**\r\n * Renderiza o conteúdo SEM `<Portal>`. Útil quando o conteúdo interno usa\r\n * libs como dnd-kit que conflitam com o transform do Floating UI do Portal.\r\n * Default `false` (usa portal — comportamento padrão).\r\n */\r\n disablePortal?: boolean;\r\n /**\r\n * Em telas <md, transforma o popover em **sheet bottom-up** colado nas bordas,\r\n * com backdrop suave (toque fora fecha). No desktop não muda nada. Default `true`.\r\n * Passe `false` pra manter o popover ancorado no trigger também em mobile.\r\n * (Mesmo nome da prop do `DropdownMenu` — comportamento consistente.)\r\n */\r\n mobileSheet?: boolean;\r\n};\r\n\r\nconst PopoverContent = React.forwardRef<\r\n React.ElementRef<typeof PopoverPrimitive.Content>,\r\n PopoverContentProps\r\n>(\r\n (\r\n { className, align = \"center\", sideOffset = 6, disablePortal, mobileSheet = true, ...props },\r\n ref,\r\n ) => {\r\n const content = (\r\n <PopoverPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n data-mobile-sheet={mobileSheet ? \"\" : undefined}\r\n className={cn(\r\n \"relative z-50\",\r\n // Unificado com DropdownMenu/Select: bg-bg-dropdown (frosted no dark)\r\n // + border-border-default + outline-float. O `before` pseudo-element\r\n // aplica o blur backdrop (necessário pra bg-bg-dropdown semi-transparente\r\n // render correto no dark mode).\r\n \"bg-bg-dropdown\",\r\n \"border border-border-default rounded-[12px] 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\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n mobileSheet && POPOVER_MOBILE_SHEET,\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n\r\n if (disablePortal) {\r\n // Sem portal: backdrop inline (fixed escapa do flow mesmo assim).\r\n return mobileSheet ? (\r\n <>\r\n <PopoverSheetBackdrop />\r\n {content}\r\n </>\r\n ) : (\r\n content\r\n );\r\n }\r\n\r\n // Com portal: backdrop em Portal próprio (cada Portal Radix aceita 1 filho\r\n // e é montado/desmontado junto com o popover via Presence).\r\n return (\r\n <>\r\n {mobileSheet && (\r\n <PopoverPrimitive.Portal>\r\n <PopoverSheetBackdrop />\r\n </PopoverPrimitive.Portal>\r\n )}\r\n <PopoverPrimitive.Portal>{content}</PopoverPrimitive.Portal>\r\n </>\r\n );\r\n },\r\n);\r\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\r\n\r\nexport { Popover, PopoverTrigger, PopoverAnchor, PopoverClose, PopoverContent };\r\n","import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * InputGroup — composição rica pra inputs com addons (prefixo, sufixo, ícone, botão).\r\n *\r\n * Estrutura:\r\n * <InputGroup>\r\n * <InputGroupAddon align=\"inline-start\"><Icon /></InputGroupAddon>\r\n * <InputGroupInput placeholder=\"...\" />\r\n * <InputGroupAddon align=\"inline-end\">\r\n * <InputGroupButton><X /></InputGroupButton>\r\n * </InputGroupAddon>\r\n * </InputGroup>\r\n *\r\n * Visual alinhado com `.tbl-form-input` (mesmo bg/border/radius do <Input>).\r\n * State (default/error/warning/success) afeta borda + focus ring (shadow-sh-ring-*).\r\n */\r\n\r\nexport type InputGroupState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\n/* ── Wrapper ─────────────────────────────────────────────────────────────── */\r\nconst inputGroupVariants = cva(\r\n [\r\n \"group/input-group relative flex w-full items-center\",\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 \"transition-[border-color,box-shadow,background-color] outline-none\",\r\n \"has-[input:disabled]:cursor-not-allowed has-[input:disabled]:opacity-50 has-[input:disabled]:hover:bg-bg-input dark:has-[input:disabled]:hover:bg-bg-muted\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n xxs: \"min-h-form-xs px-pad-md gap-gp-xs rounded-radius-md text-body-sm font-normal\",\r\n xs: \"min-h-form-sm px-pad-xl gap-gp-md rounded-radius-md text-body-sm font-normal\",\r\n sm: \"min-h-form-md px-pad-xl gap-gp-md rounded-radius-lg text-body-sm font-normal\",\r\n md: \"min-h-form-lg px-pad-xl gap-gp-md rounded-radius-lg text-body-sm font-normal\",\r\n },\r\n state: {\r\n default: \"focus-within:border-border-brand focus-within:shadow-sh-ring\",\r\n error: \"border-border-danger-muted focus-within:border-border-danger-muted focus-within:shadow-sh-ring-danger\",\r\n warning: \"border-border-warning-muted focus-within:border-border-warning-muted focus-within:shadow-sh-ring-warning\",\r\n success: \"border-border-success-muted focus-within:border-border-success-muted focus-within:shadow-sh-ring-success\",\r\n },\r\n },\r\n defaultVariants: { size: \"md\", state: \"default\" },\r\n },\r\n);\r\n\r\nexport type InputGroupVariantProps = VariantProps<typeof inputGroupVariants>;\r\n\r\nexport interface InputGroupProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n InputGroupVariantProps {}\r\n\r\nexport const InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\r\n ({ className, size, state, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n data-slot=\"input-group\"\r\n className={cn(inputGroupVariants({ size, state }), className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\nInputGroup.displayName = \"InputGroup\";\r\n\r\n/* ── Input (sem bg/border — herda do wrapper) ─────────────────────────── */\r\nconst inputGroupInputVariants = cva([\r\n \"flex-1 min-w-0 bg-transparent border-0 outline-none\",\r\n \"text-body-sm font-normal text-fg-default placeholder:text-fg-muted placeholder:opacity-70\",\r\n \"disabled:cursor-not-allowed\",\r\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-fg-default\",\r\n]);\r\n\r\nexport interface InputGroupInputProps\r\n extends React.InputHTMLAttributes<HTMLInputElement> {}\r\n\r\nexport const InputGroupInput = React.forwardRef<\r\n HTMLInputElement,\r\n InputGroupInputProps\r\n>(({ className, type, ...props }, ref) => (\r\n <input\r\n ref={ref}\r\n type={type}\r\n data-slot=\"input-group-input\"\r\n className={cn(inputGroupInputVariants(), className)}\r\n {...props}\r\n />\r\n));\r\nInputGroupInput.displayName = \"InputGroupInput\";\r\n\r\n/* ── Textarea ──────────────────────────────────────────────────────────── */\r\nconst inputGroupTextareaVariants = cva([\r\n \"flex-1 min-w-0 bg-transparent border-0 outline-none resize-y\",\r\n \"py-pad-md\",\r\n \"text-body-sm font-normal leading-[1.5] text-fg-default placeholder:text-fg-muted placeholder:opacity-70\",\r\n \"disabled:cursor-not-allowed\",\r\n]);\r\n\r\nexport interface InputGroupTextareaProps\r\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\r\n\r\nexport const InputGroupTextarea = React.forwardRef<\r\n HTMLTextAreaElement,\r\n InputGroupTextareaProps\r\n>(({ className, ...props }, ref) => (\r\n <textarea\r\n ref={ref}\r\n data-slot=\"input-group-textarea\"\r\n className={cn(inputGroupTextareaVariants(), className)}\r\n {...props}\r\n />\r\n));\r\nInputGroupTextarea.displayName = \"InputGroupTextarea\";\r\n\r\n/* ── Addon (prefix/suffix slot) ───────────────────────────────────────── */\r\nconst inputGroupAddonVariants = cva(\r\n \"flex items-center text-fg-muted shrink-0 select-none [&_svg]:size-4 [&_svg]:shrink-0\",\r\n {\r\n variants: {\r\n align: {\r\n // Inline = horizontal (start/end do eixo do texto)\r\n \"inline-start\": \"\",\r\n \"inline-end\": \"\",\r\n // Block = vertical (top/bottom — multi-linha em textarea)\r\n \"block-start\": \"\",\r\n \"block-end\": \"\",\r\n },\r\n },\r\n defaultVariants: { align: \"inline-start\" },\r\n },\r\n);\r\n\r\nexport type InputGroupAddonAlign =\r\n | \"inline-start\"\r\n | \"inline-end\"\r\n | \"block-start\"\r\n | \"block-end\";\r\n\r\nexport interface InputGroupAddonProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n align?: InputGroupAddonAlign;\r\n}\r\n\r\nexport const InputGroupAddon = React.forwardRef<\r\n HTMLDivElement,\r\n InputGroupAddonProps\r\n>(({ className, align = \"inline-start\", onClick, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n data-slot=\"input-group-addon\"\r\n data-align={align}\r\n className={cn(inputGroupAddonVariants({ align }), className)}\r\n onClick={(e) => {\r\n // Click no addon (ícone, texto, espaço vazio) → foca o input do grupo.\r\n // Botões dentro do addon (`InputGroupButton`) continuam funcionando.\r\n if ((e.target as HTMLElement).closest(\"button\")) {\r\n onClick?.(e);\r\n return;\r\n }\r\n e.currentTarget.parentElement\r\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>(\r\n \"input, textarea\",\r\n )\r\n ?.focus();\r\n onClick?.(e);\r\n }}\r\n {...props}\r\n />\r\n));\r\nInputGroupAddon.displayName = \"InputGroupAddon\";\r\n\r\n/* ── Text (texto formatado dentro do addon) ───────────────────────────── */\r\nexport interface InputGroupTextProps\r\n extends React.HTMLAttributes<HTMLSpanElement> {}\r\n\r\nexport const InputGroupText = React.forwardRef<\r\n HTMLSpanElement,\r\n InputGroupTextProps\r\n>(({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n data-slot=\"input-group-text\"\r\n className={cn(\r\n \"text-body-xs text-fg-muted whitespace-nowrap\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nInputGroupText.displayName = \"InputGroupText\";\r\n\r\n/* ── Button (botão dentro do addon — ex copy/clear) ───────────────────── */\r\nconst inputGroupButtonVariants = cva(\r\n [\r\n \"inline-flex items-center justify-center shrink-0\",\r\n \"rounded-radius-md transition-colors outline-none cursor-pointer\",\r\n \"focus-visible:ring-4 focus-visible:ring-ring-brand\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50\",\r\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n xs: \"h-form-xs px-pad-md gap-gp-xs text-body-xs font-normal\",\r\n \"icon-xs\": \"size-form-xs\",\r\n sm: \"h-form-sm px-pad-lg gap-gp-md text-body-xs font-normal\",\r\n \"icon-sm\": \"size-form-sm\",\r\n },\r\n variant: {\r\n default: \"bg-bg-muted text-fg-default hover:bg-bg-muted-hover\",\r\n destructive: \"bg-bg-danger text-fg-on-danger hover:bg-bg-danger-hover\",\r\n outline: \"border border-border-input bg-transparent text-fg-default hover:bg-bg-muted\",\r\n secondary: \"bg-bg-emphasis text-fg-default hover:bg-bg-muted-hover\",\r\n ghost: \"bg-transparent text-fg-muted hover:bg-bg-muted hover:text-fg-default\",\r\n link: \"bg-transparent text-fg-brand underline-offset-4 hover:underline\",\r\n },\r\n },\r\n defaultVariants: { size: \"xs\", variant: \"ghost\" },\r\n },\r\n);\r\n\r\nexport interface InputGroupButtonProps\r\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"size\">,\r\n VariantProps<typeof inputGroupButtonVariants> {}\r\n\r\nexport const InputGroupButton = React.forwardRef<\r\n HTMLButtonElement,\r\n InputGroupButtonProps\r\n>(({ className, size, variant, type = \"button\", ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n data-slot=\"input-group-button\"\r\n className={cn(inputGroupButtonVariants({ size, variant }), className)}\r\n {...props}\r\n />\r\n));\r\nInputGroupButton.displayName = \"InputGroupButton\";\r\n\r\nexport {\r\n inputGroupVariants,\r\n inputGroupInputVariants,\r\n inputGroupTextareaVariants,\r\n inputGroupAddonVariants,\r\n inputGroupButtonVariants,\r\n};\r\n","\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\r\nimport { Check, ChevronRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * DropdownMenu — alinhado com `.tbl-row-actions-menu` / `.tbl-more-menu`\r\n * do design-and-table-v2.\r\n *\r\n * Container:\r\n * - bg-bg-dropdown (token frosted-glass — solid no light, 70% transparent + blur no dark)\r\n * - border 1px + radius 12px + padding 6px + shadow-lg\r\n * - min-w 180px, items separados por 1px (gap-px)\r\n *\r\n * Item:\r\n * - h variavel, padding 8/10, radius 6px, gap 10, font 13px medium\r\n * - rest: fg-muted (texto + ícone), hover/focus: bg-muted + fg-default\r\n * - variant=\"destructive\": fg-danger + hover bg-danger-muted\r\n *\r\n * Divider:\r\n * - 1px bg-border-default com margin 4px (não estende além do padding)\r\n */\r\n\r\nconst DropdownMenu = DropdownMenuPrimitive.Root\r\n\r\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\r\n\r\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\r\n\r\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\r\n\r\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\r\n\r\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\r\n\r\n/* ── Container (Content + SubContent) ─────────────────────────────────────── */\r\nconst CONTAINER_CLASSES = [\r\n \"relative z-50 min-w-[180px] overflow-hidden\",\r\n \"flex flex-col gap-px\",\r\n \"rounded-[12px] bg-bg-dropdown p-pad-sm\",\r\n \"border border-border-default shadow-sh-lg\",\r\n // Outline padrão de elementos flutuantes\r\n \"outline-float\",\r\n \"text-fg-muted\",\r\n // Frosted-glass blur (necessário pra fazer o bg-dropdown semi-transparent render correto no dark)\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 // Animações Radix\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n \"origin-[--radix-dropdown-menu-content-transform-origin]\",\r\n].join(\" \")\r\n\r\n/* ── Mobile sheet (só Content, <md) ───────────────────────────────────────\r\n * Em telas <md o Content vira sheet bottom-up colado nas bordas: full-width,\r\n * só cantos superiores arredondados, flush, sem outline/shadow, cap 92vh.\r\n * O reposicionamento do wrapper Radix é feito no globals.css via [data-mobile-sheet].\r\n * Animação: neutraliza o zoom e desliza de baixo (sobrescreve os slides por side).\r\n */\r\nconst MOBILE_SHEET_CLASSES = [\r\n \"max-md:w-full max-md:min-w-0 max-md:max-w-none\",\r\n \"max-md:!max-h-[92vh]\",\r\n \"max-md:rounded-b-none max-md:rounded-t-[12px]\",\r\n \"max-md:border-x-0 max-md:border-b-0\",\r\n \"max-md:outline-none max-md:shadow-none\",\r\n \"max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100\",\r\n \"max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12\",\r\n].join(\" \")\r\n\r\n/* ── Item base ────────────────────────────────────────────────────────────── */\r\nconst ITEM_BASE = [\r\n \"relative flex cursor-default select-none items-center\",\r\n \"gap-pad-lg px-pad-lg py-pad-md rounded-radius-sm\",\r\n \"text-body-sm font-medium\",\r\n \"outline-none transition-colors\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n \"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\r\n].join(\" \")\r\n\r\nconst ITEM_VARIANT_DEFAULT = [\r\n \"text-fg-muted [&_svg]:text-fg-muted\",\r\n \"focus:bg-bg-muted focus:text-fg-default focus:[&_svg]:text-fg-default\",\r\n].join(\" \")\r\n\r\nconst ITEM_VARIANT_DESTRUCTIVE = [\r\n \"text-fg-danger [&_svg]:text-fg-danger\",\r\n \"focus:bg-bg-danger-muted focus:text-fg-danger focus:[&_svg]:text-fg-danger\",\r\n].join(\" \")\r\n\r\n/* ── SubTrigger ───────────────────────────────────────────────────────────── */\r\nconst DropdownMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n ITEM_BASE,\r\n ITEM_VARIANT_DEFAULT,\r\n \"data-[state=open]:bg-bg-muted data-[state=open]:text-fg-default\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto\" />\r\n </DropdownMenuPrimitive.SubTrigger>\r\n))\r\nDropdownMenuSubTrigger.displayName =\r\n DropdownMenuPrimitive.SubTrigger.displayName\r\n\r\n/* ── SubContent ───────────────────────────────────────────────────────────── */\r\nconst DropdownMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(CONTAINER_CLASSES, className)}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuSubContent.displayName =\r\n DropdownMenuPrimitive.SubContent.displayName\r\n\r\n/* ── Content ──────────────────────────────────────────────────────────────── */\r\nconst DropdownMenuContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content> & {\r\n /**\r\n * Em telas <md, transforma o menu em sheet bottom-up colado nas bordas,\r\n * com backdrop suave (toque fora fecha via dismiss do Radix). Default true.\r\n * Passe `false` pra manter o popover ancorado no trigger também em mobile.\r\n */\r\n mobileSheet?: boolean\r\n }\r\n>(({ className, sideOffset = 8, mobileSheet = true, ...props }, ref) => (\r\n <>\r\n {/* Backdrop suave — só mobile (md:hidden), em Portal próprio (cada Portal\r\n Radix aceita 1 filho e é montado/desmontado junto com o menu via Presence).\r\n\r\n ⚠️ pointer-events-NONE (não auto). O DropdownMenu do Radix abre no\r\n `pointerdown`; o backdrop monta via React no meio do gesto e, com\r\n pointer-events-auto, captura o `pointerup`/`click` seguinte → o menu\r\n abre e fecha no mesmo toque (bug do avatar/UserMenu dentro do drawer\r\n mobile). Com pointer-events-none o gesto de abertura passa direto e o\r\n dismiss por toque-fora continua funcionando (Radix escuta pointerdown\r\n a nível de document, independente do backdrop capturar). z-[55] fica\r\n acima do drawer mobile (z-50) só pra escurecer; o Content vai a z-60. */}\r\n {mobileSheet && (\r\n <DropdownMenuPrimitive.Portal>\r\n <div\r\n aria-hidden=\"true\"\r\n className=\"fixed inset-0 z-[55] bg-overlay-scrim pointer-events-none md:hidden animate-in fade-in-0 duration-150\"\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n )}\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n data-mobile-sheet={mobileSheet ? \"\" : undefined}\r\n className={cn(\r\n CONTAINER_CLASSES,\r\n \"max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto overflow-x-hidden\",\r\n mobileSheet && MOBILE_SHEET_CLASSES,\r\n className\r\n )}\r\n {...props}\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n </>\r\n))\r\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\r\n\r\n/* ── Item ─────────────────────────────────────────────────────────────────── */\r\nconst DropdownMenuItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean\r\n /** Variante semântica — \"destructive\" pinta fg-danger e usa bg-danger-muted no hover */\r\n variant?: \"default\" | \"destructive\"\r\n }\r\n>(({ className, inset, variant = \"default\", ...props }, ref) => (\r\n <DropdownMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n ITEM_BASE,\r\n variant === \"destructive\" ? ITEM_VARIANT_DESTRUCTIVE : ITEM_VARIANT_DEFAULT,\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\r\n\r\n/* ── CheckboxItem ─────────────────────────────────────────────────────────── */\r\nconst DropdownMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <DropdownMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n ITEM_BASE,\r\n ITEM_VARIANT_DEFAULT,\r\n \"pl-8 pr-pad-lg\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-pad-md flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.CheckboxItem>\r\n))\r\nDropdownMenuCheckboxItem.displayName =\r\n DropdownMenuPrimitive.CheckboxItem.displayName\r\n\r\n/* ── RadioItem ────────────────────────────────────────────────────────────── */\r\n/**\r\n * RadioItem — item selecionado ganha tom brand:\r\n * - rest: fg-muted (igual default item)\r\n * - hover: bg-muted + fg-default (igual default item)\r\n * - checked: bg-bg-brand-subtle + fg-fg-brand (estado ativo destacado)\r\n *\r\n * Indicator: `<Check />` consistente com `<DropdownMenuCheckboxItem>` (antes era `<Circle />`).\r\n */\r\nconst DropdownMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n ITEM_BASE,\r\n ITEM_VARIANT_DEFAULT,\r\n \"pl-8 pr-pad-lg\",\r\n // Selected state — brand tint (mantém no focus pra não voltar pra muted)\r\n \"data-[state=checked]:bg-bg-brand-subtle data-[state=checked]:text-fg-brand\",\r\n \"data-[state=checked]:[&_svg]:text-fg-brand\",\r\n \"data-[state=checked]:focus:bg-bg-brand-subtle data-[state=checked]:focus:text-fg-brand\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-pad-md flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Check className=\"size-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.RadioItem>\r\n))\r\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\r\n\r\n/* ── Label ────────────────────────────────────────────────────────────────── */\r\nconst DropdownMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\r\n \"px-pad-lg py-pad-sm text-caption-sm font-semibold uppercase tracking-wider text-fg-subtle\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\r\n\r\n/* ── Separator (divider) ──────────────────────────────────────────────────── */\r\nconst DropdownMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"mx-pad-xs my-pad-xs h-px bg-border-default\", className)}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\r\n\r\n/* ── Shortcut (texto à direita do item) ───────────────────────────────────── */\r\nconst DropdownMenuShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\"ml-auto text-caption-sm tracking-wider text-fg-subtle\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\r\n\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuGroup,\r\n DropdownMenuPortal,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuRadioGroup,\r\n}\r\n","import * as React from \"react\";\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * Tooltip — dica flutuante curta (Radix Tooltip) remapeada para tokens DS.\r\n *\r\n * Visual: bolha neutra de ênfase (`bg-bg-emphasis` — theme-aware, mais visível\r\n * que `muted` e diferente das superfícies brancas de Popover/Dropdown), texto\r\n * `caption-sm`, `rounded-radius-md`, `shadow-sh-md`. A seta reaproveita o mesmo\r\n * fundo via `fill-bg-emphasis`.\r\n *\r\n * O DS **não tem** superfície escura invertida (`surface-inverted`), então a\r\n * tooltip é uma bolha neutra clara (light) / clara-sobre-escuro (dark) — em vez\r\n * do bubble preto clássico. É a escolha token-nativa: nenhum token novo.\r\n *\r\n * `<Tooltip>` já embrulha um `<TooltipProvider>` internamente, então uma tooltip\r\n * avulsa funciona sem provider no topo da app. Provider aninhado é seguro no\r\n * Radix (o mais interno vence) — se quiser um `delayDuration` global, monte um\r\n * `<TooltipProvider>` você mesmo em volta de vários `<Tooltip>`.\r\n */\r\n\r\nconst TooltipProvider = TooltipPrimitive.Provider;\r\n\r\nconst TooltipTrigger = TooltipPrimitive.Trigger;\r\n\r\ntype TooltipProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root>;\r\n\r\nconst Tooltip = ({ children, ...props }: TooltipProps) => (\r\n <TooltipProvider>\r\n <TooltipPrimitive.Root {...props}>{children}</TooltipPrimitive.Root>\r\n </TooltipProvider>\r\n);\r\nTooltip.displayName = \"Tooltip\";\r\n\r\ntype TooltipContentProps = React.ComponentPropsWithoutRef<\r\n typeof TooltipPrimitive.Content\r\n> & {\r\n /** Renderiza a seta apontando pro trigger. Default `true`. */\r\n showArrow?: boolean;\r\n};\r\n\r\nconst TooltipContent = React.forwardRef<\r\n React.ElementRef<typeof TooltipPrimitive.Content>,\r\n TooltipContentProps\r\n>(({ className, sideOffset = 6, showArrow = true, children, ...props }, ref) => (\r\n <TooltipPrimitive.Portal>\r\n <TooltipPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 max-w-[16rem] select-none\",\r\n \"bg-bg-emphasis text-fg-default\",\r\n \"rounded-radius-md px-pad-lg py-pad-xs\",\r\n \"text-caption-sm\",\r\n \"shadow-sh-md\",\r\n \"origin-[--radix-tooltip-content-transform-origin]\",\r\n \"data-[state=delayed-open]:animate-in data-[state=instant-open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0 data-[state=instant-open]:fade-in-0\",\r\n \"data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95 data-[state=instant-open]:zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {showArrow && (\r\n <TooltipPrimitive.Arrow\r\n width={11}\r\n height={5}\r\n className=\"fill-bg-emphasis\"\r\n />\r\n )}\r\n </TooltipPrimitive.Content>\r\n </TooltipPrimitive.Portal>\r\n));\r\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\r\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\r\n\r\nconst Collapsible = CollapsiblePrimitive.Root\r\n\r\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\r\n\r\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\r\n\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\r\n","import * as React from \"react\"\r\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Avatar = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAvatar.displayName = AvatarPrimitive.Root.displayName\r\n\r\nconst AvatarImage = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Image>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Image\r\n ref={ref}\r\n className={cn(\"aspect-square h-full w-full\", className)}\r\n {...props}\r\n />\r\n))\r\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\r\n\r\n/**\r\n * AvatarFallback — `text-body-sm font-normal` (13px) como default mais compacto.\r\n *\r\n * Antes usava `text-body-md font-medium` (14px) que ficava grande demais em avatares\r\n * pequenos (≤24px), forçando consumer a sobrescrever via className. Caption\r\n * é mais seguro como default — consumer ainda pode override (ex: `text-caption-xs`\r\n * pra container muito pequeno, ou `text-body-lg font-medium` pra avatar grande).\r\n */\r\nconst AvatarFallback = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Fallback\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-full items-center justify-center rounded-full bg-bg-muted text-fg-muted text-body-sm font-normal\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\r\n\r\nexport { Avatar, AvatarImage, AvatarFallback }\r\n"],"names":["tvBase","Button","DialogPrimitive","CommandPrimitive"],"mappings":"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"}
@@ -8,6 +8,8 @@ const SheetPrimitive = require("@radix-ui/react-dialog");
8
8
  const PopoverPrimitive = require("@radix-ui/react-popover");
9
9
  const classVarianceAuthority = require("class-variance-authority");
10
10
  const DropdownMenuPrimitive = require("@radix-ui/react-dropdown-menu");
11
+ const TooltipPrimitive = require("@radix-ui/react-tooltip");
12
+ const CollapsiblePrimitive = require("@radix-ui/react-collapsible");
11
13
  const AvatarPrimitive = require("@radix-ui/react-avatar");
12
14
  const clsx = require("clsx");
13
15
  const tailwindMerge = require("tailwind-merge");
@@ -31,6 +33,8 @@ const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
31
33
  const SheetPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SheetPrimitive);
32
34
  const PopoverPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(PopoverPrimitive);
33
35
  const DropdownMenuPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(DropdownMenuPrimitive);
36
+ const TooltipPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(TooltipPrimitive);
37
+ const CollapsiblePrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(CollapsiblePrimitive);
34
38
  const AvatarPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(AvatarPrimitive);
35
39
  const isDsPad = (v) => /^(pad|sp)-/.test(v);
36
40
  const isDsGap = (v) => /^gp-/.test(v);
@@ -1113,6 +1117,47 @@ const DropdownMenuShortcut = ({
1113
1117
  );
1114
1118
  };
1115
1119
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1120
+ const TooltipProvider = TooltipPrimitive__namespace.Provider;
1121
+ const TooltipTrigger = TooltipPrimitive__namespace.Trigger;
1122
+ const Tooltip = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Root, { ...props, children }) });
1123
+ Tooltip.displayName = "Tooltip";
1124
+ const TooltipContent = React__namespace.forwardRef(({ className, sideOffset = 6, showArrow = true, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
1125
+ TooltipPrimitive__namespace.Content,
1126
+ {
1127
+ ref,
1128
+ sideOffset,
1129
+ className: cn(
1130
+ "z-50 max-w-[16rem] select-none",
1131
+ "bg-bg-emphasis text-fg-default",
1132
+ "rounded-radius-md px-pad-lg py-pad-xs",
1133
+ "text-caption-sm",
1134
+ "shadow-sh-md",
1135
+ "origin-[--radix-tooltip-content-transform-origin]",
1136
+ "data-[state=delayed-open]:animate-in data-[state=instant-open]:animate-in data-[state=closed]:animate-out",
1137
+ "data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0 data-[state=instant-open]:fade-in-0",
1138
+ "data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95 data-[state=instant-open]:zoom-in-95",
1139
+ "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
1140
+ "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1141
+ className
1142
+ ),
1143
+ ...props,
1144
+ children: [
1145
+ children,
1146
+ showArrow && /* @__PURE__ */ jsxRuntime.jsx(
1147
+ TooltipPrimitive__namespace.Arrow,
1148
+ {
1149
+ width: 11,
1150
+ height: 5,
1151
+ className: "fill-bg-emphasis"
1152
+ }
1153
+ )
1154
+ ]
1155
+ }
1156
+ ) }));
1157
+ TooltipContent.displayName = TooltipPrimitive__namespace.Content.displayName;
1158
+ const Collapsible = CollapsiblePrimitive__namespace.Root;
1159
+ const CollapsibleTrigger = CollapsiblePrimitive__namespace.CollapsibleTrigger;
1160
+ const CollapsibleContent = CollapsiblePrimitive__namespace.CollapsibleContent;
1116
1161
  const Avatar = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1117
1162
  AvatarPrimitive__namespace.Root,
1118
1163
  {
@@ -1150,6 +1195,9 @@ exports.Avatar = Avatar;
1150
1195
  exports.AvatarFallback = AvatarFallback;
1151
1196
  exports.AvatarImage = AvatarImage;
1152
1197
  exports.Button = Button;
1198
+ exports.Collapsible = Collapsible;
1199
+ exports.CollapsibleContent = CollapsibleContent;
1200
+ exports.CollapsibleTrigger = CollapsibleTrigger;
1153
1201
  exports.Command = Command;
1154
1202
  exports.CommandDialog = CommandDialog;
1155
1203
  exports.CommandEmpty = CommandEmpty;
@@ -1195,6 +1243,10 @@ exports.PopoverAnchor = PopoverAnchor;
1195
1243
  exports.PopoverClose = PopoverClose;
1196
1244
  exports.PopoverContent = PopoverContent;
1197
1245
  exports.PopoverTrigger = PopoverTrigger;
1246
+ exports.Tooltip = Tooltip;
1247
+ exports.TooltipContent = TooltipContent;
1248
+ exports.TooltipProvider = TooltipProvider;
1249
+ exports.TooltipTrigger = TooltipTrigger;
1198
1250
  exports.buttonVariants = buttonVariants;
1199
1251
  exports.cn = cn;
1200
1252
  exports.inputGroupAddonVariants = inputGroupAddonVariants;
@@ -1203,4 +1255,4 @@ exports.inputGroupInputVariants = inputGroupInputVariants;
1203
1255
  exports.inputGroupTextareaVariants = inputGroupTextareaVariants;
1204
1256
  exports.inputGroupVariants = inputGroupVariants;
1205
1257
  exports.tv = tv;
1206
- //# sourceMappingURL=avatar-BiaG9OJS.cjs.map
1258
+ //# sourceMappingURL=avatar-eM5txRFZ.cjs.map