voa-ds-core 1.0.11 → 1.0.13

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 (59) hide show
  1. package/dist/collection/components/GetStarted/ComoUsar.stories.js +32 -3
  2. package/dist/collection/components/GetStarted/ComoUsar.stories.js.map +1 -1
  3. package/dist/collection/components/voa-tag/voa-tag.stories.js +6 -6
  4. package/dist/collection/components/voa-tag/voa-tag.stories.js.map +1 -1
  5. package/dist/collection/index.js +2 -0
  6. package/dist/collection/index.js.map +1 -0
  7. package/dist/styles/voa-components.css +4839 -0
  8. package/dist/types/index.d.ts +2 -0
  9. package/dist/types/types/index.d.ts +1 -0
  10. package/package.json +5 -2
  11. package/dist/collection/components/GetStarted/ImportandoEstilos.stories.js +0 -414
  12. package/dist/collection/components/GetStarted/ImportandoEstilos.stories.js.map +0 -1
  13. package/dist/collection/styles/external/saas-dashboard.css +0 -566
  14. package/dist/collection/styles/external/voa-accordion.external.css +0 -295
  15. package/dist/collection/styles/external/voa-alert.external.css +0 -348
  16. package/dist/collection/styles/external/voa-avatar.external.css +0 -118
  17. package/dist/collection/styles/external/voa-badge.external.css +0 -346
  18. package/dist/collection/styles/external/voa-breadcrumbs.external.css +0 -183
  19. package/dist/collection/styles/external/voa-button.external.css +0 -257
  20. package/dist/collection/styles/external/voa-card.external.css +0 -30
  21. package/dist/collection/styles/external/voa-checkbox.external.css +0 -303
  22. package/dist/collection/styles/external/voa-input-addon.external.css +0 -204
  23. package/dist/collection/styles/external/voa-input.external.css +0 -307
  24. package/dist/collection/styles/external/voa-keybinding.external.css +0 -34
  25. package/dist/collection/styles/external/voa-option.external.css +0 -213
  26. package/dist/collection/styles/external/voa-pagination.external.css +0 -125
  27. package/dist/collection/styles/external/voa-radio.external.css +0 -235
  28. package/dist/collection/styles/external/voa-radio.styles.ts +0 -155
  29. package/dist/collection/styles/external/voa-select.external.css +0 -568
  30. package/dist/collection/styles/external/voa-switch.external.css +0 -215
  31. package/dist/collection/styles/external/voa-tab.external.css +0 -284
  32. package/dist/collection/styles/external/voa-tag.external.css +0 -206
  33. package/dist/collection/styles/external/voa-text-area.external.css +0 -174
  34. package/dist/collection/styles/external/voa-tooltip.external.css +0 -320
  35. package/dist/collection/styles/voa-components.css +0 -32
  36. package/dist/types/components/GetStarted/ImportandoEstilos.stories.d.ts +0 -4
  37. package/dist/voa/styles/external/saas-dashboard.css +0 -566
  38. package/dist/voa/styles/external/voa-accordion.external.css +0 -295
  39. package/dist/voa/styles/external/voa-alert.external.css +0 -348
  40. package/dist/voa/styles/external/voa-avatar.external.css +0 -118
  41. package/dist/voa/styles/external/voa-badge.external.css +0 -346
  42. package/dist/voa/styles/external/voa-breadcrumbs.external.css +0 -183
  43. package/dist/voa/styles/external/voa-button.external.css +0 -257
  44. package/dist/voa/styles/external/voa-card.external.css +0 -30
  45. package/dist/voa/styles/external/voa-checkbox.external.css +0 -303
  46. package/dist/voa/styles/external/voa-input-addon.external.css +0 -204
  47. package/dist/voa/styles/external/voa-input.external.css +0 -307
  48. package/dist/voa/styles/external/voa-keybinding.external.css +0 -34
  49. package/dist/voa/styles/external/voa-option.external.css +0 -213
  50. package/dist/voa/styles/external/voa-pagination.external.css +0 -125
  51. package/dist/voa/styles/external/voa-radio.external.css +0 -235
  52. package/dist/voa/styles/external/voa-radio.styles.ts +0 -155
  53. package/dist/voa/styles/external/voa-select.external.css +0 -568
  54. package/dist/voa/styles/external/voa-switch.external.css +0 -215
  55. package/dist/voa/styles/external/voa-tab.external.css +0 -284
  56. package/dist/voa/styles/external/voa-tag.external.css +0 -206
  57. package/dist/voa/styles/external/voa-text-area.external.css +0 -174
  58. package/dist/voa/styles/external/voa-tooltip.external.css +0 -320
  59. package/dist/voa/styles/voa-components.css +0 -32
