@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
@@ -0,0 +1,347 @@
1
+ /**
2
+ * Paleta primitiva de cores da FracUI.
3
+ *
4
+ * Extraída do Figma "Design System - 2026"
5
+ * (file key `J15QTL7SaxlobMRnPtOimR`, página "↳ Cores").
6
+ *
7
+ * Estas são as cores "cruas" (hex) que alimentam os tokens semânticos em
8
+ * `theme.ts`. Use estas escalas diretamente apenas quando não houver um
9
+ * token semântico equivalente (ex: gráficos, ilustrações, e-mails).
10
+ *
11
+ * Para UI de produto, prefira sempre os tokens semânticos
12
+ * (`primary`, `background`, `destructive`, etc.) expostos via classes do
13
+ * Tailwind (`bg-primary`, `text-muted-foreground`...).
14
+ */
15
+ /** Escala de 5 tons claros (`Shades/` no Figma), do mais claro ao mais escuro. */
16
+ export type ShadeScale = {
17
+ 1: string;
18
+ 2: string;
19
+ 3: string;
20
+ 4: string;
21
+ 5: string;
22
+ };
23
+ /** Trio de cores de um estado de feedback, conforme modelado no Figma. */
24
+ export type FeedbackTone = {
25
+ /** Cor do texto sobre o fundo `bg`. */
26
+ text: string;
27
+ /** Cor de ícones e bordas de destaque. */
28
+ icon: string;
29
+ /** Cor de fundo da superfície do alerta. */
30
+ bg: string;
31
+ };
32
+ /**
33
+ * Azul institucional — `Primary/` + `Shades/Blue` no Figma.
34
+ *
35
+ * `dark` é a cor de marca principal (usada em `--primary` no tema claro);
36
+ * `light` é a variação usada sobre fundos escuros.
37
+ */
38
+ export declare const blue: {
39
+ readonly 1: "#E5F0FF";
40
+ readonly 2: "#CBE0FE";
41
+ readonly 3: "#A5C8FE";
42
+ readonly 4: "#7FB2FE";
43
+ readonly 5: "#5C93E5";
44
+ readonly light: "#3D76CC";
45
+ readonly medium: "#255091";
46
+ readonly dark: "#142C50";
47
+ };
48
+ /**
49
+ * Verde institucional — `Secondary/` + `Shades/Green` no Figma.
50
+ *
51
+ * É a cor de apoio da marca, NÃO o estado de sucesso: para "deu certo",
52
+ * use `feedback.success`.
53
+ */
54
+ export declare const green: {
55
+ readonly 1: "#F4F9ED";
56
+ readonly 2: "#E2F0D1";
57
+ readonly 3: "#D1E7B7";
58
+ readonly 4: "#B9DB92";
59
+ readonly 5: "#A2CF6E";
60
+ readonly light: "#84C03F";
61
+ readonly medium: "#6AA329";
62
+ readonly dark: "#508217";
63
+ };
64
+ /**
65
+ * Escala vermelha de intensidade — conjunto `Tags` no Figma.
66
+ *
67
+ * Usada apenas para graduar a força do El Niño, do mais fraco ao mais
68
+ * forte. Não está na página de cores do arquivo: existe só dentro do
69
+ * conjunto `Tags`, e por isso não tem os cinco passos das outras escalas.
70
+ *
71
+ * A contraparte da La Niña são os quatro primeiros passos de `blue`, que
72
+ * já existiam na paleta — só o lado vermelho precisava ser nomeado.
73
+ */
74
+ export declare const red: {
75
+ readonly 1: "#F9EAEA";
76
+ readonly 2: "#F8CECE";
77
+ readonly 3: "#EAA4A4";
78
+ readonly 4: "#E18282";
79
+ };
80
+ /**
81
+ * Neutros — `Basics/` no Figma.
82
+ *
83
+ * Rampa contínua do branco puro ao quase-preto. `white`/`ice`/`iceMedium`
84
+ * são superfícies; `light`/`lightMedium` são bordas e divisores;
85
+ * `DEFAULT`/`medium`/`mediumDark`/`dark` são níveis de texto.
86
+ */
87
+ export declare const gray: {
88
+ readonly white: "#FFFFFF";
89
+ readonly ice: "#FAFAFA";
90
+ readonly iceMedium: "#F5F5F5";
91
+ readonly light: "#E5E5E5";
92
+ readonly lightMedium: "#BFBFBF";
93
+ readonly DEFAULT: "#999999";
94
+ readonly medium: "#737373";
95
+ readonly mediumDark: "#333333";
96
+ readonly dark: "#202020";
97
+ };
98
+ /**
99
+ * Estados de feedback — `Feedback/` no Figma.
100
+ *
101
+ * Cada família é um matiz em três passos fixos de saturação/luminosidade:
102
+ *
103
+ * | slot | S | L |
104
+ * | ------ | ------ | ------ |
105
+ * | `text` | 82.3% | 22.2% |
106
+ * | `icon` | 58.4% | 52.0% |
107
+ * | `bg` | 100% | 92.5% |
108
+ *
109
+ * `success` é a exceção deliberada: seus tons foram dessaturados à mão no
110
+ * Figma (S≈48%) para não brigar com o verde de marca. Mantido como está.
111
+ *
112
+ * Ver `FIGMA_OVERRIDES` para as divergências resolvidas na extração.
113
+ */
114
+ export declare const feedback: {
115
+ readonly error: {
116
+ readonly text: "#670A1A";
117
+ readonly icon: "#CC3D55";
118
+ readonly bg: "#FFD9DF";
119
+ };
120
+ readonly alert: {
121
+ readonly text: "#672A0A";
122
+ readonly icon: "#CC6D3D";
123
+ readonly bg: "#FFE6D9";
124
+ };
125
+ readonly warning: {
126
+ readonly text: "#67480A";
127
+ readonly icon: "#CC9C3D";
128
+ readonly bg: "#FFF2D9";
129
+ };
130
+ readonly success: {
131
+ readonly text: "#246724";
132
+ readonly icon: "#70CC70";
133
+ readonly bg: "#D9FFD9";
134
+ };
135
+ readonly info: {
136
+ readonly text: "#0A2967";
137
+ readonly icon: "#3D6DCC";
138
+ readonly bg: "#D9E6FF";
139
+ };
140
+ };
141
+ /**
142
+ * Superfícies do tema escuro — página "↳ Light e Dark Mode" no Figma.
143
+ *
144
+ * Não são neutros cinzas: são azuis muito escuros, para casar com o azul
145
+ * de marca. `outline` é a cor de borda/foco sobre esses fundos.
146
+ */
147
+ export declare const dark: {
148
+ readonly bg: "#040814";
149
+ readonly surface: "#090D1B";
150
+ readonly elevated: "#0B1325";
151
+ readonly outline: "#0E3571";
152
+ };
153
+ /**
154
+ * Cores de legenda de mapa — `Subtitle/` no Figma.
155
+ *
156
+ * Paleta categórica para séries e marcadores geoespaciais. Cada cor tem
157
+ * uma variação `light` para estados desabilitados/hover.
158
+ */
159
+ export declare const subtitle: {
160
+ readonly red: "#DA3C36";
161
+ readonly orange: "#D9822B";
162
+ readonly yellow: "#F2F218";
163
+ readonly green: "#4D9966";
164
+ readonly blueLight: "#51CFE3";
165
+ readonly blueMedium: "#2554B2";
166
+ readonly purple: "#634CD9";
167
+ };
168
+ /** Variações claras das cores de legenda — `Subtitle/Light/` no Figma. */
169
+ export declare const subtitleLight: {
170
+ readonly red: "#F27F7A";
171
+ readonly orange: "#FFBF7F";
172
+ readonly yellow: "#FEFF80";
173
+ readonly green: "#98D9AD";
174
+ readonly blueLight: "#99CCFF";
175
+ readonly blueMedium: "#8CB2FF";
176
+ readonly purple: "#9985FF";
177
+ };
178
+ /**
179
+ * Preto com transparência — `Transparency black/` no Figma.
180
+ *
181
+ * Usado em overlays de modal, headers com blur e estados de pressão.
182
+ */
183
+ export declare const alpha: {
184
+ readonly 4: "rgba(0, 0, 0, 0.04)";
185
+ readonly 8: "rgba(0, 0, 0, 0.08)";
186
+ readonly 16: "rgba(0, 0, 0, 0.16)";
187
+ readonly 25: "rgba(0, 0, 0, 0.25)";
188
+ readonly 40: "rgba(0, 0, 0, 0.4)";
189
+ readonly 60: "rgba(0, 0, 0, 0.6)";
190
+ readonly 80: "rgba(0, 0, 0, 0.8)";
191
+ };
192
+ /**
193
+ * Divergências entre o rótulo e o preenchimento real de swatches no Figma,
194
+ * e qual valor esta biblioteca adotou.
195
+ *
196
+ * Documentado aqui para que a próxima extração não "corrija" de volta para
197
+ * o valor errado. Enquanto o Figma não for arrumado, ele e este arquivo
198
+ * discordam nestes pontos — de propósito.
199
+ */
200
+ export declare const FIGMA_OVERRIDES: readonly [{
201
+ readonly swatch: "Basics/Ice";
202
+ readonly figmaFill: "#E5E5E5";
203
+ readonly figmaLabel: "#FAFAFA";
204
+ readonly adopted: "#FAFAFA";
205
+ readonly reason: "o fill duplica Gray Light; o rótulo completa a rampa de neutros";
206
+ }, {
207
+ readonly swatch: "Feedback/Text Alert Orange";
208
+ readonly figmaFill: "#693014";
209
+ readonly figmaLabel: "#0A2967";
210
+ readonly adopted: "#672A0A";
211
+ readonly 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";
212
+ }, {
213
+ readonly swatch: "Feedback/Icon Alert Orange";
214
+ readonly figmaFill: "#DD662B";
215
+ readonly figmaLabel: "#CC6D3D";
216
+ readonly adopted: "#CC6D3D";
217
+ readonly reason: "o rótulo bate exatamente com os passos S/L da família; o fill não";
218
+ }, {
219
+ readonly swatch: "Feedback/BG Alert Orange";
220
+ readonly figmaFill: "#FFD6C1";
221
+ readonly figmaLabel: "#D9E6FF";
222
+ readonly adopted: "#FFE6D9";
223
+ readonly reason: "rótulo é cópia do BG Info Blue; fill está em L87.8% em vez de L92.5%";
224
+ }, {
225
+ readonly swatch: "Subtitle/Blue Medium";
226
+ readonly figmaFill: "#E336B4";
227
+ readonly figmaLabel: "#2554B2";
228
+ readonly adopted: "#2554B2";
229
+ readonly reason: "o fill é magenta, incompatível com o nome da cor";
230
+ }, {
231
+ readonly swatch: "Subtitle/Blue Light";
232
+ readonly figmaFill: "#51CFE3";
233
+ readonly figmaLabel: "#5798D9";
234
+ readonly adopted: "#51CFE3";
235
+ readonly 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";
236
+ }, {
237
+ readonly swatch: "Subtitle/Light/Blue Medium";
238
+ readonly figmaFill: "#8CB2FF";
239
+ readonly figmaLabel: "#8CA9FF";
240
+ readonly adopted: "#8CB2FF";
241
+ readonly reason: "diferença de um passo de matiz; adotado o fill, que é o que renderiza";
242
+ }, {
243
+ readonly swatch: "Subtitle/Light/Yellow";
244
+ readonly figmaFill: "#FEFF80";
245
+ readonly figmaLabel: "#E9E98E";
246
+ readonly adopted: "#FEFF80";
247
+ readonly reason: "adotado o fill; o rótulo é mais dessaturado e não acompanha o resto da família Light";
248
+ }];
249
+ export declare const colors: {
250
+ readonly blue: {
251
+ readonly 1: "#E5F0FF";
252
+ readonly 2: "#CBE0FE";
253
+ readonly 3: "#A5C8FE";
254
+ readonly 4: "#7FB2FE";
255
+ readonly 5: "#5C93E5";
256
+ readonly light: "#3D76CC";
257
+ readonly medium: "#255091";
258
+ readonly dark: "#142C50";
259
+ };
260
+ readonly green: {
261
+ readonly 1: "#F4F9ED";
262
+ readonly 2: "#E2F0D1";
263
+ readonly 3: "#D1E7B7";
264
+ readonly 4: "#B9DB92";
265
+ readonly 5: "#A2CF6E";
266
+ readonly light: "#84C03F";
267
+ readonly medium: "#6AA329";
268
+ readonly dark: "#508217";
269
+ };
270
+ readonly red: {
271
+ readonly 1: "#F9EAEA";
272
+ readonly 2: "#F8CECE";
273
+ readonly 3: "#EAA4A4";
274
+ readonly 4: "#E18282";
275
+ };
276
+ readonly gray: {
277
+ readonly white: "#FFFFFF";
278
+ readonly ice: "#FAFAFA";
279
+ readonly iceMedium: "#F5F5F5";
280
+ readonly light: "#E5E5E5";
281
+ readonly lightMedium: "#BFBFBF";
282
+ readonly DEFAULT: "#999999";
283
+ readonly medium: "#737373";
284
+ readonly mediumDark: "#333333";
285
+ readonly dark: "#202020";
286
+ };
287
+ readonly feedback: {
288
+ readonly error: {
289
+ readonly text: "#670A1A";
290
+ readonly icon: "#CC3D55";
291
+ readonly bg: "#FFD9DF";
292
+ };
293
+ readonly alert: {
294
+ readonly text: "#672A0A";
295
+ readonly icon: "#CC6D3D";
296
+ readonly bg: "#FFE6D9";
297
+ };
298
+ readonly warning: {
299
+ readonly text: "#67480A";
300
+ readonly icon: "#CC9C3D";
301
+ readonly bg: "#FFF2D9";
302
+ };
303
+ readonly success: {
304
+ readonly text: "#246724";
305
+ readonly icon: "#70CC70";
306
+ readonly bg: "#D9FFD9";
307
+ };
308
+ readonly info: {
309
+ readonly text: "#0A2967";
310
+ readonly icon: "#3D6DCC";
311
+ readonly bg: "#D9E6FF";
312
+ };
313
+ };
314
+ readonly dark: {
315
+ readonly bg: "#040814";
316
+ readonly surface: "#090D1B";
317
+ readonly elevated: "#0B1325";
318
+ readonly outline: "#0E3571";
319
+ };
320
+ readonly subtitle: {
321
+ readonly red: "#DA3C36";
322
+ readonly orange: "#D9822B";
323
+ readonly yellow: "#F2F218";
324
+ readonly green: "#4D9966";
325
+ readonly blueLight: "#51CFE3";
326
+ readonly blueMedium: "#2554B2";
327
+ readonly purple: "#634CD9";
328
+ };
329
+ readonly subtitleLight: {
330
+ readonly red: "#F27F7A";
331
+ readonly orange: "#FFBF7F";
332
+ readonly yellow: "#FEFF80";
333
+ readonly green: "#98D9AD";
334
+ readonly blueLight: "#99CCFF";
335
+ readonly blueMedium: "#8CB2FF";
336
+ readonly purple: "#9985FF";
337
+ };
338
+ readonly alpha: {
339
+ readonly 4: "rgba(0, 0, 0, 0.04)";
340
+ readonly 8: "rgba(0, 0, 0, 0.08)";
341
+ readonly 16: "rgba(0, 0, 0, 0.16)";
342
+ readonly 25: "rgba(0, 0, 0, 0.25)";
343
+ readonly 40: "rgba(0, 0, 0, 0.4)";
344
+ readonly 60: "rgba(0, 0, 0, 0.6)";
345
+ readonly 80: "rgba(0, 0, 0, 0.8)";
346
+ };
347
+ };
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Sistema de elevação da FracUI.
3
+ *
4
+ * Extraído dos 20 estilos de efeito do Figma "Design System - 2026"
5
+ * (página "↳ Sombras e Blur").
6
+ *
7
+ * O sistema tem dois eixos:
8
+ *
9
+ * - **direção**: `down` / `up` / `left` / `right` — a sombra é projetada
10
+ * para o lado indicado, e não apenas para baixo. Usado para destacar
11
+ * sidebars (`right`), barras fixas de rodapé (`up`) e drawers (`left`).
12
+ * - **intensidade**: `1` / `4` / `8` dp, seguindo a escala do Material.
13
+ *
14
+ * Cada nível é uma tripla de sombras (contato, difusa, ambiente) — não
15
+ * simplifique para uma só: o degradê entre as três é o que dá a
16
+ * profundidade.
17
+ */
18
+ /** Sombras neutras — `Grey/` no Figma. */
19
+ export declare const shadowGrey: {
20
+ readonly "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)";
21
+ readonly "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)";
22
+ readonly "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)";
23
+ readonly "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)";
24
+ readonly "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)";
25
+ readonly "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)";
26
+ readonly "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)";
27
+ readonly "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)";
28
+ readonly "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)";
29
+ readonly "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)";
30
+ };
31
+ /**
32
+ * Sombras azuis — `azul/` no Figma.
33
+ *
34
+ * Tingidas com o azul de marca (`#3D76CC` nas laterais, `#142C50` nas
35
+ * centralizadas). Usadas em superfícies que ficam sobre fundo azul, onde
36
+ * a sombra neutra cinza parece suja.
37
+ */
38
+ export declare const shadowBlue: {
39
+ readonly "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)";
40
+ readonly "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)";
41
+ readonly "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)";
42
+ readonly "center-1": "0px 1px 0.5px rgba(20, 44, 80, 0.02)";
43
+ readonly "center-2": "2px 2px 4.5px rgba(20, 44, 80, 0.08), -2px -2px 4.5px rgba(20, 44, 80, 0.08)";
44
+ readonly "center-2-dark": "2px 2px 4.5px rgba(20, 44, 80, 0.40), -2px -2px 4.5px rgba(20, 44, 80, 0.40)";
45
+ };
46
+ /** Sombra de contorno sutil — `Sombras/shadow-Elemento4` no Figma. */
47
+ export declare const shadowOutline = "0px 0px 2px rgba(36, 36, 36, 0.10)";
48
+ /**
49
+ * Desfoque de fundo dos headers e overlays "glass" — `Glass blur` no
50
+ * Figma. Aplique junto de um fundo semitransparente (ver `colors.alpha`).
51
+ */
52
+ export declare const backdropBlur: {
53
+ readonly glass: "13.2px";
54
+ };
55
+ /**
56
+ * Mapa achatado consumido pelo preset como `theme.extend.boxShadow`.
57
+ *
58
+ * Gera `shadow-down-1`, `shadow-blue-right-4`, `shadow-outline`, etc.
59
+ */
60
+ export declare const boxShadow: Record<string, string>;
61
+ export declare const elevation: {
62
+ readonly shadowGrey: {
63
+ readonly "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)";
64
+ readonly "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)";
65
+ readonly "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)";
66
+ readonly "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)";
67
+ readonly "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)";
68
+ readonly "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)";
69
+ readonly "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)";
70
+ readonly "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)";
71
+ readonly "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)";
72
+ readonly "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)";
73
+ };
74
+ readonly shadowBlue: {
75
+ readonly "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)";
76
+ readonly "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)";
77
+ readonly "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)";
78
+ readonly "center-1": "0px 1px 0.5px rgba(20, 44, 80, 0.02)";
79
+ readonly "center-2": "2px 2px 4.5px rgba(20, 44, 80, 0.08), -2px -2px 4.5px rgba(20, 44, 80, 0.08)";
80
+ readonly "center-2-dark": "2px 2px 4.5px rgba(20, 44, 80, 0.40), -2px -2px 4.5px rgba(20, 44, 80, 0.40)";
81
+ };
82
+ readonly shadowOutline: "0px 0px 2px rgba(36, 36, 36, 0.10)";
83
+ readonly backdropBlur: {
84
+ readonly glass: "13.2px";
85
+ };
86
+ readonly boxShadow: Record<string, string>;
87
+ };
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Malha e breakpoints da FracUI.
3
+ *
4
+ * Extraídos dos 6 estilos de grid do Figma "Design System - 2026"
5
+ * (página "↳ Grid"), lidos dos `layoutGrids` dos frames de exemplo.
6
+ *
7
+ * O design define três larguras de referência — 360, 768 e 1280 — e três
8
+ * malhas distintas para desktop, escolhidas pelo tipo de tela e não pelo
9
+ * tamanho. Não são breakpoints alternativos: são layouts diferentes na
10
+ * mesma largura.
11
+ */
12
+ /**
13
+ * Breakpoints adicionados à escala padrão do Tailwind.
14
+ *
15
+ * As três larguras de referência do design já coincidem com breakpoints
16
+ * padrão, então não há motivo para substituir a escala inteira:
17
+ *
18
+ * | Design | Largura | Tailwind |
19
+ * | ----------------- | ------- | -------- |
20
+ * | mobile | 360px | `xs` ⬅ adicionado |
21
+ * | tablet | 768px | `md` (já é 768) |
22
+ * | desktop | 1280px | `xl` (já é 1280) |
23
+ *
24
+ * Só `xs` é novo. Substituir a escala quebraria `sm:` e `lg:`, usados nos
25
+ * componentes existentes, sem ganho de fidelidade — por isso este objeto
26
+ * entra em `theme.extend.screens`, e não em `theme.screens`.
27
+ */
28
+ export declare const screens: {
29
+ readonly xs: "360px";
30
+ };
31
+ export type LayoutGrid = {
32
+ /** Largura do frame em que a malha foi especificada. */
33
+ reference: string;
34
+ columns: number;
35
+ /** Espaço entre colunas. */
36
+ gutter: string;
37
+ /** Margem nas laterais do container. */
38
+ margin: string;
39
+ /** Largura de coluna fixa, quando o design não usa colunas fluidas. */
40
+ columnWidth?: string;
41
+ /** Passo da malha de linha de base. */
42
+ baseline: string;
43
+ };
44
+ /**
45
+ * As cinco malhas nomeadas do design.
46
+ *
47
+ * `deskRight` é a malha das telas com painel lateral à direita (colunas
48
+ * ancoradas à direita); `deskCentered` é a malha de conteúdo corrido;
49
+ * `deskMenu` é a faixa estreita do menu lateral.
50
+ */
51
+ export declare const grids: {
52
+ readonly deskRight: {
53
+ readonly reference: "1280px";
54
+ readonly columns: 11;
55
+ readonly gutter: "16px";
56
+ readonly margin: "18px";
57
+ readonly columnWidth: "75px";
58
+ readonly baseline: "8px";
59
+ };
60
+ readonly deskCentered: {
61
+ readonly reference: "1280px";
62
+ readonly columns: 14;
63
+ readonly gutter: "27px";
64
+ readonly margin: "70px";
65
+ readonly columnWidth: "60px";
66
+ readonly baseline: "4px";
67
+ };
68
+ readonly deskMenu: {
69
+ readonly reference: "1280px";
70
+ readonly columns: 4;
71
+ readonly gutter: "16px";
72
+ readonly margin: "16px";
73
+ readonly columnWidth: "44px";
74
+ readonly baseline: "4px";
75
+ };
76
+ readonly tablet: {
77
+ readonly reference: "768px";
78
+ readonly columns: 8;
79
+ readonly gutter: "16px";
80
+ readonly margin: "16px";
81
+ readonly baseline: "4px";
82
+ };
83
+ readonly mobile: {
84
+ readonly reference: "360px";
85
+ readonly columns: 4;
86
+ readonly gutter: "16px";
87
+ readonly margin: "16px";
88
+ readonly baseline: "4px";
89
+ };
90
+ };
91
+ /**
92
+ * Container padrão.
93
+ *
94
+ * A margem de 70px vem da malha `deskCentered`, que é a usada nas telas de
95
+ * conteúdo. Abaixo de 1280px o design cai para a margem de 16px das malhas
96
+ * de tablet e mobile.
97
+ */
98
+ export declare const container: {
99
+ readonly center: true;
100
+ readonly padding: {
101
+ readonly DEFAULT: "16px";
102
+ readonly lg: "70px";
103
+ };
104
+ readonly screens: {
105
+ readonly xl: "1440px";
106
+ };
107
+ };
108
+ /**
109
+ * Escala de espaçamento derivada da malha de linha de base.
110
+ *
111
+ * O design usa duas bases: 4px na maioria das telas e 8px na malha
112
+ * `deskRight`. Como 8 é múltiplo de 4, a escala de 4 cobre as duas.
113
+ */
114
+ export declare const spacingBase = "4px";
115
+ export declare const grid: {
116
+ readonly screens: {
117
+ readonly xs: "360px";
118
+ };
119
+ readonly grids: {
120
+ readonly deskRight: {
121
+ readonly reference: "1280px";
122
+ readonly columns: 11;
123
+ readonly gutter: "16px";
124
+ readonly margin: "18px";
125
+ readonly columnWidth: "75px";
126
+ readonly baseline: "8px";
127
+ };
128
+ readonly deskCentered: {
129
+ readonly reference: "1280px";
130
+ readonly columns: 14;
131
+ readonly gutter: "27px";
132
+ readonly margin: "70px";
133
+ readonly columnWidth: "60px";
134
+ readonly baseline: "4px";
135
+ };
136
+ readonly deskMenu: {
137
+ readonly reference: "1280px";
138
+ readonly columns: 4;
139
+ readonly gutter: "16px";
140
+ readonly margin: "16px";
141
+ readonly columnWidth: "44px";
142
+ readonly baseline: "4px";
143
+ };
144
+ readonly tablet: {
145
+ readonly reference: "768px";
146
+ readonly columns: 8;
147
+ readonly gutter: "16px";
148
+ readonly margin: "16px";
149
+ readonly baseline: "4px";
150
+ };
151
+ readonly mobile: {
152
+ readonly reference: "360px";
153
+ readonly columns: 4;
154
+ readonly gutter: "16px";
155
+ readonly margin: "16px";
156
+ readonly baseline: "4px";
157
+ };
158
+ };
159
+ readonly container: {
160
+ readonly center: true;
161
+ readonly padding: {
162
+ readonly DEFAULT: "16px";
163
+ readonly lg: "70px";
164
+ };
165
+ readonly screens: {
166
+ readonly xl: "1440px";
167
+ };
168
+ };
169
+ readonly spacingBase: "4px";
170
+ };
@@ -0,0 +1,5 @@
1
+ export * from './colors';
2
+ export * from './theme';
3
+ export * from './grid';
4
+ export * from './typography';
5
+ export * from './elevation';