ads-nuxt 0.1.1 → 0.1.2

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 (74) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +567 -546
  3. package/app/app.config.ts +25 -25
  4. package/app/assets/ads/checkbox-check.svg +5 -5
  5. package/app/assets/ads/checkbox-minus.svg +5 -5
  6. package/app/assets/brand/farmarcas.svg +6 -6
  7. package/app/assets/brand/radar.svg +9 -9
  8. package/app/assets/css/component-tokens.css +403 -403
  9. package/app/assets/css/main.css +617 -617
  10. package/app/components/AdsBadge.vue +48 -48
  11. package/app/components/AdsBroadcast.vue +45 -45
  12. package/app/components/AdsButton.vue +569 -569
  13. package/app/components/AdsButtonGroup.vue +39 -39
  14. package/app/components/AdsButtonMenu.vue +48 -48
  15. package/app/components/AdsCard.vue +117 -117
  16. package/app/components/AdsCharttip.vue +78 -78
  17. package/app/components/AdsCheckbox.vue +77 -77
  18. package/app/components/AdsDatePicker.vue +473 -473
  19. package/app/components/AdsDropdownMenu.vue +19 -19
  20. package/app/components/AdsEmptyState.vue +58 -58
  21. package/app/components/AdsFarmarcasPill.vue +74 -74
  22. package/app/components/AdsFeatureCard.vue +217 -217
  23. package/app/components/AdsFileCard.vue +101 -101
  24. package/app/components/AdsFilterDropdown.vue +174 -174
  25. package/app/components/AdsFilterOption.vue +72 -72
  26. package/app/components/AdsFilterSelect.vue +202 -202
  27. package/app/components/AdsFooter.vue +25 -25
  28. package/app/components/AdsInput.vue +143 -143
  29. package/app/components/AdsListDropdown.vue +44 -44
  30. package/app/components/AdsLoading.vue +109 -109
  31. package/app/components/AdsMenuBar.vue +103 -103
  32. package/app/components/AdsMetricCard.vue +119 -119
  33. package/app/components/AdsMiniPill.vue +40 -40
  34. package/app/components/AdsModal.vue +157 -157
  35. package/app/components/AdsMonthPicker.vue +80 -80
  36. package/app/components/AdsNavbarApp.vue +67 -67
  37. package/app/components/AdsNavbarDesk.vue +62 -62
  38. package/app/components/AdsNotabilityPill.vue +27 -27
  39. package/app/components/AdsNumberInput.vue +166 -166
  40. package/app/components/AdsPagination.vue +91 -91
  41. package/app/components/AdsProductTag.vue +61 -61
  42. package/app/components/AdsRadio.vue +70 -70
  43. package/app/components/AdsSearchInput.vue +113 -113
  44. package/app/components/AdsSegmentedTabs.vue +28 -28
  45. package/app/components/AdsSideMenu.vue +101 -101
  46. package/app/components/AdsSmalltip.vue +44 -44
  47. package/app/components/AdsSteptip.vue +101 -101
  48. package/app/components/AdsSwitch.vue +59 -59
  49. package/app/components/AdsTable.vue +100 -100
  50. package/app/components/AdsTableToolbar.vue +44 -44
  51. package/app/components/AdsTabs.vue +51 -51
  52. package/app/components/AdsTextarea.vue +109 -109
  53. package/app/components/AdsToast.vue +181 -181
  54. package/app/components/AdsTooltip.vue +66 -66
  55. package/app/components/InvertedTooltip.vue +40 -40
  56. package/app/components/OverlayLoading.vue +173 -173
  57. package/app/components/ProgressBarLoading.vue +256 -256
  58. package/app/composables/useOverlayLoading.ts +66 -66
  59. package/app/locale/pt-br.ts +6 -6
  60. package/app/plugins/ads-toast.client.ts +24 -24
  61. package/app/theme/ads-theme.ts +370 -370
  62. package/app/theme/component-tokens.json +402 -402
  63. package/app/theme/component-tokens.ts +815 -815
  64. package/app/types/overlay-loading.types.ts +26 -26
  65. package/app/utils/ads-filter-select.ts +172 -172
  66. package/app/utils/ads-table.ts +204 -204
  67. package/app/utils/calendar-date.ts +128 -128
  68. package/app/utils/category-role.ts +45 -45
  69. package/app/utils/money.ts +77 -77
  70. package/app/utils/notability.ts +8 -8
  71. package/app/utils/parser.ts +134 -134
  72. package/app/utils/percentage.ts +54 -54
  73. package/nuxt.config.ts +31 -32
  74. package/package.json +48 -46