@@ -1,215 +0,0 @@
1
- /**
2
- * Estilização Externa do VoaSwitch
3
- *
4
- * Este arquivo demonstra como estilizar o componente voa-switch
5
- * usando CSS Parts API e design tokens semânticos.
6
- *
7
- * Baseado no design do Figma:
8
- * https://www.figma.com/design/wDStUEuqpl7Tu1oHpiAml6/Voa-Design-System?node-id=443-10259
9
- *
10
- * Para usar, importe este arquivo após os tokens:
11
- * @import '@voa-ds/tokens/global.css';
12
- * @import '@voa-ds/styles/voa-switch.css';
13
- *
14
- * MAPEAMENTO DE TOKENS DO FIGMA PARA STYLE DICTIONARY:
15
- *
16
- * Figma Token → Style Dictionary Token
17
- * --------------------------------------------
18
- * --asset-colors/brand-base → --brand-base (#0064cb)
19
- * --asset-colors/brand-secondary → --brand-secondary (#00e5ce)
20
- * --asset-colors/brand-secondary-50 → --brand-secondary-50 (rgba(0,229,206,0.5)) - Estado OFF default
21
- * --asset-colors/brand-secondary-15 → --brand-secondary-15 (rgba(0,229,206,0.15)) - Estado disabled
22
- * --structure-colors/fill-secondary → --structure-colors-fill-secondary (rgba(24,24,27,0.06))
23
- * --structure-colors/fill-15 → --structure-colors-fill-15 (rgba(24,24,27,0.15))
24
- * --structure-colors/fill-terciary → --structure-colors-fill-terciary (rgba(24,24,27,0.04))
25
- * --structure-colors/fill-quaternary → --structure-colors-fill-quaternary (rgba(24,24,27,0.02))
26
- * --radius/radius-round → --radius-round (1024px)
27
- * --spacing/spacing-sm → --spacing-spacing-sm (8px)
28
- * --base/family/family-sans → --font-family-sans ('Lato')
29
- * --asset-colors/text-primary → --text-primary (#0b1215)
30
- */
31
-
32
- /* ============================================
33
- BASE - Container do switch
34
- ============================================ */
35
-
36
- voa-switch::part(base) {
37
- /* Gap estrutural - Token semântico conforme Figma */
38
- gap: var(--structure-large-spacing-sm);
39
- }
40
-
41
- /* Sem label, sem gap */
42
- voa-switch[show-label="false"]::part(base) {
43
- gap: 0;
44
- }
45
-
46
- /* ============================================
47
- TRACK - Container do switch (40px x 20px)
48
- ============================================ */
49
-
50
- voa-switch::part(track) {
51
- /* Border radius conforme Figma */
52
- border-radius: var(--structure-large-radius-round);
53
- /* 1024px - completamente arredondado */
54
- border: var(--border-width-thin) solid var(--colors-structure-fill-secondary);
55
- /* rgba(24,24,27,0.06) */
56
- box-sizing: border-box;
57
- /* Transições suaves para mudanças de cor */
58
- transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1),
59
- border-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
60
- }
61
-
62
- /* ============================================
63
- THUMB - Elemento circular que se move (16px)
64
- ============================================ */
65
-
66
- voa-switch::part(thumb) {
67
- /* Border radius conforme Figma */
68
- border-radius: var(--structure-large-radius-round);
69
- /* 1024px - completamente arredondado */
70
- border: var(--border-width-thin) solid;
71
- box-sizing: border-box;
72
-
73
- /* Variáveis locais para cálculo de posicionamento robusto */
74
- --thumb-size: var(--switch-thumb-size);
75
- --track-padding: 2px;
76
- --thumb-offset: calc(var(--thumb-size) + var(--track-padding));
77
-
78
- /*
79
- * ANIMATION FIX:
80
- * Usamos margin-left para animar porque precisamos de referência à largura do PAI (track).
81
- * Transform usa % relativo ao próprio elemento, o que não funciona para largura de track variável.
82
- * Margin-left com % é relativo à largura do container.
83
- */
84
- margin-left: 0;
85
- transition: margin-left 0.2s cubic-bezier(0.4, 0, 0.2, 1),
86
- background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1),
87
- border-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
88
- }
89
-
90
- /* Quando checked, move o thumb para a direita */
91
- voa-switch[checked]::part(thumb) {
92
- /*
93
- * CÁLCULO ROBUSTO:
94
- * 100% = Largura total do track (variável)
95
- * - 16px (thumb)
96
- * - 2px (padding direito)
97
- * = Posição final correta independente da largura do track
98
- */
99
- margin-left: calc(100% - var(--thumb-offset));
100
- }
101
-
102
- /* ============================================
103
- SHADOW - Sombra interna
104
- ============================================ */
105
-
106
- voa-switch::part(shadow) {
107
- /* Shadow interna conforme Figma: inset 0px 2px 4px 0px rgba(24, 24, 24, 0.25) */
108
- box-shadow: var(--shadow-switch-inset);
109
- border-radius: inherit;
110
- }
111
-
112
- /* ============================================
113
- ESTADOS - OFF (default)
114
- ============================================ */
115
-
116
- /* Default - Off */
117
- voa-switch:not([checked]):not([disabled])::part(track) {
118
- background-color: var(--colors-structure-fill-quaternary);
119
- /* rgba(24,24,27,0.02) */
120
- border-color: var(--colors-structure-fill-secondary);
121
- /* rgba(24,24,27,0.06) */
122
- }
123
-
124
- voa-switch:not([checked]):not([disabled])::part(thumb) {
125
- background-color: var(--brand-secondary-50);
126
- /* rgba(0,229,206,0.5) - Atualizado do Figma para melhor contraste */
127
- border-color: var(--colors-structure-fill-terciary);
128
- /* rgba(24,24,27,0.04) */
129
- }
130
-
131
- /* ============================================
132
- ESTADOS - ON (checked)
133
- ============================================ */
134
-
135
- /* Default - On */
136
- voa-switch[checked]:not([disabled])::part(track) {
137
- background-color: var(--brand-base);
138
- /* #0064cb */
139
- border-color: var(--colors-structure-fill-secondary);
140
- /* rgba(24,24,27,0.06) */
141
- }
142
-
143
- voa-switch[checked]:not([disabled])::part(thumb) {
144
- background-color: var(--brand-secondary);
145
- /* #00e5ce */
146
- border-color: var(--colors-structure-fill-15);
147
- /* rgba(24,24,27,0.15) */
148
- }
149
-
150
- /* ============================================
151
- ESTADO - DISABLED
152
- ============================================ */
153
-
154
- /* Disabled - Off */
155
- voa-switch:not([checked])[disabled]::part(track) {
156
- background-color: var(--colors-structure-fill-quaternary);
157
- /* rgba(24,24,27,0.02) */
158
- border-color: var(--colors-structure-fill-secondary);
159
- /* rgba(24,24,27,0.06) */
160
- opacity: 0.5;
161
- }
162
-
163
- voa-switch:not([checked])[disabled]::part(thumb) {
164
- background-color: var(--brand-secondary-15);
165
- /* rgba(0,229,206,0.15) */
166
- border-color: var(--colors-structure-fill-terciary);
167
- /* rgba(24,24,27,0.04) */
168
- opacity: 0.5;
169
- }
170
-
171
- /* Disabled - On */
172
- voa-switch[checked][disabled]::part(track) {
173
- background-color: var(--brand-base);
174
- /* #0064cb */
175
- border-color: var(--colors-structure-fill-secondary);
176
- /* rgba(24,24,27,0.06) */
177
- opacity: 0.5;
178
- }
179
-
180
- voa-switch[checked][disabled]::part(thumb) {
181
- background-color: var(--brand-secondary);
182
- /* #00e5ce */
183
- border-color: var(--colors-structure-fill-15);
184
- /* rgba(24,24,27,0.15) */
185
- opacity: 0.5;
186
- }
187
-
188
- /* ============================================
189
- LABEL - Texto do label
190
- ============================================ */
191
-
192
- voa-switch::part(label) {
193
- color: var(--text-primary);
194
- /* #0b1215 */
195
- font-family: var(--font-family-sans, 'Lato', sans-serif);
196
- font-size: var(--typography-base-type-scale-6);
197
- line-height: var(--line-height-body-md);
198
- font-weight: var(--typography-base-body-sm-regular-weight);
199
- user-select: none;
200
- }
201
-
202
- voa-switch[disabled]::part(label) {
203
- color: var(--text-disabled);
204
- /* rgba(11,18,21,0.25) */
205
- }
206
-
207
- /* ============================================
208
- FOCUS VISIBLE - Outline para acessibilidade
209
- ============================================ */
210
-
211
- voa-switch:focus-visible::part(base) {
212
- outline: var(--border-width-medium) solid var(--brand-base);
213
- outline-offset: var(--structure-large-spacing-xs);
214
- border-radius: var(--structure-large-radius-xs);
215
- }
@@ -1,284 +0,0 @@
1
- /**
2
- * Estilização Externa do VoaTab e VoaTabItem
3
- *
4
- * Este arquivo demonstra como estilizar os componentes voa-tab e voa-tab-item
5
- * usando CSS Parts API e design tokens semânticos.
6
- *
7
- * Baseado no design do Figma:
8
- * - Tab: https://www.figma.com/design/wDStUEuqpl7Tu1oHpiAml6/Voa-Design-System?node-id=545-553
9
- * - Tab Item: https://www.figma.com/design/wDStUEuqpl7Tu1oHpiAml6/Voa-Design-System?node-id=366-1545
10
- *
11
- * Para usar, importe este arquivo após os tokens:
12
- * @import '@voa-ds/tokens/global.css';
13
- * @import '@voa-ds/styles/voa-tab.css';
14
- *
15
- * MAPEAMENTO DE TOKENS DO FIGMA PARA CSS VARIABLES (global.css):
16
- *
17
- * Figma Token → CSS Variable (from global.css)
18
- * -------------------------------------------------------
19
- * --asset-colors/brand-base → --brand-base
20
- * --asset-colors/text-primary → --text-primary
21
- * --asset-colors/text-disabled → --text-disabled (rendered as rgba, ~0.25 opacity)
22
- * --spacing/spacing-xs → --spacing-spacing-xs (4px)
23
- * --spacing/spacing-sm → --spacing-spacing-sm (8px)
24
- * --spacing/spacing-rg → --spacing-spacing-rg (12px)
25
- * --spacing/spacing-md → --spacing-spacing-md (16px)
26
- * --spacing/spacing-lg → --spacing-spacing-lg (24px)
27
- * --spacing/spacing-xxs → --spacing-spacing-xxs (2px)
28
- * --radius/radius-md → --radius-md (12px)
29
- * --radius/radius-xl → --radius-xl (24px)
30
- * --radius/radius-round → --radius-round (1024px)
31
- * --base/family/family-sans → --font-family-sans
32
- * --semantic-colors/danger → --semantic-colors-danger
33
- * --structure-colors/fill-secondary → --structure-colors-fill-secondary
34
- * --structure-colors/bg-base → --structure-colors-bg-base
35
- */
36
-
37
- /* ============================================
38
- VOA-TAB - Container de tabs
39
- ============================================ */
40
-
41
- voa-tab::part(base) {
42
- /* Border-bottom para separador entre grupos de tabs */
43
- border-bottom: var(--border-width-thin) solid var(--text-disabled);
44
- box-sizing: border-box;
45
- }
46
-
47
- voa-tab::part(list) {
48
- /* Gap entre itens conforme direção */
49
- box-sizing: border-box;
50
- }
51
-
52
- /* Gap horizontal (padrão) */
53
- voa-tab[direction="horizontal"]::part(list) {
54
- gap: var(--structure-large-spacing-lg);
55
- }
56
-
57
- /* Gap vertical */
58
- voa-tab[direction="vertical"]::part(list) {
59
- gap: var(--structure-large-spacing-md);
60
- }
61
-
62
- /* ============================================
63
- VOA-TAB-ITEM - Item individual de tab
64
- ============================================ */
65
-
66
- /* Base - Tipografia e estrutura */
67
- voa-tab-item::part(base) {
68
- /* Tipografia - Desktop/Body-sm/Regular */
69
- font-family: var(--font-family-sans, 'Lato', sans-serif);
70
- font-size: var(--typography-base-body-sm-regular-size);
71
- font-weight: var(--typography-base-body-sm-regular-weight);
72
- line-height: var(--line-height-body-sm);
73
-
74
- /* Box-sizing */
75
- box-sizing: border-box;
76
-
77
- /* Transição suave para estados */
78
- /* Transição suave para estados */
79
- transition: color 0.2s ease;
80
-
81
- /* Gap entre label e badge */
82
- gap: var(--structure-large-spacing-xxs);
83
- }
84
-
85
- /* ============================================
86
- ESTADOS - Cores por estado
87
- ============================================ */
88
-
89
- /* Estado Active - Brand color */
90
- voa-tab-item[state="active"]::part(base) {
91
- color: var(--brand-base);
92
- }
93
-
94
- /* Estado Default - Text primary */
95
- voa-tab-item[state="default"]::part(base) {
96
- color: var(--text-primary);
97
- }
98
-
99
- /* Estado Disabled - Text disabled com opacity */
100
- voa-tab-item[state="disabled"]::part(base),
101
- voa-tab-item[disabled]::part(base) {
102
- color: var(--text-disabled);
103
- opacity: 0.4;
104
- cursor: not-allowed;
105
- pointer-events: none;
106
- }
107
-
108
- /* ============================================
109
- POSIÇÕES - Padding e borders por posição
110
- ============================================ */
111
-
112
- /* Posição Default (bottom border) */
113
- voa-tab-item[position="default"]::part(base) {
114
- padding-inline: var(--spacing-spacing-xs);
115
- padding-block: var(--spacing-spacing-rg);
116
- }
117
-
118
- voa-tab-item[position="default"]::part(base)::after {
119
- content: '';
120
- position: absolute;
121
- bottom: 0;
122
- left: 0;
123
- width: 100%;
124
- height: 2px;
125
- background-color: var(--brand-base);
126
- transform: scaleX(0);
127
- transform-origin: center;
128
- transition: transform 0.3s ease;
129
- }
130
-
131
- voa-tab-item[position="default"][state="active"]::part(base)::after {
132
- transform: scaleX(1);
133
- }
134
-
135
- /* Posição Top (top border) */
136
- voa-tab-item[position="top"]::part(base) {
137
- padding-inline: var(--spacing-spacing-xs);
138
- padding-block: var(--radius-md);
139
- }
140
-
141
- voa-tab-item[position="top"]::part(base)::after {
142
- content: '';
143
- position: absolute;
144
- top: 0;
145
- left: 0;
146
- width: 100%;
147
- height: 2px;
148
- background-color: var(--brand-base);
149
- transform: scaleX(0);
150
- transform-origin: center;
151
- transition: transform 0.3s ease;
152
- }
153
-
154
- voa-tab-item[position="top"][state="active"]::part(base)::after {
155
- transform: scaleX(1);
156
- }
157
-
158
- /* Posição Right (right border) */
159
- voa-tab-item[position="right"]::part(base) {
160
- padding-inline: var(--radius-xl);
161
- padding-block: var(--spacing-spacing-sm);
162
- }
163
-
164
- voa-tab-item[position="right"]::part(base)::after {
165
- content: '';
166
- position: absolute;
167
- top: 0;
168
- right: 0;
169
- width: 2px;
170
- height: 100%;
171
- background-color: var(--brand-base);
172
- transform: scaleY(0);
173
- transform-origin: center;
174
- transition: transform 0.3s ease;
175
- }
176
-
177
- voa-tab-item[position="right"][state="active"]::part(base)::after {
178
- transform: scaleY(1);
179
- }
180
-
181
- /* Posição Left (left border) */
182
- voa-tab-item[position="left"]::part(base) {
183
- padding-inline: var(--spacing-spacing-lg);
184
- padding-block: var(--spacing-spacing-sm);
185
- }
186
-
187
- voa-tab-item[position="left"]::part(base)::after {
188
- content: '';
189
- position: absolute;
190
- top: 0;
191
- left: 0;
192
- width: 2px;
193
- height: 100%;
194
- background-color: var(--brand-base);
195
- transform: scaleY(0);
196
- transform-origin: center;
197
- transition: transform 0.3s ease;
198
- }
199
-
200
- voa-tab-item[position="left"][state="active"]::part(base)::after {
201
- transform: scaleY(1);
202
- }
203
-
204
- /* ============================================
205
- LABEL - Texto do item
206
- ============================================ */
207
-
208
- voa-tab-item::part(label) {
209
- /* Herda estilos do base, mas pode ser customizado se necessário */
210
- display: inline-block;
211
- }
212
-
213
- /* ============================================
214
- BADGE - Indicador de notificação
215
- ============================================ */
216
-
217
- voa-tab-item::part(badge) {
218
- /* Estrutura do badge */
219
- display: inline-flex;
220
- align-items: center;
221
- justify-content: center;
222
- width: 16px;
223
- height: 16px;
224
- min-width: 16px;
225
- min-height: 16px;
226
- box-sizing: border-box;
227
-
228
- /* Cores - Semantic Tokens */
229
- background-color: var(--semantic-colors-danger);
230
- border: var(--border-width-thick) solid var(--structure-colors-fill-secondary);
231
- border-radius: var(--radius-round);
232
-
233
- /* Padding interno */
234
- padding: var(--spacing-spacing-xs);
235
- }
236
-
237
- voa-tab-item::part(badge) .voa-tab-item__badge-text {
238
- /* Tipografia do badge - Typography/Legal-bold */
239
- font-family: 'Manrope', sans-serif;
240
- font-size: var(--typography-base-legal-bold-size, 10px);
241
- font-weight: var(--typography-base-legal-bold-weight, 600);
242
- line-height: var(--typography-base-legal-bold-line-height, 16px);
243
-
244
- /* Cores */
245
- color: var(--structure-colors-bg-base);
246
-
247
- /* Layout */
248
- text-align: center;
249
- white-space: nowrap;
250
- width: 8px;
251
- height: 8px;
252
- display: inline-flex;
253
- align-items: center;
254
- justify-content: center;
255
- }
256
-
257
- /* ============================================
258
- ESTADOS HOVER/FOCUS
259
- ============================================ */
260
-
261
- /* Hover apenas em itens não-disabled */
262
- voa-tab-item[state="default"]:hover::part(base),
263
- voa-tab-item[state="active"]:hover::part(base) {
264
- /* Pode adicionar efeito hover se necessário */
265
- opacity: 0.8;
266
- }
267
-
268
- voa-tab-item[state="disabled"]:hover::part(base),
269
- voa-tab-item[disabled]:hover::part(base) {
270
- /* Sem hover em disabled */
271
- opacity: 1;
272
- }
273
-
274
- /* Focus-visible para acessibilidade WCAG 2.2 AA */
275
- voa-tab-item::part(base):focus-visible {
276
- outline: 2px solid var(--brand-base);
277
- outline-offset: 2px;
278
- }
279
-
280
- voa-tab-item[state="disabled"]::part(base):focus-visible,
281
- voa-tab-item[disabled]::part(base):focus-visible {
282
- /* Sem focus em disabled */
283
- outline: none;
284
- }
@@ -1,206 +0,0 @@
1
- /**
2
- * Estilização Externa do VoaTag
3
- *
4
- * Este arquivo demonstra como estilizar o componente voa-tag
5
- * usando CSS Parts API e design tokens semânticos.
6
- *
7
- * Baseado no design do Figma:
8
- * https://www.figma.com/design/wDStUEuqpl7Tu1oHpiAml6/Voa-Design-System?node-id=1436-769
9
- *
10
- * Para usar, importe este arquivo após os tokens:
11
- * @import '@voa-ds/tokens/global.css';
12
- * @import '@voa-ds/styles/voa-tag.css';
13
- *
14
- * MAPEAMENTO DE TOKENS DO FIGMA PARA STYLE DICTIONARY:
15
- *
16
- * Figma Token → Style Dictionary Token
17
- * --------------------------------------------
18
- * --structure-colors/bg-container → --structure-colors-bg-container (#f1f3f5)
19
- * --structure-colors/border-color → --structure-colors-border-color (#adb5bd)
20
- * --spacing/spacing-xs → --spacing-spacing-xs (4px)
21
- * --spacing/spacing-sm → --spacing-spacing-sm (8px)
22
- * --radius/radius-xs → --radius-xs (4px)
23
- * --radius/radius-round → --radius-round (1024px)
24
- * --asset-colors/text-primary → --text-primary (#0b1215)
25
- * --base/family/family-sans → --typography-base-family-sans ("Lato", sans-serif)
26
- *
27
- * Tamanhos de fonte do Figma:
28
- * - MD: 14px, line-height 16px
29
- * - SM: 11px, line-height 12px
30
- *
31
- * Tamanhos de ícone:
32
- * - MD: 16px
33
- * - SM: 12px
34
- */
35
-
36
- /* ============================================
37
- BASE - Container principal do tag
38
- ============================================ */
39
- voa-tag::part(base) {
40
- /* Background padrão - Semantic Token (conforme Figma: structure-colors/bg-container) */
41
- background-color: var(--structure-colors-bg-container, #f1f3f5);
42
-
43
- /* Border padrão - 1.5px solid (conforme Figma) */
44
- border: var(--border-width-thick, 1.5px) solid var(--structure-colors-border-color, #adb5bd);
45
-
46
- /* Border-radius padrão para shape="default" - Semantic Token (conforme Figma: radius/radius-xs) */
47
- border-radius: var(--radius-xs, 4px);
48
-
49
- /* Gap entre elementos - Semantic Token (conforme Figma: spacing/spacing-xs) */
50
- gap: var(--spacing-spacing-xs, 4px);
51
-
52
- /* Box-sizing */
53
- box-sizing: border-box;
54
- }
55
-
56
- /* Shape: Pill - Border-radius completamente arredondado */
57
- voa-tag[shape="pill"]::part(base) {
58
- /* Border-radius pill - Semantic Token (conforme Figma: radius/radius-round) */
59
- border-radius: var(--radius-round, 1024px);
60
- }
61
-
62
- /* ============================================
63
- PADDING POR TAMANHO
64
- ============================================ */
65
-
66
- /* Size: Medium (md) - Padding padrão */
67
- voa-tag[size="md"]::part(base) {
68
- /* Padding para size md - Semantic Tokens (conforme Figma: spacing/spacing-xs vertical, spacing/spacing-sm horizontal) */
69
- padding-block: var(--spacing-spacing-xs, 4px);
70
- padding-inline: var(--spacing-spacing-sm, 8px);
71
- }
72
-
73
- /* Size: Small (sm) - Padding reduzido */
74
- voa-tag[size="sm"]::part(base) {
75
- /* Padding menor para size sm - Semantic Token (conforme Figma: spacing/spacing-xs) */
76
- padding: var(--spacing-spacing-xs, 4px);
77
- }
78
-
79
- /* ============================================
80
- LABEL - Texto do tag
81
- ============================================ */
82
- voa-tag::part(label) {
83
- /* Cor do texto - Semantic Token (conforme Figma: asset-colors/text-primary) */
84
- color: var(--text-primary, #0b1215);
85
-
86
- /* Família de fonte - Semantic Token (conforme Figma: base/family/family-sans) */
87
- font-family: var(--typography-base-family-sans, 'Lato', sans-serif);
88
-
89
- /* Peso da fonte - Regular (400) */
90
- font-weight: 400;
91
-
92
- /* Estilo da fonte */
93
- font-style: normal;
94
- }
95
-
96
- /* Label - Size: Medium (md) */
97
- voa-tag[size="md"]::part(label) {
98
- /* Tamanho de fonte md - 14px (conforme Figma) */
99
- font-size: var(--typography-base-body-sm-regular-size, 14px);
100
-
101
- /* Line-height md - 16px (conforme Figma) */
102
- line-height: var(--typography-base-body-sm-regular-line-height, 16px);
103
- }
104
-
105
- /* Label - Size: Small (sm) */
106
- voa-tag[size="sm"]::part(label) {
107
- /* Tamanho de fonte sm - 11px (conforme Figma: Desktop/Body-xs/Regular) */
108
- font-size: var(--typography-base-type-scale-9, 11px);
109
-
110
- /* Line-height sm - 12px (conforme Figma) */
111
- line-height: 12px;
112
- }
113
-
114
- /* ============================================
115
- ÍCONES - Containers dos ícones
116
- ============================================ */
117
- voa-tag::part(icon-start),
118
- voa-tag::part(icon-end) {
119
- /* Cor dos ícones - usando brand-secondary (conforme Figma: teal/cyan) */
120
- color: var(--brand-secondary, #00e5ce);
121
-
122
- /* Alinhamento */
123
- display: inline-flex;
124
- align-items: center;
125
- justify-content: center;
126
- }
127
-
128
- /* Ícones - Size: Medium (md) */
129
- voa-tag[size="md"]::part(icon-start),
130
- voa-tag[size="md"]::part(icon-end) {
131
- /* Tamanho do ícone md - 16px (conforme Figma) */
132
- width: 16px;
133
- height: 16px;
134
- }
135
-
136
- /* Ícones - Size: Small (sm) */
137
- voa-tag[size="sm"]::part(icon-start),
138
- voa-tag[size="sm"]::part(icon-end) {
139
- /* Tamanho do ícone sm - 12px (conforme Figma) */
140
- width: 12px;
141
- height: 12px;
142
- }
143
-
144
- /* Estilização de SVGs dentro dos slots de ícone */
145
- voa-tag[size="md"] [slot="icon-start"],
146
- voa-tag[size="md"] [slot="icon-end"] {
147
- width: 16px;
148
- height: 16px;
149
- fill: var(--brand-secondary, #00e5ce);
150
- }
151
-
152
- voa-tag[size="sm"] [slot="icon-start"],
153
- voa-tag[size="sm"] [slot="icon-end"] {
154
- width: 12px;
155
- height: 12px;
156
- fill: var(--brand-secondary, #00e5ce);
157
- }
158
-
159
- /* ============================================
160
- ESTADOS INTERATIVOS (Opcional - para uso futuro)
161
- ============================================ */
162
-
163
- /* Hover state */
164
- voa-tag:hover::part(base) {
165
- /* Sutil destaque no hover */
166
- border-color: var(--structure-colors-border-color-secondary, #dee2e6);
167
- }
168
-
169
- /* Focus state - Acessibilidade */
170
- voa-tag:focus-visible::part(base) {
171
- outline: 2px solid var(--brand-base, #0064cb);
172
- outline-offset: 2px;
173
- }
174
-
175
- /* ============================================
176
- DARK THEME SUPPORT
177
- ============================================ */
178
- [data-theme="dark"] voa-tag::part(base) {
179
- /* Background dark - usando tokens dark */
180
- background-color: var(--structure-colors-bg-container);
181
-
182
- /* Border dark */
183
- border-color: var(--structure-colors-border-color);
184
- }
185
-
186
- [data-theme="dark"] voa-tag::part(label) {
187
- /* Cor do texto dark - garantir contraste adequado com fallback explícito */
188
- color: var(--text-primary, #ffffff);
189
- }
190
-
191
- /* Variantes com backgrounds coloridos precisam de texto claro */
192
- [data-theme="dark"] voa-tag[variant="solid"]::part(label),
193
- [data-theme="dark"] voa-tag[variant="tonal"]::part(label) {
194
- color: var(--text-primary, #ffffff);
195
- }
196
-
197
- [data-theme="dark"] voa-tag::part(icon-start),
198
- [data-theme="dark"] voa-tag::part(icon-end) {
199
- /* Cor dos ícones dark - usando brand primary (teal no dark mode) */
200
- color: var(--brand-base, #00e5ce);
201
- }
202
-
203
- [data-theme="dark"] voa-tag [slot="icon-start"],
204
- [data-theme="dark"] voa-tag [slot="icon-end"] {
205
- fill: var(--brand-base, #00e5ce);
206
- }