@snksergio/design-system 0.36.0 → 0.37.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 (64) hide show
  1. package/README.md +58 -12
  2. package/dist-lib/chunks/avatar-CIHTveDJ.mjs +1177 -0
  3. package/dist-lib/chunks/avatar-CIHTveDJ.mjs.map +1 -0
  4. package/dist-lib/chunks/avatar-YpqQgJnh.cjs +1196 -0
  5. package/dist-lib/chunks/avatar-YpqQgJnh.cjs.map +1 -0
  6. package/dist-lib/chunks/{input-CLZuK61s.cjs → input-CJnonz-G.cjs} +3 -3
  7. package/dist-lib/chunks/{input-CLZuK61s.cjs.map → input-CJnonz-G.cjs.map} +1 -1
  8. package/dist-lib/chunks/{input-Di_5Ir5M.mjs → input-jLoO8t0I.mjs} +2 -2
  9. package/dist-lib/chunks/{input-Di_5Ir5M.mjs.map → input-jLoO8t0I.mjs.map} +1 -1
  10. package/dist-lib/chunks/{kpi-delta-CMdiNoMu.mjs → kpi-delta-D0g2YzDy.mjs} +3 -2
  11. package/dist-lib/chunks/{kpi-delta-CMdiNoMu.mjs.map → kpi-delta-D0g2YzDy.mjs.map} +1 -1
  12. package/dist-lib/chunks/{kpi-delta--KmkXYn9.cjs → kpi-delta-D6cLnCqW.cjs} +8 -7
  13. package/dist-lib/chunks/{kpi-delta--KmkXYn9.cjs.map → kpi-delta-D6cLnCqW.cjs.map} +1 -1
  14. package/dist-lib/chunks/{page-header-HWma4AzM.cjs → page-header-DSTprenz.cjs} +4 -4
  15. package/dist-lib/chunks/{page-header-HWma4AzM.cjs.map → page-header-DSTprenz.cjs.map} +1 -1
  16. package/dist-lib/chunks/{page-header-gYXNGHv-.mjs → page-header-Deb1excS.mjs} +2 -2
  17. package/dist-lib/chunks/{page-header-gYXNGHv-.mjs.map → page-header-Deb1excS.mjs.map} +1 -1
  18. package/dist-lib/chunks/{panel-BCGlqoEk.mjs → panel-Cid3m9zb.mjs} +370 -9823
  19. package/dist-lib/chunks/panel-Cid3m9zb.mjs.map +1 -0
  20. package/dist-lib/chunks/{panel-Cq9UQki6.cjs → panel-DLcD8LhW.cjs} +595 -10052
  21. package/dist-lib/chunks/panel-DLcD8LhW.cjs.map +1 -0
  22. package/dist-lib/chunks/textarea-BDJRaL5h.mjs +781 -0
  23. package/dist-lib/chunks/textarea-BDJRaL5h.mjs.map +1 -0
  24. package/dist-lib/chunks/textarea-Bxl9Voe8.cjs +802 -0
  25. package/dist-lib/chunks/textarea-Bxl9Voe8.cjs.map +1 -0
  26. package/dist-lib/chunks/tooltip-DGI3hDFM.mjs +1452 -0
  27. package/dist-lib/chunks/tooltip-DGI3hDFM.mjs.map +1 -0
  28. package/dist-lib/chunks/tooltip-vLUyJ0h5.cjs +1484 -0
  29. package/dist-lib/chunks/tooltip-vLUyJ0h5.cjs.map +1 -0
  30. package/dist-lib/chunks/{useTheme-DFAlP_ab.cjs → useTheme-DQ7FaHdv.cjs} +170 -1287
  31. package/dist-lib/chunks/useTheme-DQ7FaHdv.cjs.map +1 -0
  32. package/dist-lib/chunks/{useTheme-D-405m16.mjs → useTheme-UrerJ3i-.mjs} +26 -1139
  33. package/dist-lib/chunks/useTheme-UrerJ3i-.mjs.map +1 -0
  34. package/dist-lib/index.cjs +1258 -311
  35. package/dist-lib/index.cjs.map +1 -1
  36. package/dist-lib/index.mjs +1631 -679
  37. package/dist-lib/index.mjs.map +1 -1
  38. package/dist-lib/preview/chat.cjs +45 -44
  39. package/dist-lib/preview/chat.cjs.map +1 -1
  40. package/dist-lib/preview/chat.mjs +3 -2
  41. package/dist-lib/preview/chat.mjs.map +1 -1
  42. package/dist-lib/preview/clientes.cjs +22 -20
  43. package/dist-lib/preview/clientes.cjs.map +1 -1
  44. package/dist-lib/preview/clientes.mjs +6 -4
  45. package/dist-lib/preview/clientes.mjs.map +1 -1
  46. package/dist-lib/preview/dashboard.cjs +40 -39
  47. package/dist-lib/preview/dashboard.cjs.map +1 -1
  48. package/dist-lib/preview/dashboard.mjs +4 -3
  49. package/dist-lib/preview/dashboard.mjs.map +1 -1
  50. package/dist-lib/shadcn.cjs +293 -0
  51. package/dist-lib/shadcn.cjs.map +1 -0
  52. package/dist-lib/shadcn.d.ts +2 -0
  53. package/dist-lib/shadcn.mjs +276 -0
  54. package/dist-lib/shadcn.mjs.map +1 -0
  55. package/dist-lib/src/components/index.d.ts +10 -0
  56. package/dist-lib/src/components/index.d.ts.map +1 -1
  57. package/dist-lib/src/components/shadcn/index.d.ts +60 -6
  58. package/dist-lib/src/components/shadcn/index.d.ts.map +1 -1
  59. package/dist-lib/src/hooks/useBrand.d.ts +1 -1
  60. package/package.json +11 -3
  61. package/dist-lib/chunks/panel-BCGlqoEk.mjs.map +0 -1
  62. package/dist-lib/chunks/panel-Cq9UQki6.cjs.map +0 -1
  63. package/dist-lib/chunks/useTheme-D-405m16.mjs.map +0 -1
  64. package/dist-lib/chunks/useTheme-DFAlP_ab.cjs.map +0 -1
@@ -1,17 +1,9 @@
1
1
  "use strict";
2
2
  const jsxRuntime = require("react/jsx-runtime");
3
3
  const React = require("react");
4
- const clsx = require("clsx");
5
- const tailwindMerge = require("tailwind-merge");
4
+ const avatar = require("./avatar-YpqQgJnh.cjs");
6
5
  const lucideReact = require("lucide-react");
7
- const tailwindVariants = require("tailwind-variants");
8
- const cmdk = require("cmdk");
9
- const SheetPrimitive = require("@radix-ui/react-dialog");
10
6
  const ToggleGroupPrimitive = require("@radix-ui/react-toggle-group");
11
- const PopoverPrimitive = require("@radix-ui/react-popover");
12
- const classVarianceAuthority = require("class-variance-authority");
13
- const DropdownMenuPrimitive = require("@radix-ui/react-dropdown-menu");
14
- const AvatarPrimitive = require("@radix-ui/react-avatar");
15
7
  function _interopNamespaceDefault(e) {
16
8
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
17
9
  if (e) {
@@ -28,432 +20,8 @@ function _interopNamespaceDefault(e) {
28
20
  n.default = e;
29
21
  return Object.freeze(n);
30
22
  }
31
- const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
32
- const SheetPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SheetPrimitive);
33
23
  const ToggleGroupPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ToggleGroupPrimitive);
