@snksergio/design-system 0.35.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 (94) 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-CizzMZ20.cjs → input-CJnonz-G.cjs} +3 -3
  7. package/dist-lib/chunks/{input-CizzMZ20.cjs.map → input-CJnonz-G.cjs.map} +1 -1
  8. package/dist-lib/chunks/{input-Cym0k4ZI.mjs → input-jLoO8t0I.mjs} +2 -2
  9. package/dist-lib/chunks/{input-Cym0k4ZI.mjs.map → input-jLoO8t0I.mjs.map} +1 -1
  10. package/dist-lib/chunks/{kpi-delta-FhfuIg27.mjs → kpi-delta-D0g2YzDy.mjs} +3 -2
  11. package/dist-lib/chunks/{kpi-delta-FhfuIg27.mjs.map → kpi-delta-D0g2YzDy.mjs.map} +1 -1
  12. package/dist-lib/chunks/{kpi-delta-DrSJPMCY.cjs → kpi-delta-D6cLnCqW.cjs} +8 -7
  13. package/dist-lib/chunks/{kpi-delta-DrSJPMCY.cjs.map → kpi-delta-D6cLnCqW.cjs.map} +1 -1
  14. package/dist-lib/chunks/{page-header-BMzUloFi.cjs → page-header-DSTprenz.cjs} +4 -4
  15. package/dist-lib/chunks/{page-header-BMzUloFi.cjs.map → page-header-DSTprenz.cjs.map} +1 -1
  16. package/dist-lib/chunks/{page-header-Buh6YlQM.mjs → page-header-Deb1excS.mjs} +2 -2
  17. package/dist-lib/chunks/{page-header-Buh6YlQM.mjs.map → page-header-Deb1excS.mjs.map} +1 -1
  18. package/dist-lib/chunks/{panel-Cdl0GPVE.mjs → panel-Cid3m9zb.mjs} +370 -9823
  19. package/dist-lib/chunks/panel-Cid3m9zb.mjs.map +1 -0
  20. package/dist-lib/chunks/{panel-DlyaLunw.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-D4alxxGV.cjs → useTheme-DQ7FaHdv.cjs} +170 -1282
  31. package/dist-lib/chunks/useTheme-DQ7FaHdv.cjs.map +1 -0
  32. package/dist-lib/chunks/{useTheme-DF2xbSdI.mjs → useTheme-UrerJ3i-.mjs} +26 -1134
  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/command.d.ts.map +1 -1
  58. package/dist-lib/src/components/shadcn/index.d.ts +60 -6
  59. package/dist-lib/src/components/shadcn/index.d.ts.map +1 -1
  60. package/dist-lib/src/hooks/useBrand.d.ts +1 -1
  61. package/dist-lib/theme/brand-blue.css +110 -110
  62. package/dist-lib/theme/brand-green.css +110 -110
  63. package/dist-lib/theme/brand-pay.css +189 -189
  64. package/dist-lib/theme/brand-vibrant.css +148 -148
  65. package/dist-lib/theme.css +10 -6
  66. package/dist-lib/tokens/brands/blue/semantic/color-dark.d.ts +4 -0
  67. package/dist-lib/tokens/brands/blue/semantic/color-dark.d.ts.map +1 -1
  68. package/dist-lib/tokens/brands/blue/semantic/color-light.d.ts +4 -0
  69. package/dist-lib/tokens/brands/blue/semantic/color-light.d.ts.map +1 -1
  70. package/dist-lib/tokens/brands/default/semantic/color-dark.d.ts +4 -0
  71. package/dist-lib/tokens/brands/default/semantic/color-dark.d.ts.map +1 -1
  72. package/dist-lib/tokens/brands/default/semantic/color-light.d.ts +4 -0
  73. package/dist-lib/tokens/brands/default/semantic/color-light.d.ts.map +1 -1
  74. package/dist-lib/tokens/brands/green/semantic/color-dark.d.ts +4 -0
  75. package/dist-lib/tokens/brands/green/semantic/color-dark.d.ts.map +1 -1
  76. package/dist-lib/tokens/brands/green/semantic/color-light.d.ts +4 -0
  77. package/dist-lib/tokens/brands/green/semantic/color-light.d.ts.map +1 -1
  78. package/dist-lib/tokens/brands/pay/semantic/color-dark.d.ts +4 -0
  79. package/dist-lib/tokens/brands/pay/semantic/color-dark.d.ts.map +1 -1
  80. package/dist-lib/tokens/brands/pay/semantic/color-light.d.ts +4 -0
  81. package/dist-lib/tokens/brands/pay/semantic/color-light.d.ts.map +1 -1
  82. package/dist-lib/tokens/brands/vibrant/semantic/color-dark.d.ts +4 -0
  83. package/dist-lib/tokens/brands/vibrant/semantic/color-dark.d.ts.map +1 -1
  84. package/dist-lib/tokens/brands/vibrant/semantic/color-light.d.ts +4 -0
  85. package/dist-lib/tokens/brands/vibrant/semantic/color-light.d.ts.map +1 -1
  86. package/dist-lib/tokens.cjs +12 -0
  87. package/dist-lib/tokens.cjs.map +1 -1
  88. package/dist-lib/tokens.mjs +12 -0
  89. package/dist-lib/tokens.mjs.map +1 -1
  90. package/package.json +11 -3
  91. package/dist-lib/chunks/panel-Cdl0GPVE.mjs.map +0 -1
  92. package/dist-lib/chunks/panel-DlyaLunw.cjs.map +0 -1
  93. package/dist-lib/chunks/useTheme-D4alxxGV.cjs.map +0 -1
  94. package/dist-lib/chunks/useTheme-DF2xbSdI.mjs.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,207 +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
