@fracui/styleguide 0.0.0-stage → 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 (84) hide show
  1. package/README.md +314 -2
  2. package/dist/components/accordion.d.ts +19 -0
  3. package/dist/components/alert-dialog.d.ts +20 -0
  4. package/dist/components/alert.d.ts +8 -0
  5. package/dist/components/avatar.d.ts +36 -0
  6. package/dist/components/badge.d.ts +19 -0
  7. package/dist/components/breadcrumb.d.ts +35 -0
  8. package/dist/components/button-switch.d.ts +16 -0
  9. package/dist/components/button.d.ts +31 -0
  10. package/dist/components/calendar.d.ts +26 -0
  11. package/dist/components/card.d.ts +23 -0
  12. package/dist/components/checkbox.d.ts +16 -0
  13. package/dist/components/context-menu.d.ts +32 -0
  14. package/dist/components/data-table.d.ts +28 -0
  15. package/dist/components/date-picker.d.ts +16 -0
  16. package/dist/components/dialog.d.ts +36 -0
  17. package/dist/components/dropdown-menu.d.ts +39 -0
  18. package/dist/components/empty.d.ts +25 -0
  19. package/dist/components/fab.d.ts +26 -0
  20. package/dist/components/form-field.d.ts +35 -0
  21. package/dist/components/input.d.ts +29 -0
  22. package/dist/components/label.d.ts +5 -0
  23. package/dist/components/marker.d.ts +42 -0
  24. package/dist/components/model-legend.d.ts +48 -0
  25. package/dist/components/monitoring-status.d.ts +24 -0
  26. package/dist/components/navbar.d.ts +27 -0
  27. package/dist/components/pagination.d.ts +39 -0
  28. package/dist/components/password-input.d.ts +24 -0
  29. package/dist/components/player.d.ts +27 -0
  30. package/dist/components/popover.d.ts +21 -0
  31. package/dist/components/progress.d.ts +10 -0
  32. package/dist/components/radio-group.d.ts +24 -0
  33. package/dist/components/scroll-area.d.ts +11 -0
  34. package/dist/components/search-bar.d.ts +26 -0
  35. package/dist/components/select.d.ts +27 -0
  36. package/dist/components/separator.d.ts +12 -0
  37. package/dist/components/sheet.d.ts +42 -0
  38. package/dist/components/sidebar.d.ts +52 -0
  39. package/dist/components/sonner.d.ts +21 -0
  40. package/dist/components/spinner.d.ts +16 -0
  41. package/dist/components/switch.d.ts +12 -0
  42. package/dist/components/table.d.ts +35 -0
  43. package/dist/components/tabs.d.ts +23 -0
  44. package/dist/components/tag.d.ts +51 -0
  45. package/dist/components/textarea.d.ts +11 -0
  46. package/dist/components/tooltip.d.ts +16 -0
  47. package/dist/fonts.css +33 -0
  48. package/dist/hooks/use-mobile.d.ts +2 -0
  49. package/dist/icons/create-icon.d.ts +21 -0
  50. package/dist/icons/icons.d.ts +401 -0
  51. package/dist/icons/index.d.ts +2 -0
  52. package/dist/icons-DIjjoCNK.js +3646 -0
  53. package/dist/icons-DIjjoCNK.js.map +1 -0
  54. package/dist/icons-DOPTdi6L.cjs +2 -0
  55. package/dist/icons-DOPTdi6L.cjs.map +1 -0
  56. package/dist/icons.cjs +2 -0
  57. package/dist/icons.cjs.map +1 -0
  58. package/dist/icons.js +201 -0
  59. package/dist/icons.js.map +1 -0
  60. package/dist/index.cjs +69 -0
  61. package/dist/index.cjs.map +1 -0
  62. package/dist/index.d.ts +48 -0
  63. package/dist/index.js +15823 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/lib/utils.d.ts +6 -0
  66. package/dist/logos/create-logo.d.ts +27 -0
  67. package/dist/styles.css +1 -0
  68. package/dist/system/jsx-runtime-shim.d.ts +39 -0
  69. package/dist/tailwind-preset.cjs +2 -0
  70. package/dist/tailwind-preset.cjs.map +1 -0
  71. package/dist/tailwind-preset.d.ts +3 -0
  72. package/dist/tailwind-preset.js +318 -0
  73. package/dist/tailwind-preset.js.map +1 -0
  74. package/dist/tokens/colors.d.ts +347 -0
  75. package/dist/tokens/elevation.d.ts +87 -0
  76. package/dist/tokens/grid.d.ts +170 -0
  77. package/dist/tokens/index.d.ts +5 -0
  78. package/dist/tokens/theme.d.ts +129 -0
  79. package/dist/tokens/typography.d.ts +213 -0
  80. package/dist/tokens.cjs +2 -0
  81. package/dist/tokens.cjs.map +1 -0
  82. package/dist/tokens.js +577 -0
  83. package/dist/tokens.js.map +1 -0
  84. package/package.json +135 -4