34
- const PopoverPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(PopoverPrimitive);
35
- const DropdownMenuPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(DropdownMenuPrimitive);
36
- const AvatarPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(AvatarPrimitive);
37
- const isDsPad = (v) => /^(pad|sp)-/.test(v);
38
- const isDsGap = (v) => /^gp-/.test(v);
39
- const isDsRadius = (v) => /^radius-/.test(v);
40
- const isDsShadow = (v) => /^sh-/.test(v);
41
- const isDsForm = (v) => /^form-/.test(v);
42
- const twMerge = tailwindMerge.extendTailwindMerge({
43
- extend: {
44
- classGroups: {
45
- "font-size": [
46
- {
47
- // Lista 1:1 com tokens/brands/default/semantic/typography.ts.
48
- // Manter sincronizado com src/utils/tv.ts. Ver L-016.
49
- text: [
50
- // Displays (fluid clamp)
51
- "display-2xl",
52
- "display-xl",
53
- "display-lg",
54
- "display-md",
55
- // Headings (xs estático, sm-xl fluid clamp)
56
- "heading-xl",
57
- "heading-lg",
58
- "heading-md",
59
- "heading-sm",
60
- "heading-xs",
61
- // Titles (weight 600 default)
62
- "title-lg",
63
- "title-md",
64
- "title-sm",
65
- // Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)
66
- "body-2xl",
67
- "body-xl",
68
- "body-lg",
69
- "body-md",
70
- "body-sm",
71
- "body-xs",
72
- // Captions (weight 400)
73
- "caption-md",
74
- "caption-sm",
75
- "caption-xs",
76
- // Code (mono regular)
77
- "code-md",
78
- "code-sm"
79
- ]
80
- }
81
- ],
82
- /* ── Padding ──────────────────────────────────────────────────────── */
83
- p: [{ p: [isDsPad] }],
84
- px: [{ px: [isDsPad] }],
85
- py: [{ py: [isDsPad] }],
86
- pt: [{ pt: [isDsPad] }],
87
- pr: [{ pr: [isDsPad] }],
88
- pb: [{ pb: [isDsPad] }],
89
- pl: [{ pl: [isDsPad] }],
90
- ps: [{ ps: [isDsPad] }],
91
- pe: [{ pe: [isDsPad] }],
92
- /* ── Margin (usa mesmo sp-*) ──────────────────────────────────────── */
93
- m: [{ m: [isDsPad] }],
94
- mx: [{ mx: [isDsPad] }],
95
- my: [{ my: [isDsPad] }],
96
- mt: [{ mt: [isDsPad] }],
97
- mr: [{ mr: [isDsPad] }],
98
- mb: [{ mb: [isDsPad] }],
99
- ml: [{ ml: [isDsPad] }],
100
- ms: [{ ms: [isDsPad] }],
101
- me: [{ me: [isDsPad] }],
102
- /* ── Inset / position (top/right/bottom/left) ─────────────────────── */
103
- inset: [{ inset: [isDsPad] }],
104
- "inset-x": [{ "inset-x": [isDsPad] }],
105
- "inset-y": [{ "inset-y": [isDsPad] }],
106
- "top": [{ top: [isDsPad] }],
107
- "right": [{ right: [isDsPad] }],
108
- "bottom": [{ bottom: [isDsPad] }],
109
- "left": [{ left: [isDsPad] }],
110
- "start": [{ start: [isDsPad] }],
111
- "end": [{ end: [isDsPad] }],
112
- /* ── Gap ──────────────────────────────────────────────────────────── */
113
- gap: [{ gap: [isDsGap] }],
114
- "gap-x": [{ "gap-x": [isDsGap] }],
115
- "gap-y": [{ "gap-y": [isDsGap] }],
116
- /* ── Rounded (todas as cantos) ────────────────────────────────────── */
117
- rounded: [{ rounded: [isDsRadius] }],
118
- "rounded-s": [{ "rounded-s": [isDsRadius] }],
119
- "rounded-e": [{ "rounded-e": [isDsRadius] }],
120
- "rounded-t": [{ "rounded-t": [isDsRadius] }],
121
- "rounded-r": [{ "rounded-r": [isDsRadius] }],
122
- "rounded-b": [{ "rounded-b": [isDsRadius] }],
123
- "rounded-l": [{ "rounded-l": [isDsRadius] }],
124
- "rounded-ss": [{ "rounded-ss": [isDsRadius] }],
125
- "rounded-se": [{ "rounded-se": [isDsRadius] }],
126
- "rounded-ee": [{ "rounded-ee": [isDsRadius] }],
127
- "rounded-es": [{ "rounded-es": [isDsRadius] }],
128
- "rounded-tl": [{ "rounded-tl": [isDsRadius] }],
129
- "rounded-tr": [{ "rounded-tr": [isDsRadius] }],
130
- "rounded-br": [{ "rounded-br": [isDsRadius] }],
131
- "rounded-bl": [{ "rounded-bl": [isDsRadius] }],
132
- /* ── Shadow ───────────────────────────────────────────────────────── */
133
- shadow: [{ shadow: [isDsShadow] }],
134
- /* ── Form sizes (min-h, h, w, size) ───────────────────────────────── */
135
- "min-h": [{ "min-h": [isDsForm] }],
136
- h: [{ h: [isDsForm] }],
137
- w: [{ w: [isDsForm] }],
138
- size: [{ size: [isDsForm] }]
139
- }
140
- }
141
- });
142
- function cn(...inputs) {
143
- return twMerge(clsx.clsx(inputs));
144
- }
145
- const twMergeConfig = {
146
- extend: {
147
- classGroups: {
148
- "font-size": [
149
- {
150
- text: [
151
- // Displays (fluid clamp)
152
- "display-2xl",
153
- "display-xl",
154
- "display-lg",
155
- "display-md",
156
- // Headings (xs estático, sm-xl fluid clamp)
157
- "heading-xl",
158
- "heading-lg",
159
- "heading-md",
160
- "heading-sm",
161
- "heading-xs",
162
- // Titles (weight 600 default)
163
- "title-lg",
164
- "title-md",
165
- "title-sm",
166
- // Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)
167
- "body-2xl",
168
- "body-xl",
169
- "body-lg",
170
- "body-md",
171
- "body-sm",
172
- "body-xs",
173
- // Captions (weight 400)
174
- "caption-md",
175
- "caption-sm",
176
- "caption-xs",
177
- // Stat (número de métrica/KPI — estático, bold, leading tight)
178
- "stat-xl",
179
- "stat-lg",
180
- "stat-md",
181
- "stat-sm",
182
- // Code (mono regular)
183
- "code-md",
184
- "code-sm"
185
- ]
186
- }
187
- ]
188
- }
189
- }
190
- };
191
- const tv = (options, config) => tailwindVariants.tv(options, {
192
- ...config,
193
- twMergeConfig
194
- });
195
- const buttonVariants = tv({
196
- base: [
197
- "inline-flex items-center justify-center",
198
- "select-none whitespace-nowrap",
199
- "focus-visible:outline-none",
200
- "border border-transparent",
201
- "text-body-sm font-semibold leading-none",
202
- // 13px / 600 — alinhado com sandbox btn
203
- "[&_svg]:shrink-0",
204
- // SVG não diminui; tamanho controlado por size
205
- "transition-all duration-200 ease-out",
206
- "cursor-pointer",
207
- "focus-visible:ring-4"
208
- ],
209
- variants: {
210
- color: {
211
- primary: "focus-visible:ring-ring-brand",
212
- secondary: "focus-visible:ring-ring-secondary",
213
- critical: "focus-visible:ring-ring-danger",
214
- success: "focus-visible:ring-ring-success",
215
- warning: "focus-visible:ring-ring-warning"
216
- },
217
- variant: {
218
- filled: "",
219
- outline: "",
220
- soft: "",
221
- ghost: "bg-transparent"
222
- },
223
- size: {
224
- // h28 / pad 10 / gap 6 / radius 8 / icon 12
225
- "2xs": "min-h-form-xs px-pad-lg gap-gp-sm rounded-radius-md [&_svg]:size-[12px]",
226
- // h32 / pad 12 / gap 6 / radius 8 / icon 14
227
- xs: "min-h-form-sm px-pad-xl gap-gp-sm rounded-radius-md [&_svg]:size-[14px]",
228
- // h36 / pad 12 / gap 6 / radius 10 / icon 14
229
- sm: "min-h-form-md px-pad-xl gap-gp-sm rounded-radius-lg [&_svg]:size-[14px]",
230
- // h40 / pad 16 / gap 6 / radius 10 / icon 14 (alinhado com sandbox Exportar)
231
- md: "min-h-form-lg px-pad-2xl gap-gp-sm rounded-radius-lg [&_svg]:size-[14px]",
232
- // h44 / pad 16 / gap 8 / radius 10 / icon 16
233
- lg: "min-h-form-xl px-pad-2xl gap-gp-md rounded-radius-lg [&_svg]:size-[16px]",
234
- // Icon buttons — width = height (square). Regra: SVG +2px vs versão com label
235
- // (precisa preencher mais o quadrado sem o texto carregando peso visual).
236
- "icon-2xs": "size-form-xs rounded-radius-md p-0 [&_svg]:size-[14px]",
237
- // 28×28 / +2 (12→14)
238
- "icon-xs": "size-form-sm rounded-radius-md p-0 [&_svg]:size-[16px]",
239
- // 32×32 / +2 (14→16)
240
- "icon-sm": "size-form-md rounded-radius-lg p-0 [&_svg]:size-[16px]",
241
- // 36×36 / +2 (14→16)
242
- "icon-md": "size-form-lg rounded-radius-lg p-0 [&_svg]:size-[16px]",
243
- // 40×40 / +2 (14→16)
244
- "icon-lg": "size-form-xl rounded-radius-lg p-0 [&_svg]:size-[18px]"
245
- // 44×44 / +2 (16→18)
246
- },
247
- fullWidth: {
248
- true: "w-full flex-1"
249
- },
250
- /**
251
- * Shape do botão:
252
- * - rounded (default): mantém o radius da `size` (varia por tamanho)
253
- * - pill: força `rounded-full` (override com `!` pra ganhar do size)
254
- */
255
- shape: {
256
- rounded: "",
257
- pill: "!rounded-full"
258
- },
259
- disabled: {
260
- true: "pointer-events-none opacity-50"
261
- }
262
- },
263
- compoundVariants: [
264
- // ── Primary (brand) ─────────────────────────────────────────────
265
- {
266
- color: "primary",
267
- variant: "filled",
268
- class: "bg-bg-brand text-fg-on-brand hover:bg-bg-brand-hover"
269
- },
270
- {
271
- color: "primary",
272
- variant: "outline",
273
- 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"
274
- },
275
- {
276
- color: "primary",
277
- variant: "soft",
278
- class: "bg-bg-brand-subtle text-fg-brand hover:bg-bg-brand-subtle-hover"
279
- },
280
- {
281
- color: "primary",
282
- variant: "ghost",
283
- class: "text-fg-brand hover:bg-bg-brand-subtle"
284
- },
285
- // ── Secondary (neutro) ──────────────────────────────────────────
286
- {
287
- color: "secondary",
288
- variant: "filled",
289
- class: "bg-bg-muted text-fg-muted hover:bg-bg-muted-hover hover:text-fg-default"
290
- },
291
- {
292
- // Outline alinhado com `.btn.tbl-tool-btn` do design-and-table-v2:
293
- // light = bg-surface + border-subtle + fg-default + shadow-sm (mantém no hover)
294
- // dark = bg-muted + border-input + fg-muted + sem shadow
295
- color: "secondary",
296
- variant: "outline",
297
- class: [
298
- "bg-bg-surface border-border-subtle text-fg-default shadow-sh-sm",
299
- "dark:bg-bg-muted dark:border-border-input dark:text-fg-muted dark:shadow-sh-none",
300
- "hover:bg-bg-muted-hover hover:text-fg-default",
301
- "dark:hover:bg-bg-muted-hover dark:hover:text-fg-default"
302
- ].join(" ")
303
- },
304
- {
305
- color: "secondary",
306
- variant: "soft",
307
- class: "bg-bg-muted text-fg-muted hover:bg-bg-muted-hover hover:text-fg-default"
308
- },
309
- {
310
- color: "secondary",
311
- variant: "ghost",
312
- class: "text-fg-muted hover:bg-bg-muted hover:text-fg-default"
313
- },
314
- // ── Critical (danger) ───────────────────────────────────────────
315
- {
316
- color: "critical",
317
- variant: "filled",
318
- class: "bg-bg-danger text-fg-on-danger hover:bg-bg-danger-hover"
319
- },
320
- {
321
- color: "critical",
322
- variant: "outline",
323
- class: "bg-bg-surface border-border-danger-muted text-fg-danger shadow-sh-sm hover:bg-bg-danger-muted hover:shadow-sh-none"
324
- },
325
- {
326
- color: "critical",
327
- variant: "soft",
328
- class: "bg-bg-danger-muted text-fg-danger hover:bg-bg-danger-muted-hover"
329
- },
330
- {
331
- color: "critical",
332
- variant: "ghost",
333
- class: "text-fg-danger hover:bg-bg-danger-muted"
334
- },
335
- // ── Success ─────────────────────────────────────────────────────
336
- {
337
- color: "success",
338
- variant: "filled",
339
- class: "bg-bg-success text-fg-on-success hover:bg-bg-success-hover"
340
- },
341
- {
342
- color: "success",
343
- variant: "outline",
344
- class: "bg-bg-surface border-border-success-muted text-fg-success shadow-sh-sm hover:bg-bg-success-muted hover:shadow-sh-none"
345
- },
346
- {
347
- color: "success",
348
- variant: "soft",
349
- class: "bg-bg-success-muted text-fg-success hover:bg-bg-success-muted-hover"
350
- },
351
- {
352
- color: "success",
353
- variant: "ghost",
354
- class: "text-fg-success hover:bg-bg-success-muted"
355
- },
356
- // ── Warning ─────────────────────────────────────────────────────
357
- {
358
- color: "warning",
359
- variant: "filled",
360
- class: "bg-bg-warning text-fg-on-warning hover:bg-bg-warning-hover"
361
- },
362
- {
363
- color: "warning",
364
- variant: "outline",
365
- class: "bg-bg-surface border-border-warning-muted text-fg-warning shadow-sh-sm hover:bg-bg-warning-muted hover:shadow-sh-none"
366
- },
367
- {
368
- color: "warning",
369
- variant: "soft",
370
- class: "bg-bg-warning-muted text-fg-warning hover:bg-bg-warning-muted-hover"
371
- },
372
- {
373
- color: "warning",
374
- variant: "ghost",
375
- class: "text-fg-warning hover:bg-bg-warning-muted"
376
- },
377
- // ── Disabled — SEMPRE por último ────────────────────────────────
378
- { disabled: true, class: "pointer-events-none opacity-50" }
379
- ],
380
- defaultVariants: {
381
- color: "primary",
382
- variant: "filled",
383
- size: "md",
384
- shape: "rounded"
385
- }
386
- });
387
- const Button = React.forwardRef(
388
- function Button2({
389
- color,
390
- variant,
391
- size,
392
- shape,
393
- fullWidth,
394
- loading = false,
395
- disabled = false,
396
- iconLeft,
397
- iconRight,
398
- children,
399
- className,
400
- type = "button",
401
- ...rest
402
- }, ref) {
403
- const isDisabled = disabled || loading;
404
- return /* @__PURE__ */ jsxRuntime.jsxs(
405
- "button",
406
- {
407
- ref,
408
- type,
409
- disabled: isDisabled,
410
- className: buttonVariants({
411
- color,
412
- variant,
413
- size,
414
- shape,
415
- fullWidth,
416
- disabled: isDisabled,
417
- className
418
- }),
419
- ...rest,
420
- children: [
421
- loading && /* @__PURE__ */ jsxRuntime.jsx(Spinner, {}),
422
- !loading && iconLeft,
423
- children,
424
- !loading && iconRight
425
- ]
426
- }
427
- );
428
- }
429
- );
430
- function Spinner() {
431
- return /* @__PURE__ */ jsxRuntime.jsx(
432
- "svg",
433
- {
434
- width: "16",
435
- height: "16",
436
- viewBox: "0 0 16 16",
437
- fill: "none",
438
- className: "animate-spin",
439
- children: /* @__PURE__ */ jsxRuntime.jsx(
440
- "circle",
441
- {
442
- cx: "8",
443
- cy: "8",
444
- r: "6",
445
- stroke: "currentColor",
446
- strokeWidth: "2",
447
- strokeLinecap: "round",
448
- strokeDasharray: "28",
449
- strokeDashoffset: "8",
450
- className: "opacity-70"
451
- }
452
- )
453
- }
454
- );
455
- }
456
- const headerRoot = tv({
24
+ const headerRoot = avatar.tv({
457
25
  base: [
458
26
  "flex items-center justify-between gap-gp-lg",
459
27
  "h-[60px] flex-none px-pad-2xl",
@@ -461,16 +29,16 @@ const headerRoot = tv({
461
29
  "text-fg-default font-sans"
462
30
  ]
463
31
  });
464
- const headerLeft = tv({
32
+ const headerLeft = avatar.tv({
465
33
  base: "flex items-center gap-gp-md min-w-0 flex-1"
466
34
  });
467
- const headerRight = tv({
35
+ const headerRight = avatar.tv({
468
36
  base: "flex items-center gap-gp-sm shrink-0"
469
37
  });
470
- const headerDivider = tv({
38
+ const headerDivider = avatar.tv({
471
39
  base: "h-[24px] w-px bg-border-default shrink-0 mx-pad-xs"
472
40
  });
473
- const headerIconBtn = tv({
41
+ const headerIconBtn = avatar.tv({
474
42
  base: [
475
43
  "relative inline-flex items-center justify-center",
476
44
  "w-form-md h-form-md rounded-radius-md",
@@ -485,7 +53,7 @@ const headerIconBtn = tv({
485
53
  },
486
54
  defaultVariants: { variant: "ghost" }
487
55
  });
488
- const headerIconBtnBadge = tv({
56
+ const headerIconBtnBadge = avatar.tv({
489
57
  base: "absolute top-[4px] right-[4px] w-[8px] h-[8px] rounded-full ring-2 ring-bg-canvas",
490
58
  variants: {
491
59
  kind: {
@@ -495,10 +63,10 @@ const headerIconBtnBadge = tv({
495
63
  },
496
64
  defaultVariants: { kind: "brand" }
497
65
  });
498
- const breadcrumbRoot = tv({
66
+ const breadcrumbRoot = avatar.tv({
499
67
  base: "flex items-center gap-gp-sm min-w-0"
500
68
  });
501
- const breadcrumbItem = tv({
69
+ const breadcrumbItem = avatar.tv({
502
70
  base: "font-medium truncate transition-colors leading-none",
503
71
  variants: {
504
72
  current: {
@@ -513,10 +81,10 @@ const breadcrumbItem = tv({
513
81
  },
514
82
  defaultVariants: { current: false, standalone: false }
515
83
  });
516
- const breadcrumbSeparator = tv({
84
+ const breadcrumbSeparator = avatar.tv({
517
85
  base: "text-fg-subtle shrink-0"
518
86
  });
519
- const searchFakeInput = tv({
87
+ const searchFakeInput = avatar.tv({
520
88
  base: [
521
89
  "inline-flex items-center gap-gp-md h-form-md w-[180px]",
522
90
  "px-pad-xl rounded-radius-md",
@@ -527,13 +95,13 @@ const searchFakeInput = tv({
527
95
  "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary"
528
96
  ]
529
97
  });
530
- const searchFakeInputIcon = tv({
98
+ const searchFakeInputIcon = avatar.tv({
531
99
  base: "size-[14px] text-fg-subtle shrink-0"
532
100
  });
533
- const searchFakeInputText = tv({
101
+ const searchFakeInputText = avatar.tv({
534
102
  base: "flex-1 text-left truncate"
535
103
  });
536
- const searchFakeInputKbd = tv({
104
+ const searchFakeInputKbd = avatar.tv({
537
105
  base: [
538
106
  "ml-auto inline-flex items-center justify-center",
539
107
  "h-[20px] px-pad-xs rounded-radius-xs",
@@ -541,10 +109,10 @@ const searchFakeInputKbd = tv({
541
109
  "text-caption-xs font-semibold text-fg-muted tabular-nums shrink-0"
542
110
  ]
543
111
  });
544
- tv({
112
+ avatar.tv({
545
113
  base: "relative inline-flex"
546
114
  });
547
- tv({
115
+ avatar.tv({
548
116
  base: [
549
117
  "absolute top-[calc(100%+8px)] right-0 z-50",
550
118
  "w-[380px] max-w-[calc(100vw-32px)] max-h-[520px] flex flex-col",
@@ -558,26 +126,26 @@ tv({
558
126
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95"
559
127
  ]
560
128
  });
561
- const hdTop = tv({
129
+ const hdTop = avatar.tv({
562
130
  base: "flex flex-col gap-gp-md p-pad-xl border-b border-border-subtle bg-bg-canvas/40"
563
131
  });
564
- const hdHeader = tv({
132
+ const hdHeader = avatar.tv({
565
133
  base: "flex items-center justify-between"
566
134
  });
567
- const hdTitle = tv({
135
+ const hdTitle = avatar.tv({
568
136
  base: "flex items-center gap-gp-sm text-body-lg font-semibold text-fg-default"
569
137
  });
570
- const hdTitleCount = tv({
138
+ const hdTitleCount = avatar.tv({
571
139
  base: [
572
140
  "inline-flex items-center justify-center min-w-[20px] h-[20px] px-pad-xs",
573
141
  "rounded-radius-xs bg-bg-brand text-fg-on-brand",
574
142
  "text-caption-sm font-bold tabular-nums"
575
143
  ]
576
144
  });
577
- const hdHeaderActions = tv({
145
+ const hdHeaderActions = avatar.tv({
578
146
  base: "flex items-center gap-gp-xs"
579
147
  });
580
- tv({
148
+ avatar.tv({
581
149
  base: [
582
150
  "inline-flex items-center gap-gp-sm h-form-sm w-full",
583
151
  "px-pad-lg rounded-radius-md",
@@ -586,16 +154,16 @@ tv({
586
154
  "focus-within:border-border-brand focus-within:ring-4 focus-within:ring-ring-brand"
587
155
  ]
588
156
  });
589
- tv({
157
+ avatar.tv({
590
158
  base: "size-[14px] text-fg-muted shrink-0"
591
159
  });
592
- tv({
160
+ avatar.tv({
593
161
  base: "flex-1 min-w-0 bg-transparent border-0 outline-none text-body-sm font-normal text-fg-default placeholder:text-fg-subtle"
594
162
  });
595
- tv({
163
+ avatar.tv({
596
164
  base: "flex items-center gap-gp-2xs p-[3px] rounded-radius-lg bg-bg-muted"
597
165
  });
598
- tv({
166
+ avatar.tv({
599
167
  base: [
600
168
  "inline-flex items-center justify-center gap-gp-xs",
601
169
  "h-[28px] px-[10px] rounded-radius-sm",
@@ -611,19 +179,19 @@ tv({
611
179
  }
612
180
  }
613
181
  });
614
- tv({
182
+ avatar.tv({
615
183
  base: "text-caption-xs font-bold tabular-nums opacity-70"
616
184
  });
617
- const hdBody = tv({
185
+ const hdBody = avatar.tv({
618
186
  base: "flex-1 overflow-y-auto p-pad-sm flex flex-col gap-px"
619
187
  });
620
- const hdEmpty = tv({
188
+ const hdEmpty = avatar.tv({
621
189
  base: "flex flex-col items-center justify-center gap-gp-md py-pad-7xl text-fg-subtle"
622
190
  });
623
- const hdEmptyText = tv({
191
+ const hdEmptyText = avatar.tv({
624
192
  base: "text-body-md"
625
193
  });
626
- const hdNotif = tv({
194
+ const hdNotif = avatar.tv({
627
195
  base: [
628
196
  "relative flex items-start gap-gp-lg p-pad-lg rounded-radius-md text-left w-full",
629
197
  "bg-transparent border-0 cursor-pointer",
@@ -632,25 +200,25 @@ const hdNotif = tv({
632
200
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring-secondary"
633
201
  ]
634
202
  });
635
- const hdNotifIcon = tv({
203
+ const hdNotifIcon = avatar.tv({
636
204
  base: "flex-none w-[28px] h-[28px] rounded-radius-md grid place-items-center"
637
205
  });
638
- const hdNotifBody = tv({
206
+ const hdNotifBody = avatar.tv({
639
207
  base: "flex-1 min-w-0 flex flex-col gap-gp-2xs"
640
208
  });
641
- const hdNotifTitle = tv({
209
+ const hdNotifTitle = avatar.tv({
642
210
  base: "text-body-sm font-semibold text-fg-default leading-tight"
643
211
  });
644
- const hdNotifText = tv({
212
+ const hdNotifText = avatar.tv({
645
213
  base: "text-body-xs font-normal text-fg-muted leading-snug line-clamp-2"
646
214
  });
647
- const hdNotifTime = tv({
215
+ const hdNotifTime = avatar.tv({
648
216
  base: "text-caption-sm text-fg-subtle"
649
217
  });
650
- const hdNotifDot = tv({
218
+ const hdNotifDot = avatar.tv({
651
219
  base: "shrink-0 mt-pad-xs w-[8px] h-[8px] rounded-full bg-bg-brand"
652
220
  });
653
- const hdMsg = tv({
221
+ const hdMsg = avatar.tv({
654
222
  base: [
655
223
  "relative flex items-center gap-gp-lg p-pad-lg rounded-radius-md text-left w-full",
656
224
  "bg-transparent border-0 cursor-pointer",
@@ -659,37 +227,37 @@ const hdMsg = tv({
659
227
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring-secondary"
660
228
  ]
661
229
  });
662
- const hdMsgAvatar = tv({
230
+ const hdMsgAvatar = avatar.tv({
663
231
  base: [
664
232
  "flex-none grid place-items-center w-icon-lg h-icon-lg rounded-full",
665
233
  "text-white text-caption-sm font-bold uppercase tracking-[0.02em] leading-none"
666
234
  ]
667
235
  });
668
- const hdMsgBody = tv({
236
+ const hdMsgBody = avatar.tv({
669
237
  base: "flex-1 min-w-0 flex flex-col gap-gp-2xs"
670
238
  });
671
- const hdMsgRow = tv({
239
+ const hdMsgRow = avatar.tv({
672
240
  base: "flex items-center justify-between gap-gp-sm"
673
241
  });
674
- const hdMsgName = tv({
242
+ const hdMsgName = avatar.tv({
675
243
  base: "text-body-sm font-semibold text-fg-default truncate"
676
244
  });
677
- const hdMsgTime = tv({
245
+ const hdMsgTime = avatar.tv({
678
246
  base: "text-caption-sm text-fg-subtle shrink-0"
679
247
  });
680
- const hdMsgPreviewRow = tv({
248
+ const hdMsgPreviewRow = avatar.tv({
681
249
  base: "flex items-center gap-gp-sm"
682
250
  });
683
- const hdMsgPreview = tv({
251
+ const hdMsgPreview = avatar.tv({
684
252
  base: "flex-1 min-w-0 text-body-xs font-normal text-fg-muted truncate"
685
253
  });
686
- const hdMsgDot = tv({
254
+ const hdMsgDot = avatar.tv({
687
255
  base: "shrink-0 w-[8px] h-[8px] rounded-full bg-bg-brand"
688
256
  });
689
- const hdFooter = tv({
257
+ const hdFooter = avatar.tv({
690
258
  base: "flex-none p-pad-md border-t border-border-subtle text-center"
691
259
  });
692
- const hdFooterLink = tv({
260
+ const hdFooterLink = avatar.tv({
693
261
  base: [
694
262
  "inline-flex items-center justify-center gap-gp-sm",
695
263
  "h-form-sm px-pad-lg rounded-radius-md w-full",
@@ -711,7 +279,7 @@ function HeaderBreadcrumb({
711
279
  /* @__PURE__ */ jsxRuntime.jsx(
712
280
  "nav",
713
281
  {
714
- className: cn(
282
+ className: avatar.cn(
715
283
  breadcrumbRoot(),
716
284
  mobileShowLastOnly && "hidden md:flex",
717
285
  className
@@ -762,7 +330,7 @@ function HeaderBreadcrumb({
762
330
  mobileShowLastOnly && /* @__PURE__ */ jsxRuntime.jsx(
763
331
  "nav",
764
332
  {
765
- className: cn(breadcrumbRoot(), "md:hidden", className),
333
+ className: avatar.cn(breadcrumbRoot(), "md:hidden", className),
766
334
  "aria-label": "Seção atual",
767
335
  children: /* @__PURE__ */ jsxRuntime.jsx(
768
336
  "span",
@@ -776,212 +344,6 @@ function HeaderBreadcrumb({
776
344
  )
777
345
  ] });
778
346
  }
779
- const Dialog = SheetPrimitive__namespace.Root;
780
- const DialogTrigger = SheetPrimitive__namespace.Trigger;
781
- const DialogPortal = SheetPrimitive__namespace.Portal;
782
- const DialogClose = SheetPrimitive__namespace.Close;
783
- const DialogOverlay = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
784
- SheetPrimitive__namespace.Overlay,
785
- {
786
- ref,
787
- className: cn(
788
- "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",
789
- className
790
- ),
791
- ...props
792
- }
793
- ));
794
- DialogOverlay.displayName = SheetPrimitive__namespace.Overlay.displayName;
795
- const DialogContent = React__namespace.forwardRef(({ className, children, hideClose, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { children: [
796
- /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
797
- /* @__PURE__ */ jsxRuntime.jsxs(
798
- SheetPrimitive__namespace.Content,
799
- {
800
- ref,
801
- className: cn(
802
- "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",
803
- className
804
- ),
805
- ...props,
806
- children: [
807
- children,
808
- !hideClose && /* @__PURE__ */ jsxRuntime.jsxs(SheetPrimitive__namespace.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", children: [
809
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
810
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
811
- ] })
812
- ]
813
- }
814
- )
815
- ] }));
816
- DialogContent.displayName = SheetPrimitive__namespace.Content.displayName;
817
- const DialogTitle = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
818
- SheetPrimitive__namespace.Title,
819
- {
820
- ref,
821
- className: cn(
822
- "text-title-md font-medium text-fg-default leading-none",
823
- className
824
- ),
825
- ...props
826
- }
827
- ));
828
- DialogTitle.displayName = SheetPrimitive__namespace.Title.displayName;
829
- const DialogDescription = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
830
- SheetPrimitive__namespace.Description,
831
- {
832
- ref,
833
- className: cn("text-body-md text-fg-muted", className),
834
- ...props
835
- }
836
- ));
837
- DialogDescription.displayName = SheetPrimitive__namespace.Description.displayName;
838
- const Command = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
839
- cmdk.Command,
840
- {
841
- ref,
842
- className: cn(
843
- // `bg-popover`/`text-popover-foreground` são vocabulário SHADCN, não do DS —
844
- // dependem da bridge do `index.css`, que só existe no scaffold. Em npm e
845
- // submódulo a bridge não viaja, e a superfície caía no default do shadcn em vez
846
- // dos tokens iGreen (L-039/L-040). Era a ÚNICA ocorrência de vocabulário shadcn
847
- // em todo o bundle publicado — medida em 2026-08-08.
848
- "flex h-full w-full flex-col overflow-hidden p-pad-xl bg-bg-dropdown text-fg-default",
849
- className
850
- ),
851
- ...props
852
- }
853
- ));
854
- Command.displayName = cmdk.Command.displayName;
855
- const CommandDialog = ({ children, ...props }) => {
856
- return /* @__PURE__ */ jsxRuntime.jsx(Dialog, { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(
857
- DialogContent,
858
- {
859
- hideClose: true,
860
- "aria-describedby": void 0,
861
- className: cn(
862
- "overflow-hidden p-0 gap-0 sm:max-w-[384px]",
863
- "rounded-[12px] border border-border-default",
864
- // Outline padrão de elementos flutuantes
865
- "outline-float"
866
- ),
867
- children: [
868
- /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { className: "sr-only", children: "Comando" }),
869
- /* @__PURE__ */ jsxRuntime.jsx(Command, { children })
870
- ]
871
- }
872
- ) });
873
- };
874
- const CommandInput = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
875
- "div",
876
- {
877
- "cmdk-input-wrapper": "",
878
- className: cn(
879
- "flex items-center gap-gp-md h-form-md px-pad-xl rounded-radius-lg",
880
- "bg-bg-input border border-border-subtle shadow-sh-sm",
881
- "transition-[border-color,box-shadow,background-color] duration-150",
882
- "focus-within:border-border-brand focus-within:shadow-sh-ring",
883
- "dark:bg-bg-muted dark:border-border-input dark:shadow-sh-none"
884
- ),
885
- children: [
886
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "size-[14px] text-fg-muted shrink-0", strokeWidth: 1.8 }),
887
- /* @__PURE__ */ jsxRuntime.jsx(
888
- cmdk.Command.Input,
889
- {
890
- ref,
891
- className: cn(
892
- "flex-1 min-w-0 bg-transparent border-0 outline-none",
893
- "text-body-sm font-normal text-fg-default placeholder:text-fg-muted",
894
- "disabled:cursor-not-allowed disabled:opacity-50",
895
- className
896
- ),
897
- ...props
898
- }
899
- )
900
- ]
901
- }
902
- ));
903
- CommandInput.displayName = cmdk.Command.Input.displayName;
904
- const CommandList = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
905
- cmdk.Command.List,
906
- {
907
- ref,
908
- className: cn(
909
- "max-h-[300px] overflow-y-auto overflow-x-hidden mt-pad-md scrollbar-thin",
910
- className
911
- ),
912
- ...props
913
- }
914
- ));
915
- CommandList.displayName = cmdk.Command.List.displayName;
916
- const CommandEmpty = React__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(
917
- cmdk.Command.Empty,
918
- {
919
- ref,
920
- className: "py-pad-5xl text-center text-body-md text-fg-muted",
921
- ...props
922
- }
923
- ));
924
- CommandEmpty.displayName = cmdk.Command.Empty.displayName;
925
- const CommandGroup = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
926
- cmdk.Command.Group,
927
- {
928
- ref,
929
- className: cn(
930
- "overflow-hidden text-fg-default",
931
- "[&_[cmdk-group-heading]]:flex [&_[cmdk-group-heading]]:items-center",
932
- "[&_[cmdk-group-heading]]:h-[28px] [&_[cmdk-group-heading]]:px-pad-xl",
933
- "[&_[cmdk-group-heading]]:text-caption-xs [&_[cmdk-group-heading]]:font-bold",
934
- "[&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-wider",
935
- "[&_[cmdk-group-heading]]:text-fg-subtle",
936
- className
937
- ),
938
- ...props
939
- }
940
- ));
941
- CommandGroup.displayName = cmdk.Command.Group.displayName;
942
- const CommandSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
943
- cmdk.Command.Separator,
944
- {
945
- ref,
946
- className: cn("mx-pad-xs my-pad-xs h-px bg-border-default", className),
947
- ...props
948
- }
949
- ));
950
- CommandSeparator.displayName = cmdk.Command.Separator.displayName;
951
- const CommandItem = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
952
- cmdk.Command.Item,
953
- {
954
- ref,
955
- className: cn(
956
- "relative flex cursor-default select-none items-center gap-gp-md",
957
- "rounded-radius-lg px-pad-xl py-pad-md",
958
- "text-body-sm font-medium text-fg-muted",
959
- "outline-none transition-colors",
960
- "data-[selected='true']:bg-bg-muted data-[selected='true']:text-fg-default data-[selected='true']:[&_svg]:text-fg-default",
961
- "data-[disabled='true']:pointer-events-none data-[disabled='true']:opacity-50",
962
- "[&_svg]:pointer-events-none [&_svg]:size-[18px] [&_svg]:shrink-0 [&_svg]:text-fg-muted",
963
- className
964
- ),
965
- ...props
966
- }
967
- ));
968
- CommandItem.displayName = cmdk.Command.Item.displayName;
969
- const CommandShortcut = ({
970
- className,
971
- ...props
972
- }) => {
973
- return /* @__PURE__ */ jsxRuntime.jsx(
974
- "span",
975
- {
976
- className: cn(
977
- "ml-auto text-caption-sm tracking-wider text-fg-subtle",
978
- className
979
- ),
980
- ...props
981
- }
982
- );
983
- };
984
- CommandShortcut.displayName = "CommandShortcut";
985
347
  function HeaderSearch({
986
348
  placeholder = "Buscar...",
987
349
  shortcut = "⌘K",
@@ -1010,7 +372,7 @@ function HeaderSearch({
1010
372
  "button",
1011
373
  {
1012
374
  type: "button",
1013
- className: cn(searchFakeInput(), "hidden md:inline-flex", className),
375
+ className: avatar.cn(searchFakeInput(), "hidden md:inline-flex", className),
1014
376
  onClick: () => setOpen(true),
1015
377
  "aria-label": "Abrir busca",
1016
378
  children: [
@@ -1021,7 +383,7 @@ function HeaderSearch({
1021
383
  }
1022
384
  ),
1023
385
  /* @__PURE__ */ jsxRuntime.jsx(
1024
- Button,
386
+ avatar.Button,
1025
387
  {
1026
388
  color: "secondary",
1027
389
  variant: "outline",
@@ -1033,10 +395,10 @@ function HeaderSearch({
1033
395
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, {})
1034
396
  }
1035
397
  ),
1036
- /* @__PURE__ */ jsxRuntime.jsxs(CommandDialog, { open, onOpenChange: setOpen, children: [
1037
- /* @__PURE__ */ jsxRuntime.jsx(CommandInput, { placeholder: commandPlaceholder }),
1038
- /* @__PURE__ */ jsxRuntime.jsxs(CommandList, { children: [
1039
- /* @__PURE__ */ jsxRuntime.jsx(CommandEmpty, { children: commandEmptyMessage }),
398
+ /* @__PURE__ */ jsxRuntime.jsxs(avatar.CommandDialog, { open, onOpenChange: setOpen, children: [
399
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.CommandInput, { placeholder: commandPlaceholder }),
400
+ /* @__PURE__ */ jsxRuntime.jsxs(avatar.CommandList, { children: [
401
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.CommandEmpty, { children: commandEmptyMessage }),
1040
402
  commandGroups.map((group, gIdx) => /* @__PURE__ */ jsxRuntime.jsx(
1041
403
  CommandGroupBlock,
1042
404
  {
@@ -1056,10 +418,10 @@ function CommandGroupBlock({
1056
418
  onSelect
1057
419
  }) {
1058
420
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1059
- /* @__PURE__ */ jsxRuntime.jsx(CommandGroup, { heading: group.heading, children: group.items.map((item) => {
421
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.CommandGroup, { heading: group.heading, children: group.items.map((item) => {
1060
422
  const Icon = item.icon;
1061
423
  return /* @__PURE__ */ jsxRuntime.jsxs(
1062
- CommandItem,
424
+ avatar.CommandItem,
1063
425
  {
1064
426
  value: item.id ?? item.label,
1065
427
  keywords: item.keywords,
@@ -1071,16 +433,16 @@ function CommandGroupBlock({
1071
433
  children: [
1072
434
  Icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {}),
1073
435
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.label }),
1074
- item.shortcut && /* @__PURE__ */ jsxRuntime.jsx(CommandShortcut, { children: item.shortcut })
436
+ item.shortcut && /* @__PURE__ */ jsxRuntime.jsx(avatar.CommandShortcut, { children: item.shortcut })
1075
437
  ]
1076
438
  },
1077
439
  item.id ?? item.label
1078
440
  );
1079
441
  }) }),
1080
- !isLast && /* @__PURE__ */ jsxRuntime.jsx(CommandSeparator, {})
442
+ !isLast && /* @__PURE__ */ jsxRuntime.jsx(avatar.CommandSeparator, {})
1081
443
  ] });
1082
444
  }
1083
- const chipVariants = tv({
445
+ const chipVariants = avatar.tv({
1084
446
  base: [
1085
447
  "inline-flex items-center justify-center gap-gp-xs shrink-0",
1086
448
  "font-semibold whitespace-nowrap select-none",
@@ -1205,7 +567,7 @@ const chipVariants = tv({
1205
567
  selected: false
1206
568
  }
1207
569
  });
1208
- const chipCount = tv({
570
+ const chipCount = avatar.tv({
1209
571
  base: [
1210
572
  "inline-flex items-center justify-center min-w-[16px] h-[16px] px-[4px]",
1211
573
  "rounded-radius-full text-caption-xs font-semibold leading-none",
@@ -1226,7 +588,7 @@ const Chip = React.forwardRef(function Chip2({
1226
588
  ...rest
1227
589
  }, ref) {
1228
590
  const interactive = Boolean(onClick) || asButton === true;
1229
- const classes = cn(
591
+ const classes = avatar.cn(
1230
592
  chipVariants({ color, variant, size, shape, interactive, selected }),
1231
593
  className
1232
594
  );
@@ -1325,7 +687,7 @@ const ChipGroup = React.forwardRef(
1325
687
  onValueChange: props.onValueChange,
1326
688
  orientation,
1327
689
  "aria-label": ariaLabel,
1328
- className: cn(
690
+ className: avatar.cn(
1329
691
  "inline-flex items-center gap-gp-sm",
1330
692
  orientation === "vertical" && "flex-col",
1331
693
  className
@@ -1344,7 +706,7 @@ const ChipGroup = React.forwardRef(
1344
706
  onValueChange: props.onValueChange,
1345
707
  orientation,
1346
708
  "aria-label": ariaLabel,
1347
- className: cn(
709
+ className: avatar.cn(
1348
710
  "inline-flex items-center gap-gp-sm",
1349
711
  orientation === "vertical" && "flex-col",
1350
712
  className
@@ -1376,7 +738,7 @@ const ChipGroupItem = React.forwardRef(
1376
738
  ToggleGroupPrimitive__namespace.Item,
1377
739
  {
1378
740
  ref,
1379
- className: cn(
741
+ className: avatar.cn(
1380
742
  // Estado OFF — visual inativo (passa pelo chipVariants normal)
1381
743
  chipVariants({
1382
744
  color: inactiveColor,
@@ -1395,71 +757,6 @@ const ChipGroupItem = React.forwardRef(
1395
757
  );
1396
758
  }
1397
759
  );
1398
- const Popover = PopoverPrimitive__namespace.Root;
1399
- const PopoverTrigger = PopoverPrimitive__namespace.Trigger;
1400
- const PopoverAnchor = PopoverPrimitive__namespace.Anchor;
1401
- const POPOVER_MOBILE_SHEET = [
1402
- "max-md:w-full max-md:min-w-0 max-md:max-w-none",
1403
- "max-md:!max-h-[92vh]",
1404
- "max-md:rounded-b-none max-md:rounded-t-[12px]",
1405
- "max-md:border-x-0 max-md:border-b-0",
1406
- "max-md:outline-none max-md:shadow-none",
1407
- // Respiro de 20px (pad-3xl) no rodapé pra o conteúdo (footer/última seção)
1408
- // não colar na borda inferior do device quando vira sheet.
1409
- "max-md:pb-pad-3xl",
1410
- "max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100",
1411
- "max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12"
1412
- ].join(" ");
1413
- const PopoverSheetBackdrop = () => /* @__PURE__ */ jsxRuntime.jsx(
1414
- "div",
1415
- {
1416
- "aria-hidden": "true",
1417
- className: "fixed inset-0 z-[55] bg-overlay-scrim pointer-events-auto md:hidden animate-in fade-in-0 duration-150"
1418
- }
1419
- );
1420
- const PopoverContent = React__namespace.forwardRef(
1421
- ({ className, align = "center", sideOffset = 6, disablePortal, mobileSheet = true, ...props }, ref) => {
1422
- const content = /* @__PURE__ */ jsxRuntime.jsx(
1423
- PopoverPrimitive__namespace.Content,
1424
- {
1425
- ref,
1426
- align,
1427
- sideOffset,
1428
- "data-mobile-sheet": mobileSheet ? "" : void 0,
1429
- className: cn(
1430
- "relative z-50",
1431
- // Unificado com DropdownMenu/Select: bg-bg-dropdown (frosted no dark)
1432
- // + border-border-default + outline-float. O `before` pseudo-element
1433
- // aplica o blur backdrop (necessário pra bg-bg-dropdown semi-transparente
1434
- // render correto no dark mode).
1435
- "bg-bg-dropdown",
1436
- "border border-border-default rounded-[12px] shadow-sh-lg outline-float",
1437
- "before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150",
1438
- "text-fg-default",
1439
- "data-[state=open]:animate-in data-[state=closed]:animate-out",
1440
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1441
- "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
1442
- "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
1443
- "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1444
- mobileSheet && POPOVER_MOBILE_SHEET,
1445
- className
1446
- ),
1447
- ...props
1448
- }
1449
- );
1450
- if (disablePortal) {
1451
- return mobileSheet ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1452
- /* @__PURE__ */ jsxRuntime.jsx(PopoverSheetBackdrop, {}),
1453
- content
1454
- ] }) : content;
1455
- }
1456
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1457
- mobileSheet && /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(PopoverSheetBackdrop, {}) }),
1458
- /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: content })
1459
- ] });
1460
- }
1461
- );
1462
- PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
1463
760
  const DEFAULT_FILTERS$1 = [
1464
761
  { id: "all", label: "Todas", predicate: () => true },
1465
762
  { id: "unread", label: "Não lidas", predicate: (n) => !!n.unread },
@@ -1481,9 +778,9 @@ function HeaderNotifications({ config, className }) {
1481
778
  const filtered = items.filter(
1482
779
  filters.find((f) => f.id === activeFilter)?.predicate ?? (() => true)
1483
780
  );
1484
- return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: setOpen, children: [
1485
- /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1486
- Button,
781
+ return /* @__PURE__ */ jsxRuntime.jsxs(avatar.Popover, { open, onOpenChange: setOpen, children: [
782
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
783
+ avatar.Button,
1487
784
  {
1488
785
  color: "secondary",
1489
786
  variant: "outline",
@@ -1498,10 +795,10 @@ function HeaderNotifications({ config, className }) {
1498
795
  }
1499
796
  ) }),
1500
797
  /* @__PURE__ */ jsxRuntime.jsxs(
1501
- PopoverContent,
798
+ avatar.PopoverContent,
1502
799
  {
1503
800
  align: "end",
1504
- className: cn(
801
+ className: avatar.cn(
1505
802
  "w-[380px] max-w-[calc(100vw-32px)] max-h-[520px] p-0 flex flex-col overflow-hidden",
1506
803
  className
1507
804
  ),
@@ -1515,7 +812,7 @@ function HeaderNotifications({ config, className }) {
1515
812
  ] }),
1516
813
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: hdHeaderActions(), children: [
1517
814
  onMarkAllRead && /* @__PURE__ */ jsxRuntime.jsx(
1518
- Button,
815
+ avatar.Button,
1519
816
  {
1520
817
  color: "secondary",
1521
818
  variant: "ghost",
@@ -1527,7 +824,7 @@ function HeaderNotifications({ config, className }) {
1527
824
  }
1528
825
  ),
1529
826
  onMoreActions && /* @__PURE__ */ jsxRuntime.jsx(
1530
- Button,
827
+ avatar.Button,
1531
828
  {
1532
829
  color: "secondary",
1533
830
  variant: "ghost",
@@ -1608,169 +905,6 @@ function NotificationRow({ item }) {
1608
905
  }
1609
906
  );
1610
907
  }
1611
- const inputGroupVariants = classVarianceAuthority.cva(
1612
- [
1613
- "group/input-group relative flex w-full items-center",
1614
- "bg-bg-input dark:bg-bg-muted",
1615
- "hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover",
1616
- "border border-border-input rounded-radius-lg",
1617
- "transition-[border-color,box-shadow,background-color] outline-none",
1618
- "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"
1619
- ],
1620
- {
1621
- variants: {
1622
- size: {
1623
- xxs: "min-h-form-xs px-pad-md gap-gp-xs rounded-radius-md text-body-sm font-normal",
1624
- xs: "min-h-form-sm px-pad-xl gap-gp-md rounded-radius-md text-body-sm font-normal",
1625
- sm: "min-h-form-md px-pad-xl gap-gp-md rounded-radius-lg text-body-sm font-normal",
1626
- md: "min-h-form-lg px-pad-xl gap-gp-md rounded-radius-lg text-body-sm font-normal"
1627
- },
1628
- state: {
1629
- default: "focus-within:border-border-brand focus-within:shadow-sh-ring",
1630
- error: "border-border-danger-muted focus-within:border-border-danger-muted focus-within:shadow-sh-ring-danger",
1631
- warning: "border-border-warning-muted focus-within:border-border-warning-muted focus-within:shadow-sh-ring-warning",
1632
- success: "border-border-success-muted focus-within:border-border-success-muted focus-within:shadow-sh-ring-success"
1633
- }
1634
- },
1635
- defaultVariants: { size: "md", state: "default" }
1636
- }
1637
- );
1638
- const InputGroup = React__namespace.forwardRef(
1639
- ({ className, size, state, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1640
- "div",
1641
- {
1642
- ref,
1643
- role: "group",
1644
- "data-slot": "input-group",
1645
- className: cn(inputGroupVariants({ size, state }), className),
1646
- ...props
1647
- }
1648
- )
1649
- );
1650
- InputGroup.displayName = "InputGroup";
1651
- const inputGroupInputVariants = classVarianceAuthority.cva([
1652
- "flex-1 min-w-0 bg-transparent border-0 outline-none",
1653
- "text-body-sm font-normal text-fg-default placeholder:text-fg-muted placeholder:opacity-70",
1654
- "disabled:cursor-not-allowed",
1655
- "file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-fg-default"
1656
- ]);
1657
- const InputGroupInput = React__namespace.forwardRef(({ className, type, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1658
- "input",
1659
- {
1660
- ref,
1661
- type,
1662
- "data-slot": "input-group-input",
1663
- className: cn(inputGroupInputVariants(), className),
1664
- ...props
1665
- }
1666
- ));
1667
- InputGroupInput.displayName = "InputGroupInput";
1668
- const inputGroupTextareaVariants = classVarianceAuthority.cva([
1669
- "flex-1 min-w-0 bg-transparent border-0 outline-none resize-y",
1670
- "py-pad-md",
1671
- "text-body-sm font-normal leading-[1.5] text-fg-default placeholder:text-fg-muted placeholder:opacity-70",
1672
- "disabled:cursor-not-allowed"
1673
- ]);
1674
- const InputGroupTextarea = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1675
- "textarea",
1676
- {
1677
- ref,
1678
- "data-slot": "input-group-textarea",
1679
- className: cn(inputGroupTextareaVariants(), className),
1680
- ...props
1681
- }
1682
- ));
1683
- InputGroupTextarea.displayName = "InputGroupTextarea";
1684
- const inputGroupAddonVariants = classVarianceAuthority.cva(
1685
- "flex items-center text-fg-muted shrink-0 select-none [&_svg]:size-4 [&_svg]:shrink-0",
1686
- {
1687
- variants: {
1688
- align: {
1689
- // Inline = horizontal (start/end do eixo do texto)
1690
- "inline-start": "",
1691
- "inline-end": "",
1692
- // Block = vertical (top/bottom — multi-linha em textarea)
1693
- "block-start": "",
1694
- "block-end": ""
1695
- }
1696
- },
1697
- defaultVariants: { align: "inline-start" }
1698
- }
1699
- );
1700
- const InputGroupAddon = React__namespace.forwardRef(({ className, align = "inline-start", onClick, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1701
- "div",
1702
- {
1703
- ref,
1704
- role: "group",
1705
- "data-slot": "input-group-addon",
1706
- "data-align": align,
1707
- className: cn(inputGroupAddonVariants({ align }), className),
1708
- onClick: (e) => {
1709
- if (e.target.closest("button")) {
1710
- onClick?.(e);
1711
- return;
1712
- }
1713
- e.currentTarget.parentElement?.querySelector(
1714
- "input, textarea"
1715
- )?.focus();
1716
- onClick?.(e);
1717
- },
1718
- ...props
1719
- }
1720
- ));
1721
- InputGroupAddon.displayName = "InputGroupAddon";
1722
- const InputGroupText = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1723
- "span",
1724
- {
1725
- ref,
1726
- "data-slot": "input-group-text",
1727
- className: cn(
1728
- "text-body-xs text-fg-muted whitespace-nowrap",
1729
- className
1730
- ),
1731
- ...props
1732
- }
1733
- ));
1734
- InputGroupText.displayName = "InputGroupText";
1735
- const inputGroupButtonVariants = classVarianceAuthority.cva(
1736
- [
1737
- "inline-flex items-center justify-center shrink-0",
1738
- "rounded-radius-md transition-colors outline-none cursor-pointer",
1739
- "focus-visible:ring-4 focus-visible:ring-ring-brand",
1740
- "disabled:cursor-not-allowed disabled:opacity-50",
1741
- "[&_svg]:size-4 [&_svg]:shrink-0"
1742
- ],
1743
- {
1744
- variants: {
1745
- size: {
1746
- xs: "h-form-xs px-pad-md gap-gp-xs text-body-xs font-normal",
1747
- "icon-xs": "size-form-xs",
1748
- sm: "h-form-sm px-pad-lg gap-gp-md text-body-xs font-normal",
1749
- "icon-sm": "size-form-sm"
1750
- },
1751
- variant: {
1752
- default: "bg-bg-muted text-fg-default hover:bg-bg-muted-hover",
1753
- destructive: "bg-bg-danger text-fg-on-danger hover:bg-bg-danger-hover",
1754
- outline: "border border-border-input bg-transparent text-fg-default hover:bg-bg-muted",
1755
- secondary: "bg-bg-emphasis text-fg-default hover:bg-bg-muted-hover",
1756
- ghost: "bg-transparent text-fg-muted hover:bg-bg-muted hover:text-fg-default",
1757
- link: "bg-transparent text-fg-brand underline-offset-4 hover:underline"
1758
- }
1759
- },
1760
- defaultVariants: { size: "xs", variant: "ghost" }
1761
- }
1762
- );
1763
- const InputGroupButton = React__namespace.forwardRef(({ className, size, variant, type = "button", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1764
- "button",
1765
- {
1766
- ref,
1767
- type,
1768
- "data-slot": "input-group-button",
1769
- className: cn(inputGroupButtonVariants({ size, variant }), className),
1770
- ...props
1771
- }
1772
- ));
1773
- InputGroupButton.displayName = "InputGroupButton";
1774
908
  const DEFAULT_FILTERS = [
1775
909
  { id: "all", label: "Tudo", predicate: () => true },
1776
910
  { id: "unread", label: "Não lidas", predicate: (m) => !!m.unread },
@@ -1795,9 +929,9 @@ function HeaderMessages({ config, className }) {
1795
929
  const filtered = items.filter(filters.find((f) => f.id === activeFilter)?.predicate ?? (() => true)).filter(
1796
930
  (m) => search ? m.name.toLowerCase().includes(search.toLowerCase()) : true
1797
931
  );
1798
- return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: setOpen, children: [
1799
- /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1800
- Button,
932
+ return /* @__PURE__ */ jsxRuntime.jsxs(avatar.Popover, { open, onOpenChange: setOpen, children: [
933
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
934
+ avatar.Button,
1801
935
  {
1802
936
  color: "secondary",
1803
937
  variant: "outline",
@@ -1812,10 +946,10 @@ function HeaderMessages({ config, className }) {
1812
946
  }
1813
947
  ) }),
1814
948
  /* @__PURE__ */ jsxRuntime.jsxs(
1815
- PopoverContent,
949
+ avatar.PopoverContent,
1816
950
  {
1817
951
  align: "end",
1818
- className: cn(
952
+ className: avatar.cn(
1819
953
  "w-[380px] max-w-[calc(100vw-32px)] max-h-[520px] p-0 flex flex-col overflow-hidden",
1820
954
  className
1821
955
  ),
@@ -1829,7 +963,7 @@ function HeaderMessages({ config, className }) {
1829
963
  ] }),
1830
964
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: hdHeaderActions(), children: [
1831
965
  onNewMessage && /* @__PURE__ */ jsxRuntime.jsx(
1832
- Button,
966
+ avatar.Button,
1833
967
  {
1834
968
  color: "secondary",
1835
969
  variant: "ghost",
@@ -1841,7 +975,7 @@ function HeaderMessages({ config, className }) {
1841
975
  }
1842
976
  ),
1843
977
  onExpand && /* @__PURE__ */ jsxRuntime.jsx(
1844
- Button,
978
+ avatar.Button,
1845
979
  {
1846
980
  color: "secondary",
1847
981
  variant: "ghost",
@@ -1854,10 +988,10 @@ function HeaderMessages({ config, className }) {
1854
988
  )
1855
989
  ] })
1856
990
  ] }),
1857
- showSearch && /* @__PURE__ */ jsxRuntime.jsxs(InputGroup, { size: "sm", children: [
1858
- /* @__PURE__ */ jsxRuntime.jsx(InputGroupAddon, { align: "inline-start", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { strokeWidth: 1.8 }) }),
991
+ showSearch && /* @__PURE__ */ jsxRuntime.jsxs(avatar.InputGroup, { size: "sm", children: [
992
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.InputGroupAddon, { align: "inline-start", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { strokeWidth: 1.8 }) }),
1859
993
  /* @__PURE__ */ jsxRuntime.jsx(
1860
- InputGroupInput,
994
+ avatar.InputGroupInput,
1861
995
  {
1862
996
  type: "text",
1863
997
  placeholder: searchPlaceholder,
@@ -1937,184 +1071,6 @@ function MessageRow({ item }) {
1937
1071
  }
1938
1072
  );
1939
1073
  }
1940
- const DropdownMenu = DropdownMenuPrimitive__namespace.Root;
1941
- const DropdownMenuTrigger = DropdownMenuPrimitive__namespace.Trigger;
1942
- const DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
1943
- const DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
1944
- const DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
1945
- const CONTAINER_CLASSES = [
1946
- "relative z-50 min-w-[180px] overflow-hidden",
1947
- "flex flex-col gap-px",
1948
- "rounded-[12px] bg-bg-dropdown p-pad-sm",
1949
- "border border-border-default shadow-sh-lg",
1950
- // Outline padrão de elementos flutuantes
1951
- "outline-float",
1952
- "text-fg-muted",
1953
- // Frosted-glass blur (necessário pra fazer o bg-dropdown semi-transparent render correto no dark)
1954
- "before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150",
1955
- // Animações Radix
1956
- "data-[state=open]:animate-in data-[state=closed]:animate-out",
1957
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1958
- "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
1959
- "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
1960
- "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1961
- "origin-[--radix-dropdown-menu-content-transform-origin]"
1962
- ].join(" ");
1963
- const MOBILE_SHEET_CLASSES = [
1964
- "max-md:w-full max-md:min-w-0 max-md:max-w-none",
1965
- "max-md:!max-h-[92vh]",
1966
- "max-md:rounded-b-none max-md:rounded-t-[12px]",
1967
- "max-md:border-x-0 max-md:border-b-0",
1968
- "max-md:outline-none max-md:shadow-none",
1969
- "max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100",
1970
- "max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12"
1971
- ].join(" ");
1972
- const ITEM_BASE = [
1973
- "relative flex cursor-default select-none items-center",
1974
- "gap-pad-lg px-pad-lg py-pad-md rounded-radius-sm",
1975
- "text-body-sm font-medium",
1976
- "outline-none transition-colors",
1977
- "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1978
- "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0"
1979
- ].join(" ");
1980
- const ITEM_VARIANT_DEFAULT = [
1981
- "text-fg-muted [&_svg]:text-fg-muted",
1982
- "focus:bg-bg-muted focus:text-fg-default focus:[&_svg]:text-fg-default"
1983
- ].join(" ");
1984
- const ITEM_VARIANT_DESTRUCTIVE = [
1985
- "text-fg-danger [&_svg]:text-fg-danger",
1986
- "focus:bg-bg-danger-muted focus:text-fg-danger focus:[&_svg]:text-fg-danger"
1987
- ].join(" ");
1988
- const DropdownMenuSubTrigger = React__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1989
- DropdownMenuPrimitive__namespace.SubTrigger,
1990
- {
1991
- ref,
1992
- className: cn(
1993
- ITEM_BASE,
1994
- ITEM_VARIANT_DEFAULT,
1995
- "data-[state=open]:bg-bg-muted data-[state=open]:text-fg-default",
1996
- inset && "pl-8",
1997
- className
1998
- ),
1999
- ...props,
2000
- children: [
2001
- children,
2002
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto" })
2003
- ]
2004
- }
2005
- ));
2006
- DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
2007
- const DropdownMenuSubContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2008
- DropdownMenuPrimitive__namespace.SubContent,
2009
- {
2010
- ref,
2011
- className: cn(CONTAINER_CLASSES, className),
2012
- ...props
2013
- }
2014
- ));
2015
- DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
2016
- const DropdownMenuContent = React__namespace.forwardRef(({ className, sideOffset = 8, mobileSheet = true, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2017
- mobileSheet && /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
2018
- "div",
2019
- {
2020
- "aria-hidden": "true",
2021
- className: "fixed inset-0 z-[55] bg-overlay-scrim pointer-events-none md:hidden animate-in fade-in-0 duration-150"
2022
- }
2023
- ) }),
2024
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
2025
- DropdownMenuPrimitive__namespace.Content,
2026
- {
2027
- ref,
2028
- sideOffset,
2029
- "data-mobile-sheet": mobileSheet ? "" : void 0,
2030
- className: cn(
2031
- CONTAINER_CLASSES,
2032
- "max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto overflow-x-hidden",
2033
- mobileSheet && MOBILE_SHEET_CLASSES,
2034
- className
2035
- ),
2036
- ...props
2037
- }
2038
- ) })
2039
- ] }));
2040
- DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
2041
- const DropdownMenuItem = React__namespace.forwardRef(({ className, inset, variant = "default", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2042
- DropdownMenuPrimitive__namespace.Item,
2043
- {
2044
- ref,
2045
- className: cn(
2046
- ITEM_BASE,
2047
- variant === "destructive" ? ITEM_VARIANT_DESTRUCTIVE : ITEM_VARIANT_DEFAULT,
2048
- inset && "pl-8",
2049
- className
2050
- ),
2051
- ...props
2052
- }
2053
- ));
2054
- DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
2055
- const DropdownMenuCheckboxItem = React__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
2056
- DropdownMenuPrimitive__namespace.CheckboxItem,
2057
- {
2058
- ref,
2059
- className: cn(
2060
- ITEM_BASE,
2061
- ITEM_VARIANT_DEFAULT,
2062
- "pl-8 pr-pad-lg",
2063
- className
2064
- ),
2065
- checked,
2066
- ...props,
2067
- children: [
2068
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-pad-md flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
2069
- children
2070
- ]
2071
- }
2072
- ));
2073
- DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive__namespace.CheckboxItem.displayName;
2074
- const DropdownMenuRadioItem = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
2075
- DropdownMenuPrimitive__namespace.RadioItem,
2076
- {
2077
- ref,
2078
- className: cn(
2079
- ITEM_BASE,
2080
- ITEM_VARIANT_DEFAULT,
2081
- "pl-8 pr-pad-lg",
2082
- // Selected state — brand tint (mantém no focus pra não voltar pra muted)
2083
- "data-[state=checked]:bg-bg-brand-subtle data-[state=checked]:text-fg-brand",
2084
- "data-[state=checked]:[&_svg]:text-fg-brand",
2085
- "data-[state=checked]:focus:bg-bg-brand-subtle data-[state=checked]:focus:text-fg-brand",
2086
- className
2087
- ),
2088
- ...props,
2089
- children: [
2090
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-pad-md flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-4" }) }) }),
2091
- children
2092
- ]
2093
- }
2094
- ));
2095
- DropdownMenuRadioItem.displayName = DropdownMenuPrimitive__namespace.RadioItem.displayName;
2096
- const DropdownMenuLabel = React__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2097
- DropdownMenuPrimitive__namespace.Label,
2098
- {
2099
- ref,
2100
- className: cn(
2101
- "px-pad-lg py-pad-sm text-caption-sm font-semibold uppercase tracking-wider text-fg-subtle",
2102
- inset && "pl-8",
2103
- className
2104
- ),
2105
- ...props
2106
- }
2107
- ));
2108
- DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
2109
- const DropdownMenuSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2110
- DropdownMenuPrimitive__namespace.Separator,
2111
- {
2112
- ref,
2113
- className: cn("mx-pad-xs my-pad-xs h-px bg-border-default", className),
2114
- ...props
2115
- }
2116
- ));
2117
- DropdownMenuSeparator.displayName = DropdownMenuPrimitive__namespace.Separator.displayName;
2118
1074
  const DEFAULT_OPTIONS = [
2119
1075
  { id: "light", label: "Claro", icon: lucideReact.Sun },
2120
1076
  { id: "dark", label: "Escuro", icon: lucideReact.Moon }
@@ -2127,24 +1083,24 @@ function HeaderThemeSwitcher({
2127
1083
  }) {
2128
1084
  const current = options.find((o) => o.id === theme) ?? options[0];
2129
1085
  const CurrentIcon = current?.icon ?? lucideReact.Sun;
2130
- return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { children: [
2131
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
2132
- Button,
1086
+ return /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenu, { children: [
1087
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1088
+ avatar.Button,
2133
1089
  {
2134
1090
  color: "secondary",
2135
1091
  variant: "outline",
2136
1092
  size: "icon-sm",
2137
- className: cn("rounded-radius-md", className),
1093
+ className: avatar.cn("rounded-radius-md", className),
2138
1094
  "aria-label": "Trocar tema",
2139
1095
  title: `Tema: ${current?.label ?? ""}`,
2140
1096
  children: /* @__PURE__ */ jsxRuntime.jsx(CurrentIcon, {})
2141
1097
  }
2142
1098
  ) }),
2143
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuContent, { align: "end", sideOffset: 8, className: "min-w-[160px]", children: options.map((opt) => {
1099
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuContent, { align: "end", sideOffset: 8, className: "min-w-[160px]", children: options.map((opt) => {
2144
1100
  const Icon = opt.icon;
2145
1101
  const isActive = opt.id === theme;
2146
1102
  return /* @__PURE__ */ jsxRuntime.jsxs(
2147
- DropdownMenuItem,
1103
+ avatar.DropdownMenuItem,
2148
1104
  {
2149
1105
  onSelect: () => onThemeChange(opt.id),
2150
1106
  children: [
@@ -2176,14 +1132,14 @@ function Header({
2176
1132
  rightSlot,
2177
1133
  className
2178
1134
  }) {
2179
- return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: cn(headerRoot(), className), children: [
1135
+ return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: avatar.cn(headerRoot(), className), children: [
2180
1136
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: headerLeft(), children: [
2181
1137
  onCollapseMenu && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2182
1138
  /* @__PURE__ */ jsxRuntime.jsx(
2183
1139
  "button",
2184
1140
  {
2185
1141
  type: "button",
2186
- className: cn(
1142
+ className: avatar.cn(
2187
1143
  headerIconBtn({ variant: "ghost" }),
2188
1144
  "hidden md:inline-flex text-fg-muted hover:text-fg-default"
2189
1145
  ),
@@ -2197,7 +1153,7 @@ function Header({
2197
1153
  "button",
2198
1154
  {
2199
1155
  type: "button",
2200
- className: cn(
1156
+ className: avatar.cn(
2201
1157
  headerIconBtn({ variant: "ghost" }),
2202
1158
  "md:hidden text-fg-muted hover:text-fg-default"
2203
1159
  ),
@@ -2210,7 +1166,7 @@ function Header({
2210
1166
  /* @__PURE__ */ jsxRuntime.jsx(
2211
1167
  "span",
2212
1168
  {
2213
- className: cn(headerDivider(), "hidden md:block"),
1169
+ className: avatar.cn(headerDivider(), "hidden md:block"),
2214
1170
  "aria-hidden": "true"
2215
1171
  }
2216
1172
  )
@@ -2248,7 +1204,7 @@ function Header({
2248
1204
  ] })
2249
1205
  ] });
2250
1206
  }
2251
- const sidebarRoot = tv({
1207
+ const sidebarRoot = avatar.tv({
2252
1208
  base: "relative flex h-screen w-fit bg-bg-sidebar text-fg-default font-sans",
2253
1209
  variants: {
2254
1210
  mobile: {
@@ -2266,13 +1222,13 @@ const sidebarRoot = tv({
2266
1222
  { mobile: true, mobileOpen: false, class: "-translate-x-full" }
2267
1223
  ]
2268
1224
  });
2269
- tv({
1225
+ avatar.tv({
2270
1226
  base: "relative flex h-full w-fit bg-bg-sidebar text-fg-default font-sans"
2271
1227
  });
2272
- const sidebarMobileBackdrop = tv({
1228
+ const sidebarMobileBackdrop = avatar.tv({
2273
1229
  base: "fixed inset-0 z-40 bg-overlay-scrim transition-opacity duration-200"
2274
1230
  });
2275
- const sidebarMobileCloseBtn = tv({
1231
+ const sidebarMobileCloseBtn = avatar.tv({
2276
1232
  base: [
2277
1233
  "absolute top-[14px] right-[14px] z-10",
2278
1234
  "w-form-sm h-form-sm rounded-radius-md grid place-items-center",
@@ -2283,7 +1239,7 @@ const sidebarMobileCloseBtn = tv({
2283
1239
  "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary"
2284
1240
  ]
2285
1241
  });
2286
- const sidebarRail = tv({
1242
+ const sidebarRail = avatar.tv({
2287
1243
  base: [
2288
1244
  "flex flex-col items-center w-[64px] flex-none",
2289
1245
  "h-full sticky top-0 z-30",
@@ -2291,17 +1247,17 @@ const sidebarRail = tv({
2291
1247
  "bg-bg-sidebar border-r border-border-sidebar"
2292
1248
  ]
2293
1249
  });
2294
- const sidebarRailBrand = tv({
1250
+ const sidebarRailBrand = avatar.tv({
2295
1251
  base: [
2296
1252
  "w-form-lg h-form-lg rounded-radius-xl grid place-items-center",
2297
1253
  "bg-bg-brand text-fg-on-brand mb-pad-sm",
2298
1254
  "transition-opacity hover:opacity-90"
2299
1255
  ]
2300
1256
  });
2301
- const sidebarRailList = tv({
1257
+ const sidebarRailList = avatar.tv({
2302
1258
  base: "flex flex-col items-center gap-gp-sm flex-1"
2303
1259
  });
2304
- const sidebarRailItem = tv({
1260
+ const sidebarRailItem = avatar.tv({
2305
1261
  base: [
2306
1262
  "group/rail-item relative w-form-lg h-form-lg rounded-radius-xl grid place-items-center",
2307
1263
  "bg-transparent border-0 cursor-pointer",
@@ -2318,13 +1274,13 @@ const sidebarRailItem = tv({
2318
1274
  }
2319
1275
  }
2320
1276
  });
2321
- const sidebarRailActiveBar = tv({
1277
+ const sidebarRailActiveBar = avatar.tv({
2322
1278
  base: [
2323
1279
  "absolute -left-pad-2xl top-pad-md bottom-pad-md w-[3px]",
2324
1280
  "rounded-r-radius-sm bg-bg-brand"
2325
1281
  ]
2326
1282
  });
2327
- const sidebarRailTooltip = tv({
1283
+ const sidebarRailTooltip = avatar.tv({
2328
1284
  base: [
2329
1285
  "pointer-events-none absolute left-full ml-[14px] top-1/2 -translate-y-1/2",
2330
1286
  "px-pad-md py-[5px] rounded-radius-sm",
@@ -2335,7 +1291,7 @@ const sidebarRailTooltip = tv({
2335
1291
  "shadow-sh-md"
2336
1292
  ]
2337
1293
  });
2338
- const sidebarRailAdd = tv({
1294
+ const sidebarRailAdd = avatar.tv({
2339
1295
  base: [
2340
1296
  "w-form-lg h-form-lg rounded-radius-xl grid place-items-center",
2341
1297
  "text-fg-muted bg-transparent border-0 cursor-pointer mt-pad-xs opacity-70",
@@ -2344,17 +1300,17 @@ const sidebarRailAdd = tv({
2344
1300
  "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary"
2345
1301
  ]
2346
1302
  });
2347
- const sidebarRailUser = tv({
1303
+ const sidebarRailUser = avatar.tv({
2348
1304
  base: "mt-auto"
2349
1305
  });
2350
- const sidebarRailUserDefault = tv({
1306
+ const sidebarRailUserDefault = avatar.tv({
2351
1307
  base: [
2352
1308
  "grid place-items-center size-comp-lg rounded-full",
2353
1309
  // tracking-[0.02em] preserva tracking original (preset usa +0.06em)
2354
1310
  "bg-bg-brand text-fg-on-brand font-bold text-caption-sm uppercase tracking-[0.02em]"
2355
1311
  ]
2356
1312
  });
2357
- const sidebarPanel = tv({
1313
+ const sidebarPanel = avatar.tv({
2358
1314
  base: [
2359
1315
  "w-[264px] flex-none h-full sticky top-0 flex flex-col overflow-hidden",
2360
1316
  "bg-bg-sidebar border-r border-border-sidebar",
@@ -2374,10 +1330,10 @@ const sidebarPanel = tv({
2374
1330
  }
2375
1331
  }
2376
1332
  });
2377
- const sidebarPanelHeader = tv({
1333
+ const sidebarPanelHeader = avatar.tv({
2378
1334
  base: "flex items-center h-[60px] flex-none px-[14px] border-b border-border-sidebar"
2379
1335
  });
2380
- const sidebarPanelTitle = tv({
1336
+ const sidebarPanelTitle = avatar.tv({
2381
1337
  base: [
2382
1338
  "flex-1 min-w-0 inline-flex items-center gap-gp-sm",
2383
1339
  "py-pad-sm px-pad-md rounded-radius-md",
@@ -2387,13 +1343,13 @@ const sidebarPanelTitle = tv({
2387
1343
  "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary"
2388
1344
  ]
2389
1345
  });
2390
- const sidebarPanelBody = tv({
1346
+ const sidebarPanelBody = avatar.tv({
2391
1347
  base: "flex-1 overflow-y-auto p-[14px] scrollbar-thin"
2392
1348
  });
2393
- const sidebarPanelGroup = tv({
1349
+ const sidebarPanelGroup = avatar.tv({
2394
1350
  base: "flex flex-col gap-px"
2395
1351
  });
2396
- const sidebarItem = tv({
1352
+ const sidebarItem = avatar.tv({
2397
1353
  base: [
2398
1354
  "flex items-center gap-[11px] h-form-lg w-full px-pad-xl rounded-radius-md",
2399
1355
  "text-fg-default text-body-sm font-medium text-left no-underline cursor-pointer",
@@ -2425,7 +1381,7 @@ const sidebarItem = tv({
2425
1381
  }
2426
1382
  ]
2427
1383
  });
2428
- const sidebarItemIcon = tv({
1384
+ const sidebarItemIcon = avatar.tv({
2429
1385
  base: "flex-none w-[17px] h-[17px] text-fg-muted transition-colors",
2430
1386
  variants: {
2431
1387
  active: {
@@ -2436,10 +1392,10 @@ const sidebarItemIcon = tv({
2436
1392
  }
2437
1393
  }
2438
1394
  });
2439
- const sidebarItemText = tv({
1395
+ const sidebarItemText = avatar.tv({
2440
1396
  base: "flex-1 min-w-0 whitespace-nowrap overflow-hidden text-ellipsis"
2441
1397
  });
2442
- const sidebarPill = tv({
1398
+ const sidebarPill = avatar.tv({
2443
1399
  base: [
2444
1400
  "inline-flex items-center justify-center flex-none",
2445
1401
  "min-w-[22px] h-[22px] px-[7px] rounded-radius-sm",
@@ -2460,10 +1416,10 @@ const sidebarPill = tv({
2460
1416
  },
2461
1417
  defaultVariants: { kind: "default" }
2462
1418
  });
2463
- const sidebarSubgroupRoot = tv({
1419
+ const sidebarSubgroupRoot = avatar.tv({
2464
1420
  base: "flex flex-col gap-px"
2465
1421
  });
2466
- const sidebarSubgroupChev = tv({
1422
+ const sidebarSubgroupChev = avatar.tv({
2467
1423
  base: "flex-none w-[13px] h-[13px] text-fg-muted ml-auto transition-transform duration-200",
2468
1424
  variants: {
2469
1425
  collapsed: {
@@ -2471,7 +1427,7 @@ const sidebarSubgroupChev = tv({
2471
1427
  }
2472
1428
  }
2473
1429
  });
2474
- const sidebarSubgroupList = tv({
1430
+ const sidebarSubgroupList = avatar.tv({
2475
1431
  base: [
2476
1432
  "flex flex-col gap-px overflow-hidden",
2477
1433
  "ml-pad-xl pl-[14px] py-pad-2xs",
@@ -2486,10 +1442,10 @@ const sidebarSubgroupList = tv({
2486
1442
  },
2487
1443
  defaultVariants: { collapsed: false }
2488
1444
  });
2489
- const sidebarSection = tv({
1445
+ const sidebarSection = avatar.tv({
2490
1446
  base: "flex flex-col gap-px pt-[18px] mt-pad-xl border-t border-border-sidebar"
2491
1447
  });
2492
- const sidebarSectionHeader = tv({
1448
+ const sidebarSectionHeader = avatar.tv({
2493
1449
  base: [
2494
1450
  "flex items-center gap-gp-sm px-pad-lg pt-pad-sm pb-pad-md",
2495
1451
  "bg-transparent border-0 text-left cursor-pointer select-none w-full",
@@ -2500,7 +1456,7 @@ const sidebarSectionHeader = tv({
2500
1456
  "dark:text-fg-muted dark:font-medium dark:opacity-70"
2501
1457
  ]
2502
1458
  });
2503
- const sidebarSectionChev = tv({
1459
+ const sidebarSectionChev = avatar.tv({
2504
1460
  base: "flex-none w-[12px] h-[12px] transition-transform duration-200",
2505
1461
  variants: {
2506
1462
  collapsed: {
@@ -2508,7 +1464,7 @@ const sidebarSectionChev = tv({
2508
1464
  }
2509
1465
  }
2510
1466
  });
2511
- const sidebarSectionAdd = tv({
1467
+ const sidebarSectionAdd = avatar.tv({
2512
1468
  base: [
2513
1469
  "ml-auto w-[18px] h-[18px] grid place-items-center rounded-radius-xs",
2514
1470
  "text-fg-muted bg-transparent border-0 cursor-pointer text-body-md leading-none",
@@ -2516,7 +1472,7 @@ const sidebarSectionAdd = tv({
2516
1472
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring-secondary"
2517
1473
  ]
2518
1474
  });
2519
- const sidebarSectionList = tv({
1475
+ const sidebarSectionList = avatar.tv({
2520
1476
  base: "flex flex-col gap-px overflow-hidden transition-[max-height,opacity] duration-200 ease-out",
2521
1477
  variants: {
2522
1478
  collapsed: {
@@ -2530,7 +1486,7 @@ const sidebarSectionList = tv({
2530
1486
  },
2531
1487
  defaultVariants: { collapsed: false, variant: "bookmark" }
2532
1488
  });
2533
- const sidebarSectionItem = tv({
1489
+ const sidebarSectionItem = avatar.tv({
2534
1490
  base: [
2535
1491
  "flex items-center gap-[11px] h-form-sm w-full px-pad-lg rounded-radius-md",
2536
1492
  "text-body-xs font-medium text-fg-muted no-underline cursor-pointer",
@@ -2540,10 +1496,10 @@ const sidebarSectionItem = tv({
2540
1496
  "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary"
2541
1497
  ]
2542
1498
  });
2543
- const sidebarBookmarkDot = tv({
1499
+ const sidebarBookmarkDot = avatar.tv({
2544
1500
  base: "flex-none w-[10px] h-[10px] rounded-full"
2545
1501
  });
2546
- const sidebarBookmarkIcon = tv({
1502
+ const sidebarBookmarkIcon = avatar.tv({
2547
1503
  base: [
2548
1504
  // mesmo footprint do dot/avatar → alinhamento consistente; ícone herda a
2549
1505
  // cor via `color` inline (currentColor), sem caixa de fundo
@@ -2552,14 +1508,14 @@ const sidebarBookmarkIcon = tv({
2552
1508
  "[&>svg]:size-icon-xs"
2553
1509
  ]
2554
1510
  });
2555
- const sidebarChatAvatar = tv({
1511
+ const sidebarChatAvatar = avatar.tv({
2556
1512
  base: [
2557
1513
  "flex-none grid place-items-center w-icon-lg h-icon-lg rounded-full",
2558
1514
  // tracking-[0.02em] preserva o tracking original (preset usa +0.06em); leading-none mantém centralização vertical
2559
1515
  "text-white text-caption-xs font-bold uppercase tracking-[0.02em] leading-none"
2560
1516
  ]
2561
1517
  });
2562
- const sidebarChatStatus = tv({
1518
+ const sidebarChatStatus = avatar.tv({
2563
1519
  base: "flex-none w-[7px] h-[7px] rounded-full ml-auto",
2564
1520
  variants: {
2565
1521
  status: {
@@ -2612,7 +1568,7 @@ function SidebarRail({
2612
1568
  onAddClick,
2613
1569
  className
2614
1570
  }) {
2615
- return /* @__PURE__ */ jsxRuntime.jsxs("aside", { className: cn(sidebarRail(), className), children: [
1571
+ return /* @__PURE__ */ jsxRuntime.jsxs("aside", { className: avatar.cn(sidebarRail(), className), children: [
2616
1572
  /* @__PURE__ */ jsxRuntime.jsx("a", { href: "/", className: sidebarRailBrand(), "aria-label": "Home", children: brand ?? /* @__PURE__ */ jsxRuntime.jsx(SidebarBrandIcon, {}) }),
2617
1573
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: sidebarRailList(), children: [
2618
1574
  contexts.map((ctx) => {
@@ -2652,7 +1608,7 @@ function SidebarRail({
2652
1608
  const SidebarItem = React.forwardRef(
2653
1609
  ({ item, active, subitem, iconBrand, onClick, className }, ref) => {
2654
1610
  const Icon = item.icon;
2655
- const classes = cn(sidebarItem({ active, subitem }), className);
1611
+ const classes = avatar.cn(sidebarItem({ active, subitem }), className);
2656
1612
  const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2657
1613
  Icon && /* @__PURE__ */ jsxRuntime.jsx(
2658
1614
  Icon,
@@ -2702,7 +1658,7 @@ function SidebarPill({
2702
1658
  children,
2703
1659
  className
2704
1660
  }) {
2705
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(sidebarPill({ kind, active }), className), children });
1661
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: avatar.cn(sidebarPill({ kind, active }), className), children });
2706
1662
  }
2707
1663
  function SidebarSubgroup({
2708
1664
  item,
@@ -2726,12 +1682,12 @@ function SidebarSubgroup({
2726
1682
  onOpenChange?.(next);
2727
1683
  };
2728
1684
  const Icon = item.icon;
2729
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(sidebarSubgroupRoot(), className), children: [
1685
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: avatar.cn(sidebarSubgroupRoot(), className), children: [
2730
1686
  /* @__PURE__ */ jsxRuntime.jsxs(
2731
1687
  "button",
2732
1688
  {
2733
1689
  type: "button",
2734
- className: cn(sidebarItem(), "select-none"),
1690
+ className: avatar.cn(sidebarItem(), "select-none"),
2735
1691
  onClick: () => setOpen(!isOpen),
2736
1692
  "aria-expanded": isOpen,
2737
1693
  "aria-controls": `subgroup-${item.name}`,
@@ -2781,7 +1737,7 @@ function SidebarSection({
2781
1737
  if (open === void 0) setInternalOpen(next);
2782
1738
  onOpenChange?.(next);
2783
1739
  };
2784
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(sidebarSection(), className), children: [
1740
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: avatar.cn(sidebarSection(), className), children: [
2785
1741
  /* @__PURE__ */ jsxRuntime.jsxs(
2786
1742
  "button",
2787
1743
  {
@@ -2930,11 +1886,11 @@ function SidebarPanel({
2930
1886
  return /* @__PURE__ */ jsxRuntime.jsxs(
2931
1887
  "aside",
2932
1888
  {
2933
- className: cn(sidebarPanel({ collapsed, floating, mobile }), className),
1889
+ className: avatar.cn(sidebarPanel({ collapsed, floating, mobile }), className),
2934
1890
  "aria-hidden": collapsed,
2935
1891
  children: [
2936
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: sidebarPanelHeader(), children: hasSwitcher ? /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { children: [
2937
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", className: sidebarPanelTitle(), children: [
1892
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: sidebarPanelHeader(), children: hasSwitcher ? /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenu, { children: [
1893
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", className: sidebarPanelTitle(), children: [
2938
1894
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 min-w-0 whitespace-nowrap overflow-hidden text-ellipsis", children: context.label }),
2939
1895
  /* @__PURE__ */ jsxRuntime.jsx(
2940
1896
  lucideReact.ChevronDown,
@@ -2945,11 +1901,11 @@ function SidebarPanel({
2945
1901
  }
2946
1902
  )
2947
1903
  ] }) }),
2948
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuContent, { align: "start", sideOffset: 6, className: "min-w-[220px]", children: contexts.map((ctx) => {
1904
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuContent, { align: "start", sideOffset: 6, className: "min-w-[220px]", children: contexts.map((ctx) => {
2949
1905
  const Icon = ctx.icon;
2950
1906
  const isActive = ctx.id === context.id;
2951
1907
  return /* @__PURE__ */ jsxRuntime.jsxs(
2952
- DropdownMenuItem,
1908
+ avatar.DropdownMenuItem,
2953
1909
  {
2954
1910
  onSelect: () => onContextChange?.(ctx.id),
2955
1911
  children: [
@@ -3103,7 +2059,7 @@ function MenuSidebar({
3103
2059
  /* @__PURE__ */ jsxRuntime.jsxs(
3104
2060
  "div",
3105
2061
  {
3106
- className: cn(
2062
+ className: avatar.cn(
3107
2063
  sidebarRoot({ mobile: isMobile, mobileOpen: isMobile && openMobile }),
3108
2064
  className
3109
2065
  ),
@@ -3170,39 +2126,6 @@ function MenuSidebar({
3170
2126
  )
3171
2127
  ] });
3172
2128
  }
3173
- const Avatar = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3174
- AvatarPrimitive__namespace.Root,
3175
- {
3176
- ref,
3177
- className: cn(
3178
- "relative flex size-8 shrink-0 overflow-hidden rounded-full",
3179
- className
3180
- ),
3181
- ...props
3182
- }
3183
- ));
3184
- Avatar.displayName = AvatarPrimitive__namespace.Root.displayName;
3185
- const AvatarImage = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3186
- AvatarPrimitive__namespace.Image,
3187
- {
3188
- ref,
3189
- className: cn("aspect-square h-full w-full", className),
3190
- ...props
3191
- }
3192
- ));
3193
- AvatarImage.displayName = AvatarPrimitive__namespace.Image.displayName;
3194
- const AvatarFallback = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3195
- AvatarPrimitive__namespace.Fallback,
3196
- {
3197
- ref,
3198
- className: cn(
3199
- "flex h-full w-full items-center justify-center rounded-full bg-bg-muted text-fg-muted text-body-sm font-normal",
3200
- className
3201
- ),
3202
- ...props
3203
- }
3204
- ));
3205
- AvatarFallback.displayName = AvatarPrimitive__namespace.Fallback.displayName;
3206
2129
  function deriveInitials(name) {
3207
2130
  return name.split(" ").filter(Boolean).map((p) => p[0]).join("").slice(0, 2).toUpperCase();
3208
2131
  }
@@ -3229,8 +2152,8 @@ function UserMenu({
3229
2152
  // abertura → o menu abre no pointerdown e fecha no click/pointerup do mesmo
3230
2153
  // toque ("aparece e some", precisa 2-3 toques). Sem modal, o dismiss por
3231
2154
  // toque-fora continua via DismissableLayer, sem a corrida.
3232
- /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { modal: false, children: [
3233
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
2155
+ /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenu, { modal: false, children: [
2156
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
3234
2157
  "button",
3235
2158
  {
3236
2159
  type: "button",
@@ -3244,14 +2167,14 @@ function UserMenu({
3244
2167
  "data-[state=open]:ring-4 data-[state=open]:ring-ring-secondary"
3245
2168
  ].join(" "),
3246
2169
  style: user.avatarColor ? { background: user.avatarColor } : void 0,
3247
- children: user.avatarSrc ? /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-comp-lg", children: [
3248
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: user.avatarSrc, alt: user.name }),
3249
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "bg-transparent text-fg-on-brand", children: initials })
2170
+ children: user.avatarSrc ? /* @__PURE__ */ jsxRuntime.jsxs(avatar.Avatar, { className: "size-comp-lg", children: [
2171
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.AvatarImage, { src: user.avatarSrc, alt: user.name }),
2172
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.AvatarFallback, { className: "bg-transparent text-fg-on-brand", children: initials })
3250
2173
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, children: initials })
3251
2174
  }
3252
2175
  ) }),
3253
2176
  /* @__PURE__ */ jsxRuntime.jsxs(
3254
- DropdownMenuContent,
2177
+ avatar.DropdownMenuContent,
3255
2178
  {
3256
2179
  side: "right",
3257
2180
  align: "end",
@@ -3260,13 +2183,13 @@ function UserMenu({
3260
2183
  children: [
3261
2184
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-gp-md px-pad-lg py-pad-md", children: [
3262
2185
  /* @__PURE__ */ jsxRuntime.jsxs(
3263
- Avatar,
2186
+ avatar.Avatar,
3264
2187
  {
3265
2188
  className: "size-comp-lg shrink-0",
3266
2189
  style: user.avatarColor ? { background: user.avatarColor } : void 0,
3267
2190
  children: [
3268
- user.avatarSrc && /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: user.avatarSrc, alt: user.name }),
3269
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "bg-bg-brand text-fg-on-brand text-body-xs font-bold uppercase", children: initials })
2191
+ user.avatarSrc && /* @__PURE__ */ jsxRuntime.jsx(avatar.AvatarImage, { src: user.avatarSrc, alt: user.name }),
2192
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.AvatarFallback, { className: "bg-bg-brand text-fg-on-brand text-body-xs font-bold uppercase", children: initials })
3270
2193
  ]
3271
2194
  }
3272
2195
  ),
@@ -3275,21 +2198,21 @@ function UserMenu({
3275
2198
  user.email && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-caption-sm text-fg-muted truncate", children: user.email })
3276
2199
  ] })
3277
2200
  ] }),
3278
- hasGroups && /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
3279
- hasLayout && /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSub, { children: [
3280
- /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { children: [
2201
+ hasGroups && /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuSeparator, {}),
2202
+ hasLayout && /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuSub, { children: [
2203
+ /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuSubTrigger, { children: [
3281
2204
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LayoutGrid, {}),
3282
2205
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Layout" }),
3283
2206
  currentLayoutLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 text-right text-caption-sm text-fg-subtle", children: currentLayoutLabel })
3284
2207
  ] }),
3285
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
3286
- DropdownMenuRadioGroup,
2208
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
2209
+ avatar.DropdownMenuRadioGroup,
3287
2210
  {
3288
2211
  value: layout,
3289
2212
  onValueChange: onLayoutChange,
3290
2213
  children: layoutOptions.map((opt) => {
3291
2214
  const Icon = opt.icon;
3292
- return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuRadioItem, { value: opt.id, children: [
2215
+ return /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuRadioItem, { value: opt.id, children: [
3293
2216
  /* @__PURE__ */ jsxRuntime.jsx(Icon, {}),
3294
2217
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: opt.label })
3295
2218
  ] }, opt.id);
@@ -3297,20 +2220,20 @@ function UserMenu({
3297
2220
  }
3298
2221
  ) })
3299
2222
  ] }),
3300
- hasTheme && /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSub, { children: [
3301
- /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { children: [
2223
+ hasTheme && /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuSub, { children: [
2224
+ /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuSubTrigger, { children: [
3302
2225
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SunMoon, {}),
3303
2226
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Tema" }),
3304
2227
  currentThemeLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 text-right text-caption-sm text-fg-subtle", children: currentThemeLabel })
3305
2228
  ] }),
3306
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
3307
- DropdownMenuRadioGroup,
2229
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
2230
+ avatar.DropdownMenuRadioGroup,
3308
2231
  {
3309
2232
  value: theme,
3310
2233
  onValueChange: onThemeChange,
3311
2234
  children: themeOptions.map((opt) => {
3312
2235
  const Icon = opt.icon;
3313
- return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuRadioItem, { value: opt.id, children: [
2236
+ return /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuRadioItem, { value: opt.id, children: [
3314
2237
  /* @__PURE__ */ jsxRuntime.jsx(Icon, {}),
3315
2238
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: opt.label })
3316
2239
  ] }, opt.id);
@@ -3318,13 +2241,13 @@ function UserMenu({
3318
2241
  }
3319
2242
  ) })
3320
2243
  ] }),
3321
- onSettings && /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuItem, { onSelect: onSettings, children: [
2244
+ onSettings && /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuItem, { onSelect: onSettings, children: [
3322
2245
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, {}),
3323
2246
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Configurações" })
3324
2247
  ] }),
3325
2248
  onLogout && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3326
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
3327
- /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuItem, { onSelect: onLogout, children: [
2249
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuSeparator, {}),
2250
+ /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuItem, { onSelect: onLogout, children: [
3328
2251
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LogOut, {}),
3329
2252
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Sair" })
3330
2253
  ] })
@@ -3335,26 +2258,26 @@ function UserMenu({
3335
2258
  ] })
3336
2259
  );
3337
2260
  }
3338
- const root = tv({
2261
+ const root = avatar.tv({
3339
2262
  base: [
3340
2263
  "flex h-screen w-full bg-bg-canvas",
3341
2264
  "overflow-hidden"
3342
2265
  // garante que sidebar + main não vazem viewport
3343
2266
  ]
3344
2267
  });
3345
- const main = tv({
2268
+ const main = avatar.tv({
3346
2269
  base: [
3347
2270
  "flex flex-col flex-1 min-w-0",
3348
2271
  "overflow-hidden"
3349
2272
  ]
3350
2273
  });
3351
- const body = tv({
2274
+ const body = avatar.tv({
3352
2275
  base: [
3353
2276
  "flex flex-col flex-1 min-h-0",
3354
2277
  "overflow-auto scrollbar-thin"
3355
2278
  ]
3356
2279
  });
3357
- const bodyInner = tv({
2280
+ const bodyInner = avatar.tv({
3358
2281
  base: [
3359
2282
  "flex flex-col flex-1 min-h-0 w-full mx-auto",
3360
2283
  "gap-gp-4xl p-pad-6xl max-2xl:p-pad-4xl"
@@ -3451,7 +2374,7 @@ function AppShell({
3451
2374
  onLogout
3452
2375
  }
3453
2376
  ) : void 0;
3454
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(root(), className), children: [
2377
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: avatar.cn(root(), className), children: [
3455
2378
  /* @__PURE__ */ jsxRuntime.jsx(
3456
2379
  MenuSidebar,
3457
2380
  {
@@ -3491,7 +2414,7 @@ function AppShell({
3491
2414
  rightSlot: headerRightSlot
3492
2415
  }
3493
2416
  ),
3494
- /* @__PURE__ */ jsxRuntime.jsx("main", { className: cn(body(), bodyClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
2417
+ /* @__PURE__ */ jsxRuntime.jsx("main", { className: avatar.cn(body(), bodyClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
3495
2418
  "div",
3496
2419
  {
3497
2420
  className: bodyInner({
@@ -3567,52 +2490,16 @@ function useTheme() {
3567
2490
  return { theme, setTheme, isDark, toggle };
3568
2491
  }
3569
2492
  exports.AppShell = AppShell;
3570
- exports.Avatar = Avatar;
3571
- exports.AvatarFallback = AvatarFallback;
3572
- exports.Button = Button;
3573
2493
  exports.Chip = Chip;
3574
2494
  exports.ChipGroup = ChipGroup;
3575
2495
  exports.ChipGroupItem = ChipGroupItem;
3576
- exports.Command = Command;
3577
- exports.CommandDialog = CommandDialog;
3578
- exports.CommandEmpty = CommandEmpty;
3579
- exports.CommandGroup = CommandGroup;
3580
- exports.CommandInput = CommandInput;
3581
- exports.CommandItem = CommandItem;
3582
- exports.CommandList = CommandList;
3583
- exports.Dialog = Dialog;
3584
- exports.DialogClose = DialogClose;
3585
- exports.DialogContent = DialogContent;
3586
- exports.DialogDescription = DialogDescription;
3587
- exports.DialogTitle = DialogTitle;
3588
- exports.DialogTrigger = DialogTrigger;
3589
- exports.DropdownMenu = DropdownMenu;
3590
- exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
3591
- exports.DropdownMenuContent = DropdownMenuContent;
3592
- exports.DropdownMenuGroup = DropdownMenuGroup;
3593
- exports.DropdownMenuItem = DropdownMenuItem;
3594
- exports.DropdownMenuLabel = DropdownMenuLabel;
3595
- exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
3596
- exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
3597
- exports.DropdownMenuSeparator = DropdownMenuSeparator;
3598
- exports.DropdownMenuTrigger = DropdownMenuTrigger;
3599
2496
  exports.Header = Header;
3600
2497
  exports.HeaderBreadcrumb = HeaderBreadcrumb;
3601
2498
  exports.HeaderMessages = HeaderMessages;
3602
2499
  exports.HeaderNotifications = HeaderNotifications;
3603
2500
  exports.HeaderSearch = HeaderSearch;
3604
2501
  exports.HeaderThemeSwitcher = HeaderThemeSwitcher;
3605
- exports.InputGroup = InputGroup;
3606
- exports.InputGroupAddon = InputGroupAddon;
3607
- exports.InputGroupButton = InputGroupButton;
3608
- exports.InputGroupInput = InputGroupInput;
3609
- exports.InputGroupText = InputGroupText;
3610
- exports.InputGroupTextarea = InputGroupTextarea;
3611
2502
  exports.MenuSidebar = MenuSidebar;
3612
- exports.Popover = Popover;
3613
- exports.PopoverAnchor = PopoverAnchor;
3614
- exports.PopoverContent = PopoverContent;
3615
- exports.PopoverTrigger = PopoverTrigger;
3616
2503
  exports.SidebarBrandIcon = SidebarBrandIcon;
3617
2504
  exports.SidebarItem = SidebarItem;
3618
2505
  exports.SidebarPanel = SidebarPanel;
@@ -3621,13 +2508,9 @@ exports.SidebarRail = SidebarRail;
3621
2508
  exports.SidebarSection = SidebarSection;
3622
2509
  exports.SidebarSubgroup = SidebarSubgroup;
3623
2510
  exports.UserMenu = UserMenu;
3624
- exports.buttonVariants = buttonVariants;
3625
2511
  exports.chipCount = chipCount;
3626
2512
  exports.chipVariants = chipVariants;
3627
- exports.cn = cn;
3628
- exports.inputGroupVariants = inputGroupVariants;
3629
- exports.tv = tv;
3630
2513
  exports.useControllable = useControllable;
3631
2514
  exports.useMediaQuery = useMediaQuery;
3632
2515
  exports.useTheme = useTheme;
3633
- //# sourceMappingURL=useTheme-DFAlP_ab.cjs.map
2516
+ //# sourceMappingURL=useTheme-DQ7FaHdv.cjs.map