@snksergio/design-system 0.1.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 (73) hide show
  1. package/README.md +260 -0
  2. package/dist-lib/chunks/app-shell-BNTvOETJ.mjs +2681 -0
  3. package/dist-lib/chunks/app-shell-BNTvOETJ.mjs.map +1 -0
  4. package/dist-lib/chunks/app-shell-CDy42aNI.mjs +2663 -0
  5. package/dist-lib/chunks/app-shell-CDy42aNI.mjs.map +1 -0
  6. package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs +208 -0
  7. package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs.map +1 -0
  8. package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs +207 -0
  9. package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs.map +1 -0
  10. package/dist-lib/chunks/badge-B_2Zt52o.mjs +797 -0
  11. package/dist-lib/chunks/badge-B_2Zt52o.mjs.map +1 -0
  12. package/dist-lib/chunks/badge-DKpXURa1.mjs +813 -0
  13. package/dist-lib/chunks/badge-DKpXURa1.mjs.map +1 -0
  14. package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs +192 -0
  15. package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs.map +1 -0
  16. package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs +193 -0
  17. package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs.map +1 -0
  18. package/dist-lib/chunks/chip-group-CsKBBHW2.mjs +796 -0
  19. package/dist-lib/chunks/chip-group-CsKBBHW2.mjs.map +1 -0
  20. package/dist-lib/chunks/chip-group-D3D0i72q.mjs +780 -0
  21. package/dist-lib/chunks/chip-group-D3D0i72q.mjs.map +1 -0
  22. package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs +185 -0
  23. package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs.map +1 -0
  24. package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs +169 -0
  25. package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs.map +1 -0
  26. package/dist-lib/chunks/input-374MpdBL.mjs +72 -0
  27. package/dist-lib/chunks/input-374MpdBL.mjs.map +1 -0
  28. package/dist-lib/chunks/input-DF4XAWmr.mjs +56 -0
  29. package/dist-lib/chunks/input-DF4XAWmr.mjs.map +1 -0
  30. package/dist-lib/chunks/page-header-Dw-3wqAG.mjs +75 -0
  31. package/dist-lib/chunks/page-header-Dw-3wqAG.mjs.map +1 -0
  32. package/dist-lib/chunks/page-header-mC1gGtOI.mjs +76 -0
  33. package/dist-lib/chunks/page-header-mC1gGtOI.mjs.map +1 -0
  34. package/dist-lib/chunks/panel-Ds15whqp.mjs +9717 -0
  35. package/dist-lib/chunks/panel-Ds15whqp.mjs.map +1 -0
  36. package/dist-lib/chunks/panel-bzNmFlEZ.mjs +9737 -0
  37. package/dist-lib/chunks/panel-bzNmFlEZ.mjs.map +1 -0
  38. package/dist-lib/chunks/useTheme-BUPLZBMs.mjs +66 -0
  39. package/dist-lib/chunks/useTheme-BUPLZBMs.mjs.map +1 -0
  40. package/dist-lib/chunks/useTheme-Dee4mo-A.mjs +65 -0
  41. package/dist-lib/chunks/useTheme-Dee4mo-A.mjs.map +1 -0
  42. package/dist-lib/index.cjs +1207 -0
  43. package/dist-lib/index.cjs.map +1 -0
  44. package/dist-lib/index.d.ts +2 -0
  45. package/dist-lib/index.mjs +1209 -0
  46. package/dist-lib/index.mjs.map +1 -0
  47. package/dist-lib/preview/chat.cjs +1120 -0
  48. package/dist-lib/preview/chat.cjs.map +1 -0
  49. package/dist-lib/preview/chat.d.ts +6 -0
  50. package/dist-lib/preview/chat.mjs +1120 -0
  51. package/dist-lib/preview/chat.mjs.map +1 -0
  52. package/dist-lib/preview/clientes.cjs +897 -0
  53. package/dist-lib/preview/clientes.cjs.map +1 -0
  54. package/dist-lib/preview/clientes.d.ts +6 -0
  55. package/dist-lib/preview/clientes.mjs +897 -0
  56. package/dist-lib/preview/clientes.mjs.map +1 -0
  57. package/dist-lib/preview/dashboard.cjs +733 -0
  58. package/dist-lib/preview/dashboard.cjs.map +1 -0
  59. package/dist-lib/preview/dashboard.d.ts +4 -0
  60. package/dist-lib/preview/dashboard.mjs +733 -0
  61. package/dist-lib/preview/dashboard.mjs.map +1 -0
  62. package/dist-lib/preview/mocks.cjs +15 -0
  63. package/dist-lib/preview/mocks.cjs.map +1 -0
  64. package/dist-lib/preview/mocks.d.ts +2 -0
  65. package/dist-lib/preview/mocks.mjs +15 -0
  66. package/dist-lib/preview/mocks.mjs.map +1 -0
  67. package/dist-lib/theme.css +668 -0
  68. package/dist-lib/tokens.cjs +915 -0
  69. package/dist-lib/tokens.cjs.map +1 -0
  70. package/dist-lib/tokens.d.ts +2 -0
  71. package/dist-lib/tokens.mjs +915 -0
  72. package/dist-lib/tokens.mjs.map +1 -0
  73. package/package.json +142 -0