package/dist/tokens.js ADDED
@@ -0,0 +1,577 @@
1
+ const o = {
2
+ 1: "#E5F0FF",
3
+ 2: "#CBE0FE",
4
+ 3: "#A5C8FE",
5
+ 4: "#7FB2FE",
6
+ 5: "#5C93E5",
7
+ light: "#3D76CC",
8
+ medium: "#255091",
9
+ dark: "#142C50"
10
+ }, n = {
11
+ 1: "#F4F9ED",
12
+ 2: "#E2F0D1",
13
+ 3: "#D1E7B7",
14
+ 4: "#B9DB92",
15
+ 5: "#A2CF6E",
16
+ light: "#84C03F",
17
+ medium: "#6AA329",
18
+ dark: "#508217"
19
+ }, i = {
20
+ 1: "#F9EAEA",
21
+ 2: "#F8CECE",
22
+ 3: "#EAA4A4",
23
+ 4: "#E18282"
24
+ }, x = {
25
+ white: "#FFFFFF",
26
+ ice: "#FAFAFA",
27
+ iceMedium: "#F5F5F5",
28
+ light: "#E5E5E5",
29
+ lightMedium: "#BFBFBF",
30
+ DEFAULT: "#999999",
31
+ medium: "#737373",
32
+ mediumDark: "#333333",
33
+ dark: "#202020"
34
+ }, g = {
35
+ error: {
36
+ text: "#670A1A",
37
+ icon: "#CC3D55",
38
+ bg: "#FFD9DF"
39
+ },
40
+ alert: {
41
+ text: "#672A0A",
42
+ icon: "#CC6D3D",
43
+ bg: "#FFE6D9"
44
+ },
45
+ warning: {
46
+ text: "#67480A",
47
+ icon: "#CC9C3D",
48
+ bg: "#FFF2D9"
49
+ },
50
+ success: {
51
+ text: "#246724",
52
+ icon: "#70CC70",
53
+ bg: "#D9FFD9"
54
+ },
55
+ info: {
56
+ text: "#0A2967",
57
+ icon: "#3D6DCC",
58
+ bg: "#D9E6FF"
59
+ }
60
+ }, l = {
61
+ bg: "#040814",
62
+ surface: "#090D1B",
63
+ elevated: "#0B1325",
64
+ outline: "#0E3571"
65
+ }, s = {
66
+ red: "#DA3C36",
67
+ orange: "#D9822B",
68
+ yellow: "#F2F218",
69
+ green: "#4D9966",
70
+ blueLight: "#51CFE3",
71
+ blueMedium: "#2554B2",
72
+ purple: "#634CD9"
73
+ }, d = {
74
+ red: "#F27F7A",
75
+ orange: "#FFBF7F",
76
+ yellow: "#FEFF80",
77
+ green: "#98D9AD",
78
+ blueLight: "#99CCFF",
79
+ blueMedium: "#8CB2FF",
80
+ purple: "#9985FF"
81
+ }, c = {
82
+ 4: "rgba(0, 0, 0, 0.04)",
83
+ 8: "rgba(0, 0, 0, 0.08)",
84
+ 16: "rgba(0, 0, 0, 0.16)",
85
+ 25: "rgba(0, 0, 0, 0.25)",
86
+ 40: "rgba(0, 0, 0, 0.4)",
87
+ 60: "rgba(0, 0, 0, 0.6)",
88
+ 80: "rgba(0, 0, 0, 0.8)"
89
+ }, z = [
90
+ {
91
+ swatch: "Basics/Ice",
92
+ figmaFill: "#E5E5E5",
93
+ figmaLabel: "#FAFAFA",
94
+ adopted: "#FAFAFA",
95
+ reason: "o fill duplica Gray Light; o rótulo completa a rampa de neutros"
96
+ },
97
+ {
98
+ swatch: "Feedback/Text Alert Orange",
99
+ figmaFill: "#693014",
100
+ figmaLabel: "#0A2967",
101
+ adopted: "#672A0A",
102
+ reason: "rótulo é cópia do Text Info Blue; fill está fora dos passos S/L da família. Derivado do matiz 20.3° nos passos canônicos"
103
+ },
104
+ {
105
+ swatch: "Feedback/Icon Alert Orange",
106
+ figmaFill: "#DD662B",
107
+ figmaLabel: "#CC6D3D",
108
+ adopted: "#CC6D3D",
109
+ reason: "o rótulo bate exatamente com os passos S/L da família; o fill não"
110
+ },
111
+ {
112
+ swatch: "Feedback/BG Alert Orange",
113
+ figmaFill: "#FFD6C1",
114
+ figmaLabel: "#D9E6FF",
115
+ adopted: "#FFE6D9",
116
+ reason: "rótulo é cópia do BG Info Blue; fill está em L87.8% em vez de L92.5%"
117
+ },
118
+ {
119
+ swatch: "Subtitle/Blue Medium",
120
+ figmaFill: "#E336B4",
121
+ figmaLabel: "#2554B2",
122
+ adopted: "#2554B2",
123
+ reason: "o fill é magenta, incompatível com o nome da cor"
124
+ },
125
+ {
126
+ swatch: "Subtitle/Blue Light",
127
+ figmaFill: "#51CFE3",
128
+ figmaLabel: "#5798D9",
129
+ adopted: "#51CFE3",
130
+ reason: "o fill é ciano e o rótulo é azul. Adotado o fill, que é o que renderiza hoje nas legendas de mapa e o que dá matiz distinto do Blue Medium — mas a divergência é grande o bastante para valer confirmação com o design"
131
+ },
132
+ {
133
+ swatch: "Subtitle/Light/Blue Medium",
134
+ figmaFill: "#8CB2FF",
135
+ figmaLabel: "#8CA9FF",
136
+ adopted: "#8CB2FF",
137
+ reason: "diferença de um passo de matiz; adotado o fill, que é o que renderiza"
138
+ },
139
+ {
140
+ swatch: "Subtitle/Light/Yellow",
141
+ figmaFill: "#FEFF80",
142
+ figmaLabel: "#E9E98E",
143
+ adopted: "#FEFF80",
144
+ reason: "adotado o fill; o rótulo é mais dessaturado e não acompanha o resto da família Light"
145
+ }
146
+ ], T = {
147
+ blue: o,
148
+ green: n,
149
+ red: i,
150
+ gray: x,
151
+ feedback: g,
152
+ dark: l,
153
+ subtitle: s,
154
+ subtitleLight: d,
155
+ alpha: c
156
+ }, u = {
157
+ background: "0 0% 100%",
158
+ // gray.white #FFFFFF
159
+ foreground: "0 0% 12.5%",
160
+ // gray.dark #202020
161
+ card: "0 0% 100%",
162
+ // gray.white #FFFFFF
163
+ cardForeground: "0 0% 12.5%",
164
+ // gray.dark #202020
165
+ popover: "0 0% 100%",
166
+ // gray.white #FFFFFF
167
+ popoverForeground: "0 0% 12.5%",
168
+ // gray.dark #202020
169
+ primary: "216.1 58.4% 52%",
170
+ // blue.light #3D76CC
171
+ primaryForeground: "0 0% 100%",
172
+ // gray.white #FFFFFF
173
+ secondary: "0 0% 96.1%",
174
+ // gray.iceMedium #F5F5F5
175
+ secondaryForeground: "0 0% 20%",
176
+ // gray.mediumDark #333333
177
+ muted: "0 0% 96.1%",
178
+ // gray.iceMedium #F5F5F5
179
+ mutedForeground: "0 0% 45.1%",
180
+ // gray.medium #737373
181
+ accent: "214.6 100% 94.9%",
182
+ // blue.1 #E5F0FF
183
+ accentForeground: "216 60% 19.6%",
184
+ // blue.dark #142C50
185
+ destructive: "349.9 58.4% 52%",
186
+ // feedback.error.icon #CC3D55
187
+ destructiveForeground: "0 0% 100%",
188
+ // gray.white #FFFFFF
189
+ border: "0 0% 89.8%",
190
+ // gray.light #E5E5E5
191
+ input: "0 0% 89.8%",
192
+ // gray.light #E5E5E5
193
+ ring: "216.1 58.4% 52%"
194
+ // blue.light #3D76CC
195
+ }, b = {
196
+ background: "225 66.7% 4.7%",
197
+ // dark.bg #040814
198
+ foreground: "0 0% 100%",
199
+ // gray.white #FFFFFF
200
+ card: "226.7 50% 7.1%",
201
+ // dark.surface #090D1B
202
+ cardForeground: "0 0% 100%",
203
+ // gray.white #FFFFFF
204
+ popover: "221.5 54.2% 9.4%",
205
+ // dark.elevated #0B1325
206
+ popoverForeground: "0 0% 100%",
207
+ // gray.white #FFFFFF
208
+ primary: "216.1 58.4% 52%",
209
+ // blue.light #3D76CC
210
+ primaryForeground: "0 0% 100%",
211
+ // gray.white #FFFFFF
212
+ secondary: "221.5 54.2% 9.4%",
213
+ // dark.elevated #0B1325
214
+ secondaryForeground: "0 0% 89.8%",
215
+ // gray.light #E5E5E5
216
+ muted: "221.5 54.2% 9.4%",
217
+ // dark.elevated #0B1325
218
+ mutedForeground: "0 0% 74.9%",
219
+ // gray.lightMedium #BFBFBF
220
+ accent: "216 60% 19.6%",
221
+ // blue.dark #142C50
222
+ accentForeground: "214.6 100% 94.9%",
223
+ // blue.1 #E5F0FF
224
+ destructive: "349.9 58.4% 52%",
225
+ // feedback.error.icon #CC3D55
226
+ destructiveForeground: "0 0% 100%",
227
+ // gray.white #FFFFFF
228
+ border: "216 60% 19.6%",
229
+ // blue.dark #142C50
230
+ input: "216 60% 19.6%",
231
+ // blue.dark #142C50
232
+ ring: "216.4 78% 24.9%"
233
+ // dark.outline #0E3571
234
+ }, F = {
235
+ brandPrimary: "216 60% 19.6%",
236
+ // blue.dark #142C50
237
+ brandPrimaryMedium: "216.1 59.3% 35.7%",
238
+ // blue.medium #255091
239
+ brandPrimaryLight: "216.1 58.4% 52%",
240
+ // blue.light #3D76CC
241
+ brandSecondary: "88 69.9% 30%",
242
+ // green.dark #508217
243
+ brandSecondaryMedium: "88 59.8% 40%",
244
+ // green.medium #6AA329
245
+ brandSecondaryLight: "87.9 50.6% 50%",
246
+ // green.light #84C03F
247
+ errorText: "349.7 82.3% 22.2%",
248
+ // #670A1A
249
+ errorIcon: "349.9 58.4% 52%",
250
+ // #CC3D55
251
+ errorBg: "350.5 100% 92.5%",
252
+ // #FFD9DF
253
+ alertText: "20.6 82.3% 22.2%",
254
+ // #672A0A
255
+ alertIcon: "20.1 58.4% 52%",
256
+ // #CC6D3D
257
+ alertBg: "20.5 100% 92.5%",
258
+ // #FFE6D9
259
+ warningText: "40 82.3% 22.2%",
260
+ // #67480A
261
+ warningIcon: "39.9 58.4% 52%",
262
+ // #CC9C3D
263
+ warningBg: "39.5 100% 92.5%",
264
+ // #FFF2D9
265
+ successText: "120 48.2% 27.3%",
266
+ // #246724
267
+ successIcon: "120 47.4% 62%",
268
+ // #70CC70
269
+ successBg: "120 100% 92.5%",
270
+ // #D9FFD9
271
+ infoText: "220 82.3% 22.2%",
272
+ // #0A2967
273
+ infoIcon: "219.9 58.4% 52%",
274
+ // #3D6DCC
275
+ infoBg: "219.5 100% 92.5%",
276
+ // #D9E6FF
277
+ disabledForeground: "0 0% 74.9%",
278
+ // gray.lightMedium #BFBFBF
279
+ disabledBg: "0 0% 96.1%"
280
+ // gray.iceMedium #F5F5F5
281
+ }, m = {
282
+ brandPrimary: "216.1 58.4% 52%",
283
+ // blue.light #3D76CC
284
+ brandPrimaryMedium: "215.9 72.5% 62.9%",
285
+ // blue.5 #5C93E5
286
+ brandPrimaryLight: "215.9 98.4% 74.7%",
287
+ // blue.4 #7FB2FE
288
+ brandSecondary: "87.9 50.6% 50%",
289
+ // green.light #84C03F
290
+ brandSecondaryMedium: "87.8 50.3% 62.2%",
291
+ // green.5 #A2CF6E
292
+ brandSecondaryLight: "87.9 50.3% 71.6%",
293
+ // green.4 #B9DB92
294
+ errorText: "350.5 100% 92.5%",
295
+ // #FFD9DF
296
+ errorIcon: "349.9 58.4% 52%",
297
+ // #CC3D55
298
+ errorBg: "349.7 82.3% 22.2%",
299
+ // #670A1A
300
+ alertText: "20.5 100% 92.5%",
301
+ // #FFE6D9
302
+ alertIcon: "20.1 58.4% 52%",
303
+ // #CC6D3D
304
+ alertBg: "20.6 82.3% 22.2%",
305
+ // #672A0A
306
+ warningText: "39.5 100% 92.5%",
307
+ // #FFF2D9
308
+ warningIcon: "39.9 58.4% 52%",
309
+ // #CC9C3D
310
+ warningBg: "40 82.3% 22.2%",
311
+ // #67480A
312
+ successText: "120 100% 92.5%",
313
+ // #D9FFD9
314
+ successIcon: "120 47.4% 62%",
315
+ // #70CC70
316
+ successBg: "120 48.2% 27.3%",
317
+ // #246724
318
+ infoText: "219.5 100% 92.5%",
319
+ // #D9E6FF
320
+ infoIcon: "219.9 58.4% 52%",
321
+ // #3D6DCC
322
+ infoBg: "220 82.3% 22.2%",
323
+ // #0A2967
324
+ /*
325
+ * DERIVADO. O #BFBFBF que o Figma usa para desabilitado só funciona
326
+ * sobre fundo claro: no escuro ele fica MAIS claro que o texto normal,
327
+ * e o elemento desabilitado passa a chamar mais atenção que o ativo.
328
+ * Aqui o desabilitado escurece, mantendo a relação de hierarquia.
329
+ */
330
+ disabledForeground: "0 0% 45.1%",
331
+ // gray.medium #737373
332
+ disabledBg: "221.5 54.2% 9.4%"
333
+ // dark.elevated #0B1325
334
+ }, f = "0.5rem", h = {
335
+ xs: "4px",
336
+ xl: "12px",
337
+ "2xl": "16px",
338
+ "3xl": "30px",
339
+ "4xl": "40px",
340
+ pill: "9999px"
341
+ }, I = {
342
+ light: u,
343
+ dark: b,
344
+ lightBrand: F,
345
+ darkBrand: m,
346
+ radius: f,
347
+ radii: h
348
+ }, B = {
349
+ sans: [
350
+ "Roboto",
351
+ "ui-sans-serif",
352
+ "system-ui",
353
+ "-apple-system",
354
+ "'Segoe UI'",
355
+ "sans-serif"
356
+ ],
357
+ /**
358
+ * ATENÇÃO: no Figma, `h1` e `h2` no peso medium estão em Rubik, apesar
359
+ * de os estilos se chamarem `roboto/medium/h1` e `roboto/medium/h2`.
360
+ * Exposto aqui para reproduzir fielmente o design; confirme com o time
361
+ * de design se é intencional antes de usar em produção.
362
+ */
363
+ display: [
364
+ "Rubik",
365
+ "Roboto",
366
+ "ui-sans-serif",
367
+ "system-ui",
368
+ "-apple-system",
369
+ "sans-serif"
370
+ ]
371
+ }, S = {
372
+ h1: {
373
+ fontSize: "36px",
374
+ lineHeight: "37.8px",
375
+ letterSpacing: "0px"
376
+ },
377
+ h2: {
378
+ fontSize: "30px",
379
+ lineHeight: "30px",
380
+ letterSpacing: "0px"
381
+ },
382
+ h3: {
383
+ fontSize: "24px",
384
+ lineHeight: "24px",
385
+ letterSpacing: "0.24px"
386
+ },
387
+ h4: {
388
+ fontSize: "20px",
389
+ lineHeight: "27px",
390
+ letterSpacing: "0.2px"
391
+ },
392
+ h5: {
393
+ fontSize: "18px",
394
+ lineHeight: "24.3px",
395
+ letterSpacing: "0.18px"
396
+ },
397
+ "subtitle-1": {
398
+ fontSize: "16px",
399
+ lineHeight: "20px",
400
+ letterSpacing: "0.32px"
401
+ },
402
+ "subtitle-2": {
403
+ fontSize: "14px",
404
+ lineHeight: "19.6px",
405
+ letterSpacing: "0.28px"
406
+ },
407
+ "body-1": {
408
+ fontSize: "16px",
409
+ lineHeight: "20px",
410
+ letterSpacing: "0.48px"
411
+ },
412
+ "body-2": {
413
+ fontSize: "14px",
414
+ lineHeight: "19.6px",
415
+ letterSpacing: "0.28px"
416
+ },
417
+ "body-allcaps": {
418
+ fontSize: "16px",
419
+ lineHeight: "20px",
420
+ letterSpacing: "0.48px",
421
+ textTransform: "uppercase"
422
+ },
423
+ button: {
424
+ fontSize: "14px",
425
+ lineHeight: "16.1px",
426
+ letterSpacing: "1.4px",
427
+ textTransform: "uppercase"
428
+ },
429
+ caption: {
430
+ fontSize: "12px",
431
+ lineHeight: "14.4px",
432
+ letterSpacing: "0.48px"
433
+ },
434
+ link: {
435
+ fontSize: "14px",
436
+ lineHeight: "18.2px",
437
+ letterSpacing: "0.56px"
438
+ }
439
+ }, E = {
440
+ h1: "0.72px",
441
+ h2: "1.12px",
442
+ h3: "0.48px",
443
+ caption: "0.36px"
444
+ }, D = {
445
+ fontSize: "28px",
446
+ lineHeight: "39.2px",
447
+ letterSpacing: "1.12px"
448
+ }, v = {
449
+ fontFamily: B,
450
+ typeScale: S,
451
+ mediumTracking: E,
452
+ h2Medium: D
453
+ }, e = {
454
+ "down-1": "0px 2px 4px rgba(0, 0, 0, 0.08), 0px 9px 15px rgba(0, 0, 0, 0.05), 0px 24px 46px rgba(0, 0, 0, 0.03)",
455
+ "down-4": "0px 2px 5px rgba(0, 0, 0, 0.16), 0px 12px 20px rgba(0, 0, 0, 0.10), 0px 32px 58px rgba(0, 0, 0, 0.07)",
456
+ "down-8": "0px 4px 6px rgba(0, 0, 0, 0.20), 0px 18px 22px rgba(0, 0, 0, 0.12), 0px 48px 70px rgba(0, 0, 0, 0.08)",
457
+ "up-1": "0px -2px 4px rgba(0, 0, 0, 0.08), 0px -9px 15px rgba(0, 0, 0, 0.05), 0px -24px 46px rgba(0, 0, 0, 0.03)",
458
+ "up-4": "0px -2px 5px rgba(0, 0, 0, 0.16), 0px -12px 20px rgba(0, 0, 0, 0.10), 0px -32px 58px rgba(0, 0, 0, 0.07)",
459
+ "up-8": "0px -4px 6px rgba(0, 0, 0, 0.20), 0px -18px 22px rgba(0, 0, 0, 0.12), 0px -48px 70px rgba(0, 0, 0, 0.08)",
460
+ "right-1": "2px 0px 4px rgba(0, 0, 0, 0.08), 9px 0px 15px rgba(0, 0, 0, 0.05), 24px 0px 46px rgba(0, 0, 0, 0.03)",
461
+ "right-4": "2px 0px 5px rgba(0, 0, 0, 0.16), 12px 0px 20px rgba(0, 0, 0, 0.10), 32px 0px 58px rgba(0, 0, 0, 0.07)",
462
+ "left-1": "-2px 0px 4px rgba(0, 0, 0, 0.08), -9px 0px 15px rgba(0, 0, 0, 0.05), -24px 0px 46px rgba(0, 0, 0, 0.03)",
463
+ "left-4": "-2px 0px 5px rgba(0, 0, 0, 0.16), -12px 0px 20px rgba(0, 0, 0, 0.10), -32px 0px 58px rgba(0, 0, 0, 0.07)"
464
+ }, r = {
465
+ "right-1": "2px 0px 4px rgba(61, 118, 204, 0.08), 4px 0px 10px rgba(61, 118, 204, 0.05), 24px 0px 46px rgba(61, 118, 204, 0.03)",
466
+ "right-4": "2px 0px 5px rgba(61, 118, 204, 0.16), 12px 0px 20px rgba(61, 118, 204, 0.10), 32px 0px 58px rgba(61, 118, 204, 0.07)",
467
+ "right-1-dark": "4px 0px 5px rgba(20, 44, 80, 0.12), 6px 0px 10px rgba(20, 44, 80, 0.05), 24px 0px 46px rgba(20, 44, 80, 0.03)",
468
+ "center-1": "0px 1px 0.5px rgba(20, 44, 80, 0.02)",
469
+ "center-2": "2px 2px 4.5px rgba(20, 44, 80, 0.08), -2px -2px 4.5px rgba(20, 44, 80, 0.08)",
470
+ "center-2-dark": "2px 2px 4.5px rgba(20, 44, 80, 0.40), -2px -2px 4.5px rgba(20, 44, 80, 0.40)"
471
+ }, a = "0px 0px 2px rgba(36, 36, 36, 0.10)", A = {
472
+ glass: "13.2px"
473
+ }, C = {
474
+ ...e,
475
+ ...Object.fromEntries(
476
+ Object.entries(r).map(([p, t]) => [`blue-${p}`, t])
477
+ ),
478
+ outline: a
479
+ }, H = {
480
+ shadowGrey: e,
481
+ shadowBlue: r,
482
+ shadowOutline: a,
483
+ backdropBlur: A,
484
+ boxShadow: C
485
+ }, y = {
486
+ xs: "360px"
487
+ }, w = {
488
+ deskRight: {
489
+ reference: "1280px",
490
+ columns: 11,
491
+ gutter: "16px",
492
+ margin: "18px",
493
+ columnWidth: "75px",
494
+ baseline: "8px"
495
+ },
496
+ deskCentered: {
497
+ reference: "1280px",
498
+ columns: 14,
499
+ gutter: "27px",
500
+ margin: "70px",
501
+ columnWidth: "60px",
502
+ baseline: "4px"
503
+ },
504
+ deskMenu: {
505
+ reference: "1280px",
506
+ columns: 4,
507
+ gutter: "16px",
508
+ margin: "16px",
509
+ columnWidth: "44px",
510
+ baseline: "4px"
511
+ },
512
+ tablet: {
513
+ reference: "768px",
514
+ columns: 8,
515
+ gutter: "16px",
516
+ margin: "16px",
517
+ baseline: "4px"
518
+ },
519
+ mobile: {
520
+ reference: "360px",
521
+ columns: 4,
522
+ gutter: "16px",
523
+ margin: "16px",
524
+ baseline: "4px"
525
+ }
526
+ }, L = {
527
+ center: !0,
528
+ padding: {
529
+ DEFAULT: "16px",
530
+ lg: "70px"
531
+ },
532
+ screens: {
533
+ xl: "1440px"
534
+ }
535
+ }, k = "4px", M = {
536
+ screens: y,
537
+ grids: w,
538
+ container: L,
539
+ spacingBase: k
540
+ };
541
+ export {
542
+ z as FIGMA_OVERRIDES,
543
+ c as alpha,
544
+ A as backdropBlur,
545
+ o as blue,
546
+ C as boxShadow,
547
+ T as colors,
548
+ L as container,
549
+ l as dark,
550
+ m as darkBrand,
551
+ b as darkTheme,
552
+ H as elevation,
553
+ g as feedback,
554
+ B as fontFamily,
555
+ x as gray,
556
+ n as green,
557
+ M as grid,
558
+ w as grids,
559
+ D as h2Medium,
560
+ F as lightBrand,
561
+ u as lightTheme,
562
+ E as mediumTracking,
563
+ h as radii,
564
+ f as radius,
565
+ i as red,
566
+ y as screens,
567
+ r as shadowBlue,
568
+ e as shadowGrey,
569
+ a as shadowOutline,
570
+ k as spacingBase,
571
+ s as subtitle,
572
+ d as subtitleLight,
573
+ I as theme,
574
+ S as typeScale,
575
+ v as typography
576
+ };
577
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sources":["../src/tokens/colors.ts","../src/tokens/theme.ts","../src/tokens/typography.ts","../src/tokens/elevation.ts","../src/tokens/grid.ts"],"sourcesContent":["/**\n * Paleta primitiva de cores da FracUI.\n *\n * Extraída do Figma \"Design System - 2026\"\n * (file key `J15QTL7SaxlobMRnPtOimR`, página \"↳ Cores\").\n *\n * Estas são as cores \"cruas\" (hex) que alimentam os tokens semânticos em\n * `theme.ts`. Use estas escalas diretamente apenas quando não houver um\n * token semântico equivalente (ex: gráficos, ilustrações, e-mails).\n *\n * Para UI de produto, prefira sempre os tokens semânticos\n * (`primary`, `background`, `destructive`, etc.) expostos via classes do\n * Tailwind (`bg-primary`, `text-muted-foreground`...).\n */\n\n/** Escala de 5 tons claros (`Shades/` no Figma), do mais claro ao mais escuro. */\nexport type ShadeScale = {\n 1: string;\n 2: string;\n 3: string;\n 4: string;\n 5: string;\n};\n\n/** Trio de cores de um estado de feedback, conforme modelado no Figma. */\nexport type FeedbackTone = {\n /** Cor do texto sobre o fundo `bg`. */\n text: string;\n /** Cor de ícones e bordas de destaque. */\n icon: string;\n /** Cor de fundo da superfície do alerta. */\n bg: string;\n};\n\n/**\n * Azul institucional — `Primary/` + `Shades/Blue` no Figma.\n *\n * `dark` é a cor de marca principal (usada em `--primary` no tema claro);\n * `light` é a variação usada sobre fundos escuros.\n */\nexport const blue = {\n 1: \"#E5F0FF\",\n 2: \"#CBE0FE\",\n 3: \"#A5C8FE\",\n 4: \"#7FB2FE\",\n 5: \"#5C93E5\",\n light: \"#3D76CC\",\n medium: \"#255091\",\n dark: \"#142C50\",\n} as const;\n\n/**\n * Verde institucional — `Secondary/` + `Shades/Green` no Figma.\n *\n * É a cor de apoio da marca, NÃO o estado de sucesso: para \"deu certo\",\n * use `feedback.success`.\n */\nexport const green = {\n 1: \"#F4F9ED\",\n 2: \"#E2F0D1\",\n 3: \"#D1E7B7\",\n 4: \"#B9DB92\",\n 5: \"#A2CF6E\",\n light: \"#84C03F\",\n medium: \"#6AA329\",\n dark: \"#508217\",\n} as const;\n\n/**\n * Escala vermelha de intensidade — conjunto `Tags` no Figma.\n *\n * Usada apenas para graduar a força do El Niño, do mais fraco ao mais\n * forte. Não está na página de cores do arquivo: existe só dentro do\n * conjunto `Tags`, e por isso não tem os cinco passos das outras escalas.\n *\n * A contraparte da La Niña são os quatro primeiros passos de `blue`, que\n * já existiam na paleta — só o lado vermelho precisava ser nomeado.\n */\nexport const red = {\n 1: \"#F9EAEA\",\n 2: \"#F8CECE\",\n 3: \"#EAA4A4\",\n 4: \"#E18282\",\n} as const;\n\n/**\n * Neutros — `Basics/` no Figma.\n *\n * Rampa contínua do branco puro ao quase-preto. `white`/`ice`/`iceMedium`\n * são superfícies; `light`/`lightMedium` são bordas e divisores;\n * `DEFAULT`/`medium`/`mediumDark`/`dark` são níveis de texto.\n */\nexport const gray = {\n white: \"#FFFFFF\",\n ice: \"#FAFAFA\",\n iceMedium: \"#F5F5F5\",\n light: \"#E5E5E5\",\n lightMedium: \"#BFBFBF\",\n DEFAULT: \"#999999\",\n medium: \"#737373\",\n mediumDark: \"#333333\",\n dark: \"#202020\",\n} as const;\n\n/**\n * Estados de feedback — `Feedback/` no Figma.\n *\n * Cada família é um matiz em três passos fixos de saturação/luminosidade:\n *\n * | slot | S | L |\n * | ------ | ------ | ------ |\n * | `text` | 82.3% | 22.2% |\n * | `icon` | 58.4% | 52.0% |\n * | `bg` | 100% | 92.5% |\n *\n * `success` é a exceção deliberada: seus tons foram dessaturados à mão no\n * Figma (S≈48%) para não brigar com o verde de marca. Mantido como está.\n *\n * Ver `FIGMA_OVERRIDES` para as divergências resolvidas na extração.\n */\nexport const feedback = {\n error: {\n text: \"#670A1A\",\n icon: \"#CC3D55\",\n bg: \"#FFD9DF\",\n },\n alert: {\n text: \"#672A0A\",\n icon: \"#CC6D3D\",\n bg: \"#FFE6D9\",\n },\n warning: {\n text: \"#67480A\",\n icon: \"#CC9C3D\",\n bg: \"#FFF2D9\",\n },\n success: {\n text: \"#246724\",\n icon: \"#70CC70\",\n bg: \"#D9FFD9\",\n },\n info: {\n text: \"#0A2967\",\n icon: \"#3D6DCC\",\n bg: \"#D9E6FF\",\n },\n} as const satisfies Record<string, FeedbackTone>;\n\n/**\n * Superfícies do tema escuro — página \"↳ Light e Dark Mode\" no Figma.\n *\n * Não são neutros cinzas: são azuis muito escuros, para casar com o azul\n * de marca. `outline` é a cor de borda/foco sobre esses fundos.\n */\nexport const dark = {\n bg: \"#040814\",\n surface: \"#090D1B\",\n elevated: \"#0B1325\",\n outline: \"#0E3571\",\n} as const;\n\n/**\n * Cores de legenda de mapa — `Subtitle/` no Figma.\n *\n * Paleta categórica para séries e marcadores geoespaciais. Cada cor tem\n * uma variação `light` para estados desabilitados/hover.\n */\nexport const subtitle = {\n red: \"#DA3C36\",\n orange: \"#D9822B\",\n yellow: \"#F2F218\",\n green: \"#4D9966\",\n blueLight: \"#51CFE3\",\n blueMedium: \"#2554B2\",\n purple: \"#634CD9\",\n} as const;\n\n/** Variações claras das cores de legenda — `Subtitle/Light/` no Figma. */\nexport const subtitleLight = {\n red: \"#F27F7A\",\n orange: \"#FFBF7F\",\n yellow: \"#FEFF80\",\n green: \"#98D9AD\",\n blueLight: \"#99CCFF\",\n blueMedium: \"#8CB2FF\",\n purple: \"#9985FF\",\n} as const;\n\n/**\n * Preto com transparência — `Transparency black/` no Figma.\n *\n * Usado em overlays de modal, headers com blur e estados de pressão.\n */\nexport const alpha = {\n 4: \"rgba(0, 0, 0, 0.04)\",\n 8: \"rgba(0, 0, 0, 0.08)\",\n 16: \"rgba(0, 0, 0, 0.16)\",\n 25: \"rgba(0, 0, 0, 0.25)\",\n 40: \"rgba(0, 0, 0, 0.4)\",\n 60: \"rgba(0, 0, 0, 0.6)\",\n 80: \"rgba(0, 0, 0, 0.8)\",\n} as const;\n\n/**\n * Divergências entre o rótulo e o preenchimento real de swatches no Figma,\n * e qual valor esta biblioteca adotou.\n *\n * Documentado aqui para que a próxima extração não \"corrija\" de volta para\n * o valor errado. Enquanto o Figma não for arrumado, ele e este arquivo\n * discordam nestes pontos — de propósito.\n */\nexport const FIGMA_OVERRIDES = [\n {\n swatch: \"Basics/Ice\",\n figmaFill: \"#E5E5E5\",\n figmaLabel: \"#FAFAFA\",\n adopted: \"#FAFAFA\",\n reason: \"o fill duplica Gray Light; o rótulo completa a rampa de neutros\",\n },\n {\n swatch: \"Feedback/Text Alert Orange\",\n figmaFill: \"#693014\",\n figmaLabel: \"#0A2967\",\n adopted: \"#672A0A\",\n reason:\n \"rótulo é cópia do Text Info Blue; fill está fora dos passos S/L da família. Derivado do matiz 20.3° nos passos canônicos\",\n },\n {\n swatch: \"Feedback/Icon Alert Orange\",\n figmaFill: \"#DD662B\",\n figmaLabel: \"#CC6D3D\",\n adopted: \"#CC6D3D\",\n reason: \"o rótulo bate exatamente com os passos S/L da família; o fill não\",\n },\n {\n swatch: \"Feedback/BG Alert Orange\",\n figmaFill: \"#FFD6C1\",\n figmaLabel: \"#D9E6FF\",\n adopted: \"#FFE6D9\",\n reason:\n \"rótulo é cópia do BG Info Blue; fill está em L87.8% em vez de L92.5%\",\n },\n {\n swatch: \"Subtitle/Blue Medium\",\n figmaFill: \"#E336B4\",\n figmaLabel: \"#2554B2\",\n adopted: \"#2554B2\",\n reason: \"o fill é magenta, incompatível com o nome da cor\",\n },\n {\n swatch: \"Subtitle/Blue Light\",\n figmaFill: \"#51CFE3\",\n figmaLabel: \"#5798D9\",\n adopted: \"#51CFE3\",\n reason:\n \"o fill é ciano e o rótulo é azul. Adotado o fill, que é o que renderiza hoje nas legendas de mapa e o que dá matiz distinto do Blue Medium — mas a divergência é grande o bastante para valer confirmação com o design\",\n },\n {\n swatch: \"Subtitle/Light/Blue Medium\",\n figmaFill: \"#8CB2FF\",\n figmaLabel: \"#8CA9FF\",\n adopted: \"#8CB2FF\",\n reason: \"diferença de um passo de matiz; adotado o fill, que é o que renderiza\",\n },\n {\n swatch: \"Subtitle/Light/Yellow\",\n figmaFill: \"#FEFF80\",\n figmaLabel: \"#E9E98E\",\n adopted: \"#FEFF80\",\n reason: \"adotado o fill; o rótulo é mais dessaturado e não acompanha o resto da família Light\",\n },\n] as const;\n\nexport const colors = {\n blue,\n green,\n red,\n gray,\n feedback,\n dark,\n subtitle,\n subtitleLight,\n alpha,\n} as const;\n","/**\n * Tokens semânticos (tema) da FracUI.\n *\n * Cada valor é um triplo HSL (\"H S% L%\", sem o wrapper hsl()) para poder\n * ser injetado em variáveis CSS e consumido pelo Tailwind como\n * `hsl(var(--nome))`. Isso permite alternar temas (claro/escuro) apenas\n * trocando as variáveis, sem trocar classes.\n *\n * IMPORTANTE: estes valores precisam ficar em sincronia com\n * `src/styles/globals.css`. Se alterar um valor aqui, atualize o CSS\n * correspondente (e vice-versa).\n *\n * Os nomes seguem o contrato do shadcn/ui (`background`, `primary`,\n * `muted`...) para que os componentes existentes continuem funcionando,\n * mas os VALORES vêm da paleta Fractal em `colors.ts`.\n *\n * `primary` é o azul INTERATIVO (`blue.light`, #3D76CC), não o azul\n * institucional. O Figma usa #3D76CC como fundo de repouso do botão\n * primário, do switch ligado, do FAB, da aba ativa e do link; #142C50\n * aparece como estado pressionado/focado e como fundo de tooltip. A cor\n * institucional continua disponível como `--brand-primary`.\n */\n\nexport type SemanticTheme = {\n background: string;\n foreground: string;\n card: string;\n cardForeground: string;\n popover: string;\n popoverForeground: string;\n primary: string;\n primaryForeground: string;\n secondary: string;\n secondaryForeground: string;\n muted: string;\n mutedForeground: string;\n accent: string;\n accentForeground: string;\n destructive: string;\n destructiveForeground: string;\n border: string;\n input: string;\n ring: string;\n};\n\n/**\n * Camada Fractal sobre o contrato do shadcn.\n *\n * `brand*` expõe o azul e o verde institucionais como tokens semânticos\n * (o `primary` do shadcn é consumido por dezenas de componentes e nem\n * sempre é o lugar certo para a cor de marca).\n *\n * `*Text`/`*Icon`/`*Bg` reproduzem o modelo de feedback do Figma, em que\n * cada estado tem três cores coordenadas em vez de uma só.\n */\nexport type BrandTheme = {\n brandPrimary: string;\n brandPrimaryMedium: string;\n brandPrimaryLight: string;\n brandSecondary: string;\n brandSecondaryMedium: string;\n brandSecondaryLight: string;\n\n errorText: string;\n errorIcon: string;\n errorBg: string;\n\n alertText: string;\n alertIcon: string;\n alertBg: string;\n\n warningText: string;\n warningIcon: string;\n warningBg: string;\n\n successText: string;\n successIcon: string;\n successBg: string;\n\n infoText: string;\n infoIcon: string;\n infoBg: string;\n\n disabledForeground: string;\n disabledBg: string;\n};\n\nexport const lightTheme: SemanticTheme = {\n background: \"0 0% 100%\", // gray.white #FFFFFF\n foreground: \"0 0% 12.5%\", // gray.dark #202020\n card: \"0 0% 100%\", // gray.white #FFFFFF\n cardForeground: \"0 0% 12.5%\", // gray.dark #202020\n popover: \"0 0% 100%\", // gray.white #FFFFFF\n popoverForeground: \"0 0% 12.5%\", // gray.dark #202020\n primary: \"216.1 58.4% 52%\", // blue.light #3D76CC\n primaryForeground: \"0 0% 100%\", // gray.white #FFFFFF\n secondary: \"0 0% 96.1%\", // gray.iceMedium #F5F5F5\n secondaryForeground: \"0 0% 20%\", // gray.mediumDark #333333\n muted: \"0 0% 96.1%\", // gray.iceMedium #F5F5F5\n mutedForeground: \"0 0% 45.1%\", // gray.medium #737373\n accent: \"214.6 100% 94.9%\", // blue.1 #E5F0FF\n accentForeground: \"216 60% 19.6%\", // blue.dark #142C50\n destructive: \"349.9 58.4% 52%\", // feedback.error.icon #CC3D55\n destructiveForeground: \"0 0% 100%\", // gray.white #FFFFFF\n border: \"0 0% 89.8%\", // gray.light #E5E5E5\n input: \"0 0% 89.8%\", // gray.light #E5E5E5\n ring: \"216.1 58.4% 52%\", // blue.light #3D76CC\n};\n\nexport const darkTheme: SemanticTheme = {\n background: \"225 66.7% 4.7%\", // dark.bg #040814\n foreground: \"0 0% 100%\", // gray.white #FFFFFF\n card: \"226.7 50% 7.1%\", // dark.surface #090D1B\n cardForeground: \"0 0% 100%\", // gray.white #FFFFFF\n popover: \"221.5 54.2% 9.4%\", // dark.elevated #0B1325\n popoverForeground: \"0 0% 100%\", // gray.white #FFFFFF\n primary: \"216.1 58.4% 52%\", // blue.light #3D76CC\n primaryForeground: \"0 0% 100%\", // gray.white #FFFFFF\n secondary: \"221.5 54.2% 9.4%\", // dark.elevated #0B1325\n secondaryForeground: \"0 0% 89.8%\", // gray.light #E5E5E5\n muted: \"221.5 54.2% 9.4%\", // dark.elevated #0B1325\n mutedForeground: \"0 0% 74.9%\", // gray.lightMedium #BFBFBF\n accent: \"216 60% 19.6%\", // blue.dark #142C50\n accentForeground: \"214.6 100% 94.9%\", // blue.1 #E5F0FF\n destructive: \"349.9 58.4% 52%\", // feedback.error.icon #CC3D55\n destructiveForeground: \"0 0% 100%\", // gray.white #FFFFFF\n border: \"216 60% 19.6%\", // blue.dark #142C50\n input: \"216 60% 19.6%\", // blue.dark #142C50\n ring: \"216.4 78% 24.9%\", // dark.outline #0E3571\n};\n\nexport const lightBrand: BrandTheme = {\n brandPrimary: \"216 60% 19.6%\", // blue.dark #142C50\n brandPrimaryMedium: \"216.1 59.3% 35.7%\", // blue.medium #255091\n brandPrimaryLight: \"216.1 58.4% 52%\", // blue.light #3D76CC\n brandSecondary: \"88 69.9% 30%\", // green.dark #508217\n brandSecondaryMedium: \"88 59.8% 40%\", // green.medium #6AA329\n brandSecondaryLight: \"87.9 50.6% 50%\", // green.light #84C03F\n\n errorText: \"349.7 82.3% 22.2%\", // #670A1A\n errorIcon: \"349.9 58.4% 52%\", // #CC3D55\n errorBg: \"350.5 100% 92.5%\", // #FFD9DF\n\n alertText: \"20.6 82.3% 22.2%\", // #672A0A\n alertIcon: \"20.1 58.4% 52%\", // #CC6D3D\n alertBg: \"20.5 100% 92.5%\", // #FFE6D9\n\n warningText: \"40 82.3% 22.2%\", // #67480A\n warningIcon: \"39.9 58.4% 52%\", // #CC9C3D\n warningBg: \"39.5 100% 92.5%\", // #FFF2D9\n\n successText: \"120 48.2% 27.3%\", // #246724\n successIcon: \"120 47.4% 62%\", // #70CC70\n successBg: \"120 100% 92.5%\", // #D9FFD9\n\n infoText: \"220 82.3% 22.2%\", // #0A2967\n infoIcon: \"219.9 58.4% 52%\", // #3D6DCC\n infoBg: \"219.5 100% 92.5%\", // #D9E6FF\n\n disabledForeground: \"0 0% 74.9%\", // gray.lightMedium #BFBFBF\n disabledBg: \"0 0% 96.1%\", // gray.iceMedium #F5F5F5\n};\n\n/**\n * Feedback no tema escuro.\n *\n * ATENÇÃO: o Figma não especifica os estados de feedback sobre fundo\n * escuro. Estes valores são DERIVADOS, trocando os papéis de `text` e\n * `bg` (o tom escuro vira superfície, o tom claro vira texto) e mantendo\n * o `icon`, que já tem contraste suficiente nos dois temas.\n *\n * Substitua por valores especificados assim que a página de dark mode do\n * Figma cobrir feedback.\n */\nexport const darkBrand: BrandTheme = {\n brandPrimary: \"216.1 58.4% 52%\", // blue.light #3D76CC\n brandPrimaryMedium: \"215.9 72.5% 62.9%\", // blue.5 #5C93E5\n brandPrimaryLight: \"215.9 98.4% 74.7%\", // blue.4 #7FB2FE\n brandSecondary: \"87.9 50.6% 50%\", // green.light #84C03F\n brandSecondaryMedium: \"87.8 50.3% 62.2%\", // green.5 #A2CF6E\n brandSecondaryLight: \"87.9 50.3% 71.6%\", // green.4 #B9DB92\n\n errorText: \"350.5 100% 92.5%\", // #FFD9DF\n errorIcon: \"349.9 58.4% 52%\", // #CC3D55\n errorBg: \"349.7 82.3% 22.2%\", // #670A1A\n\n alertText: \"20.5 100% 92.5%\", // #FFE6D9\n alertIcon: \"20.1 58.4% 52%\", // #CC6D3D\n alertBg: \"20.6 82.3% 22.2%\", // #672A0A\n\n warningText: \"39.5 100% 92.5%\", // #FFF2D9\n warningIcon: \"39.9 58.4% 52%\", // #CC9C3D\n warningBg: \"40 82.3% 22.2%\", // #67480A\n\n successText: \"120 100% 92.5%\", // #D9FFD9\n successIcon: \"120 47.4% 62%\", // #70CC70\n successBg: \"120 48.2% 27.3%\", // #246724\n\n infoText: \"219.5 100% 92.5%\", // #D9E6FF\n infoIcon: \"219.9 58.4% 52%\", // #3D6DCC\n infoBg: \"220 82.3% 22.2%\", // #0A2967\n\n /*\n * DERIVADO. O #BFBFBF que o Figma usa para desabilitado só funciona\n * sobre fundo claro: no escuro ele fica MAIS claro que o texto normal,\n * e o elemento desabilitado passa a chamar mais atenção que o ativo.\n * Aqui o desabilitado escurece, mantendo a relação de hierarquia.\n */\n disabledForeground: \"0 0% 45.1%\", // gray.medium #737373\n disabledBg: \"221.5 54.2% 9.4%\", // dark.elevated #0B1325\n};\n\n/**\n * Raio de borda base, usado por `rounded-lg`/`rounded-md`/`rounded-sm`\n * via preset. 8px é o valor de canto mais usado em componentes no Figma.\n */\nexport const radius = \"0.5rem\";\n\n/**\n * Escala de raios do Figma, por frequência de uso no arquivo:\n * 4px (1047x), 12px (925x), 8px (787x), 16px (265x), 25px (215x),\n * 30px (124x), 40px (68x).\n *\n * `sm`/`md`/`lg` continuam derivados de `--radius` (contrato shadcn) e\n * por isso não aparecem aqui.\n */\nexport const radii = {\n xs: \"4px\",\n xl: \"12px\",\n \"2xl\": \"16px\",\n \"3xl\": \"30px\",\n \"4xl\": \"40px\",\n pill: \"9999px\",\n} as const;\n\nexport const theme = {\n light: lightTheme,\n dark: darkTheme,\n lightBrand,\n darkBrand,\n radius,\n radii,\n} as const;\n","/**\n * Tokens de tipografia da FracUI.\n *\n * Extraídos dos 28 estilos de texto publicados no Figma\n * \"Design System - 2026\" (página \"↳ Tipografia\").\n *\n * O peso é um eixo separado do tamanho: cada estilo abaixo existe em\n * `regular` (400) e `medium` (500) com as mesmas métricas, exceto onde\n * anotado. Por isso a escala expõe tamanho/entrelinha/tracking e deixa o\n * peso para as utilidades `font-normal` / `font-medium`.\n */\n\n/** Pilha padrão de fontes. Todo o design system usa Roboto. */\nexport const fontFamily = {\n sans: [\n \"Roboto\",\n \"ui-sans-serif\",\n \"system-ui\",\n \"-apple-system\",\n \"'Segoe UI'\",\n \"sans-serif\",\n ],\n /**\n * ATENÇÃO: no Figma, `h1` e `h2` no peso medium estão em Rubik, apesar\n * de os estilos se chamarem `roboto/medium/h1` e `roboto/medium/h2`.\n * Exposto aqui para reproduzir fielmente o design; confirme com o time\n * de design se é intencional antes de usar em produção.\n */\n display: [\n \"Rubik\",\n \"Roboto\",\n \"ui-sans-serif\",\n \"system-ui\",\n \"-apple-system\",\n \"sans-serif\",\n ],\n} as const;\n\nexport type TypeStyle = {\n /** `font-size` em px. */\n fontSize: string;\n /** `line-height` em px. */\n lineHeight: string;\n /** `letter-spacing` em px. */\n letterSpacing: string;\n /** Presente apenas nos estilos que o Figma marca como caixa alta. */\n textTransform?: \"uppercase\";\n};\n\n/**\n * Escala tipográfica.\n *\n * Consumida pelo preset como `theme.extend.fontSize`, o que gera as\n * classes `text-h1`, `text-body-1`, `text-caption`, etc.\n */\nexport const typeScale = {\n h1: {\n fontSize: \"36px\",\n lineHeight: \"37.8px\",\n letterSpacing: \"0px\",\n },\n h2: {\n fontSize: \"30px\",\n lineHeight: \"30px\",\n letterSpacing: \"0px\",\n },\n h3: {\n fontSize: \"24px\",\n lineHeight: \"24px\",\n letterSpacing: \"0.24px\",\n },\n h4: {\n fontSize: \"20px\",\n lineHeight: \"27px\",\n letterSpacing: \"0.2px\",\n },\n h5: {\n fontSize: \"18px\",\n lineHeight: \"24.3px\",\n letterSpacing: \"0.18px\",\n },\n \"subtitle-1\": {\n fontSize: \"16px\",\n lineHeight: \"20px\",\n letterSpacing: \"0.32px\",\n },\n \"subtitle-2\": {\n fontSize: \"14px\",\n lineHeight: \"19.6px\",\n letterSpacing: \"0.28px\",\n },\n \"body-1\": {\n fontSize: \"16px\",\n lineHeight: \"20px\",\n letterSpacing: \"0.48px\",\n },\n \"body-2\": {\n fontSize: \"14px\",\n lineHeight: \"19.6px\",\n letterSpacing: \"0.28px\",\n },\n \"body-allcaps\": {\n fontSize: \"16px\",\n lineHeight: \"20px\",\n letterSpacing: \"0.48px\",\n textTransform: \"uppercase\",\n },\n button: {\n fontSize: \"14px\",\n lineHeight: \"16.1px\",\n letterSpacing: \"1.4px\",\n textTransform: \"uppercase\",\n },\n caption: {\n fontSize: \"12px\",\n lineHeight: \"14.4px\",\n letterSpacing: \"0.48px\",\n },\n link: {\n fontSize: \"14px\",\n lineHeight: \"18.2px\",\n letterSpacing: \"0.56px\",\n },\n} as const satisfies Record<string, TypeStyle>;\n\n/**\n * Variação de tracking dos estilos `medium` que diferem do `regular`.\n *\n * Só `h1`, `h2`, `h3` e `caption` mudam de tracking ao trocar de peso; os\n * demais são idênticos. Aplique manualmente quando usar `font-medium`\n * nesses quatro estilos.\n */\nexport const mediumTracking = {\n h1: \"0.72px\",\n h2: \"1.12px\",\n h3: \"0.48px\",\n caption: \"0.36px\",\n} as const;\n\n/**\n * `h2` no peso medium também muda de tamanho e entrelinha (28px/39.2px,\n * contra 30px/30px do regular), além de trocar para a família `display`.\n */\nexport const h2Medium: TypeStyle = {\n fontSize: \"28px\",\n lineHeight: \"39.2px\",\n letterSpacing: \"1.12px\",\n};\n\nexport const typography = {\n fontFamily,\n typeScale,\n mediumTracking,\n h2Medium,\n} as const;\n","/**\n * Sistema de elevação da FracUI.\n *\n * Extraído dos 20 estilos de efeito do Figma \"Design System - 2026\"\n * (página \"↳ Sombras e Blur\").\n *\n * O sistema tem dois eixos:\n *\n * - **direção**: `down` / `up` / `left` / `right` — a sombra é projetada\n * para o lado indicado, e não apenas para baixo. Usado para destacar\n * sidebars (`right`), barras fixas de rodapé (`up`) e drawers (`left`).\n * - **intensidade**: `1` / `4` / `8` dp, seguindo a escala do Material.\n *\n * Cada nível é uma tripla de sombras (contato, difusa, ambiente) — não\n * simplifique para uma só: o degradê entre as três é o que dá a\n * profundidade.\n */\n\n/** Sombras neutras — `Grey/` no Figma. */\nexport const shadowGrey = {\n \"down-1\":\n \"0px 2px 4px rgba(0, 0, 0, 0.08), 0px 9px 15px rgba(0, 0, 0, 0.05), 0px 24px 46px rgba(0, 0, 0, 0.03)\",\n \"down-4\":\n \"0px 2px 5px rgba(0, 0, 0, 0.16), 0px 12px 20px rgba(0, 0, 0, 0.10), 0px 32px 58px rgba(0, 0, 0, 0.07)\",\n \"down-8\":\n \"0px 4px 6px rgba(0, 0, 0, 0.20), 0px 18px 22px rgba(0, 0, 0, 0.12), 0px 48px 70px rgba(0, 0, 0, 0.08)\",\n \"up-1\":\n \"0px -2px 4px rgba(0, 0, 0, 0.08), 0px -9px 15px rgba(0, 0, 0, 0.05), 0px -24px 46px rgba(0, 0, 0, 0.03)\",\n \"up-4\":\n \"0px -2px 5px rgba(0, 0, 0, 0.16), 0px -12px 20px rgba(0, 0, 0, 0.10), 0px -32px 58px rgba(0, 0, 0, 0.07)\",\n \"up-8\":\n \"0px -4px 6px rgba(0, 0, 0, 0.20), 0px -18px 22px rgba(0, 0, 0, 0.12), 0px -48px 70px rgba(0, 0, 0, 0.08)\",\n \"right-1\":\n \"2px 0px 4px rgba(0, 0, 0, 0.08), 9px 0px 15px rgba(0, 0, 0, 0.05), 24px 0px 46px rgba(0, 0, 0, 0.03)\",\n \"right-4\":\n \"2px 0px 5px rgba(0, 0, 0, 0.16), 12px 0px 20px rgba(0, 0, 0, 0.10), 32px 0px 58px rgba(0, 0, 0, 0.07)\",\n \"left-1\":\n \"-2px 0px 4px rgba(0, 0, 0, 0.08), -9px 0px 15px rgba(0, 0, 0, 0.05), -24px 0px 46px rgba(0, 0, 0, 0.03)\",\n \"left-4\":\n \"-2px 0px 5px rgba(0, 0, 0, 0.16), -12px 0px 20px rgba(0, 0, 0, 0.10), -32px 0px 58px rgba(0, 0, 0, 0.07)\",\n} as const;\n\n/**\n * Sombras azuis — `azul/` no Figma.\n *\n * Tingidas com o azul de marca (`#3D76CC` nas laterais, `#142C50` nas\n * centralizadas). Usadas em superfícies que ficam sobre fundo azul, onde\n * a sombra neutra cinza parece suja.\n */\nexport const shadowBlue = {\n \"right-1\":\n \"2px 0px 4px rgba(61, 118, 204, 0.08), 4px 0px 10px rgba(61, 118, 204, 0.05), 24px 0px 46px rgba(61, 118, 204, 0.03)\",\n \"right-4\":\n \"2px 0px 5px rgba(61, 118, 204, 0.16), 12px 0px 20px rgba(61, 118, 204, 0.10), 32px 0px 58px rgba(61, 118, 204, 0.07)\",\n \"right-1-dark\":\n \"4px 0px 5px rgba(20, 44, 80, 0.12), 6px 0px 10px rgba(20, 44, 80, 0.05), 24px 0px 46px rgba(20, 44, 80, 0.03)\",\n \"center-1\": \"0px 1px 0.5px rgba(20, 44, 80, 0.02)\",\n \"center-2\":\n \"2px 2px 4.5px rgba(20, 44, 80, 0.08), -2px -2px 4.5px rgba(20, 44, 80, 0.08)\",\n \"center-2-dark\":\n \"2px 2px 4.5px rgba(20, 44, 80, 0.40), -2px -2px 4.5px rgba(20, 44, 80, 0.40)\",\n} as const;\n\n/** Sombra de contorno sutil — `Sombras/shadow-Elemento4` no Figma. */\nexport const shadowOutline = \"0px 0px 2px rgba(36, 36, 36, 0.10)\";\n\n/**\n * Desfoque de fundo dos headers e overlays \"glass\" — `Glass blur` no\n * Figma. Aplique junto de um fundo semitransparente (ver `colors.alpha`).\n */\nexport const backdropBlur = {\n glass: \"13.2px\",\n} as const;\n\n/**\n * Mapa achatado consumido pelo preset como `theme.extend.boxShadow`.\n *\n * Gera `shadow-down-1`, `shadow-blue-right-4`, `shadow-outline`, etc.\n */\nexport const boxShadow = {\n ...shadowGrey,\n ...Object.fromEntries(\n Object.entries(shadowBlue).map(([k, v]) => [`blue-${k}`, v])\n ),\n outline: shadowOutline,\n} as Record<string, string>;\n\nexport const elevation = {\n shadowGrey,\n shadowBlue,\n shadowOutline,\n backdropBlur,\n boxShadow,\n} as const;\n","/**\n * Malha e breakpoints da FracUI.\n *\n * Extraídos dos 6 estilos de grid do Figma \"Design System - 2026\"\n * (página \"↳ Grid\"), lidos dos `layoutGrids` dos frames de exemplo.\n *\n * O design define três larguras de referência — 360, 768 e 1280 — e três\n * malhas distintas para desktop, escolhidas pelo tipo de tela e não pelo\n * tamanho. Não são breakpoints alternativos: são layouts diferentes na\n * mesma largura.\n */\n\n/**\n * Breakpoints adicionados à escala padrão do Tailwind.\n *\n * As três larguras de referência do design já coincidem com breakpoints\n * padrão, então não há motivo para substituir a escala inteira:\n *\n * | Design | Largura | Tailwind |\n * | ----------------- | ------- | -------- |\n * | mobile | 360px | `xs` ⬅ adicionado |\n * | tablet | 768px | `md` (já é 768) |\n * | desktop | 1280px | `xl` (já é 1280) |\n *\n * Só `xs` é novo. Substituir a escala quebraria `sm:` e `lg:`, usados nos\n * componentes existentes, sem ganho de fidelidade — por isso este objeto\n * entra em `theme.extend.screens`, e não em `theme.screens`.\n */\nexport const screens = {\n xs: \"360px\",\n} as const;\n\nexport type LayoutGrid = {\n /** Largura do frame em que a malha foi especificada. */\n reference: string;\n columns: number;\n /** Espaço entre colunas. */\n gutter: string;\n /** Margem nas laterais do container. */\n margin: string;\n /** Largura de coluna fixa, quando o design não usa colunas fluidas. */\n columnWidth?: string;\n /** Passo da malha de linha de base. */\n baseline: string;\n};\n\n/**\n * As cinco malhas nomeadas do design.\n *\n * `deskRight` é a malha das telas com painel lateral à direita (colunas\n * ancoradas à direita); `deskCentered` é a malha de conteúdo corrido;\n * `deskMenu` é a faixa estreita do menu lateral.\n */\nexport const grids = {\n deskRight: {\n reference: \"1280px\",\n columns: 11,\n gutter: \"16px\",\n margin: \"18px\",\n columnWidth: \"75px\",\n baseline: \"8px\",\n },\n deskCentered: {\n reference: \"1280px\",\n columns: 14,\n gutter: \"27px\",\n margin: \"70px\",\n columnWidth: \"60px\",\n baseline: \"4px\",\n },\n deskMenu: {\n reference: \"1280px\",\n columns: 4,\n gutter: \"16px\",\n margin: \"16px\",\n columnWidth: \"44px\",\n baseline: \"4px\",\n },\n tablet: {\n reference: \"768px\",\n columns: 8,\n gutter: \"16px\",\n margin: \"16px\",\n baseline: \"4px\",\n },\n mobile: {\n reference: \"360px\",\n columns: 4,\n gutter: \"16px\",\n margin: \"16px\",\n baseline: \"4px\",\n },\n} as const satisfies Record<string, LayoutGrid>;\n\n/**\n * Container padrão.\n *\n * A margem de 70px vem da malha `deskCentered`, que é a usada nas telas de\n * conteúdo. Abaixo de 1280px o design cai para a margem de 16px das malhas\n * de tablet e mobile.\n */\nexport const container = {\n center: true,\n padding: {\n DEFAULT: \"16px\",\n lg: \"70px\",\n },\n screens: {\n xl: \"1440px\",\n },\n} as const;\n\n/**\n * Escala de espaçamento derivada da malha de linha de base.\n *\n * O design usa duas bases: 4px na maioria das telas e 8px na malha\n * `deskRight`. Como 8 é múltiplo de 4, a escala de 4 cobre as duas.\n */\nexport const spacingBase = \"4px\";\n\nexport const grid = {\n screens,\n grids,\n container,\n spacingBase,\n} as const;\n"],"names":["blue","green","red","gray","feedback","dark","subtitle","subtitleLight","alpha","FIGMA_OVERRIDES","colors","lightTheme","darkTheme","lightBrand","darkBrand","radius","radii","theme","fontFamily","typeScale","mediumTracking","h2Medium","typography","shadowGrey","shadowBlue","shadowOutline","backdropBlur","boxShadow","k","v","elevation","screens","grids","container","spacingBase","grid"],"mappings":"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"}