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