@@ -0,0 +1,915 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const brand = {
4
+ 600: "oklch(0.5248 0.1415 150.9)"
5
+ };
6
+ const brandContrast = {
7
+ 400: "oklch(0.7289 0.1571 162.3)"
8
+ };
9
+ const gray = {
10
+ 50: "oklch(0.973 0 0)",
11
+ 100: "oklch(0.94 0 0)",
12
+ 150: "oklch(0.931 0 0)",
13
+ 200: "oklch(0.9076 0 0)",
14
+ 300: "oklch(0.8761 0 0)",
15
+ 400: "oklch(0.7025 0 0)",
16
+ 500: "oklch(0.4997 0 0)",
17
+ 600: "oklch(0.36 0 0)",
18
+ 800: "oklch(0.2645 0 0)",
19
+ 900: "oklch(0.205 0 0)",
20
+ 950: "oklch(0.15 0 0)"
21
+ };
22
+ const danger = {
23
+ 500: "oklch(0.6368 0.2078 25.33)"
24
+ };
25
+ const success = {
26
+ 500: "oklch(0.66 0.135 161)"
27
+ };
28
+ const warning = {
29
+ 500: "oklch(0.81 0.160 81)"
30
+ };
31
+ const info = {
32
+ 500: "oklch(0.62 0.210 280)"
33
+ };
34
+ const white = "oklch(1 0 0)";
35
+ const black = "oklch(0 0 0)";
36
+ const bg$1 = {
37
+ // Surfaces (sólidos)
38
+ canvas: white,
39
+ // body, página
40
+ surface: white,
41
+ // cards, drawer
42
+ "surface-elevated": white,
43
+ // popovers, modais
44
+ "surface-panels": white,
45
+ // página de fundo
46
+ sidebar: "oklch(0.9516 0.0027 106.45)",
47
+ // mineral-100 — calidez sidebar (sem primitive equiv)
48
+ // Backgrounds neutros (sólidos cinza no light)
49
+ subtle: gray[50],
50
+ muted: gray[50],
51
+ emphasis: gray[100],
52
+ // neutro mais visível que muted (sem semântica de "active")
53
+ input: white,
54
+ accent: white,
55
+ // light: bg-accent = branco (item ativo destaca por contraste)
56
+ // Brand (derivam do brand[600])
57
+ brand: brand[600],
58
+ "brand-subtle": `color-mix(in oklch, ${brand[600]} 14%, transparent)`,
59
+ "brand-hover": `color-mix(in oklch, ${brand[600]} 90%, black)`,
60
+ "brand-subtle-hover": `color-mix(in oklch, ${brand[600]} 22%, transparent)`,
61
+ // Status (sólido + muted alpha — ×4 cores)
62
+ danger: danger[500],
63
+ "danger-muted": `color-mix(in oklch, ${danger[500]} 14%, transparent)`,
64
+ "danger-hover": `color-mix(in oklch, ${danger[500]} 90%, black)`,
65
+ "danger-muted-hover": `color-mix(in oklch, ${danger[500]} 22%, transparent)`,
66
+ success: success[500],
67
+ "success-muted": `color-mix(in oklch, ${success[500]} 14%, transparent)`,
68
+ "success-hover": `color-mix(in oklch, ${success[500]} 90%, black)`,
69
+ "success-muted-hover": `color-mix(in oklch, ${success[500]} 22%, transparent)`,
70
+ warning: warning[500],
71
+ "warning-muted": `color-mix(in oklch, ${warning[500]} 14%, transparent)`,
72
+ "warning-hover": `color-mix(in oklch, ${warning[500]} 90%, black)`,
73
+ "warning-muted-hover": `color-mix(in oklch, ${warning[500]} 22%, transparent)`,
74
+ info: info[500],
75
+ "info-muted": `color-mix(in oklch, ${info[500]} 14%, transparent)`,
76
+ "info-hover": `color-mix(in oklch, ${info[500]} 90%, black)`,
77
+ "info-muted-hover": `color-mix(in oklch, ${info[500]} 22%, transparent)`,
78
+ // Hover dos neutros — sólidos cinza no light
79
+ "muted-hover": "oklch(0.95 0 0)",
80
+ "input-hover": gray[50],
81
+ // 0.973 — sutil sobre input=white
82
+ "accent-hover": "oklch(0.84 0 0)",
83
+ // Sidebar item states — active = branco (contrasta com sidebar mineral-100), hover = mineral subtle
84
+ "sidebar-accent": white,
85
+ "sidebar-accent-hover": "oklch(0.92 0.0068 115.72)",
86
+ // Tabela — sólidos
87
+ "table": white,
88
+ "table-head": gray[50],
89
+ // Hover sutil: gray[50] (~2.7% diff de white) em vez de gray[100] (6% — forte demais).
90
+ // Mesmo tom do table-head, mantém hierarquia visual sem competir com cells selected.
91
+ "table-row-hover": gray[50],
92
+ // Linha selecionada — alpha brand discreto (6%); hover sobe pra 10%
93
+ // (não usar `bg-brand-subtle` 14% — forte demais como bg de row)
94
+ "table-row-selected": `color-mix(in oklch, ${brand[600]} 6%, transparent)`,
95
+ "table-row-selected-hover": `color-mix(in oklch, ${brand[600]} 10%, transparent)`,
96
+ // Dropdown/Popover — referencia bg-canvas (white no light)
97
+ "dropdown": "var(--color-bg-canvas)"
98
+ };
99
+ const fg$1 = {
100
+ // Hierarquia
101
+ strong: gray[950],
102
+ default: gray[950],
103
+ muted: gray[500],
104
+ // labels, helpers (light)
105
+ subtle: gray[400],
106
+ // placeholders, hints
107
+ disabled: gray[400],
108
+ // Brand
109
+ brand: brand[600],
110
+ // Status
111
+ danger: danger[500],
112
+ success: success[500],
113
+ warning: warning[500],
114
+ info: info[500],
115
+ // Sobre fundos sólidos (on-*)
116
+ "on-brand": white,
117
+ "on-danger": white,
118
+ "on-success": white,
119
+ "on-warning": black,
120
+ // amarelo claro → preto pra contraste
121
+ "on-info": white
122
+ };
123
+ const border$1 = {
124
+ default: gray[200],
125
+ // borda padrão
126
+ subtle: gray[150],
127
+ // dividers, controles
128
+ input: gray[300],
129
+ // inputs / fields
130
+ sidebar: "oklch(0.9076 0.0068 115.72)",
131
+ // mineral-200
132
+ brand: brand[600],
133
+ "brand-subtle": `color-mix(in oklch, ${brand[600]} 36%, transparent)`,
134
+ "danger-muted": `color-mix(in oklch, ${danger[500]} 36%, transparent)`,
135
+ "success-muted": `color-mix(in oklch, ${success[500]} 36%, transparent)`,
136
+ "warning-muted": `color-mix(in oklch, ${warning[500]} 36%, transparent)`,
137
+ "info-muted": `color-mix(in oklch, ${info[500]} 36%, transparent)`,
138
+ // Tabela
139
+ table: gray[150]
140
+ };
141
+ const ring$1 = {
142
+ brand: `color-mix(in oklch, ${brand[600]} 22%, transparent)`,
143
+ danger: `color-mix(in oklch, ${danger[500]} 22%, transparent)`,
144
+ success: `color-mix(in oklch, ${success[500]} 22%, transparent)`,
145
+ warning: `color-mix(in oklch, ${warning[500]} 22%, transparent)`,
146
+ info: `color-mix(in oklch, ${info[500]} 22%, transparent)`,
147
+ secondary: `color-mix(in oklch, ${gray[500]} 22%, transparent)`
148
+ };
149
+ const overlay$1 = {
150
+ // Scrim de backdrop (modais, drawers)
151
+ scrim: "oklch(0 0 0 / 0.55)",
152
+ // Outline de 6px pra elementos flutuantes (panels, dropdowns, command, modais)
153
+ // — consumido pela utility `outline-float`. Light: cinza medium 12%.
154
+ // Valor anterior (6%) era visualmente imperceptível em backgrounds claros;
155
+ // 12% mantém o efeito "halo sutil" mas com presença visual real.
156
+ float: "oklch(0.55 0 0 / 0.12)"
157
+ };
158
+ const colorLight = { bg: bg$1, fg: fg$1, border: border$1, ring: ring$1, overlay: overlay$1 };
159
+ const bg = {
160
+ // Surfaces sólidas
161
+ canvas: gray[900],
162
+ // body
163
+ surface: "oklch(0.225 0 0)",
164
+ // cards, drawer (entre gray-900 e gray-800)
165
+ "surface-elevated": "oklch(0.225 0 0)",
166
+ "surface-panels": gray[900],
167
+ sidebar: "oklch(0.225 0 0)",
168
+ // Backgrounds neutros (alpha overlay — adapta ao surface debaixo)
169
+ subtle: "oklch(1 0 0 / 0.01)",
170
+ muted: "oklch(1 0 0 / 0.03)",
171
+ emphasis: `color-mix(in oklch, ${white} 12%, transparent)`,
172
+ // mesmo visual do bg-accent (sem semântica de "active")
173
+ input: "oklch(1 0 0 / 0.04)",
174
+ accent: "oklch(1 0 0 / 0.12)",
175
+ // Brand (dark usa brandContrast — verde brilhante)
176
+ brand: brandContrast[400],
177
+ "brand-subtle": `color-mix(in oklch, ${brandContrast[400]} 14%, transparent)`,
178
+ "brand-hover": `color-mix(in oklch, ${brandContrast[400]} 90%, black)`,
179
+ "brand-subtle-hover": `color-mix(in oklch, ${brandContrast[400]} 22%, transparent)`,
180
+ // Status (sólido + muted alpha — ×4 cores)
181
+ danger: danger[500],
182
+ "danger-muted": `color-mix(in oklch, ${danger[500]} 14%, transparent)`,
183
+ "danger-hover": `color-mix(in oklch, ${danger[500]} 90%, white)`,
184
+ "danger-muted-hover": `color-mix(in oklch, ${danger[500]} 22%, transparent)`,
185
+ success: success[500],
186
+ "success-muted": `color-mix(in oklch, ${success[500]} 14%, transparent)`,
187
+ "success-hover": `color-mix(in oklch, ${success[500]} 90%, white)`,
188
+ "success-muted-hover": `color-mix(in oklch, ${success[500]} 22%, transparent)`,
189
+ warning: warning[500],
190
+ "warning-muted": `color-mix(in oklch, ${warning[500]} 14%, transparent)`,
191
+ "warning-hover": `color-mix(in oklch, ${warning[500]} 90%, white)`,
192
+ "warning-muted-hover": `color-mix(in oklch, ${warning[500]} 22%, transparent)`,
193
+ info: info[500],
194
+ "info-muted": `color-mix(in oklch, ${info[500]} 14%, transparent)`,
195
+ "info-hover": `color-mix(in oklch, ${info[500]} 90%, white)`,
196
+ "info-muted-hover": `color-mix(in oklch, ${info[500]} 22%, transparent)`,
197
+ // Hover dos neutros — alphas sobem 1 tier
198
+ "muted-hover": "oklch(1 0 0 / 0.08)",
199
+ "input-hover": "oklch(1 0 0 / 0.08)",
200
+ "accent-hover": "oklch(1 0 0 / 0.16)",
201
+ // Sidebar item states — alphas
202
+ "sidebar-accent": "oklch(1 0 0 / 0.08)",
203
+ "sidebar-accent-hover": "oklch(1 0 0 / 0.12)",
204
+ // Tabela — sólidos pra suportar sticky columns sem vazamento
205
+ "table": "oklch(0.225 0 0)",
206
+ // mesmo bg-surface
207
+ "table-head": "oklch(0.252 0 0)",
208
+ // gray-850 — head sticky
209
+ "table-row-hover": "oklch(0.252 0 0)",
210
+ // Linha selecionada — alpha brandContrast 10%; hover sobe pra 14%
211
+ // (no dark precisa de alpha levemente maior pra ficar visível sobre surface escuro)
212
+ "table-row-selected": `color-mix(in oklch, ${brandContrast[400]} 10%, transparent)`,
213
+ "table-row-selected-hover": `color-mix(in oklch, ${brandContrast[400]} 14%, transparent)`,
214
+ // Dropdown/Popover — frosted-glass: bg-canvas com 70% opacidade
215
+ // (combina com backdrop-blur no componente pra efeito vidro fosco)
216
+ "dropdown": "color-mix(in oklab, var(--color-bg-canvas) 70%, transparent)"
217
+ };
218
+ const fg = {
219
+ // Hierarquia
220
+ strong: white,
221
+ // 100% — títulos
222
+ default: "oklch(0.98 0 0)",
223
+ // texto padrão (sem primitive equiv exato)
224
+ muted: gray[400],
225
+ // labels, helpers
226
+ subtle: `color-mix(in oklch, ${gray[400]} 70%, transparent)`,
227
+ // placeholders
228
+ disabled: gray[600],
229
+ // Brand
230
+ brand: brandContrast[400],
231
+ // Status
232
+ danger: danger[500],
233
+ success: success[500],
234
+ warning: warning[500],
235
+ info: info[500],
236
+ // Sobre fundos sólidos (on-*) — dark inverte: verde brilhante, vermelho saturado, etc
237
+ "on-brand": black,
238
+ // preto sobre verde brilhante
239
+ "on-danger": white,
240
+ "on-success": black,
241
+ "on-warning": black,
242
+ "on-info": white
243
+ };
244
+ const border = {
245
+ default: gray[800],
246
+ subtle: "oklch(1 0 0 / 0.04)",
247
+ input: "oklch(1 0 0 / 0.08)",
248
+ sidebar: gray[800],
249
+ brand: brandContrast[400],
250
+ "brand-subtle": `color-mix(in oklch, ${brandContrast[400]} 36%, transparent)`,
251
+ "danger-muted": `color-mix(in oklch, ${danger[500]} 36%, transparent)`,
252
+ "success-muted": `color-mix(in oklch, ${success[500]} 36%, transparent)`,
253
+ "warning-muted": `color-mix(in oklch, ${warning[500]} 36%, transparent)`,
254
+ "info-muted": `color-mix(in oklch, ${info[500]} 36%, transparent)`,
255
+ // Tabela
256
+ table: gray[800]
257
+ };
258
+ const ring = {
259
+ brand: `color-mix(in oklch, ${brandContrast[400]} 22%, transparent)`,
260
+ danger: `color-mix(in oklch, ${danger[500]} 22%, transparent)`,
261
+ success: `color-mix(in oklch, ${success[500]} 22%, transparent)`,
262
+ warning: `color-mix(in oklch, ${warning[500]} 22%, transparent)`,
263
+ info: `color-mix(in oklch, ${info[500]} 22%, transparent)`,
264
+ secondary: `color-mix(in oklch, ${gray[500]} 22%, transparent)`
265
+ };
266
+ const overlay = {
267
+ // Scrim de backdrop (modais, drawers)
268
+ scrim: "oklch(0 0 0 / 0.55)",
269
+ // Outline de 6px pra elementos flutuantes (panels, dropdowns, command, modais)
270
+ // — consumido pela utility `outline-float`. Dark: branco 8%.
271
+ // Valor anterior (4%) era visualmente imperceptível em surfaces escuras;
272
+ // 8% mantém o efeito "halo sutil" mas com presença visual real.
273
+ float: "oklch(1 0 0 / 0.08)"
274
+ };
275
+ const colorDark = { bg, fg, border, ring, overlay };
276
+ const BASE = 4;
277
+ const sp = (n) => `${n * BASE}px`;
278
+ const scale = {
279
+ 0: sp(0),
280
+ // 0px
281
+ 0.5: sp(0.5),
282
+ // 2px ← hairline
283
+ 1: sp(1),
284
+ // 4px ← xs
285
+ 1.5: sp(1.5),
286
+ // 6px
287
+ 2: sp(2),
288
+ // 8px ← sm
289
+ 2.5: sp(2.5),
290
+ // 10px
291
+ 3: sp(3),
292
+ // 14px
293
+ 4: sp(4),
294
+ // 16px ← base (1 unit)
295
+ 5: sp(5),
296
+ // 20px
297
+ 6: sp(6),
298
+ // 24px ← lg
299
+ 7: sp(7),
300
+ // 28px
301
+ 8: sp(8),
302
+ // 32px ← xl
303
+ 9: sp(9),
304
+ // 36px
305
+ 10: sp(10),
306
+ // 40px
307
+ 11: sp(11),
308
+ // 44px ← touch target min
309
+ 12: sp(12),
310
+ // 48px ← touch target ideal
311
+ 14: sp(14)
312
+ };
313
+ const unified = {
314
+ "2xs": scale[0.5],
315
+ // 2px — hairline, border-like gaps
316
+ xs: scale[1],
317
+ // 4px — icon-to-text tight, checkbox gap, tag gap
318
+ sm: scale[1.5],
319
+ // 6px — button icon gap (xxs/xs), badge gap, tabs
320
+ md: scale[2],
321
+ // 8px — button icon gap (sm/md), form field gap, input padding
322
+ lg: scale[2.5],
323
+ // 10px — compact card padding
324
+ xl: scale[3],
325
+ // 12px — button padding (xs), info box gap, card row gap
326
+ "2xl": scale[4],
327
+ // 16px — card padding (sm), section gap, info box padding
328
+ "3xl": scale[5],
329
+ // 20px — spacer médio
330
+ "4xl": scale[6],
331
+ // 24px — card gap padrão, card padding (default), section gap
332
+ "5xl": scale[7],
333
+ // 28px — spacer grande
334
+ "6xl": scale[8],
335
+ // 32px — section major gap
336
+ "7xl": scale[12]
337
+ // 48px — page-level gap
338
+ };
339
+ const space = {
340
+ base: scale[4],
341
+ // 16px — DEFAULT: uma unidade espacial do sistema
342
+ 0: scale[0],
343
+ px: { px: "1px", raw: 1 },
344
+ ...unified
345
+ };
346
+ const gap = {
347
+ base: scale[6],
348
+ // 24px — DEFAULT: card/section internal gap
349
+ ...unified
350
+ };
351
+ const pad = {
352
+ base: scale[3],
353
+ // 12px — DEFAULT: button/input padding horizontal
354
+ ...unified
355
+ };
356
+ const spacing = { space, gap, pad };
357
+ const comp = {
358
+ base: scale[10],
359
+ // 40px — DEFAULT: button md, input md (desktop)
360
+ "3xs": scale[4],
361
+ // 16px — badge micro
362
+ "2xs": scale[5],
363
+ // 20px — badge md, switch
364
+ xs: scale[6],
365
+ // 24px — compact chip, small tag
366
+ sm: scale[7],
367
+ // 28px — tabs item
368
+ md: scale[8],
369
+ // 32px — button xs, input xs
370
+ lg: scale[9],
371
+ // 36px — button sm, input sm
372
+ xl: scale[10],
373
+ // 40px — mesmo valor que base
374
+ "2xl": scale[11],
375
+ // 44px — WCAG touch target
376
+ "3xl": scale[12],
377
+ // 48px — confortável
378
+ "4xl": scale[14]
379
+ // 56px — hero CTA
380
+ };
381
+ const sizing = { comp };
382
+ const RADIUS_BASE = "0.625rem";
383
+ const radius = {
384
+ base: RADIUS_BASE,
385
+ // 10px — DEFAULT componentes interativos (= lg)
386
+ none: "0px",
387
+ // 0px — sharp corners
388
+ xs: `${RADIUS_BASE} * 0.4`,
389
+ // 4px — sutil
390
+ sm: `${RADIUS_BASE} * 0.6`,
391
+ // 6px — tabs indicator
392
+ md: `${RADIUS_BASE} * 0.8`,
393
+ // 8px — inputs menores
394
+ lg: RADIUS_BASE,
395
+ // 10px — igual ao knob (alias de base)
396
+ xl: `${RADIUS_BASE} * 1.4`,
397
+ // 14px — modais, painéis
398
+ "2xl": `${RADIUS_BASE} * 1.8`,
399
+ // 18px — textarea, select content
400
+ "3xl": `${RADIUS_BASE} * 2.2`,
401
+ // 22px — badges, componentes menores
402
+ "4xl": `${RADIUS_BASE} * 2.6`,
403
+ // 26px — antigo valor de base (retido pra casos específicos)
404
+ full: "9999px"
405
+ // pill — avatars, chips
406
+ };
407
+ const borderWidth = {
408
+ none: "0px",
409
+ xs: "1px",
410
+ // padrão — separadores, inputs, cards
411
+ sm: "2px",
412
+ // ênfase — foco, hover de botão outline
413
+ md: "4px"
414
+ // forte — accent, progress indicator
415
+ };
416
+ const outline = {
417
+ width: "2px",
418
+ // largura do outline de foco
419
+ offset: "2px",
420
+ // espaço entre elemento e outline
421
+ style: "solid"
422
+ };
423
+ const divider = {
424
+ width: "1px",
425
+ style: "solid"
426
+ };
427
+ const shape = { radius, RADIUS_BASE, borderWidth, outline, divider };
428
+ const shadow = {
429
+ // ── Light mode ───────────────────────────────────────────────────────────────
430
+ light: {
431
+ none: "none",
432
+ sm: "0 1px 2px oklch(0 0 0 / 0.04)",
433
+ md: "rgba(145, 158, 171, 0.18) 0 0 2px 0, rgba(145, 158, 171, 0.12) 0 12px 24px -4px",
434
+ lg: "0 8px 24px oklch(0 0 0 / 0.08)",
435
+ xl: "0 12px 32px oklch(0 0 0 / 0.08)",
436
+ "2xl": "0 24px 56px oklch(0 0 0 / 0.16)",
437
+ aside: "-8px 0 24px oklch(0 0 0 / 0.12)",
438
+ // Focus ring brand-tinted (composite — usado direto em box-shadow)
439
+ ring: `0 0 0 3px color-mix(in oklch, ${brand[600]} 22%, transparent)`,
440
+ "ring-danger": `0 0 0 3px color-mix(in oklch, ${danger[500]} 22%, transparent)`,
441
+ "ring-warning": `0 0 0 3px color-mix(in oklch, ${warning[500]} 22%, transparent)`,
442
+ "ring-success": `0 0 0 3px color-mix(in oklch, ${success[500]} 22%, transparent)`,
443
+ "ring-info": `0 0 0 3px color-mix(in oklch, ${info[500]} 22%, transparent)`
444
+ },
445
+ // ── Dark mode ────────────────────────────────────────────────────────────────
446
+ dark: {
447
+ none: "none",
448
+ sm: "none",
449
+ md: `0 0 0 1px ${gray[800]}`,
450
+ lg: "0 8px 24px oklch(0 0 0 / 0.30)",
451
+ xl: "0 12px 32px oklch(0 0 0 / 0.40)",
452
+ "2xl": "0 24px 56px oklch(0 0 0 / 0.45)",
453
+ aside: "-8px 0 24px oklch(0 0 0 / 0.40)",
454
+ // Focus ring brand-contrast-tinted (dark usa brandContrast)
455
+ ring: `0 0 0 3px color-mix(in oklch, ${brandContrast[400]} 22%, transparent)`,
456
+ "ring-danger": `0 0 0 3px color-mix(in oklch, ${danger[500]} 22%, transparent)`,
457
+ "ring-warning": `0 0 0 3px color-mix(in oklch, ${warning[500]} 22%, transparent)`,
458
+ "ring-success": `0 0 0 3px color-mix(in oklch, ${success[500]} 22%, transparent)`,
459
+ "ring-info": `0 0 0 3px color-mix(in oklch, ${info[500]} 22%, transparent)`
460
+ }
461
+ };
462
+ const opacity = {
463
+ // Estados interativos
464
+ disabled: 0.38,
465
+ hover: 0.08,
466
+ focus: 0.12,
467
+ pressed: 0.12,
468
+ dragged: 0.16,
469
+ // Visibilidade
470
+ invisible: 0,
471
+ muted: 0.5,
472
+ subtle: 0.7,
473
+ full: 1,
474
+ // Overlay de background (scrims de modal)
475
+ "scrim-light": 0.32,
476
+ "scrim-dark": 0.64
477
+ };
478
+ const blur = {
479
+ sm: "blur(4px)",
480
+ md: "blur(8px)",
481
+ lg: "blur(16px)",
482
+ xl: "blur(24px)"
483
+ };
484
+ const zIndex = {
485
+ hide: -1,
486
+ base: 0,
487
+ dropdown: 100,
488
+ sticky: 200,
489
+ overlay: 300,
490
+ modal: 400,
491
+ popover: 500,
492
+ toast: 600,
493
+ tooltip: 700
494
+ };
495
+ const elevation = { shadow, opacity, blur, zIndex };
496
+ const fontFamily = {
497
+ sans: "var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif)",
498
+ mono: "var(--font-mono, 'Geist Mono', 'Fira Code', monospace)"
499
+ };
500
+ const fontWeight = {
501
+ regular: "400",
502
+ medium: "500",
503
+ semibold: "600",
504
+ bold: "700"
505
+ };
506
+ const display = {
507
+ "display-2xl": {
508
+ fontSize: "clamp(2.5rem, calc(1.568rem + 3.978vw), 4.75rem)",
509
+ lineHeight: "1.1",
510
+ fontWeight: fontWeight.bold,
511
+ letterSpacing: "-0.02em",
512
+ fontFamily: fontFamily.sans
513
+ },
514
+ "display-xl": {
515
+ fontSize: "clamp(2.25rem, calc(1.603rem + 2.762vw), 3.8125rem)",
516
+ lineHeight: "1.1",
517
+ fontWeight: fontWeight.bold,
518
+ letterSpacing: "-0.02em",
519
+ fontFamily: fontFamily.sans
520
+ },
521
+ "display-lg": {
522
+ fontSize: "clamp(2rem, calc(1.560rem + 1.878vw), 3.0625rem)",
523
+ lineHeight: "1.15",
524
+ fontWeight: fontWeight.semibold,
525
+ letterSpacing: "-0.01em",
526
+ fontFamily: fontFamily.sans
527
+ },
528
+ "display-md": {
529
+ fontSize: "clamp(1.75rem, calc(1.465rem + 1.215vw), 2.4375rem)",
530
+ lineHeight: "1.15",
531
+ fontWeight: fontWeight.semibold,
532
+ letterSpacing: "-0.01em",
533
+ fontFamily: fontFamily.sans
534
+ }
535
+ };
536
+ const heading = {
537
+ "heading-xl": {
538
+ fontSize: "clamp(2.25rem, calc(1.732rem + 2.210vw), 3.5rem)",
539
+ lineHeight: "1.15",
540
+ fontWeight: fontWeight.medium,
541
+ letterSpacing: "-0.01em",
542
+ fontFamily: fontFamily.sans
543
+ },
544
+ "heading-lg": {
545
+ fontSize: "clamp(2rem, calc(1.586rem + 1.768vw), 3rem)",
546
+ lineHeight: "1.2",
547
+ fontWeight: fontWeight.medium,
548
+ letterSpacing: "-0.01em",
549
+ fontFamily: fontFamily.sans
550
+ },
551
+ "heading-md": {
552
+ fontSize: "clamp(1.75rem, calc(1.439rem + 1.326vw), 2.5rem)",
553
+ lineHeight: "1.2",
554
+ fontWeight: fontWeight.medium,
555
+ letterSpacing: "-0.01em",
556
+ fontFamily: fontFamily.sans
557
+ },
558
+ "heading-sm": {
559
+ fontSize: "clamp(1.5rem, calc(1.293rem + 0.884vw), 2rem)",
560
+ lineHeight: "1.25",
561
+ fontWeight: fontWeight.medium,
562
+ letterSpacing: "-0.005em",
563
+ fontFamily: fontFamily.sans
564
+ },
565
+ "heading-xs": {
566
+ fontSize: "1.5rem",
567
+ // 24px
568
+ lineHeight: "2rem",
569
+ // 32px
570
+ fontWeight: fontWeight.medium,
571
+ letterSpacing: "0em",
572
+ fontFamily: fontFamily.sans
573
+ }
574
+ // NOTE: heading-2xs removido — era duplicata pura de title-lg (ambos 20px/500/0em).
575
+ // Consumidores migrados para text-title-lg.
576
+ };
577
+ const title = {
578
+ "title-lg": {
579
+ fontSize: "1.25rem",
580
+ // 20px
581
+ lineHeight: "1.75rem",
582
+ // 28px
583
+ fontWeight: fontWeight.medium,
584
+ letterSpacing: "0em",
585
+ fontFamily: fontFamily.sans
586
+ },
587
+ "title-md": {
588
+ fontSize: "1rem",
589
+ // 16px
590
+ lineHeight: "1.5rem",
591
+ // 24px
592
+ fontWeight: fontWeight.medium,
593
+ letterSpacing: "0em",
594
+ fontFamily: fontFamily.sans
595
+ },
596
+ "title-sm": {
597
+ fontSize: "0.875rem",
598
+ // 14px
599
+ lineHeight: "1.25rem",
600
+ // 20px
601
+ fontWeight: fontWeight.medium,
602
+ letterSpacing: "0em",
603
+ fontFamily: fontFamily.sans
604
+ }
605
+ };
606
+ const label = {
607
+ "label-xl": {
608
+ fontSize: "1.5rem",
609
+ // 24px
610
+ lineHeight: "2rem",
611
+ // 32px
612
+ fontWeight: fontWeight.medium,
613
+ letterSpacing: "-0.015em",
614
+ fontFamily: fontFamily.sans
615
+ },
616
+ "label-lg": {
617
+ fontSize: "1.125rem",
618
+ // 18px
619
+ lineHeight: "1.5rem",
620
+ // 24px
621
+ fontWeight: fontWeight.medium,
622
+ letterSpacing: "-0.015em",
623
+ fontFamily: fontFamily.sans
624
+ },
625
+ "label-md": {
626
+ fontSize: "1rem",
627
+ // 16px
628
+ lineHeight: "1.5rem",
629
+ // 24px
630
+ fontWeight: fontWeight.medium,
631
+ letterSpacing: "-0.011em",
632
+ fontFamily: fontFamily.sans
633
+ },
634
+ "label-sm": {
635
+ fontSize: "0.875rem",
636
+ // 14px
637
+ lineHeight: "1.25rem",
638
+ // 20px
639
+ fontWeight: fontWeight.medium,
640
+ letterSpacing: "-0.006em",
641
+ fontFamily: fontFamily.sans
642
+ },
643
+ "label-xs": {
644
+ fontSize: "0.75rem",
645
+ // 12px
646
+ lineHeight: "1rem",
647
+ // 16px
648
+ fontWeight: fontWeight.medium,
649
+ letterSpacing: "0em",
650
+ fontFamily: fontFamily.sans
651
+ },
652
+ // ★ NOVO — preenche tier 11px no namespace label (interactive, weight 500).
653
+ // Casos: micro label, hint count, rail tooltip.
654
+ "label-2xs": {
655
+ fontSize: "0.6875rem",
656
+ // 11px
657
+ lineHeight: "0.875rem",
658
+ // 14px
659
+ fontWeight: fontWeight.medium,
660
+ letterSpacing: "0em",
661
+ fontFamily: fontFamily.sans
662
+ },
663
+ // ★ NOVO — preenche tier 13px no namespace label (body default interativo do projeto).
664
+ // Casos: button sm, dropdown item, input value, tab default.
665
+ "label-base": {
666
+ fontSize: "0.8125rem",
667
+ // 13px
668
+ lineHeight: "1.125rem",
669
+ // 18px
670
+ fontWeight: fontWeight.medium,
671
+ letterSpacing: "-0.003em",
672
+ fontFamily: fontFamily.sans
673
+ }
674
+ };
675
+ const paragraph = {
676
+ "paragraph-xl": {
677
+ fontSize: "1.5rem",
678
+ // 24px
679
+ lineHeight: "2rem",
680
+ // 32px
681
+ fontWeight: fontWeight.regular,
682
+ letterSpacing: "-0.015em",
683
+ fontFamily: fontFamily.sans
684
+ },
685
+ "paragraph-lg": {
686
+ fontSize: "1.125rem",
687
+ // 18px
688
+ lineHeight: "1.5rem",
689
+ // 24px
690
+ fontWeight: fontWeight.regular,
691
+ letterSpacing: "-0.015em",
692
+ fontFamily: fontFamily.sans
693
+ },
694
+ "paragraph-md": {
695
+ fontSize: "1rem",
696
+ // 16px
697
+ lineHeight: "1.5rem",
698
+ // 24px
699
+ fontWeight: fontWeight.regular,
700
+ letterSpacing: "-0.011em",
701
+ fontFamily: fontFamily.sans
702
+ },
703
+ "paragraph-sm": {
704
+ fontSize: "0.875rem",
705
+ // 14px
706
+ lineHeight: "1.25rem",
707
+ // 20px
708
+ fontWeight: fontWeight.regular,
709
+ letterSpacing: "-0.006em",
710
+ fontFamily: fontFamily.sans
711
+ },
712
+ "paragraph-xs": {
713
+ fontSize: "0.75rem",
714
+ // 12px
715
+ lineHeight: "1rem",
716
+ // 16px
717
+ fontWeight: fontWeight.regular,
718
+ letterSpacing: "0em",
719
+ fontFamily: fontFamily.sans
720
+ },
721
+ // ★ NOVO — preenche tier 13px no namespace paragraph (body default do projeto).
722
+ // Casos: body small, msg bubble, table cell, command item, dropdown item.
723
+ "paragraph-base": {
724
+ fontSize: "0.8125rem",
725
+ // 13px
726
+ lineHeight: "1.125rem",
727
+ // 18px
728
+ fontWeight: fontWeight.regular,
729
+ letterSpacing: "-0.003em",
730
+ fontFamily: fontFamily.sans
731
+ }
732
+ };
733
+ const caption = {
734
+ "caption-md": {
735
+ fontSize: "0.8125rem",
736
+ // 13px
737
+ lineHeight: "1.125rem",
738
+ // 18px
739
+ fontWeight: fontWeight.regular,
740
+ letterSpacing: "0em",
741
+ fontFamily: fontFamily.sans
742
+ },
743
+ "caption-sm": {
744
+ fontSize: "0.6875rem",
745
+ // 11px
746
+ lineHeight: "0.875rem",
747
+ // 14px
748
+ fontWeight: fontWeight.regular,
749
+ letterSpacing: "0em",
750
+ fontFamily: fontFamily.sans
751
+ },
752
+ // ★ NOVO — preenche tier 10px (faltava completamente no DS).
753
+ // Casos: micro caption (bubble meta, conv ID, history meta).
754
+ "caption-xs": {
755
+ fontSize: "0.625rem",
756
+ // 10px
757
+ lineHeight: "0.75rem",
758
+ // 12px
759
+ fontWeight: fontWeight.regular,
760
+ letterSpacing: "0em",
761
+ fontFamily: fontFamily.sans
762
+ }
763
+ };
764
+ const subheading = {
765
+ "subheading-md": {
766
+ fontSize: "1rem",
767
+ // 16px
768
+ lineHeight: "1.5rem",
769
+ // 24px
770
+ fontWeight: fontWeight.medium,
771
+ letterSpacing: "0.06em",
772
+ fontFamily: fontFamily.sans
773
+ },
774
+ "subheading-sm": {
775
+ fontSize: "0.875rem",
776
+ // 14px
777
+ lineHeight: "1.25rem",
778
+ // 20px
779
+ fontWeight: fontWeight.medium,
780
+ letterSpacing: "0.06em",
781
+ fontFamily: fontFamily.sans
782
+ },
783
+ "subheading-xs": {
784
+ fontSize: "0.75rem",
785
+ // 12px
786
+ lineHeight: "1rem",
787
+ // 16px
788
+ fontWeight: fontWeight.medium,
789
+ letterSpacing: "0.04em",
790
+ fontFamily: fontFamily.sans
791
+ },
792
+ "subheading-2xs": {
793
+ fontSize: "0.6875rem",
794
+ // 11px
795
+ lineHeight: "0.75rem",
796
+ // 12px
797
+ fontWeight: fontWeight.medium,
798
+ letterSpacing: "0.02em",
799
+ fontFamily: fontFamily.sans
800
+ },
801
+ // ★ NOVO — variante "strong" weight 700 + tracking apertado (+0.06em).
802
+ // Substitui o pattern literal `text-[Npx] font-bold tracking-[0.06em] uppercase`.
803
+ // Casos: FILTERS/CATEGORIAS section title, table thead, MenuSidebar section header.
804
+ "subheading-strong-md": {
805
+ fontSize: "0.6875rem",
806
+ // 11px
807
+ lineHeight: "0.875rem",
808
+ // 14px
809
+ fontWeight: fontWeight.bold,
810
+ letterSpacing: "0.06em",
811
+ fontFamily: fontFamily.sans
812
+ },
813
+ // ★ NOVO — versão 10px do strong subheading.
814
+ // Casos: chip counter, unread badge, header tab count, agent rank.
815
+ "subheading-strong-sm": {
816
+ fontSize: "0.625rem",
817
+ // 10px
818
+ lineHeight: "0.75rem",
819
+ // 12px
820
+ fontWeight: fontWeight.bold,
821
+ letterSpacing: "0.06em",
822
+ fontFamily: fontFamily.sans
823
+ }
824
+ };
825
+ const code = {
826
+ "code-md": {
827
+ fontSize: "1rem",
828
+ // 16px
829
+ lineHeight: "1.6",
830
+ fontWeight: fontWeight.regular,
831
+ letterSpacing: "0em",
832
+ fontFamily: fontFamily.mono
833
+ },
834
+ "code-sm": {
835
+ fontSize: "0.8125rem",
836
+ // 13px
837
+ lineHeight: "1.6",
838
+ fontWeight: fontWeight.regular,
839
+ letterSpacing: "0em",
840
+ fontFamily: fontFamily.mono
841
+ }
842
+ };
843
+ const typography = {
844
+ ...display,
845
+ ...heading,
846
+ ...title,
847
+ ...label,
848
+ ...paragraph,
849
+ ...caption,
850
+ ...subheading,
851
+ ...code
852
+ };
853
+ const duration = {
854
+ instant: "0ms",
855
+ "x-fast": "100ms",
856
+ // hover states, focus rings
857
+ fast: "150ms",
858
+ // simples (opacity, color)
859
+ moderate: "200ms",
860
+ // entradas de elementos
861
+ slow: "300ms",
862
+ // modais, drawers, expansões
863
+ "x-slow": "400ms",
864
+ // page transitions
865
+ deliberate: "500ms"
866
+ // animações complexas, onboarding
867
+ };
868
+ const easing = {
869
+ // Productive
870
+ "standard": "cubic-bezier(0.2, 0, 0.38, 0.9)",
871
+ // entra e sai
872
+ "entrance-productive": "cubic-bezier(0, 0, 0.38, 0.9)",
873
+ // entra
874
+ "exit-productive": "cubic-bezier(0.2, 0, 1, 0.9)",
875
+ // sai
876
+ // Expressive
877
+ "emphasized": "cubic-bezier(0.2, 0, 0, 1)",
878
+ // enfatizado
879
+ "emphasized-decelerate": "cubic-bezier(0.05, 0.7, 0.1, 1)",
880
+ // entra (expressive)
881
+ "emphasized-accelerate": "cubic-bezier(0.3, 0, 0.8, 0.15)",
882
+ // sai (expressive)
883
+ // Utilitários
884
+ "linear": "linear",
885
+ "spring": "cubic-bezier(0.175, 0.885, 0.32, 1.275)"
886
+ // ligeiro bounce
887
+ };
888
+ const motionPresets = {
889
+ // Component transitions (button, badge, input, switch)
890
+ "component": `${duration.moderate} ease-out`,
891
+ // Color shift (tabs item color)
892
+ "color-shift": `${duration.slow} ease-out`,
893
+ // Spring (tabs indicator slide)
894
+ "spring": `${duration.slow} cubic-bezier(0.65, 0, 0.35, 1)`,
895
+ // Existing presets
896
+ "hover-color": `${duration.fast} ${easing.standard}`,
897
+ "hover-transform": `${duration["x-fast"]} ${easing["entrance-productive"]}`,
898
+ "fade-in": `${duration.moderate} ${easing["emphasized-decelerate"]}`,
899
+ "fade-out": `${duration.fast} ${easing["emphasized-accelerate"]}`,
900
+ "slide-in": `${duration.slow} ${easing["emphasized-decelerate"]}`,
901
+ "slide-out": `${duration.moderate} ${easing["emphasized-accelerate"]}`,
902
+ "expand": `${duration.slow} ${easing.emphasized}`,
903
+ "collapse": `${duration.moderate} ${easing["emphasized-accelerate"]}`
904
+ };
905
+ exports.colorDark = colorDark;
906
+ exports.colorLight = colorLight;
907
+ exports.duration = duration;
908
+ exports.easing = easing;
909
+ exports.elevation = elevation;
910
+ exports.motionPresets = motionPresets;
911
+ exports.shape = shape;
912
+ exports.sizing = sizing;
913
+ exports.spacing = spacing;
914
+ exports.typography = typography;
915
+ //# sourceMappingURL=tokens.cjs.map