- "flex h-full w-full flex-col overflow-hidden p-pad-xl bg-popover text-popover-foreground",
844
- className
845
- ),
846
- ...props
847
- }
848
- ));
849
- Command.displayName = cmdk.Command.displayName;
850
- const CommandDialog = ({ children, ...props }) => {
851
- return /* @__PURE__ */ jsxRuntime.jsx(Dialog, { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(
852
- DialogContent,
853
- {
854
- hideClose: true,
855
- "aria-describedby": void 0,
856
- className: cn(
857
- "overflow-hidden p-0 gap-0 sm:max-w-[384px]",
858
- "rounded-[12px] border border-border-default",
859
- // Outline padrão de elementos flutuantes
860
- "outline-float"
861
- ),
862
- children: [
863
- /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { className: "sr-only", children: "Comando" }),
864
- /* @__PURE__ */ jsxRuntime.jsx(Command, { children })
865
- ]
866
- }
867
- ) });
868
- };
869
- const CommandInput = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
870
- "div",
871
- {
872
- "cmdk-input-wrapper": "",
873
- className: cn(
874
- "flex items-center gap-gp-md h-form-md px-pad-xl rounded-radius-lg",
875
- "bg-bg-input border border-border-subtle shadow-sh-sm",
876
- "transition-[border-color,box-shadow,background-color] duration-150",
877
- "focus-within:border-border-brand focus-within:shadow-sh-ring",
878
- "dark:bg-bg-muted dark:border-border-input dark:shadow-sh-none"
879
- ),
880
- children: [
881
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "size-[14px] text-fg-muted shrink-0", strokeWidth: 1.8 }),
882
- /* @__PURE__ */ jsxRuntime.jsx(
883
- cmdk.Command.Input,
884
- {
885
- ref,
886
- className: cn(
887
- "flex-1 min-w-0 bg-transparent border-0 outline-none",
888
- "text-body-sm font-normal text-fg-default placeholder:text-fg-muted",
889
- "disabled:cursor-not-allowed disabled:opacity-50",
890
- className
891
- ),
892
- ...props
893
- }
894
- )
895
- ]
896
- }
897
- ));
898
- CommandInput.displayName = cmdk.Command.Input.displayName;
899
- const CommandList = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
900
- cmdk.Command.List,
901
- {
902
- ref,
903
- className: cn(
904
- "max-h-[300px] overflow-y-auto overflow-x-hidden mt-pad-md scrollbar-thin",
905
- className
906
- ),
907
- ...props
908
- }
909
- ));
910
- CommandList.displayName = cmdk.Command.List.displayName;
911
- const CommandEmpty = React__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(
912
- cmdk.Command.Empty,
913
- {
914
- ref,
915
- className: "py-pad-5xl text-center text-body-md text-fg-muted",
916
- ...props
917
- }
918
- ));
919
- CommandEmpty.displayName = cmdk.Command.Empty.displayName;
920
- const CommandGroup = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
921
- cmdk.Command.Group,
922
- {
923
- ref,
924
- className: cn(
925
- "overflow-hidden text-fg-default",
926
- "[&_[cmdk-group-heading]]:flex [&_[cmdk-group-heading]]:items-center",
927
- "[&_[cmdk-group-heading]]:h-[28px] [&_[cmdk-group-heading]]:px-pad-xl",
928
- "[&_[cmdk-group-heading]]:text-caption-xs [&_[cmdk-group-heading]]:font-bold",
929
- "[&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-wider",
930
- "[&_[cmdk-group-heading]]:text-fg-subtle",
931
- className
932
- ),
933
- ...props
934
- }
935
- ));
936
- CommandGroup.displayName = cmdk.Command.Group.displayName;
937
- const CommandSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
938
- cmdk.Command.Separator,
939
- {
940
- ref,
941
- className: cn("mx-pad-xs my-pad-xs h-px bg-border-default", className),
942
- ...props
943
- }
944
- ));
945
- CommandSeparator.displayName = cmdk.Command.Separator.displayName;
946
- const CommandItem = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
947
- cmdk.Command.Item,
948
- {
949
- ref,
950
- className: cn(
951
- "relative flex cursor-default select-none items-center gap-gp-md",
952
- "rounded-radius-lg px-pad-xl py-pad-md",
953
- "text-body-sm font-medium text-fg-muted",
954
- "outline-none transition-colors",
955
- "data-[selected='true']:bg-bg-muted data-[selected='true']:text-fg-default data-[selected='true']:[&_svg]:text-fg-default",
956
- "data-[disabled='true']:pointer-events-none data-[disabled='true']:opacity-50",
957
- "[&_svg]:pointer-events-none [&_svg]:size-[18px] [&_svg]:shrink-0 [&_svg]:text-fg-muted",
958
- className
959
- ),
960
- ...props
961
- }
962
- ));
963
- CommandItem.displayName = cmdk.Command.Item.displayName;
964
- const CommandShortcut = ({
965
- className,
966
- ...props
967
- }) => {
968
- return /* @__PURE__ */ jsxRuntime.jsx(
969
- "span",
970
- {
971
- className: cn(
972
- "ml-auto text-caption-sm tracking-wider text-fg-subtle",
973
- className
974
- ),
975
- ...props
976
- }
977
- );
978
- };
979
- CommandShortcut.displayName = "CommandShortcut";
980
347
  function HeaderSearch({
981
348
  placeholder = "Buscar...",
982
349
  shortcut = "⌘K",
@@ -1005,7 +372,7 @@ function HeaderSearch({
1005
372
  "button",
1006
373
  {
1007
374
  type: "button",
1008
- className: cn(searchFakeInput(), "hidden md:inline-flex", className),
375
+ className: avatar.cn(searchFakeInput(), "hidden md:inline-flex", className),
1009
376
  onClick: () => setOpen(true),
1010
377
  "aria-label": "Abrir busca",
1011
378
  children: [
@@ -1016,7 +383,7 @@ function HeaderSearch({
1016
383
  }
1017
384
  ),
1018
385
  /* @__PURE__ */ jsxRuntime.jsx(
1019
- Button,
386
+ avatar.Button,
1020
387
  {
1021
388
  color: "secondary",
1022
389
  variant: "outline",
@@ -1028,10 +395,10 @@ function HeaderSearch({
1028
395
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, {})
1029
396
  }
1030
397
  ),
1031
- /* @__PURE__ */ jsxRuntime.jsxs(CommandDialog, { open, onOpenChange: setOpen, children: [
1032
- /* @__PURE__ */ jsxRuntime.jsx(CommandInput, { placeholder: commandPlaceholder }),
1033
- /* @__PURE__ */ jsxRuntime.jsxs(CommandList, { children: [
1034
- /* @__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 }),
1035
402
  commandGroups.map((group, gIdx) => /* @__PURE__ */ jsxRuntime.jsx(
1036
403
  CommandGroupBlock,
1037
404
  {
@@ -1051,10 +418,10 @@ function CommandGroupBlock({
1051
418
  onSelect
1052
419
  }) {
1053
420
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1054
- /* @__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) => {
1055
422
  const Icon = item.icon;
1056
423
  return /* @__PURE__ */ jsxRuntime.jsxs(
1057
- CommandItem,
424
+ avatar.CommandItem,
1058
425
  {
1059
426
  value: item.id ?? item.label,
1060
427
  keywords: item.keywords,
@@ -1066,16 +433,16 @@ function CommandGroupBlock({
1066
433
  children: [
1067
434
  Icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {}),
1068
435
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.label }),
1069
- item.shortcut && /* @__PURE__ */ jsxRuntime.jsx(CommandShortcut, { children: item.shortcut })
436
+ item.shortcut && /* @__PURE__ */ jsxRuntime.jsx(avatar.CommandShortcut, { children: item.shortcut })
1070
437
  ]
1071
438
  },
1072
439
  item.id ?? item.label
1073
440
  );
1074
441
  }) }),
1075
- !isLast && /* @__PURE__ */ jsxRuntime.jsx(CommandSeparator, {})
442
+ !isLast && /* @__PURE__ */ jsxRuntime.jsx(avatar.CommandSeparator, {})
1076
443
  ] });
1077
444
  }
1078
- const chipVariants = tv({
445
+ const chipVariants = avatar.tv({
1079
446
  base: [
1080
447
  "inline-flex items-center justify-center gap-gp-xs shrink-0",
1081
448
  "font-semibold whitespace-nowrap select-none",
@@ -1200,7 +567,7 @@ const chipVariants = tv({
1200
567
  selected: false
1201
568
  }
1202
569
  });
1203
- const chipCount = tv({
570
+ const chipCount = avatar.tv({
1204
571
  base: [
1205
572
  "inline-flex items-center justify-center min-w-[16px] h-[16px] px-[4px]",
1206
573
  "rounded-radius-full text-caption-xs font-semibold leading-none",
@@ -1221,7 +588,7 @@ const Chip = React.forwardRef(function Chip2({
1221
588
  ...rest
1222
589
  }, ref) {
1223
590
  const interactive = Boolean(onClick) || asButton === true;
1224
- const classes = cn(
591
+ const classes = avatar.cn(
1225
592
  chipVariants({ color, variant, size, shape, interactive, selected }),
1226
593
  className
1227
594
  );
@@ -1320,7 +687,7 @@ const ChipGroup = React.forwardRef(
1320
687
  onValueChange: props.onValueChange,
1321
688
  orientation,
1322
689
  "aria-label": ariaLabel,
1323
- className: cn(
690
+ className: avatar.cn(
1324
691
  "inline-flex items-center gap-gp-sm",
1325
692
  orientation === "vertical" && "flex-col",
1326
693
  className
@@ -1339,7 +706,7 @@ const ChipGroup = React.forwardRef(
1339
706
  onValueChange: props.onValueChange,
1340
707
  orientation,
1341
708
  "aria-label": ariaLabel,
1342
- className: cn(
709
+ className: avatar.cn(
1343
710
  "inline-flex items-center gap-gp-sm",
1344
711
  orientation === "vertical" && "flex-col",
1345
712
  className
@@ -1371,7 +738,7 @@ const ChipGroupItem = React.forwardRef(
1371
738
  ToggleGroupPrimitive__namespace.Item,
1372
739
  {
1373
740
  ref,
1374
- className: cn(
741
+ className: avatar.cn(
1375
742
  // Estado OFF — visual inativo (passa pelo chipVariants normal)
1376
743
  chipVariants({
1377
744
  color: inactiveColor,
@@ -1390,71 +757,6 @@ const ChipGroupItem = React.forwardRef(
1390
757
  );
1391
758
  }
1392
759
  );
1393
- const Popover = PopoverPrimitive__namespace.Root;
1394
- const PopoverTrigger = PopoverPrimitive__namespace.Trigger;
1395
- const PopoverAnchor = PopoverPrimitive__namespace.Anchor;
1396
- const POPOVER_MOBILE_SHEET = [
1397
- "max-md:w-full max-md:min-w-0 max-md:max-w-none",
1398
- "max-md:!max-h-[92vh]",
1399
- "max-md:rounded-b-none max-md:rounded-t-[12px]",
1400
- "max-md:border-x-0 max-md:border-b-0",
1401
- "max-md:outline-none max-md:shadow-none",
1402
- // Respiro de 20px (pad-3xl) no rodapé pra o conteúdo (footer/última seção)
1403
- // não colar na borda inferior do device quando vira sheet.
1404
- "max-md:pb-pad-3xl",
1405
- "max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100",
1406
- "max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12"
1407
- ].join(" ");
1408
- const PopoverSheetBackdrop = () => /* @__PURE__ */ jsxRuntime.jsx(
1409
- "div",
1410
- {
1411
- "aria-hidden": "true",
1412
- className: "fixed inset-0 z-[55] bg-overlay-scrim pointer-events-auto md:hidden animate-in fade-in-0 duration-150"
1413
- }
1414
- );
1415
- const PopoverContent = React__namespace.forwardRef(
1416
- ({ className, align = "center", sideOffset = 6, disablePortal, mobileSheet = true, ...props }, ref) => {
1417
- const content = /* @__PURE__ */ jsxRuntime.jsx(
1418
- PopoverPrimitive__namespace.Content,
1419
- {
1420
- ref,
1421
- align,
1422
- sideOffset,
1423
- "data-mobile-sheet": mobileSheet ? "" : void 0,
1424
- className: cn(
1425
- "relative z-50",
1426
- // Unificado com DropdownMenu/Select: bg-bg-dropdown (frosted no dark)
1427
- // + border-border-default + outline-float. O `before` pseudo-element
1428
- // aplica o blur backdrop (necessário pra bg-bg-dropdown semi-transparente
1429
- // render correto no dark mode).
1430
- "bg-bg-dropdown",
1431
- "border border-border-default rounded-[12px] shadow-sh-lg outline-float",
1432
- "before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150",
1433
- "text-fg-default",
1434
- "data-[state=open]:animate-in data-[state=closed]:animate-out",
1435
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1436
- "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
1437
- "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
1438
- "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1439
- mobileSheet && POPOVER_MOBILE_SHEET,
1440
- className
1441
- ),
1442
- ...props
1443
- }
1444
- );
1445
- if (disablePortal) {
1446
- return mobileSheet ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1447
- /* @__PURE__ */ jsxRuntime.jsx(PopoverSheetBackdrop, {}),
1448
- content
1449
- ] }) : content;
1450
- }
1451
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1452
- mobileSheet && /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(PopoverSheetBackdrop, {}) }),
1453
- /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: content })
1454
- ] });
1455
- }
1456
- );
1457
- PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
1458
760
  const DEFAULT_FILTERS$1 = [
1459
761
  { id: "all", label: "Todas", predicate: () => true },
1460
762
  { id: "unread", label: "Não lidas", predicate: (n) => !!n.unread },
@@ -1476,9 +778,9 @@ function HeaderNotifications({ config, className }) {
1476
778
  const filtered = items.filter(
1477
779
  filters.find((f) => f.id === activeFilter)?.predicate ?? (() => true)
1478
780
  );
1479
- return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: setOpen, children: [
1480
- /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1481
- 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,
1482
784
  {
1483
785
  color: "secondary",
1484
786
  variant: "outline",
@@ -1493,10 +795,10 @@ function HeaderNotifications({ config, className }) {
1493
795
  }
1494
796
  ) }),
1495
797
  /* @__PURE__ */ jsxRuntime.jsxs(
1496
- PopoverContent,
798
+ avatar.PopoverContent,
1497
799
  {
1498
800
  align: "end",
1499
- className: cn(
801
+ className: avatar.cn(
1500
802
  "w-[380px] max-w-[calc(100vw-32px)] max-h-[520px] p-0 flex flex-col overflow-hidden",
1501
803
  className
1502
804
  ),
@@ -1510,7 +812,7 @@ function HeaderNotifications({ config, className }) {
1510
812
  ] }),
1511
813
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: hdHeaderActions(), children: [
1512
814
  onMarkAllRead && /* @__PURE__ */ jsxRuntime.jsx(
1513
- Button,
815
+ avatar.Button,
1514
816
  {
1515
817
  color: "secondary",
1516
818
  variant: "ghost",
@@ -1522,7 +824,7 @@ function HeaderNotifications({ config, className }) {
1522
824
  }
1523
825
  ),
1524
826
  onMoreActions && /* @__PURE__ */ jsxRuntime.jsx(
1525
- Button,
827
+ avatar.Button,
1526
828
  {
1527
829
  color: "secondary",
1528
830
  variant: "ghost",
@@ -1603,169 +905,6 @@ function NotificationRow({ item }) {
1603
905
  }
1604
906
  );
1605
907
  }
1606
- const inputGroupVariants = classVarianceAuthority.cva(
1607
- [
1608
- "group/input-group relative flex w-full items-center",
1609
- "bg-bg-input dark:bg-bg-muted",
1610
- "hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover",
1611
- "border border-border-input rounded-radius-lg",
1612
- "transition-[border-color,box-shadow,background-color] outline-none",
1613
- "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"
1614
- ],
1615
- {
1616
- variants: {
1617
- size: {
1618
- xxs: "min-h-form-xs px-pad-md gap-gp-xs rounded-radius-md text-body-sm font-normal",
1619
- xs: "min-h-form-sm px-pad-xl gap-gp-md rounded-radius-md text-body-sm font-normal",
1620
- sm: "min-h-form-md px-pad-xl gap-gp-md rounded-radius-lg text-body-sm font-normal",
1621
- md: "min-h-form-lg px-pad-xl gap-gp-md rounded-radius-lg text-body-sm font-normal"
1622
- },
1623
- state: {
1624
- default: "focus-within:border-border-brand focus-within:shadow-sh-ring",
1625
- error: "border-border-danger-muted focus-within:border-border-danger-muted focus-within:shadow-sh-ring-danger",
1626
- warning: "border-border-warning-muted focus-within:border-border-warning-muted focus-within:shadow-sh-ring-warning",
1627
- success: "border-border-success-muted focus-within:border-border-success-muted focus-within:shadow-sh-ring-success"
1628
- }
1629
- },
1630
- defaultVariants: { size: "md", state: "default" }
1631
- }
1632
- );
1633
- const InputGroup = React__namespace.forwardRef(
1634
- ({ className, size, state, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1635
- "div",
1636
- {
1637
- ref,
1638
- role: "group",
1639
- "data-slot": "input-group",
1640
- className: cn(inputGroupVariants({ size, state }), className),
1641
- ...props
1642
- }
1643
- )
1644
- );
1645
- InputGroup.displayName = "InputGroup";
1646
- const inputGroupInputVariants = classVarianceAuthority.cva([
1647
- "flex-1 min-w-0 bg-transparent border-0 outline-none",
1648
- "text-body-sm font-normal text-fg-default placeholder:text-fg-muted placeholder:opacity-70",
1649
- "disabled:cursor-not-allowed",
1650
- "file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-fg-default"
1651
- ]);
1652
- const InputGroupInput = React__namespace.forwardRef(({ className, type, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1653
- "input",
1654
- {
1655
- ref,
1656
- type,
1657
- "data-slot": "input-group-input",
1658
- className: cn(inputGroupInputVariants(), className),
1659
- ...props
1660
- }
1661
- ));
1662
- InputGroupInput.displayName = "InputGroupInput";
1663
- const inputGroupTextareaVariants = classVarianceAuthority.cva([
1664
- "flex-1 min-w-0 bg-transparent border-0 outline-none resize-y",
1665
- "py-pad-md",
1666
- "text-body-sm font-normal leading-[1.5] text-fg-default placeholder:text-fg-muted placeholder:opacity-70",
1667
- "disabled:cursor-not-allowed"
1668
- ]);
1669
- const InputGroupTextarea = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1670
- "textarea",
1671
- {
1672
- ref,
1673
- "data-slot": "input-group-textarea",
1674
- className: cn(inputGroupTextareaVariants(), className),
1675
- ...props
1676
- }
1677
- ));
1678
- InputGroupTextarea.displayName = "InputGroupTextarea";
1679
- const inputGroupAddonVariants = classVarianceAuthority.cva(
1680
- "flex items-center text-fg-muted shrink-0 select-none [&_svg]:size-4 [&_svg]:shrink-0",
1681
- {
1682
- variants: {
1683
- align: {
1684
- // Inline = horizontal (start/end do eixo do texto)
1685
- "inline-start": "",
1686
- "inline-end": "",
1687
- // Block = vertical (top/bottom — multi-linha em textarea)
1688
- "block-start": "",
1689
- "block-end": ""
1690
- }
1691
- },
1692
- defaultVariants: { align: "inline-start" }
1693
- }
1694
- );
1695
- const InputGroupAddon = React__namespace.forwardRef(({ className, align = "inline-start", onClick, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1696
- "div",
1697
- {
1698
- ref,
1699
- role: "group",
1700
- "data-slot": "input-group-addon",
1701
- "data-align": align,
1702
- className: cn(inputGroupAddonVariants({ align }), className),
1703
- onClick: (e) => {
1704
- if (e.target.closest("button")) {
1705
- onClick?.(e);
1706
- return;
1707
- }
1708
- e.currentTarget.parentElement?.querySelector(
1709
- "input, textarea"
1710
- )?.focus();
1711
- onClick?.(e);
1712
- },
1713
- ...props
1714
- }
1715
- ));
1716
- InputGroupAddon.displayName = "InputGroupAddon";
1717
- const InputGroupText = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1718
- "span",
1719
- {
1720
- ref,
1721
- "data-slot": "input-group-text",
1722
- className: cn(
1723
- "text-body-xs text-fg-muted whitespace-nowrap",
1724
- className
1725
- ),
1726
- ...props
1727
- }
1728
- ));
1729
- InputGroupText.displayName = "InputGroupText";
1730
- const inputGroupButtonVariants = classVarianceAuthority.cva(
1731
- [
1732
- "inline-flex items-center justify-center shrink-0",
1733
- "rounded-radius-md transition-colors outline-none cursor-pointer",
1734
- "focus-visible:ring-4 focus-visible:ring-ring-brand",
1735
- "disabled:cursor-not-allowed disabled:opacity-50",
1736
- "[&_svg]:size-4 [&_svg]:shrink-0"
1737
- ],
1738
- {
1739
- variants: {
1740
- size: {
1741
- xs: "h-form-xs px-pad-md gap-gp-xs text-body-xs font-normal",
1742
- "icon-xs": "size-form-xs",
1743
- sm: "h-form-sm px-pad-lg gap-gp-md text-body-xs font-normal",
1744
- "icon-sm": "size-form-sm"
1745
- },
1746
- variant: {
1747
- default: "bg-bg-muted text-fg-default hover:bg-bg-muted-hover",
1748
- destructive: "bg-bg-danger text-fg-on-danger hover:bg-bg-danger-hover",
1749
- outline: "border border-border-input bg-transparent text-fg-default hover:bg-bg-muted",
1750
- secondary: "bg-bg-emphasis text-fg-default hover:bg-bg-muted-hover",
1751
- ghost: "bg-transparent text-fg-muted hover:bg-bg-muted hover:text-fg-default",
1752
- link: "bg-transparent text-fg-brand underline-offset-4 hover:underline"
1753
- }
1754
- },
1755
- defaultVariants: { size: "xs", variant: "ghost" }
1756
- }
1757
- );
1758
- const InputGroupButton = React__namespace.forwardRef(({ className, size, variant, type = "button", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1759
- "button",
1760
- {
1761
- ref,
1762
- type,
1763
- "data-slot": "input-group-button",
1764
- className: cn(inputGroupButtonVariants({ size, variant }), className),
1765
- ...props
1766
- }
1767
- ));
1768
- InputGroupButton.displayName = "InputGroupButton";
1769
908
  const DEFAULT_FILTERS = [
1770
909
  { id: "all", label: "Tudo", predicate: () => true },
1771
910
  { id: "unread", label: "Não lidas", predicate: (m) => !!m.unread },
@@ -1790,9 +929,9 @@ function HeaderMessages({ config, className }) {
1790
929
  const filtered = items.filter(filters.find((f) => f.id === activeFilter)?.predicate ?? (() => true)).filter(
1791
930
  (m) => search ? m.name.toLowerCase().includes(search.toLowerCase()) : true
1792
931
  );
1793
- return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: setOpen, children: [
1794
- /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1795
- 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,
1796
935
  {
1797
936
  color: "secondary",
1798
937
  variant: "outline",
@@ -1807,10 +946,10 @@ function HeaderMessages({ config, className }) {
1807
946
  }
1808
947
  ) }),
1809
948
  /* @__PURE__ */ jsxRuntime.jsxs(
1810
- PopoverContent,
949
+ avatar.PopoverContent,
1811
950
  {
1812
951
  align: "end",
1813
- className: cn(
952
+ className: avatar.cn(
1814
953
  "w-[380px] max-w-[calc(100vw-32px)] max-h-[520px] p-0 flex flex-col overflow-hidden",
1815
954
  className
1816
955
  ),
@@ -1824,7 +963,7 @@ function HeaderMessages({ config, className }) {
1824
963
  ] }),
1825
964
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: hdHeaderActions(), children: [
1826
965
  onNewMessage && /* @__PURE__ */ jsxRuntime.jsx(
1827
- Button,
966
+ avatar.Button,
1828
967
  {
1829
968
  color: "secondary",
1830
969
  variant: "ghost",
@@ -1836,7 +975,7 @@ function HeaderMessages({ config, className }) {
1836
975
  }
1837
976
  ),
1838
977
  onExpand && /* @__PURE__ */ jsxRuntime.jsx(
1839
- Button,
978
+ avatar.Button,
1840
979
  {
1841
980
  color: "secondary",
1842
981
  variant: "ghost",
@@ -1849,10 +988,10 @@ function HeaderMessages({ config, className }) {
1849
988
  )
1850
989
  ] })
1851
990
  ] }),
1852
- showSearch && /* @__PURE__ */ jsxRuntime.jsxs(InputGroup, { size: "sm", children: [
1853
- /* @__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 }) }),
1854
993
  /* @__PURE__ */ jsxRuntime.jsx(
1855
- InputGroupInput,
994
+ avatar.InputGroupInput,
1856
995
  {
1857
996
  type: "text",
1858
997
  placeholder: searchPlaceholder,
@@ -1932,184 +1071,6 @@ function MessageRow({ item }) {
1932
1071
  }
1933
1072
  );
1934
1073
  }
1935
- const DropdownMenu = DropdownMenuPrimitive__namespace.Root;
1936
- const DropdownMenuTrigger = DropdownMenuPrimitive__namespace.Trigger;
1937
- const DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
1938
- const DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
1939
- const DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
1940
- const CONTAINER_CLASSES = [
1941
- "relative z-50 min-w-[180px] overflow-hidden",
1942
- "flex flex-col gap-px",
1943
- "rounded-[12px] bg-bg-dropdown p-pad-sm",
1944
- "border border-border-default shadow-sh-lg",
1945
- // Outline padrão de elementos flutuantes
1946
- "outline-float",
1947
- "text-fg-muted",
1948
- // Frosted-glass blur (necessário pra fazer o bg-dropdown semi-transparent render correto no dark)
1949
- "before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150",
1950
- // Animações Radix
1951
- "data-[state=open]:animate-in data-[state=closed]:animate-out",
1952
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1953
- "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
1954
- "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
1955
- "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1956
- "origin-[--radix-dropdown-menu-content-transform-origin]"
1957
- ].join(" ");
1958
- const MOBILE_SHEET_CLASSES = [
1959
- "max-md:w-full max-md:min-w-0 max-md:max-w-none",
1960
- "max-md:!max-h-[92vh]",
1961
- "max-md:rounded-b-none max-md:rounded-t-[12px]",
1962
- "max-md:border-x-0 max-md:border-b-0",
1963
- "max-md:outline-none max-md:shadow-none",
1964
- "max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100",
1965
- "max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12"
1966
- ].join(" ");
1967
- const ITEM_BASE = [
1968
- "relative flex cursor-default select-none items-center",
1969
- "gap-pad-lg px-pad-lg py-pad-md rounded-radius-sm",
1970
- "text-body-sm font-medium",
1971
- "outline-none transition-colors",
1972
- "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1973
- "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0"
1974
- ].join(" ");
1975
- const ITEM_VARIANT_DEFAULT = [
1976
- "text-fg-muted [&_svg]:text-fg-muted",
1977
- "focus:bg-bg-muted focus:text-fg-default focus:[&_svg]:text-fg-default"
1978
- ].join(" ");
1979
- const ITEM_VARIANT_DESTRUCTIVE = [
1980
- "text-fg-danger [&_svg]:text-fg-danger",
1981
- "focus:bg-bg-danger-muted focus:text-fg-danger focus:[&_svg]:text-fg-danger"
1982
- ].join(" ");
1983
- const DropdownMenuSubTrigger = React__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1984
- DropdownMenuPrimitive__namespace.SubTrigger,
1985
- {
1986
- ref,
1987
- className: cn(
1988
- ITEM_BASE,
1989
- ITEM_VARIANT_DEFAULT,
1990
- "data-[state=open]:bg-bg-muted data-[state=open]:text-fg-default",
1991
- inset && "pl-8",
1992
- className
1993
- ),
1994
- ...props,
1995
- children: [
1996
- children,
1997
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto" })
1998
- ]
1999
- }
2000
- ));
2001
- DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
2002
- const DropdownMenuSubContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2003
- DropdownMenuPrimitive__namespace.SubContent,
2004
- {
2005
- ref,
2006
- className: cn(CONTAINER_CLASSES, className),
2007
- ...props
2008
- }
2009
- ));
2010
- DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
2011
- const DropdownMenuContent = React__namespace.forwardRef(({ className, sideOffset = 8, mobileSheet = true, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2012
- mobileSheet && /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
2013
- "div",
2014
- {
2015
- "aria-hidden": "true",
2016
- className: "fixed inset-0 z-[55] bg-overlay-scrim pointer-events-none md:hidden animate-in fade-in-0 duration-150"
2017
- }
2018
- ) }),
2019
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
2020
- DropdownMenuPrimitive__namespace.Content,
2021
- {
2022
- ref,
2023
- sideOffset,
2024
- "data-mobile-sheet": mobileSheet ? "" : void 0,
2025
- className: cn(
2026
- CONTAINER_CLASSES,
2027
- "max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto overflow-x-hidden",
2028
- mobileSheet && MOBILE_SHEET_CLASSES,
2029
- className
2030
- ),
2031
- ...props
2032
- }
2033
- ) })
2034
- ] }));
2035
- DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
2036
- const DropdownMenuItem = React__namespace.forwardRef(({ className, inset, variant = "default", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2037
- DropdownMenuPrimitive__namespace.Item,
2038
- {
2039
- ref,
2040
- className: cn(
2041
- ITEM_BASE,
2042
- variant === "destructive" ? ITEM_VARIANT_DESTRUCTIVE : ITEM_VARIANT_DEFAULT,
2043
- inset && "pl-8",
2044
- className
2045
- ),
2046
- ...props
2047
- }
2048
- ));
2049
- DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
2050
- const DropdownMenuCheckboxItem = React__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
2051
- DropdownMenuPrimitive__namespace.CheckboxItem,
2052
- {
2053
- ref,
2054
- className: cn(
2055
- ITEM_BASE,
2056
- ITEM_VARIANT_DEFAULT,
2057
- "pl-8 pr-pad-lg",
2058
- className
2059
- ),
2060
- checked,
2061
- ...props,
2062
- children: [
2063
- /* @__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" }) }) }),
2064
- children
2065
- ]
2066
- }
2067
- ));
2068
- DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive__namespace.CheckboxItem.displayName;
2069
- const DropdownMenuRadioItem = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
2070
- DropdownMenuPrimitive__namespace.RadioItem,
2071
- {
2072
- ref,
2073
- className: cn(
2074
- ITEM_BASE,
2075
- ITEM_VARIANT_DEFAULT,
2076
- "pl-8 pr-pad-lg",
2077
- // Selected state — brand tint (mantém no focus pra não voltar pra muted)
2078
- "data-[state=checked]:bg-bg-brand-subtle data-[state=checked]:text-fg-brand",
2079
- "data-[state=checked]:[&_svg]:text-fg-brand",
2080
- "data-[state=checked]:focus:bg-bg-brand-subtle data-[state=checked]:focus:text-fg-brand",
2081
- className
2082
- ),
2083
- ...props,
2084
- children: [
2085
- /* @__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" }) }) }),
2086
- children
2087
- ]
2088
- }
2089
- ));
2090
- DropdownMenuRadioItem.displayName = DropdownMenuPrimitive__namespace.RadioItem.displayName;
2091
- const DropdownMenuLabel = React__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2092
- DropdownMenuPrimitive__namespace.Label,
2093
- {
2094
- ref,
2095
- className: cn(
2096
- "px-pad-lg py-pad-sm text-caption-sm font-semibold uppercase tracking-wider text-fg-subtle",
2097
- inset && "pl-8",
2098
- className
2099
- ),
2100
- ...props
2101
- }
2102
- ));
2103
- DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
2104
- const DropdownMenuSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2105
- DropdownMenuPrimitive__namespace.Separator,
2106
- {
2107
- ref,
2108
- className: cn("mx-pad-xs my-pad-xs h-px bg-border-default", className),
2109
- ...props
2110
- }
2111
- ));
2112
- DropdownMenuSeparator.displayName = DropdownMenuPrimitive__namespace.Separator.displayName;
2113
1074
  const DEFAULT_OPTIONS = [
2114
1075
  { id: "light", label: "Claro", icon: lucideReact.Sun },
2115
1076
  { id: "dark", label: "Escuro", icon: lucideReact.Moon }
@@ -2122,24 +1083,24 @@ function HeaderThemeSwitcher({
2122
1083
  }) {
2123
1084
  const current = options.find((o) => o.id === theme) ?? options[0];
2124
1085
  const CurrentIcon = current?.icon ?? lucideReact.Sun;
2125
- return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { children: [
2126
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
2127
- Button,
1086
+ return /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenu, { children: [
1087
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1088
+ avatar.Button,
2128
1089
  {
2129
1090
  color: "secondary",
2130
1091
  variant: "outline",
2131
1092
  size: "icon-sm",
2132
- className: cn("rounded-radius-md", className),
1093
+ className: avatar.cn("rounded-radius-md", className),
2133
1094
  "aria-label": "Trocar tema",
2134
1095
  title: `Tema: ${current?.label ?? ""}`,
2135
1096
  children: /* @__PURE__ */ jsxRuntime.jsx(CurrentIcon, {})
2136
1097
  }
2137
1098
  ) }),
2138
- /* @__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) => {
2139
1100
  const Icon = opt.icon;
2140
1101
  const isActive = opt.id === theme;
2141
1102
  return /* @__PURE__ */ jsxRuntime.jsxs(
2142
- DropdownMenuItem,
1103
+ avatar.DropdownMenuItem,
2143
1104
  {
2144
1105
  onSelect: () => onThemeChange(opt.id),
2145
1106
  children: [
@@ -2171,14 +1132,14 @@ function Header({
2171
1132
  rightSlot,
2172
1133
  className
2173
1134
  }) {
2174
- return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: cn(headerRoot(), className), children: [
1135
+ return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: avatar.cn(headerRoot(), className), children: [
2175
1136
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: headerLeft(), children: [
2176
1137
  onCollapseMenu && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2177
1138
  /* @__PURE__ */ jsxRuntime.jsx(
2178
1139
  "button",
2179
1140
  {
2180
1141
  type: "button",
2181
- className: cn(
1142
+ className: avatar.cn(
2182
1143
  headerIconBtn({ variant: "ghost" }),
2183
1144
  "hidden md:inline-flex text-fg-muted hover:text-fg-default"
2184
1145
  ),
@@ -2192,7 +1153,7 @@ function Header({
2192
1153
  "button",
2193
1154
  {
2194
1155
  type: "button",
2195
- className: cn(
1156
+ className: avatar.cn(
2196
1157
  headerIconBtn({ variant: "ghost" }),
2197
1158
  "md:hidden text-fg-muted hover:text-fg-default"
2198
1159
  ),
@@ -2205,7 +1166,7 @@ function Header({
2205
1166
  /* @__PURE__ */ jsxRuntime.jsx(
2206
1167
  "span",
2207
1168
  {
2208
- className: cn(headerDivider(), "hidden md:block"),
1169
+ className: avatar.cn(headerDivider(), "hidden md:block"),
2209
1170
  "aria-hidden": "true"
2210
1171
  }
2211
1172
  )
@@ -2243,7 +1204,7 @@ function Header({
2243
1204
  ] })
2244
1205
  ] });
2245
1206
  }
2246
- const sidebarRoot = tv({
1207
+ const sidebarRoot = avatar.tv({
2247
1208
  base: "relative flex h-screen w-fit bg-bg-sidebar text-fg-default font-sans",
2248
1209
  variants: {
2249
1210
  mobile: {
@@ -2261,13 +1222,13 @@ const sidebarRoot = tv({
2261
1222
  { mobile: true, mobileOpen: false, class: "-translate-x-full" }
2262
1223
  ]
2263
1224
  });
2264
- tv({
1225
+ avatar.tv({
2265
1226
  base: "relative flex h-full w-fit bg-bg-sidebar text-fg-default font-sans"
2266
1227
  });
2267
- const sidebarMobileBackdrop = tv({
1228
+ const sidebarMobileBackdrop = avatar.tv({
2268
1229
  base: "fixed inset-0 z-40 bg-overlay-scrim transition-opacity duration-200"
2269
1230
  });
2270
- const sidebarMobileCloseBtn = tv({
1231
+ const sidebarMobileCloseBtn = avatar.tv({
2271
1232
  base: [
2272
1233
  "absolute top-[14px] right-[14px] z-10",
2273
1234
  "w-form-sm h-form-sm rounded-radius-md grid place-items-center",
@@ -2278,7 +1239,7 @@ const sidebarMobileCloseBtn = tv({
2278
1239
  "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary"
2279
1240
  ]
2280
1241
  });
2281
- const sidebarRail = tv({
1242
+ const sidebarRail = avatar.tv({
2282
1243
  base: [
2283
1244
  "flex flex-col items-center w-[64px] flex-none",
2284
1245
  "h-full sticky top-0 z-30",
@@ -2286,17 +1247,17 @@ const sidebarRail = tv({
2286
1247
  "bg-bg-sidebar border-r border-border-sidebar"
2287
1248
  ]
2288
1249
  });
2289
- const sidebarRailBrand = tv({
1250
+ const sidebarRailBrand = avatar.tv({
2290
1251
  base: [
2291
1252
  "w-form-lg h-form-lg rounded-radius-xl grid place-items-center",
2292
1253
  "bg-bg-brand text-fg-on-brand mb-pad-sm",
2293
1254
  "transition-opacity hover:opacity-90"
2294
1255
  ]
2295
1256
  });
2296
- const sidebarRailList = tv({
1257
+ const sidebarRailList = avatar.tv({
2297
1258
  base: "flex flex-col items-center gap-gp-sm flex-1"
2298
1259
  });
2299
- const sidebarRailItem = tv({
1260
+ const sidebarRailItem = avatar.tv({
2300
1261
  base: [
2301
1262
  "group/rail-item relative w-form-lg h-form-lg rounded-radius-xl grid place-items-center",
2302
1263
  "bg-transparent border-0 cursor-pointer",
@@ -2313,13 +1274,13 @@ const sidebarRailItem = tv({
2313
1274
  }
2314
1275
  }
2315
1276
  });
2316
- const sidebarRailActiveBar = tv({
1277
+ const sidebarRailActiveBar = avatar.tv({
2317
1278
  base: [
2318
1279
  "absolute -left-pad-2xl top-pad-md bottom-pad-md w-[3px]",
2319
1280
  "rounded-r-radius-sm bg-bg-brand"
2320
1281
  ]
2321
1282
  });
2322
- const sidebarRailTooltip = tv({
1283
+ const sidebarRailTooltip = avatar.tv({
2323
1284
  base: [
2324
1285
  "pointer-events-none absolute left-full ml-[14px] top-1/2 -translate-y-1/2",
2325
1286
  "px-pad-md py-[5px] rounded-radius-sm",
@@ -2330,7 +1291,7 @@ const sidebarRailTooltip = tv({
2330
1291
  "shadow-sh-md"
2331
1292
  ]
2332
1293
  });
2333
- const sidebarRailAdd = tv({
1294
+ const sidebarRailAdd = avatar.tv({
2334
1295
  base: [
2335
1296
  "w-form-lg h-form-lg rounded-radius-xl grid place-items-center",
2336
1297
  "text-fg-muted bg-transparent border-0 cursor-pointer mt-pad-xs opacity-70",
@@ -2339,17 +1300,17 @@ const sidebarRailAdd = tv({
2339
1300
  "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary"
2340
1301
  ]
2341
1302
  });
2342
- const sidebarRailUser = tv({
1303
+ const sidebarRailUser = avatar.tv({
2343
1304
  base: "mt-auto"
2344
1305
  });
2345
- const sidebarRailUserDefault = tv({
1306
+ const sidebarRailUserDefault = avatar.tv({
2346
1307
  base: [
2347
1308
  "grid place-items-center size-comp-lg rounded-full",
2348
1309
  // tracking-[0.02em] preserva tracking original (preset usa +0.06em)
2349
1310
  "bg-bg-brand text-fg-on-brand font-bold text-caption-sm uppercase tracking-[0.02em]"
2350
1311
  ]
2351
1312
  });
2352
- const sidebarPanel = tv({
1313
+ const sidebarPanel = avatar.tv({
2353
1314
  base: [
2354
1315
  "w-[264px] flex-none h-full sticky top-0 flex flex-col overflow-hidden",
2355
1316
  "bg-bg-sidebar border-r border-border-sidebar",
@@ -2369,10 +1330,10 @@ const sidebarPanel = tv({
2369
1330
  }
2370
1331
  }
2371
1332
  });
2372
- const sidebarPanelHeader = tv({
1333
+ const sidebarPanelHeader = avatar.tv({
2373
1334
  base: "flex items-center h-[60px] flex-none px-[14px] border-b border-border-sidebar"
2374
1335
  });
2375
- const sidebarPanelTitle = tv({
1336
+ const sidebarPanelTitle = avatar.tv({
2376
1337
  base: [
2377
1338
  "flex-1 min-w-0 inline-flex items-center gap-gp-sm",
2378
1339
  "py-pad-sm px-pad-md rounded-radius-md",
@@ -2382,13 +1343,13 @@ const sidebarPanelTitle = tv({
2382
1343
  "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary"
2383
1344
  ]
2384
1345
  });
2385
- const sidebarPanelBody = tv({
1346
+ const sidebarPanelBody = avatar.tv({
2386
1347
  base: "flex-1 overflow-y-auto p-[14px] scrollbar-thin"
2387
1348
  });
2388
- const sidebarPanelGroup = tv({
1349
+ const sidebarPanelGroup = avatar.tv({
2389
1350
  base: "flex flex-col gap-px"
2390
1351
  });
2391
- const sidebarItem = tv({
1352
+ const sidebarItem = avatar.tv({
2392
1353
  base: [
2393
1354
  "flex items-center gap-[11px] h-form-lg w-full px-pad-xl rounded-radius-md",
2394
1355
  "text-fg-default text-body-sm font-medium text-left no-underline cursor-pointer",
@@ -2420,7 +1381,7 @@ const sidebarItem = tv({
2420
1381
  }
2421
1382
  ]
2422
1383
  });
2423
- const sidebarItemIcon = tv({
1384
+ const sidebarItemIcon = avatar.tv({
2424
1385
  base: "flex-none w-[17px] h-[17px] text-fg-muted transition-colors",
2425
1386
  variants: {
2426
1387
  active: {
@@ -2431,10 +1392,10 @@ const sidebarItemIcon = tv({
2431
1392
  }
2432
1393
  }
2433
1394
  });
2434
- const sidebarItemText = tv({
1395
+ const sidebarItemText = avatar.tv({
2435
1396
  base: "flex-1 min-w-0 whitespace-nowrap overflow-hidden text-ellipsis"
2436
1397
  });
2437
- const sidebarPill = tv({
1398
+ const sidebarPill = avatar.tv({
2438
1399
  base: [
2439
1400
  "inline-flex items-center justify-center flex-none",
2440
1401
  "min-w-[22px] h-[22px] px-[7px] rounded-radius-sm",
@@ -2455,10 +1416,10 @@ const sidebarPill = tv({
2455
1416
  },
2456
1417
  defaultVariants: { kind: "default" }
2457
1418
  });
2458
- const sidebarSubgroupRoot = tv({
1419
+ const sidebarSubgroupRoot = avatar.tv({
2459
1420
  base: "flex flex-col gap-px"
2460
1421
  });
2461
- const sidebarSubgroupChev = tv({
1422
+ const sidebarSubgroupChev = avatar.tv({
2462
1423
  base: "flex-none w-[13px] h-[13px] text-fg-muted ml-auto transition-transform duration-200",
2463
1424
  variants: {
2464
1425
  collapsed: {
@@ -2466,7 +1427,7 @@ const sidebarSubgroupChev = tv({
2466
1427
  }
2467
1428
  }
2468
1429
  });
2469
- const sidebarSubgroupList = tv({
1430
+ const sidebarSubgroupList = avatar.tv({
2470
1431
  base: [
2471
1432
  "flex flex-col gap-px overflow-hidden",
2472
1433
  "ml-pad-xl pl-[14px] py-pad-2xs",
@@ -2481,10 +1442,10 @@ const sidebarSubgroupList = tv({
2481
1442
  },
2482
1443
  defaultVariants: { collapsed: false }
2483
1444
  });
2484
- const sidebarSection = tv({
1445
+ const sidebarSection = avatar.tv({
2485
1446
  base: "flex flex-col gap-px pt-[18px] mt-pad-xl border-t border-border-sidebar"
2486
1447
  });
2487
- const sidebarSectionHeader = tv({
1448
+ const sidebarSectionHeader = avatar.tv({
2488
1449
  base: [
2489
1450
  "flex items-center gap-gp-sm px-pad-lg pt-pad-sm pb-pad-md",
2490
1451
  "bg-transparent border-0 text-left cursor-pointer select-none w-full",
@@ -2495,7 +1456,7 @@ const sidebarSectionHeader = tv({
2495
1456
  "dark:text-fg-muted dark:font-medium dark:opacity-70"
2496
1457
  ]
2497
1458
  });
2498
- const sidebarSectionChev = tv({
1459
+ const sidebarSectionChev = avatar.tv({
2499
1460
  base: "flex-none w-[12px] h-[12px] transition-transform duration-200",
2500
1461
  variants: {
2501
1462
  collapsed: {
@@ -2503,7 +1464,7 @@ const sidebarSectionChev = tv({
2503
1464
  }
2504
1465
  }
2505
1466
  });
2506
- const sidebarSectionAdd = tv({
1467
+ const sidebarSectionAdd = avatar.tv({
2507
1468
  base: [
2508
1469
  "ml-auto w-[18px] h-[18px] grid place-items-center rounded-radius-xs",
2509
1470
  "text-fg-muted bg-transparent border-0 cursor-pointer text-body-md leading-none",
@@ -2511,7 +1472,7 @@ const sidebarSectionAdd = tv({
2511
1472
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring-secondary"
2512
1473
  ]
2513
1474
  });
2514
- const sidebarSectionList = tv({
1475
+ const sidebarSectionList = avatar.tv({
2515
1476
  base: "flex flex-col gap-px overflow-hidden transition-[max-height,opacity] duration-200 ease-out",
2516
1477
  variants: {
2517
1478
  collapsed: {
@@ -2525,7 +1486,7 @@ const sidebarSectionList = tv({
2525
1486
  },
2526
1487
  defaultVariants: { collapsed: false, variant: "bookmark" }
2527
1488
  });
2528
- const sidebarSectionItem = tv({
1489
+ const sidebarSectionItem = avatar.tv({
2529
1490
  base: [
2530
1491
  "flex items-center gap-[11px] h-form-sm w-full px-pad-lg rounded-radius-md",
2531
1492
  "text-body-xs font-medium text-fg-muted no-underline cursor-pointer",
@@ -2535,10 +1496,10 @@ const sidebarSectionItem = tv({
2535
1496
  "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary"
2536
1497
  ]
2537
1498
  });
2538
- const sidebarBookmarkDot = tv({
1499
+ const sidebarBookmarkDot = avatar.tv({
2539
1500
  base: "flex-none w-[10px] h-[10px] rounded-full"
2540
1501
  });
2541
- const sidebarBookmarkIcon = tv({
1502
+ const sidebarBookmarkIcon = avatar.tv({
2542
1503
  base: [
2543
1504
  // mesmo footprint do dot/avatar → alinhamento consistente; ícone herda a
2544
1505
  // cor via `color` inline (currentColor), sem caixa de fundo
@@ -2547,14 +1508,14 @@ const sidebarBookmarkIcon = tv({
2547
1508
  "[&>svg]:size-icon-xs"
2548
1509
  ]
2549
1510
  });
2550
- const sidebarChatAvatar = tv({
1511
+ const sidebarChatAvatar = avatar.tv({
2551
1512
  base: [
2552
1513
  "flex-none grid place-items-center w-icon-lg h-icon-lg rounded-full",
2553
1514
  // tracking-[0.02em] preserva o tracking original (preset usa +0.06em); leading-none mantém centralização vertical
2554
1515
  "text-white text-caption-xs font-bold uppercase tracking-[0.02em] leading-none"
2555
1516
  ]
2556
1517
  });
2557
- const sidebarChatStatus = tv({
1518
+ const sidebarChatStatus = avatar.tv({
2558
1519
  base: "flex-none w-[7px] h-[7px] rounded-full ml-auto",
2559
1520
  variants: {
2560
1521
  status: {
@@ -2607,7 +1568,7 @@ function SidebarRail({
2607
1568
  onAddClick,
2608
1569
  className
2609
1570
  }) {
2610
- return /* @__PURE__ */ jsxRuntime.jsxs("aside", { className: cn(sidebarRail(), className), children: [
1571
+ return /* @__PURE__ */ jsxRuntime.jsxs("aside", { className: avatar.cn(sidebarRail(), className), children: [
2611
1572
  /* @__PURE__ */ jsxRuntime.jsx("a", { href: "/", className: sidebarRailBrand(), "aria-label": "Home", children: brand ?? /* @__PURE__ */ jsxRuntime.jsx(SidebarBrandIcon, {}) }),
2612
1573
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: sidebarRailList(), children: [
2613
1574
  contexts.map((ctx) => {
@@ -2647,7 +1608,7 @@ function SidebarRail({
2647
1608
  const SidebarItem = React.forwardRef(
2648
1609
  ({ item, active, subitem, iconBrand, onClick, className }, ref) => {
2649
1610
  const Icon = item.icon;
2650
- const classes = cn(sidebarItem({ active, subitem }), className);
1611
+ const classes = avatar.cn(sidebarItem({ active, subitem }), className);
2651
1612
  const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2652
1613
  Icon && /* @__PURE__ */ jsxRuntime.jsx(
2653
1614
  Icon,
@@ -2697,7 +1658,7 @@ function SidebarPill({
2697
1658
  children,
2698
1659
  className
2699
1660
  }) {
2700
- 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 });
2701
1662
  }
2702
1663
  function SidebarSubgroup({
2703
1664
  item,
@@ -2721,12 +1682,12 @@ function SidebarSubgroup({
2721
1682
  onOpenChange?.(next);
2722
1683
  };
2723
1684
  const Icon = item.icon;
2724
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(sidebarSubgroupRoot(), className), children: [
1685
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: avatar.cn(sidebarSubgroupRoot(), className), children: [
2725
1686
  /* @__PURE__ */ jsxRuntime.jsxs(
2726
1687
  "button",
2727
1688
  {
2728
1689
  type: "button",
2729
- className: cn(sidebarItem(), "select-none"),
1690
+ className: avatar.cn(sidebarItem(), "select-none"),
2730
1691
  onClick: () => setOpen(!isOpen),
2731
1692
  "aria-expanded": isOpen,
2732
1693
  "aria-controls": `subgroup-${item.name}`,
@@ -2776,7 +1737,7 @@ function SidebarSection({
2776
1737
  if (open === void 0) setInternalOpen(next);
2777
1738
  onOpenChange?.(next);
2778
1739
  };
2779
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(sidebarSection(), className), children: [
1740
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: avatar.cn(sidebarSection(), className), children: [
2780
1741
  /* @__PURE__ */ jsxRuntime.jsxs(
2781
1742
  "button",
2782
1743
  {
@@ -2925,11 +1886,11 @@ function SidebarPanel({
2925
1886
  return /* @__PURE__ */ jsxRuntime.jsxs(
2926
1887
  "aside",
2927
1888
  {
2928
- className: cn(sidebarPanel({ collapsed, floating, mobile }), className),
1889
+ className: avatar.cn(sidebarPanel({ collapsed, floating, mobile }), className),
2929
1890
  "aria-hidden": collapsed,
2930
1891
  children: [
2931
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: sidebarPanelHeader(), children: hasSwitcher ? /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { children: [
2932
- /* @__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: [
2933
1894
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 min-w-0 whitespace-nowrap overflow-hidden text-ellipsis", children: context.label }),
2934
1895
  /* @__PURE__ */ jsxRuntime.jsx(
2935
1896
  lucideReact.ChevronDown,
@@ -2940,11 +1901,11 @@ function SidebarPanel({
2940
1901
  }
2941
1902
  )
2942
1903
  ] }) }),
2943
- /* @__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) => {
2944
1905
  const Icon = ctx.icon;
2945
1906
  const isActive = ctx.id === context.id;
2946
1907
  return /* @__PURE__ */ jsxRuntime.jsxs(
2947
- DropdownMenuItem,
1908
+ avatar.DropdownMenuItem,
2948
1909
  {
2949
1910
  onSelect: () => onContextChange?.(ctx.id),
2950
1911
  children: [
@@ -3098,7 +2059,7 @@ function MenuSidebar({
3098
2059
  /* @__PURE__ */ jsxRuntime.jsxs(
3099
2060
  "div",
3100
2061
  {
3101
- className: cn(
2062
+ className: avatar.cn(
3102
2063
  sidebarRoot({ mobile: isMobile, mobileOpen: isMobile && openMobile }),
3103
2064
  className
3104
2065
  ),
@@ -3165,39 +2126,6 @@ function MenuSidebar({
3165
2126
  )
3166
2127
  ] });
3167
2128
  }
3168
- const Avatar = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3169
- AvatarPrimitive__namespace.Root,
3170
- {
3171
- ref,
3172
- className: cn(
3173
- "relative flex size-8 shrink-0 overflow-hidden rounded-full",
3174
- className
3175
- ),
3176
- ...props
3177
- }
3178
- ));
3179
- Avatar.displayName = AvatarPrimitive__namespace.Root.displayName;
3180
- const AvatarImage = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3181
- AvatarPrimitive__namespace.Image,
3182
- {
3183
- ref,
3184
- className: cn("aspect-square h-full w-full", className),
3185
- ...props
3186
- }
3187
- ));
3188
- AvatarImage.displayName = AvatarPrimitive__namespace.Image.displayName;
3189
- const AvatarFallback = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3190
- AvatarPrimitive__namespace.Fallback,
3191
- {
3192
- ref,
3193
- className: cn(
3194
- "flex h-full w-full items-center justify-center rounded-full bg-bg-muted text-fg-muted text-body-sm font-normal",
3195
- className
3196
- ),
3197
- ...props
3198
- }
3199
- ));
3200
- AvatarFallback.displayName = AvatarPrimitive__namespace.Fallback.displayName;
3201
2129
  function deriveInitials(name) {
3202
2130
  return name.split(" ").filter(Boolean).map((p) => p[0]).join("").slice(0, 2).toUpperCase();
3203
2131
  }
@@ -3224,8 +2152,8 @@ function UserMenu({
3224
2152
  // abertura → o menu abre no pointerdown e fecha no click/pointerup do mesmo
3225
2153
  // toque ("aparece e some", precisa 2-3 toques). Sem modal, o dismiss por
3226
2154
  // toque-fora continua via DismissableLayer, sem a corrida.
3227
- /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { modal: false, children: [
3228
- /* @__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(
3229
2157
  "button",
3230
2158
  {
3231
2159
  type: "button",
@@ -3239,14 +2167,14 @@ function UserMenu({
3239
2167
  "data-[state=open]:ring-4 data-[state=open]:ring-ring-secondary"
3240
2168
  ].join(" "),
3241
2169
  style: user.avatarColor ? { background: user.avatarColor } : void 0,
3242
- children: user.avatarSrc ? /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-comp-lg", children: [
3243
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: user.avatarSrc, alt: user.name }),
3244
- /* @__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 })
3245
2173
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, children: initials })
3246
2174
  }
3247
2175
  ) }),
3248
2176
  /* @__PURE__ */ jsxRuntime.jsxs(
3249
- DropdownMenuContent,
2177
+ avatar.DropdownMenuContent,
3250
2178
  {
3251
2179
  side: "right",
3252
2180
  align: "end",
@@ -3255,13 +2183,13 @@ function UserMenu({
3255
2183
  children: [
3256
2184
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-gp-md px-pad-lg py-pad-md", children: [
3257
2185
  /* @__PURE__ */ jsxRuntime.jsxs(
3258
- Avatar,
2186
+ avatar.Avatar,
3259
2187
  {
3260
2188
  className: "size-comp-lg shrink-0",
3261
2189
  style: user.avatarColor ? { background: user.avatarColor } : void 0,
3262
2190
  children: [
3263
- user.avatarSrc && /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: user.avatarSrc, alt: user.name }),
3264
- /* @__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 })
3265
2193
  ]
3266
2194
  }
3267
2195
  ),
@@ -3270,21 +2198,21 @@ function UserMenu({
3270
2198
  user.email && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-caption-sm text-fg-muted truncate", children: user.email })
3271
2199
  ] })
3272
2200
  ] }),
3273
- hasGroups && /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
3274
- hasLayout && /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSub, { children: [
3275
- /* @__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: [
3276
2204
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LayoutGrid, {}),
3277
2205
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Layout" }),
3278
2206
  currentLayoutLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 text-right text-caption-sm text-fg-subtle", children: currentLayoutLabel })
3279
2207
  ] }),
3280
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
3281
- DropdownMenuRadioGroup,
2208
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
2209
+ avatar.DropdownMenuRadioGroup,
3282
2210
  {
3283
2211
  value: layout,
3284
2212
  onValueChange: onLayoutChange,
3285
2213
  children: layoutOptions.map((opt) => {
3286
2214
  const Icon = opt.icon;
3287
- return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuRadioItem, { value: opt.id, children: [
2215
+ return /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuRadioItem, { value: opt.id, children: [
3288
2216
  /* @__PURE__ */ jsxRuntime.jsx(Icon, {}),
3289
2217
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: opt.label })
3290
2218
  ] }, opt.id);
@@ -3292,20 +2220,20 @@ function UserMenu({
3292
2220
  }
3293
2221
  ) })
3294
2222
  ] }),
3295
- hasTheme && /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSub, { children: [
3296
- /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { children: [
2223
+ hasTheme && /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuSub, { children: [
2224
+ /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuSubTrigger, { children: [
3297
2225
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SunMoon, {}),
3298
2226
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Tema" }),
3299
2227
  currentThemeLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 text-right text-caption-sm text-fg-subtle", children: currentThemeLabel })
3300
2228
  ] }),
3301
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
3302
- DropdownMenuRadioGroup,
2229
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
2230
+ avatar.DropdownMenuRadioGroup,
3303
2231
  {
3304
2232
  value: theme,
3305
2233
  onValueChange: onThemeChange,
3306
2234
  children: themeOptions.map((opt) => {
3307
2235
  const Icon = opt.icon;
3308
- return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuRadioItem, { value: opt.id, children: [
2236
+ return /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuRadioItem, { value: opt.id, children: [
3309
2237
  /* @__PURE__ */ jsxRuntime.jsx(Icon, {}),
3310
2238
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: opt.label })
3311
2239
  ] }, opt.id);
@@ -3313,13 +2241,13 @@ function UserMenu({
3313
2241
  }
3314
2242
  ) })
3315
2243
  ] }),
3316
- onSettings && /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuItem, { onSelect: onSettings, children: [
2244
+ onSettings && /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuItem, { onSelect: onSettings, children: [
3317
2245
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, {}),
3318
2246
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Configurações" })
3319
2247
  ] }),
3320
2248
  onLogout && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3321
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
3322
- /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuItem, { onSelect: onLogout, children: [
2249
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.DropdownMenuSeparator, {}),
2250
+ /* @__PURE__ */ jsxRuntime.jsxs(avatar.DropdownMenuItem, { onSelect: onLogout, children: [
3323
2251
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LogOut, {}),
3324
2252
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Sair" })
3325
2253
  ] })
@@ -3330,26 +2258,26 @@ function UserMenu({
3330
2258
  ] })
3331
2259
  );
3332
2260
  }
3333
- const root = tv({
2261
+ const root = avatar.tv({
3334
2262
  base: [
3335
2263
  "flex h-screen w-full bg-bg-canvas",
3336
2264
  "overflow-hidden"
3337
2265
  // garante que sidebar + main não vazem viewport
3338
2266
  ]
3339
2267
  });
3340
- const main = tv({
2268
+ const main = avatar.tv({
3341
2269
  base: [
3342
2270
  "flex flex-col flex-1 min-w-0",
3343
2271
  "overflow-hidden"
3344
2272
  ]
3345
2273
  });
3346
- const body = tv({
2274
+ const body = avatar.tv({
3347
2275
  base: [
3348
2276
  "flex flex-col flex-1 min-h-0",
3349
2277
  "overflow-auto scrollbar-thin"
3350
2278
  ]
3351
2279
  });
3352
- const bodyInner = tv({
2280
+ const bodyInner = avatar.tv({
3353
2281
  base: [
3354
2282
  "flex flex-col flex-1 min-h-0 w-full mx-auto",
3355
2283
  "gap-gp-4xl p-pad-6xl max-2xl:p-pad-4xl"
@@ -3446,7 +2374,7 @@ function AppShell({
3446
2374
  onLogout
3447
2375
  }
3448
2376
  ) : void 0;
3449
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(root(), className), children: [
2377
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: avatar.cn(root(), className), children: [
3450
2378
  /* @__PURE__ */ jsxRuntime.jsx(
3451
2379
  MenuSidebar,
3452
2380
  {
@@ -3486,7 +2414,7 @@ function AppShell({
3486
2414
  rightSlot: headerRightSlot
3487
2415
  }
3488
2416
  ),
3489
- /* @__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(
3490
2418
  "div",
3491
2419
  {
3492
2420
  className: bodyInner({
@@ -3562,52 +2490,16 @@ function useTheme() {
3562
2490
  return { theme, setTheme, isDark, toggle };
3563
2491
  }
3564
2492
  exports.AppShell = AppShell;
3565
- exports.Avatar = Avatar;
3566
- exports.AvatarFallback = AvatarFallback;
3567
- exports.Button = Button;
3568
2493
  exports.Chip = Chip;
3569
2494
  exports.ChipGroup = ChipGroup;
3570
2495
  exports.ChipGroupItem = ChipGroupItem;
3571
- exports.Command = Command;
3572
- exports.CommandDialog = CommandDialog;
3573
- exports.CommandEmpty = CommandEmpty;
3574
- exports.CommandGroup = CommandGroup;
3575
- exports.CommandInput = CommandInput;
3576
- exports.CommandItem = CommandItem;
3577
- exports.CommandList = CommandList;
3578
- exports.Dialog = Dialog;
3579
- exports.DialogClose = DialogClose;
3580
- exports.DialogContent = DialogContent;
3581
- exports.DialogDescription = DialogDescription;
3582
- exports.DialogTitle = DialogTitle;
3583
- exports.DialogTrigger = DialogTrigger;
3584
- exports.DropdownMenu = DropdownMenu;
3585
- exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
3586
- exports.DropdownMenuContent = DropdownMenuContent;
3587
- exports.DropdownMenuGroup = DropdownMenuGroup;
3588
- exports.DropdownMenuItem = DropdownMenuItem;
3589
- exports.DropdownMenuLabel = DropdownMenuLabel;
3590
- exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
3591
- exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
3592
- exports.DropdownMenuSeparator = DropdownMenuSeparator;
3593
- exports.DropdownMenuTrigger = DropdownMenuTrigger;
3594
2496
  exports.Header = Header;
3595
2497
  exports.HeaderBreadcrumb = HeaderBreadcrumb;
3596
2498
  exports.HeaderMessages = HeaderMessages;
3597
2499
  exports.HeaderNotifications = HeaderNotifications;
3598
2500
  exports.HeaderSearch = HeaderSearch;
3599
2501
  exports.HeaderThemeSwitcher = HeaderThemeSwitcher;
3600
- exports.InputGroup = InputGroup;
3601
- exports.InputGroupAddon = InputGroupAddon;
3602
- exports.InputGroupButton = InputGroupButton;
3603
- exports.InputGroupInput = InputGroupInput;
3604
- exports.InputGroupText = InputGroupText;
3605
- exports.InputGroupTextarea = InputGroupTextarea;
3606
2502
  exports.MenuSidebar = MenuSidebar;
3607
- exports.Popover = Popover;
3608
- exports.PopoverAnchor = PopoverAnchor;
3609
- exports.PopoverContent = PopoverContent;
3610
- exports.PopoverTrigger = PopoverTrigger;
3611
2503
  exports.SidebarBrandIcon = SidebarBrandIcon;
3612
2504
  exports.SidebarItem = SidebarItem;
3613
2505
  exports.SidebarPanel = SidebarPanel;
@@ -3616,13 +2508,9 @@ exports.SidebarRail = SidebarRail;
3616
2508
  exports.SidebarSection = SidebarSection;
3617
2509
  exports.SidebarSubgroup = SidebarSubgroup;
3618
2510
  exports.UserMenu = UserMenu;
3619
- exports.buttonVariants = buttonVariants;
3620
2511
  exports.chipCount = chipCount;
3621
2512
  exports.chipVariants = chipVariants;
3622
- exports.cn = cn;
3623
- exports.inputGroupVariants = inputGroupVariants;
3624
- exports.tv = tv;
3625
2513
  exports.useControllable = useControllable;
3626
2514
  exports.useMediaQuery = useMediaQuery;
3627
2515
  exports.useTheme = useTheme;
3628
- //# sourceMappingURL=useTheme-D4alxxGV.cjs.map
2516
+ //# sourceMappingURL=useTheme-DQ7FaHdv.cjs.map