@@ -1,617 +1,617 @@
1
- @import "tailwindcss";
2
- @import "@nuxt/ui";
3
- @import "./component-tokens.css";
4
- @import "./ads-colors.css";
5
-
6
- @theme default {
7
- --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
8
- --radius-sm: 0.25rem;
9
- --radius-md: 0.5rem;
10
-
11
- /* Primary RP-25 … RP-800. 300 = RP-200. 700+ repetem RP-800. */
12
- --color-primary: #006ff7;
13
- --color-primary-50: #e4f2ff;
14
- --color-primary-100: #c7e4ff;
15
- --color-primary-200: #89c9ff;
16
- --color-primary-300: #50b3ff;
17
- --color-primary-400: #0091ff;
18
- --color-primary-500: #006ff7;
19
- --color-primary-600: #074ac6;
20
- --color-primary-700: #00389e;
21
- --color-primary-800: #00389e;
22
- --color-primary-900: #00389e;
23
- --color-primary-950: #00389e;
24
-
25
- /* Secondary segue a escala do Radar Pricing. */
26
- --color-secondary: #006ff7;
27
- --color-secondary-50: #e4f2ff;
28
- --color-secondary-100: #c7e4ff;
29
- --color-secondary-200: #89c9ff;
30
- --color-secondary-300: #50b3ff;
31
- --color-secondary-400: #0091ff;
32
- --color-secondary-500: #006ff7;
33
- --color-secondary-600: #074ac6;
34
- --color-secondary-700: #00389e;
35
- --color-secondary-800: #00389e;
36
- --color-secondary-900: #00389e;
37
- --color-secondary-950: #00389e;
38
-
39
- /* Success SU. */
40
- --color-success: #15c57e;
41
- --color-success-50: #c3ffe6;
42
- --color-success-100: #c3ffe6;
43
- --color-success-200: #7fffcb;
44
- --color-success-300: #32feaa;
45
- --color-success-400: #06eb8f;
46
- --color-success-500: #15c57e;
47
- --color-success-600: #1c9f6a;
48
- --color-success-700: #157850;
49
- --color-success-800: #0e5a3b;
50
- --color-success-900: #0e5a3b;
51
- --color-success-950: #0e5a3b;
52
-
53
- /* Info OP. */
54
- --color-info: #05b4d8;
55
- --color-info-50: #c4f5ff;
56
- --color-info-100: #c4f5ff;
57
- --color-info-200: #79e9ff;
58
- --color-info-300: #49d8f4;
59
- --color-info-400: #04c8ef;
60
- --color-info-500: #05b4d8;
61
- --color-info-600: #01a0bf;
62
- --color-info-700: #007a93;
63
- --color-info-800: #006478;
64
- --color-info-900: #006478;
65
- --color-info-950: #006478;
66
-
67
- /* Warning AT (âmbar). O grupo WA do Figma é vermelho e alimenta error. */
68
- --color-warning: #e9a700;
69
- --color-warning-50: #ffe7b9;
70
- --color-warning-100: #ffe7b9;
71
- --color-warning-200: #ffdc82;
72
- --color-warning-300: #ffca43;
73
- --color-warning-400: #ffb905;
74
- --color-warning-500: #e9a700;
75
- --color-warning-600: #ce9300;
76
- --color-warning-700: #ad7b00;
77
- --color-warning-800: #8f6600;
78
- --color-warning-900: #8f6600;
79
- --color-warning-950: #8f6600;
80
-
81
- /* Error WA. 500 = WA-300 #ff507a, borda de input. */
82
- --color-error: #ff507a;
83
- --color-error-50: #ffbdcd;
84
- --color-error-100: #ffbdcd;
85
- --color-error-200: #ff87a4;
86
- --color-error-300: #ff507a;
87
- --color-error-400: #ff507a;
88
- --color-error-500: #ff507a;
89
- --color-error-600: #ef164a;
90
- --color-error-700: #dc0034;
91
- --color-error-800: #c0012e;
92
- --color-error-900: #9e062a;
93
- --color-error-950: #840221;
94
-
95
- /* Neutral LI / MI / DA. */
96
- --color-neutral-50: #fafbfc;
97
- --color-neutral-100: #f0f3f6;
98
- --color-neutral-200: #e5e8eb;
99
- --color-neutral-300: #c1c7d0;
100
- --color-neutral-400: #a5adba;
101
- --color-neutral-500: #8993a4;
102
- --color-neutral-600: #6b778c;
103
- --color-neutral-700: #505f79;
104
- --color-neutral-800: #344563;
105
- --color-neutral-900: #172b4d;
106
- --color-neutral-950: #061938;
107
- }
108
-
109
- /* 🔗 Mapeamento para os componentes Nuxt UI */
110
- :root {
111
- /* Spacing ADS ($spacing-quark … $spacing-xxl). Fora do @theme para não trocar o xs/sm/md do Nuxt UI. */
112
- --ads-space-quark: 4px;
113
- --ads-space-nano: 8px;
114
- --ads-space-xxxs: 12px;
115
- --ads-space-xxs: 16px;
116
- --ads-space-xs: 24px;
117
- --ads-space-sm: 32px;
118
- --ads-space-rg: 40px;
119
- --ads-space-md: 48px;
120
- --ads-space-lg: 56px;
121
- --ads-space-xl: 64px;
122
- --ads-space-xxl: 80px;
123
- --ads-space-xxxl: 120px;
124
- --ads-space-huge: 160px;
125
- --ads-space-giant: 200px;
126
-
127
- --ads-font-family: "Inter", ui-sans-serif, system-ui, sans-serif;
128
- --ads-font-size-minimal: 10px;
129
- --ads-font-size-xxxs: 12px;
130
- --ads-font-size-xxs: 14px;
131
- --ads-font-size-xs: 16px;
132
- --ads-font-size-sm: 18px;
133
- --ads-font-size-rg: 20px;
134
- --ads-font-size-md: 24px;
135
- --ads-font-size-lg: 32px;
136
- --ads-font-weight-light: 300;
137
- --ads-font-weight-regular: 400;
138
- --ads-font-weight-medium: 500;
139
- --ads-font-weight-bold: 700;
140
- --ads-font-weight-extrabold: 800;
141
- --ads-line-height-default: 100%;
142
- --ads-line-height-sm: 120%;
143
- --ads-line-height-md: 140%;
144
- --ads-line-height-lg: 160%;
145
-
146
- --ads-radius-none: 0px;
147
- --ads-radius-xsm: 4px;
148
- --ads-radius-sm: 8px;
149
- --ads-radius-md: 12px;
150
- --ads-radius-lg: 16px;
151
- --ads-radius-pill: 500px;
152
- --ads-radius-xlg: 24px;
153
- --ads-radius-circular: 50%;
154
- --ads-border-width-none: 0px;
155
- --ads-border-width-hairline: 1px;
156
- --ads-border-width-slim: 1.5px;
157
- --ads-border-width-thin: 2px;
158
- --ads-border-width-thick: 4px;
159
- --ads-border-width-heavy: 8px;
160
-
161
- --ads-shadow-none: none;
162
- --ads-shadow-level-1: 0 2px 8px rgb(0 0 0 / 16%);
163
- --ads-shadow-level-2: 0 4px 24px rgb(0 0 0 / 16%);
164
- --ads-shadow-level-3: 0 8px 32px rgb(0 0 0 / 16%);
165
- --ads-shadow-level-4: 0 12px 48px rgb(0 0 0 / 24%);
166
- --ads-opacity-intense: 75%;
167
- --ads-opacity-medium: 50%;
168
- --ads-opacity-light: 25%;
169
- --ads-blur-default: 4px;
170
-
171
- /* Semantic — Default.tokens.json */
172
- --ads-surface-main: #fafbfc;
173
- --ads-surface-card: #ffffff;
174
- --ads-surface-brand: #006ff7;
175
- --ads-text-primary: #061938;
176
- --ads-text-secondary: #505f79;
177
- --ads-text-tertiary: #a5adba;
178
- --ads-text-brand: #006ff7;
179
- --ads-text-disabled: #89c9ff;
180
- --ads-text-contrast: #ffffff;
181
- --ads-border-subtle: #e5e8eb;
182
- --ads-border-focused: #6b778c;
183
- --ads-border-icon: #42526e;
184
- --ads-border-icon-support: #7a869a;
185
- --ads-status-success-800: #0e5a3b;
186
- --ads-status-success-500: #15c57e;
187
- --ads-status-success-100: #c3ffe6;
188
- --ads-status-warning-800: #840221;
189
- --ads-status-warning-500: #dc0034;
190
- --ads-status-warning-100: #ffbdcd;
191
- --ads-status-attention-800: #8f6600;
192
- --ads-status-attention-500: #e9a700;
193
- --ads-status-attention-100: #ffe7b9;
194
- --ads-status-new-800: #006478;
195
- --ads-status-new-500: #05b4d8;
196
- --ads-status-new-100: #c4f5ff;
197
- --ads-status-void-800: #0e1013;
198
- --ads-status-void-500: #556171;
199
- --ads-status-void-100: #cfdef3;
200
- --ads-status-innovation-800: #3c287c;
201
- --ads-status-innovation-500: #7349ff;
202
- --ads-status-innovation-100: #cabaff;
203
- /* Degraus intermediários de ads-tokens.ts. O AdsButton usa no hover, pressed e disabled. */
204
- --ads-status-success-200: #7fffcb;
205
- --ads-status-success-300: #32feaa;
206
- --ads-status-success-400: #06eb8f;
207
- --ads-status-success-600: #1c9f6a;
208
- --ads-status-success-700: #157850;
209
- --ads-status-warning-200: #ff87a4;
210
- --ads-status-warning-300: #ff507a;
211
- --ads-status-warning-400: #ef164a;
212
- --ads-status-warning-600: #c0012e;
213
- --ads-status-warning-700: #9e062a;
214
- --ads-status-attention-200: #ffdc82;
215
- --ads-status-attention-300: #ffca43;
216
- --ads-status-attention-400: #ffb905;
217
- --ads-status-attention-600: #ce9300;
218
- --ads-status-attention-700: #ad7b00;
219
- --ads-status-new-200: #79e9ff;
220
- --ads-status-new-300: #49d8f4;
221
- --ads-status-new-400: #04c8ef;
222
- --ads-status-new-600: #01a0bf;
223
- --ads-status-new-700: #007a93;
224
- --ads-status-void-200: #b4c5df;
225
- --ads-status-void-300: #91a2bb;
226
- --ads-status-void-400: #738298;
227
- --ads-status-void-600: #3c434e;
228
- --ads-status-void-700: #282c34;
229
- --ads-status-innovation-200: #b19aff;
230
- --ads-status-innovation-300: #9e80ff;
231
- --ads-status-innovation-400: #825cff;
232
- --ads-status-innovation-600: #613dda;
233
- --ads-status-innovation-700: #4c30a8;
234
- --ads-chart-data-1-800: #76197e;
235
- --ads-chart-data-1-400: #e837f9;
236
- --ads-chart-data-1-100: #f8b4ff;
237
- --ads-chart-data-2-800: #3c287c;
238
- --ads-chart-data-2-500: #7349ff;
239
- --ads-chart-data-2-100: #cabaff;
240
- --ads-chart-data-3-800: #983a3a;
241
- --ads-chart-data-3-400: #f76565;
242
- --ads-chart-data-3-100: #ffb0b0;
243
- --ads-chart-data-4-800: #115825;
244
- --ads-chart-data-4-500: #24ab4a;
245
- --ads-chart-data-4-100: #b6ffca;
246
- --ads-chart-data-5-800: #252c41;
247
- --ads-chart-data-5-400: #677bb6;
248
- --ads-chart-data-5-100: #a2baff;
249
- /* MI-60. Borda do select desabilitado; o arquivo semântico não nomeia esse passo. */
250
- --ads-neutral-mid-60: #b3bac5;
251
-
252
- /* Degraus que o compilador do tema descarta quando o hex se repete. */
253
- --color-primary-950: #00389e;
254
- --color-secondary-50: #e4f2ff;
255
- --color-secondary-100: #c7e4ff;
256
- --color-secondary-200: #89c9ff;
257
- --color-secondary-300: #50b3ff;
258
- --color-secondary-400: #0091ff;
259
- --color-secondary-600: #074ac6;
260
- --color-secondary-700: #00389e;
261
- --color-secondary-800: #00389e;
262
- --color-secondary-900: #00389e;
263
- --color-secondary-950: #00389e;
264
- --color-info-50: #c4f5ff;
265
- --color-info-100: #c4f5ff;
266
- --color-info-200: #79e9ff;
267
- --color-info-300: #49d8f4;
268
- --color-info-400: #04c8ef;
269
- --color-info-600: #01a0bf;
270
- --color-info-700: #007a93;
271
- --color-info-800: #006478;
272
- --color-info-900: #006478;
273
- --color-info-950: #006478;
274
- --color-warning-200: #ffdc82;
275
- --color-warning-300: #ffca43;
276
- --color-warning-900: #8f6600;
277
- --color-warning-950: #8f6600;
278
- --color-error-300: #ff507a;
279
- --color-error-400: #ff507a;
280
- --color-error-900: #9e062a;
281
- --color-error-950: #840221;
282
- --color-neutral-950: #061938;
283
-
284
- --ui-radius: 0.5rem;
285
- --ui-primary: var(--color-primary-500);
286
- --ui-secondary: var(--color-secondary-500);
287
- --ui-warning: var(--color-warning);
288
- --ui-error: var(--color-error-500);
289
- --ui-info: var(--color-info-500);
290
- --ui-neutral: var(--color-neutral-500);
291
- --ui-text: var(--color-neutral-700);
292
-
293
- --ui-success: var(--color-success-500);
294
- --ui-success-50: var(--color-success-50);
295
- --ui-success-100: var(--color-success-100);
296
- --ui-success-200: var(--color-success-200);
297
- --ui-success-300: var(--color-success-300);
298
- --ui-success-400: var(--color-success-400);
299
- --ui-success-500: var(--color-success-500);
300
- --ui-success-600: var(--color-success-600);
301
- --ui-success-700: var(--color-success-700);
302
- --ui-success-800: var(--color-success-800);
303
- --ui-success-900: var(--color-success-900);
304
- --ui-success-950: var(--color-success-950);
305
- }
306
-
307
- /**
308
- * Scrollbars alinhados ao tema (primary + neutral).
309
- * Firefox: scrollbar-width / scrollbar-color. WebKit: pseudo-elementos.
310
- */
311
- @layer components {
312
- .app-scrollbar-y {
313
- scrollbar-gutter: stable;
314
- scrollbar-width: thin;
315
- scrollbar-color: var(--color-primary-500) var(--color-neutral-100);
316
- }
317
-
318
- .app-scrollbar-y::-webkit-scrollbar {
319
- width: 0.5rem;
320
- }
321
-
322
- .app-scrollbar-y::-webkit-scrollbar-track {
323
- background: var(--color-neutral-100);
324
- border-radius: 9999px;
325
- }
326
-
327
- .app-scrollbar-y::-webkit-scrollbar-thumb {
328
- background: var(--color-primary-500);
329
- border-radius: 9999px;
330
- border: 2px solid var(--color-neutral-100);
331
- }
332
-
333
- .app-scrollbar-y::-webkit-scrollbar-thumb:hover {
334
- background: var(--color-primary-600);
335
- }
336
-
337
- .app-scrollbar-x {
338
- scrollbar-width: thin;
339
- scrollbar-color: var(--color-primary-500) var(--color-neutral-100);
340
- }
341
-
342
- .app-scrollbar-x::-webkit-scrollbar {
343
- height: 0.5rem;
344
- }
345
-
346
- .app-scrollbar-x::-webkit-scrollbar-track {
347
- background: var(--color-neutral-100);
348
- border-radius: 9999px;
349
- }
350
-
351
- .app-scrollbar-x::-webkit-scrollbar-thumb {
352
- background: var(--color-primary-500);
353
- border-radius: 9999px;
354
- border: 2px solid var(--color-neutral-100);
355
- }
356
-
357
- .app-scrollbar-x::-webkit-scrollbar-thumb:hover {
358
- background: var(--color-primary-600);
359
- }
360
-
361
- .app-scrollbar-y.app-scrollbar-x::-webkit-scrollbar-corner {
362
- background: var(--color-neutral-100);
363
- }
364
- }
365
-
366
- /* Estados do botão filled ADS. Especificidade acima de hover:bg-primary/75. */
367
- @layer utilities {
368
- .bg-primary:hover:not(:disabled):not([aria-disabled="true"]) {
369
- background-color: var(--color-primary-600);
370
- }
371
-
372
- .bg-primary:active:not(:disabled):not([aria-disabled="true"]) {
373
- background-color: var(--color-primary-700);
374
- }
375
-
376
- .bg-primary:disabled,
377
- .bg-primary[aria-disabled="true"] {
378
- background-color: var(--color-primary-200);
379
- opacity: 1;
380
- }
381
-
382
- /**
383
- * Date picker ADS. Especificidade acima de data-[selected]:bg-primary
384
- * e do ring do variant outline (data-[selected]:ring).
385
- * Cap: primary-500 + branco. Meio: primary-100 + texto primary-500.
386
- * Cada dia fica arredondado, sem faixa contínua e sem borda no selecionado.
387
- */
388
- .ads-date-range-panel .ads-date-picker > [data-slot="header"] {
389
- display: none;
390
- }
391
-
392
- .ads-date-range-panel .ads-date-picker [data-slot="body"] {
393
- padding-top: 0;
394
- }
395
-
396
- .ads-date-range-panel
397
- .ads-date-picker
398
- [data-slot="cellTrigger"][data-outside-view] {
399
- pointer-events: none;
400
- }
401
-
402
- .ads-date-picker [data-slot="headCell"] {
403
- color: var(--color-neutral-500);
404
- font-size: 0.75rem;
405
- font-weight: 500;
406
- }
407
-
408
- .ads-date-picker [data-slot="cellTrigger"][data-outside-view] {
409
- color: var(--color-neutral-300);
410
- }
411
-
412
- .ads-date-picker
413
- [data-slot="gridRow"]
414
- > [data-slot="cell"]:first-child
415
- [data-slot="cellTrigger"]:not([data-selected]):not([data-outside-view]),
416
- .ads-date-picker
417
- [data-slot="gridRow"]
418
- > [data-slot="cell"]:last-child
419
- [data-slot="cellTrigger"]:not([data-selected]):not([data-outside-view]) {
420
- color: var(--color-primary-400);
421
- }
422
-
423
- .ads-date-picker [data-slot="cellTrigger"] {
424
- border-radius: 0.375rem;
425
- }
426
-
427
- .ads-date-picker [data-slot="cellTrigger"][data-selected],
428
- .ads-date-picker [data-slot="cellTrigger"][data-highlighted],
429
- .ads-date-picker [data-slot="cellTrigger"][data-selection-start],
430
- .ads-date-picker [data-slot="cellTrigger"][data-selection-end] {
431
- box-shadow: none;
432
- }
433
-
434
- .ads-date-picker [data-slot="cellTrigger"][data-selection-start],
435
- .ads-date-picker [data-slot="cellTrigger"][data-selection-end] {
436
- background-color: var(--color-primary-500);
437
- color: #fff;
438
- }
439
-
440
- .ads-date-picker
441
- [data-slot="cellTrigger"][data-selected]:not([data-selection-start]):not(
442
- [data-selection-end]
443
- ),
444
- .ads-date-picker
445
- [data-slot="cellTrigger"][data-highlighted]:not([data-selection-start]):not(
446
- [data-selection-end]
447
- ) {
448
- background-color: var(--color-primary-100);
449
- color: var(--color-primary-500);
450
- }
451
-
452
- /**
453
- * Range Date Picker do Figma (5712:6691), só no painel de período.
454
- * _Date Picker options: dia 14 regular; fim de semana text/tertiary; hoje text/primary;
455
- * fora do mês ou desabilitado neutrals/light/40; hover radar/25 com raio SM.
456
- * Selecionado: pontas text/brand + text/contrast; meio buttons/secondary/hover + text/brand,
457
- * ambos em bold e com raio SM em cada dia (2px entre os dias). Um dia só usa raio XSM.
458
- */
459
- .ads-date-range-panel .ads-date-range-title {
460
- color: var(--ads-text-primary);
461
- font-size: 14px;
462
- font-weight: var(--ads-font-weight-bold);
463
- line-height: 1.3;
464
- }
465
-
466
- .ads-date-range-panel .ads-date-range-nav {
467
- display: inline-flex;
468
- width: 24px;
469
- height: 24px;
470
- flex-shrink: 0;
471
- align-items: center;
472
- justify-content: center;
473
- border-radius: var(--ads-radius-xsm);
474
- color: var(--ads-text-tertiary);
475
- }
476
-
477
- .ads-date-range-panel .ads-date-range-nav:focus-visible {
478
- outline: 2px solid var(--ads-text-brand);
479
- outline-offset: 2px;
480
- }
481
-
482
- .ads-date-range-panel .ads-date-range-nav:disabled {
483
- cursor: not-allowed;
484
- color: var(--color-ads-neutro-claro-40);
485
- }
486
-
487
- /* Semana: Inter 12 regular, 120%, "Universal/50% Gray" (#797B86, sem token ADS). */
488
- .ads-date-range-panel .ads-date-picker [data-slot="headCell"] {
489
- color: #797b86;
490
- font-size: 12px;
491
- font-weight: var(--ads-font-weight-regular);
492
- line-height: 1.2;
493
- text-align: center;
494
- }
495
-
496
- .ads-date-range-panel .ads-date-picker [data-slot="cellTrigger"] {
497
- border-radius: var(--ads-radius-sm);
498
- color: var(--ads-text-secondary);
499
- font-size: 14px;
500
- font-weight: var(--ads-font-weight-regular);
501
- line-height: 1.3;
502
- }
503
-
504
- .ads-date-range-panel
505
- .ads-date-picker
506
- [data-slot="gridRow"]
507
- > [data-slot="cell"]:first-child
508
- [data-slot="cellTrigger"]:not([data-selected]):not([data-highlighted]):not([data-outside-view]):not([data-disabled]),
509
- .ads-date-range-panel
510
- .ads-date-picker
511
- [data-slot="gridRow"]
512
- > [data-slot="cell"]:last-child
513
- [data-slot="cellTrigger"]:not([data-selected]):not([data-highlighted]):not([data-outside-view]):not([data-disabled]) {
514
- color: var(--ads-text-tertiary);
515
- }
516
-
517
- .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-today]:not([data-selected]):not([data-highlighted]):not([data-disabled]) {
518
- color: var(--ads-text-primary);
519
- }
520
-
521
- .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"]:not([data-selected]):not([data-highlighted]):not([data-disabled]):not([data-unavailable]):not(
522
- [data-outside-view]
523
- ):hover {
524
- background-color: var(--color-ads-radar-pricing-25);
525
- }
526
-
527
- .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-selection-start]:not([data-outside-view]),
528
- .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-selection-end]:not([data-outside-view]) {
529
- background-color: var(--ads-text-brand);
530
- color: var(--ads-text-contrast);
531
- font-weight: var(--ads-font-weight-bold);
532
- }
533
-
534
- .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-selection-start][data-selection-end] {
535
- border-radius: var(--ads-radius-xsm);
536
- }
537
-
538
- .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-selected]:not([data-selection-start]):not([data-selection-end]):not([data-outside-view]),
539
- .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-highlighted]:not([data-selection-start]):not([data-selection-end]):not([data-outside-view]) {
540
- background-color: var(--ads-button-secondary-hover);
541
- color: var(--ads-text-brand);
542
- font-weight: var(--ads-font-weight-bold);
543
- }
544
-
545
- .ads-date-range-panel .ads-date-picker [data-slot="cellTrigger"][data-outside-view],
546
- .ads-date-range-panel .ads-date-picker [data-slot="cellTrigger"][data-disabled],
547
- .ads-date-range-panel .ads-date-picker [data-slot="cellTrigger"][data-unavailable] {
548
- /* Vence as regras de fim de semana e de seleção, inclusive as globais do .ads-date-picker. */
549
- background-color: transparent !important;
550
- color: var(--color-ads-neutro-claro-40) !important;
551
- font-weight: var(--ads-font-weight-regular) !important;
552
- }
553
- }
554
-
555
- /*
556
- * Hierarquia de peso do layout dashboard (adsDashboardFontWeight).
557
- * Fora de @layer para vencer utilitários Tailwind nas páginas.
558
- * Título de página e seção (h1, h2): bold.
559
- * Card, rótulo e ênfase curta usam medium; font-semibold (600) não existe no ADS.
560
- * Corpo herda regular. font-bold fora de h1/h2 permanece bold (títulos de etapa).
561
- */
562
- .dashboard-layout {
563
- font-weight: var(--ads-font-weight-regular);
564
- }
565
-
566
- .dashboard-layout :is(h1, h2) {
567
- font-weight: var(--ads-font-weight-bold);
568
- }
569
-
570
- .dashboard-layout .font-semibold {
571
- font-weight: var(--ads-font-weight-medium);
572
- }
573
-
574
- .dashboard-layout :is(h1, h2).font-semibold {
575
- font-weight: var(--ads-font-weight-bold);
576
- }
577
-
578
- /* Faixa das tabs link: 1px #C1C7D0, esticada na largura do conteúdo. */
579
- .dashboard-layout [data-slot="list"][role="tablist"] {
580
- align-self: stretch;
581
- width: 100%;
582
- border-bottom: 1px solid var(--color-neutral-300);
583
- }
584
-
585
- /* Brilho do AdsLoading shimmer. Fora de @layer para o gradiente não perder para utilitários. */
586
- .ads-loading-shimmer {
587
- background-image: linear-gradient(
588
- 105deg,
589
- transparent 0%,
590
- transparent 35%,
591
- rgba(255, 255, 255, 0.45) 45%,
592
- rgba(255, 255, 255, 0.6) 50%,
593
- rgba(255, 255, 255, 0.45) 55%,
594
- transparent 65%,
595
- transparent 100%
596
- );
597
- background-size: 200% 100%;
598
- animation: ads-loading-shimmer 1.5s ease-in-out infinite;
599
- }
600
-
601
- @keyframes ads-loading-shimmer {
602
- 0% {
603
- background-position: 200% 0;
604
- }
605
-
606
- 100% {
607
- background-position: -200% 0;
608
- }
609
- }
610
-
611
- @media (prefers-reduced-motion: reduce) {
612
- .ads-loading-shimmer {
613
- animation: none;
614
- background-image: none;
615
- background-color: rgba(255, 255, 255, 0.35);
616
- }
617
- }
1
+ @import "tailwindcss";
2
+ @import "@nuxt/ui";
3
+ @import "./component-tokens.css";
4
+ @import "./ads-colors.css";
5
+
6
+ @theme default {
7
+ --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
8
+ --radius-sm: 0.25rem;
9
+ --radius-md: 0.5rem;
10
+
11
+ /* Primary RP-25 … RP-800. 300 = RP-200. 700+ repetem RP-800. */
12
+ --color-primary: #006ff7;
13
+ --color-primary-50: #e4f2ff;
14
+ --color-primary-100: #c7e4ff;
15
+ --color-primary-200: #89c9ff;
16
+ --color-primary-300: #50b3ff;
17
+ --color-primary-400: #0091ff;
18
+ --color-primary-500: #006ff7;
19
+ --color-primary-600: #074ac6;
20
+ --color-primary-700: #00389e;
21
+ --color-primary-800: #00389e;
22
+ --color-primary-900: #00389e;
23
+ --color-primary-950: #00389e;
24
+
25
+ /* Secondary segue a escala do Radar Pricing. */
26
+ --color-secondary: #006ff7;
27
+ --color-secondary-50: #e4f2ff;
28
+ --color-secondary-100: #c7e4ff;
29
+ --color-secondary-200: #89c9ff;
30
+ --color-secondary-300: #50b3ff;
31
+ --color-secondary-400: #0091ff;
32
+ --color-secondary-500: #006ff7;
33
+ --color-secondary-600: #074ac6;
34
+ --color-secondary-700: #00389e;
35
+ --color-secondary-800: #00389e;
36
+ --color-secondary-900: #00389e;
37
+ --color-secondary-950: #00389e;
38
+
39
+ /* Success SU. */
40
+ --color-success: #15c57e;
41
+ --color-success-50: #c3ffe6;
42
+ --color-success-100: #c3ffe6;
43
+ --color-success-200: #7fffcb;
44
+ --color-success-300: #32feaa;
45
+ --color-success-400: #06eb8f;
46
+ --color-success-500: #15c57e;
47
+ --color-success-600: #1c9f6a;
48
+ --color-success-700: #157850;
49
+ --color-success-800: #0e5a3b;
50
+ --color-success-900: #0e5a3b;
51
+ --color-success-950: #0e5a3b;
52
+
53
+ /* Info OP. */
54
+ --color-info: #05b4d8;
55
+ --color-info-50: #c4f5ff;
56
+ --color-info-100: #c4f5ff;
57
+ --color-info-200: #79e9ff;
58
+ --color-info-300: #49d8f4;
59
+ --color-info-400: #04c8ef;
60
+ --color-info-500: #05b4d8;
61
+ --color-info-600: #01a0bf;
62
+ --color-info-700: #007a93;
63
+ --color-info-800: #006478;
64
+ --color-info-900: #006478;
65
+ --color-info-950: #006478;
66
+
67
+ /* Warning AT (âmbar). O grupo WA do Figma é vermelho e alimenta error. */
68
+ --color-warning: #e9a700;
69
+ --color-warning-50: #ffe7b9;
70
+ --color-warning-100: #ffe7b9;
71
+ --color-warning-200: #ffdc82;
72
+ --color-warning-300: #ffca43;
73
+ --color-warning-400: #ffb905;
74
+ --color-warning-500: #e9a700;
75
+ --color-warning-600: #ce9300;
76
+ --color-warning-700: #ad7b00;
77
+ --color-warning-800: #8f6600;
78
+ --color-warning-900: #8f6600;
79
+ --color-warning-950: #8f6600;
80
+
81
+ /* Error WA. 500 = WA-300 #ff507a, borda de input. */
82
+ --color-error: #ff507a;
83
+ --color-error-50: #ffbdcd;
84
+ --color-error-100: #ffbdcd;
85
+ --color-error-200: #ff87a4;
86
+ --color-error-300: #ff507a;
87
+ --color-error-400: #ff507a;
88
+ --color-error-500: #ff507a;
89
+ --color-error-600: #ef164a;
90
+ --color-error-700: #dc0034;
91
+ --color-error-800: #c0012e;
92
+ --color-error-900: #9e062a;
93
+ --color-error-950: #840221;
94
+
95
+ /* Neutral LI / MI / DA. */
96
+ --color-neutral-50: #fafbfc;
97
+ --color-neutral-100: #f0f3f6;
98
+ --color-neutral-200: #e5e8eb;
99
+ --color-neutral-300: #c1c7d0;
100
+ --color-neutral-400: #a5adba;
101
+ --color-neutral-500: #8993a4;
102
+ --color-neutral-600: #6b778c;
103
+ --color-neutral-700: #505f79;
104
+ --color-neutral-800: #344563;
105
+ --color-neutral-900: #172b4d;
106
+ --color-neutral-950: #061938;
107
+ }
108
+
109
+ /* 🔗 Mapeamento para os componentes Nuxt UI */
110
+ :root {
111
+ /* Spacing ADS ($spacing-quark … $spacing-xxl). Fora do @theme para não trocar o xs/sm/md do Nuxt UI. */
112
+ --ads-space-quark: 4px;
113
+ --ads-space-nano: 8px;
114
+ --ads-space-xxxs: 12px;
115
+ --ads-space-xxs: 16px;
116
+ --ads-space-xs: 24px;
117
+ --ads-space-sm: 32px;
118
+ --ads-space-rg: 40px;
119
+ --ads-space-md: 48px;
120
+ --ads-space-lg: 56px;
121
+ --ads-space-xl: 64px;
122
+ --ads-space-xxl: 80px;
123
+ --ads-space-xxxl: 120px;
124
+ --ads-space-huge: 160px;
125
+ --ads-space-giant: 200px;
126
+
127
+ --ads-font-family: "Inter", ui-sans-serif, system-ui, sans-serif;
128
+ --ads-font-size-minimal: 10px;
129
+ --ads-font-size-xxxs: 12px;
130
+ --ads-font-size-xxs: 14px;
131
+ --ads-font-size-xs: 16px;
132
+ --ads-font-size-sm: 18px;
133
+ --ads-font-size-rg: 20px;
134
+ --ads-font-size-md: 24px;
135
+ --ads-font-size-lg: 32px;
136
+ --ads-font-weight-light: 300;
137
+ --ads-font-weight-regular: 400;
138
+ --ads-font-weight-medium: 500;
139
+ --ads-font-weight-bold: 700;
140
+ --ads-font-weight-extrabold: 800;
141
+ --ads-line-height-default: 100%;
142
+ --ads-line-height-sm: 120%;
143
+ --ads-line-height-md: 140%;
144
+ --ads-line-height-lg: 160%;
145
+
146
+ --ads-radius-none: 0px;
147
+ --ads-radius-xsm: 4px;
148
+ --ads-radius-sm: 8px;
149
+ --ads-radius-md: 12px;
150
+ --ads-radius-lg: 16px;
151
+ --ads-radius-pill: 500px;
152
+ --ads-radius-xlg: 24px;
153
+ --ads-radius-circular: 50%;
154
+ --ads-border-width-none: 0px;
155
+ --ads-border-width-hairline: 1px;
156
+ --ads-border-width-slim: 1.5px;
157
+ --ads-border-width-thin: 2px;
158
+ --ads-border-width-thick: 4px;
159
+ --ads-border-width-heavy: 8px;
160
+
161
+ --ads-shadow-none: none;
162
+ --ads-shadow-level-1: 0 2px 8px rgb(0 0 0 / 16%);
163
+ --ads-shadow-level-2: 0 4px 24px rgb(0 0 0 / 16%);
164
+ --ads-shadow-level-3: 0 8px 32px rgb(0 0 0 / 16%);
165
+ --ads-shadow-level-4: 0 12px 48px rgb(0 0 0 / 24%);
166
+ --ads-opacity-intense: 75%;
167
+ --ads-opacity-medium: 50%;
168
+ --ads-opacity-light: 25%;
169
+ --ads-blur-default: 4px;
170
+
171
+ /* Semantic — Default.tokens.json */
172
+ --ads-surface-main: #fafbfc;
173
+ --ads-surface-card: #ffffff;
174
+ --ads-surface-brand: #006ff7;
175
+ --ads-text-primary: #061938;
176
+ --ads-text-secondary: #505f79;
177
+ --ads-text-tertiary: #a5adba;
178
+ --ads-text-brand: #006ff7;
179
+ --ads-text-disabled: #89c9ff;
180
+ --ads-text-contrast: #ffffff;
181
+ --ads-border-subtle: #e5e8eb;
182
+ --ads-border-focused: #6b778c;
183
+ --ads-border-icon: #42526e;
184
+ --ads-border-icon-support: #7a869a;
185
+ --ads-status-success-800: #0e5a3b;
186
+ --ads-status-success-500: #15c57e;
187
+ --ads-status-success-100: #c3ffe6;
188
+ --ads-status-warning-800: #840221;
189
+ --ads-status-warning-500: #dc0034;
190
+ --ads-status-warning-100: #ffbdcd;
191
+ --ads-status-attention-800: #8f6600;
192
+ --ads-status-attention-500: #e9a700;
193
+ --ads-status-attention-100: #ffe7b9;
194
+ --ads-status-new-800: #006478;
195
+ --ads-status-new-500: #05b4d8;
196
+ --ads-status-new-100: #c4f5ff;
197
+ --ads-status-void-800: #0e1013;
198
+ --ads-status-void-500: #556171;
199
+ --ads-status-void-100: #cfdef3;
200
+ --ads-status-innovation-800: #3c287c;
201
+ --ads-status-innovation-500: #7349ff;
202
+ --ads-status-innovation-100: #cabaff;
203
+ /* Degraus intermediários de ads-tokens.ts. O AdsButton usa no hover, pressed e disabled. */
204
+ --ads-status-success-200: #7fffcb;
205
+ --ads-status-success-300: #32feaa;
206
+ --ads-status-success-400: #06eb8f;
207
+ --ads-status-success-600: #1c9f6a;
208
+ --ads-status-success-700: #157850;
209
+ --ads-status-warning-200: #ff87a4;
210
+ --ads-status-warning-300: #ff507a;
211
+ --ads-status-warning-400: #ef164a;
212
+ --ads-status-warning-600: #c0012e;
213
+ --ads-status-warning-700: #9e062a;
214
+ --ads-status-attention-200: #ffdc82;
215
+ --ads-status-attention-300: #ffca43;
216
+ --ads-status-attention-400: #ffb905;
217
+ --ads-status-attention-600: #ce9300;
218
+ --ads-status-attention-700: #ad7b00;
219
+ --ads-status-new-200: #79e9ff;
220
+ --ads-status-new-300: #49d8f4;
221
+ --ads-status-new-400: #04c8ef;
222
+ --ads-status-new-600: #01a0bf;
223
+ --ads-status-new-700: #007a93;
224
+ --ads-status-void-200: #b4c5df;
225
+ --ads-status-void-300: #91a2bb;
226
+ --ads-status-void-400: #738298;
227
+ --ads-status-void-600: #3c434e;
228
+ --ads-status-void-700: #282c34;
229
+ --ads-status-innovation-200: #b19aff;
230
+ --ads-status-innovation-300: #9e80ff;
231
+ --ads-status-innovation-400: #825cff;
232
+ --ads-status-innovation-600: #613dda;
233
+ --ads-status-innovation-700: #4c30a8;
234
+ --ads-chart-data-1-800: #76197e;
235
+ --ads-chart-data-1-400: #e837f9;
236
+ --ads-chart-data-1-100: #f8b4ff;
237
+ --ads-chart-data-2-800: #3c287c;
238
+ --ads-chart-data-2-500: #7349ff;
239
+ --ads-chart-data-2-100: #cabaff;
240
+ --ads-chart-data-3-800: #983a3a;
241
+ --ads-chart-data-3-400: #f76565;
242
+ --ads-chart-data-3-100: #ffb0b0;
243
+ --ads-chart-data-4-800: #115825;
244
+ --ads-chart-data-4-500: #24ab4a;
245
+ --ads-chart-data-4-100: #b6ffca;
246
+ --ads-chart-data-5-800: #252c41;
247
+ --ads-chart-data-5-400: #677bb6;
248
+ --ads-chart-data-5-100: #a2baff;
249
+ /* MI-60. Borda do select desabilitado; o arquivo semântico não nomeia esse passo. */
250
+ --ads-neutral-mid-60: #b3bac5;
251
+
252
+ /* Degraus que o compilador do tema descarta quando o hex se repete. */
253
+ --color-primary-950: #00389e;
254
+ --color-secondary-50: #e4f2ff;
255
+ --color-secondary-100: #c7e4ff;
256
+ --color-secondary-200: #89c9ff;
257
+ --color-secondary-300: #50b3ff;
258
+ --color-secondary-400: #0091ff;
259
+ --color-secondary-600: #074ac6;
260
+ --color-secondary-700: #00389e;
261
+ --color-secondary-800: #00389e;
262
+ --color-secondary-900: #00389e;
263
+ --color-secondary-950: #00389e;
264
+ --color-info-50: #c4f5ff;
265
+ --color-info-100: #c4f5ff;
266
+ --color-info-200: #79e9ff;
267
+ --color-info-300: #49d8f4;
268
+ --color-info-400: #04c8ef;
269
+ --color-info-600: #01a0bf;
270
+ --color-info-700: #007a93;
271
+ --color-info-800: #006478;
272
+ --color-info-900: #006478;
273
+ --color-info-950: #006478;
274
+ --color-warning-200: #ffdc82;
275
+ --color-warning-300: #ffca43;
276
+ --color-warning-900: #8f6600;
277
+ --color-warning-950: #8f6600;
278
+ --color-error-300: #ff507a;
279
+ --color-error-400: #ff507a;
280
+ --color-error-900: #9e062a;
281
+ --color-error-950: #840221;
282
+ --color-neutral-950: #061938;
283
+
284
+ --ui-radius: 0.5rem;
285
+ --ui-primary: var(--color-primary-500);
286
+ --ui-secondary: var(--color-secondary-500);
287
+ --ui-warning: var(--color-warning);
288
+ --ui-error: var(--color-error-500);
289
+ --ui-info: var(--color-info-500);
290
+ --ui-neutral: var(--color-neutral-500);
291
+ --ui-text: var(--color-neutral-700);
292
+
293
+ --ui-success: var(--color-success-500);
294
+ --ui-success-50: var(--color-success-50);
295
+ --ui-success-100: var(--color-success-100);
296
+ --ui-success-200: var(--color-success-200);
297
+ --ui-success-300: var(--color-success-300);
298
+ --ui-success-400: var(--color-success-400);
299
+ --ui-success-500: var(--color-success-500);
300
+ --ui-success-600: var(--color-success-600);
301
+ --ui-success-700: var(--color-success-700);
302
+ --ui-success-800: var(--color-success-800);
303
+ --ui-success-900: var(--color-success-900);
304
+ --ui-success-950: var(--color-success-950);
305
+ }
306
+
307
+ /**
308
+ * Scrollbars alinhados ao tema (primary + neutral).
309
+ * Firefox: scrollbar-width / scrollbar-color. WebKit: pseudo-elementos.
310
+ */
311
+ @layer components {
312
+ .app-scrollbar-y {
313
+ scrollbar-gutter: stable;
314
+ scrollbar-width: thin;
315
+ scrollbar-color: var(--color-primary-500) var(--color-neutral-100);
316
+ }
317
+
318
+ .app-scrollbar-y::-webkit-scrollbar {
319
+ width: 0.5rem;
320
+ }
321
+
322
+ .app-scrollbar-y::-webkit-scrollbar-track {
323
+ background: var(--color-neutral-100);
324
+ border-radius: 9999px;
325
+ }
326
+
327
+ .app-scrollbar-y::-webkit-scrollbar-thumb {
328
+ background: var(--color-primary-500);
329
+ border-radius: 9999px;
330
+ border: 2px solid var(--color-neutral-100);
331
+ }
332
+
333
+ .app-scrollbar-y::-webkit-scrollbar-thumb:hover {
334
+ background: var(--color-primary-600);
335
+ }
336
+
337
+ .app-scrollbar-x {
338
+ scrollbar-width: thin;
339
+ scrollbar-color: var(--color-primary-500) var(--color-neutral-100);
340
+ }
341
+
342
+ .app-scrollbar-x::-webkit-scrollbar {
343
+ height: 0.5rem;
344
+ }
345
+
346
+ .app-scrollbar-x::-webkit-scrollbar-track {
347
+ background: var(--color-neutral-100);
348
+ border-radius: 9999px;
349
+ }
350
+
351
+ .app-scrollbar-x::-webkit-scrollbar-thumb {
352
+ background: var(--color-primary-500);
353
+ border-radius: 9999px;
354
+ border: 2px solid var(--color-neutral-100);
355
+ }
356
+
357
+ .app-scrollbar-x::-webkit-scrollbar-thumb:hover {
358
+ background: var(--color-primary-600);
359
+ }
360
+
361
+ .app-scrollbar-y.app-scrollbar-x::-webkit-scrollbar-corner {
362
+ background: var(--color-neutral-100);
363
+ }
364
+ }
365
+
366
+ /* Estados do botão filled ADS. Especificidade acima de hover:bg-primary/75. */
367
+ @layer utilities {
368
+ .bg-primary:hover:not(:disabled):not([aria-disabled="true"]) {
369
+ background-color: var(--color-primary-600);
370
+ }
371
+
372
+ .bg-primary:active:not(:disabled):not([aria-disabled="true"]) {
373
+ background-color: var(--color-primary-700);
374
+ }
375
+
376
+ .bg-primary:disabled,
377
+ .bg-primary[aria-disabled="true"] {
378
+ background-color: var(--color-primary-200);
379
+ opacity: 1;
380
+ }
381
+
382
+ /**
383
+ * Date picker ADS. Especificidade acima de data-[selected]:bg-primary
384
+ * e do ring do variant outline (data-[selected]:ring).
385
+ * Cap: primary-500 + branco. Meio: primary-100 + texto primary-500.
386
+ * Cada dia fica arredondado, sem faixa contínua e sem borda no selecionado.
387
+ */
388
+ .ads-date-range-panel .ads-date-picker > [data-slot="header"] {
389
+ display: none;
390
+ }
391
+
392
+ .ads-date-range-panel .ads-date-picker [data-slot="body"] {
393
+ padding-top: 0;
394
+ }
395
+
396
+ .ads-date-range-panel
397
+ .ads-date-picker
398
+ [data-slot="cellTrigger"][data-outside-view] {
399
+ pointer-events: none;
400
+ }
401
+
402
+ .ads-date-picker [data-slot="headCell"] {
403
+ color: var(--color-neutral-500);
404
+ font-size: 0.75rem;
405
+ font-weight: 500;
406
+ }
407
+
408
+ .ads-date-picker [data-slot="cellTrigger"][data-outside-view] {
409
+ color: var(--color-neutral-300);
410
+ }
411
+
412
+ .ads-date-picker
413
+ [data-slot="gridRow"]
414
+ > [data-slot="cell"]:first-child
415
+ [data-slot="cellTrigger"]:not([data-selected]):not([data-outside-view]),
416
+ .ads-date-picker
417
+ [data-slot="gridRow"]
418
+ > [data-slot="cell"]:last-child
419
+ [data-slot="cellTrigger"]:not([data-selected]):not([data-outside-view]) {
420
+ color: var(--color-primary-400);
421
+ }
422
+
423
+ .ads-date-picker [data-slot="cellTrigger"] {
424
+ border-radius: 0.375rem;
425
+ }
426
+
427
+ .ads-date-picker [data-slot="cellTrigger"][data-selected],
428
+ .ads-date-picker [data-slot="cellTrigger"][data-highlighted],
429
+ .ads-date-picker [data-slot="cellTrigger"][data-selection-start],
430
+ .ads-date-picker [data-slot="cellTrigger"][data-selection-end] {
431
+ box-shadow: none;
432
+ }
433
+
434
+ .ads-date-picker [data-slot="cellTrigger"][data-selection-start],
435
+ .ads-date-picker [data-slot="cellTrigger"][data-selection-end] {
436
+ background-color: var(--color-primary-500);
437
+ color: #fff;
438
+ }
439
+
440
+ .ads-date-picker
441
+ [data-slot="cellTrigger"][data-selected]:not([data-selection-start]):not(
442
+ [data-selection-end]
443
+ ),
444
+ .ads-date-picker
445
+ [data-slot="cellTrigger"][data-highlighted]:not([data-selection-start]):not(
446
+ [data-selection-end]
447
+ ) {
448
+ background-color: var(--color-primary-100);
449
+ color: var(--color-primary-500);
450
+ }
451
+
452
+ /**
453
+ * Range Date Picker do Figma (5712:6691), só no painel de período.
454
+ * _Date Picker options: dia 14 regular; fim de semana text/tertiary; hoje text/primary;
455
+ * fora do mês ou desabilitado neutrals/light/40; hover radar/25 com raio SM.
456
+ * Selecionado: pontas text/brand + text/contrast; meio buttons/secondary/hover + text/brand,
457
+ * ambos em bold e com raio SM em cada dia (2px entre os dias). Um dia só usa raio XSM.
458
+ */
459
+ .ads-date-range-panel .ads-date-range-title {
460
+ color: var(--ads-text-primary);
461
+ font-size: 14px;
462
+ font-weight: var(--ads-font-weight-bold);
463
+ line-height: 1.3;
464
+ }
465
+
466
+ .ads-date-range-panel .ads-date-range-nav {
467
+ display: inline-flex;
468
+ width: 24px;
469
+ height: 24px;
470
+ flex-shrink: 0;
471
+ align-items: center;
472
+ justify-content: center;
473
+ border-radius: var(--ads-radius-xsm);
474
+ color: var(--ads-text-tertiary);
475
+ }
476
+
477
+ .ads-date-range-panel .ads-date-range-nav:focus-visible {
478
+ outline: 2px solid var(--ads-text-brand);
479
+ outline-offset: 2px;
480
+ }
481
+
482
+ .ads-date-range-panel .ads-date-range-nav:disabled {
483
+ cursor: not-allowed;
484
+ color: var(--color-ads-neutro-claro-40);
485
+ }
486
+
487
+ /* Semana: Inter 12 regular, 120%, "Universal/50% Gray" (#797B86, sem token ADS). */
488
+ .ads-date-range-panel .ads-date-picker [data-slot="headCell"] {
489
+ color: #797b86;
490
+ font-size: 12px;
491
+ font-weight: var(--ads-font-weight-regular);
492
+ line-height: 1.2;
493
+ text-align: center;
494
+ }
495
+
496
+ .ads-date-range-panel .ads-date-picker [data-slot="cellTrigger"] {
497
+ border-radius: var(--ads-radius-sm);
498
+ color: var(--ads-text-secondary);
499
+ font-size: 14px;
500
+ font-weight: var(--ads-font-weight-regular);
501
+ line-height: 1.3;
502
+ }
503
+
504
+ .ads-date-range-panel
505
+ .ads-date-picker
506
+ [data-slot="gridRow"]
507
+ > [data-slot="cell"]:first-child
508
+ [data-slot="cellTrigger"]:not([data-selected]):not([data-highlighted]):not([data-outside-view]):not([data-disabled]),
509
+ .ads-date-range-panel
510
+ .ads-date-picker
511
+ [data-slot="gridRow"]
512
+ > [data-slot="cell"]:last-child
513
+ [data-slot="cellTrigger"]:not([data-selected]):not([data-highlighted]):not([data-outside-view]):not([data-disabled]) {
514
+ color: var(--ads-text-tertiary);
515
+ }
516
+
517
+ .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-today]:not([data-selected]):not([data-highlighted]):not([data-disabled]) {
518
+ color: var(--ads-text-primary);
519
+ }
520
+
521
+ .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"]:not([data-selected]):not([data-highlighted]):not([data-disabled]):not([data-unavailable]):not(
522
+ [data-outside-view]
523
+ ):hover {
524
+ background-color: var(--color-ads-radar-pricing-25);
525
+ }
526
+
527
+ .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-selection-start]:not([data-outside-view]),
528
+ .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-selection-end]:not([data-outside-view]) {
529
+ background-color: var(--ads-text-brand);
530
+ color: var(--ads-text-contrast);
531
+ font-weight: var(--ads-font-weight-bold);
532
+ }
533
+
534
+ .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-selection-start][data-selection-end] {
535
+ border-radius: var(--ads-radius-xsm);
536
+ }
537
+
538
+ .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-selected]:not([data-selection-start]):not([data-selection-end]):not([data-outside-view]),
539
+ .ads-date-range-panel .ads-date-picker [data-slot="gridRow"] > [data-slot="cell"] [data-slot="cellTrigger"][data-highlighted]:not([data-selection-start]):not([data-selection-end]):not([data-outside-view]) {
540
+ background-color: var(--ads-button-secondary-hover);
541
+ color: var(--ads-text-brand);
542
+ font-weight: var(--ads-font-weight-bold);
543
+ }
544
+
545
+ .ads-date-range-panel .ads-date-picker [data-slot="cellTrigger"][data-outside-view],
546
+ .ads-date-range-panel .ads-date-picker [data-slot="cellTrigger"][data-disabled],
547
+ .ads-date-range-panel .ads-date-picker [data-slot="cellTrigger"][data-unavailable] {
548
+ /* Vence as regras de fim de semana e de seleção, inclusive as globais do .ads-date-picker. */
549
+ background-color: transparent !important;
550
+ color: var(--color-ads-neutro-claro-40) !important;
551
+ font-weight: var(--ads-font-weight-regular) !important;
552
+ }
553
+ }
554
+
555
+ /*
556
+ * Hierarquia de peso do layout dashboard (adsDashboardFontWeight).
557
+ * Fora de @layer para vencer utilitários Tailwind nas páginas.
558
+ * Título de página e seção (h1, h2): bold.
559
+ * Card, rótulo e ênfase curta usam medium; font-semibold (600) não existe no ADS.
560
+ * Corpo herda regular. font-bold fora de h1/h2 permanece bold (títulos de etapa).
561
+ */
562
+ .dashboard-layout {
563
+ font-weight: var(--ads-font-weight-regular);
564
+ }
565
+
566
+ .dashboard-layout :is(h1, h2) {
567
+ font-weight: var(--ads-font-weight-bold);
568
+ }
569
+
570
+ .dashboard-layout .font-semibold {
571
+ font-weight: var(--ads-font-weight-medium);
572
+ }
573
+
574
+ .dashboard-layout :is(h1, h2).font-semibold {
575
+ font-weight: var(--ads-font-weight-bold);
576
+ }
577
+
578
+ /* Faixa das tabs link: 1px #C1C7D0, esticada na largura do conteúdo. */
579
+ .dashboard-layout [data-slot="list"][role="tablist"] {
580
+ align-self: stretch;
581
+ width: 100%;
582
+ border-bottom: 1px solid var(--color-neutral-300);
583
+ }
584
+
585
+ /* Brilho do AdsLoading shimmer. Fora de @layer para o gradiente não perder para utilitários. */
586
+ .ads-loading-shimmer {
587
+ background-image: linear-gradient(
588
+ 105deg,
589
+ transparent 0%,
590
+ transparent 35%,
591
+ rgba(255, 255, 255, 0.45) 45%,
592
+ rgba(255, 255, 255, 0.6) 50%,
593
+ rgba(255, 255, 255, 0.45) 55%,
594
+ transparent 65%,
595
+ transparent 100%
596
+ );
597
+ background-size: 200% 100%;
598
+ animation: ads-loading-shimmer 1.5s ease-in-out infinite;
599
+ }
600
+
601
+ @keyframes ads-loading-shimmer {
602
+ 0% {
603
+ background-position: 200% 0;
604
+ }
605
+
606
+ 100% {
607
+ background-position: -200% 0;
608
+ }
609
+ }
610
+
611
+ @media (prefers-reduced-motion: reduce) {
612
+ .ads-loading-shimmer {
613
+ animation: none;
614
+ background-image: none;
615
+ background-color: rgba(255, 255, 255, 0.35);
616
+ }
617
+ }