voa-ds-core 1.0.11 → 1.0.12

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 (48) hide show
  1. package/dist/styles/voa-components.css +4841 -0
  2. package/package.json +2 -2
  3. package/dist/collection/styles/external/saas-dashboard.css +0 -566
  4. package/dist/collection/styles/external/voa-accordion.external.css +0 -295
  5. package/dist/collection/styles/external/voa-alert.external.css +0 -348
  6. package/dist/collection/styles/external/voa-avatar.external.css +0 -118
  7. package/dist/collection/styles/external/voa-badge.external.css +0 -346
  8. package/dist/collection/styles/external/voa-breadcrumbs.external.css +0 -183
  9. package/dist/collection/styles/external/voa-button.external.css +0 -257
  10. package/dist/collection/styles/external/voa-card.external.css +0 -30
  11. package/dist/collection/styles/external/voa-checkbox.external.css +0 -303
  12. package/dist/collection/styles/external/voa-input-addon.external.css +0 -204
  13. package/dist/collection/styles/external/voa-input.external.css +0 -307
  14. package/dist/collection/styles/external/voa-keybinding.external.css +0 -34
  15. package/dist/collection/styles/external/voa-option.external.css +0 -213
  16. package/dist/collection/styles/external/voa-pagination.external.css +0 -125
  17. package/dist/collection/styles/external/voa-radio.external.css +0 -235
  18. package/dist/collection/styles/external/voa-radio.styles.ts +0 -155
  19. package/dist/collection/styles/external/voa-select.external.css +0 -568
  20. package/dist/collection/styles/external/voa-switch.external.css +0 -215
  21. package/dist/collection/styles/external/voa-tab.external.css +0 -284
  22. package/dist/collection/styles/external/voa-tag.external.css +0 -206
  23. package/dist/collection/styles/external/voa-text-area.external.css +0 -174
  24. package/dist/collection/styles/external/voa-tooltip.external.css +0 -320
  25. package/dist/collection/styles/voa-components.css +0 -32
  26. package/dist/voa/styles/external/saas-dashboard.css +0 -566
  27. package/dist/voa/styles/external/voa-accordion.external.css +0 -295
  28. package/dist/voa/styles/external/voa-alert.external.css +0 -348
  29. package/dist/voa/styles/external/voa-avatar.external.css +0 -118
  30. package/dist/voa/styles/external/voa-badge.external.css +0 -346
  31. package/dist/voa/styles/external/voa-breadcrumbs.external.css +0 -183
  32. package/dist/voa/styles/external/voa-button.external.css +0 -257
  33. package/dist/voa/styles/external/voa-card.external.css +0 -30
  34. package/dist/voa/styles/external/voa-checkbox.external.css +0 -303
  35. package/dist/voa/styles/external/voa-input-addon.external.css +0 -204
  36. package/dist/voa/styles/external/voa-input.external.css +0 -307
  37. package/dist/voa/styles/external/voa-keybinding.external.css +0 -34
  38. package/dist/voa/styles/external/voa-option.external.css +0 -213
  39. package/dist/voa/styles/external/voa-pagination.external.css +0 -125
  40. package/dist/voa/styles/external/voa-radio.external.css +0 -235
  41. package/dist/voa/styles/external/voa-radio.styles.ts +0 -155
  42. package/dist/voa/styles/external/voa-select.external.css +0 -568
  43. package/dist/voa/styles/external/voa-switch.external.css +0 -215
  44. package/dist/voa/styles/external/voa-tab.external.css +0 -284
  45. package/dist/voa/styles/external/voa-tag.external.css +0 -206
  46. package/dist/voa/styles/external/voa-text-area.external.css +0 -174
  47. package/dist/voa/styles/external/voa-tooltip.external.css +0 -320
  48. package/dist/voa/styles/voa-components.css +0 -32
@@ -1,213 +0,0 @@
1
- /**
2
- * Estilização Externa do VoaOption
3
- *
4
- * Este arquivo demonstra como estilizar o componente voa-option
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=1182-56
9
- *
10
- * Para usar, importe este arquivo após os tokens:
11
- * @import '@voa-ds/tokens/global.css';
12
- * @import '@voa-ds/styles/voa-option.css';
13
- */
14
-
15
- /* ============================================
16
- BASE - Container raiz do option
17
- ============================================ */
18
-
19
- voa-option::part(base) {
20
- /* Gap entre indicator e label - Semantic Token conforme Figma */
21
- gap: var(--voa-spacing-sm);
22
-
23
- /* Transição suave para estados */
24
- transition: color 0.2s ease;
25
- }
26
-
27
- /* Sem label, sem gap */
28
- voa-option:not([label])::part(base) {
29
- gap: 0;
30
- }
31
-
32
- /* ============================================
33
- INDICATOR - Componente radio visual
34
- ============================================ */
35
-
36
- voa-option::part(indicator) {
37
- /* O indicator externo gerencia o espaçamento e layout */
38
- flex-shrink: 0;
39
-
40
- /* Border around the radio circle - Default state (unchecked) */
41
- border: var(--border-width-thin) solid var(--structure-colors-bg-base, #ffffff);
42
- border-radius: 50%;
43
- background-color: var(--structure-colors-bg-base, #ffffff);
44
- transition: border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;
45
- box-shadow: inset 0 0 0 1px rgba(24, 24, 27, 0.2);
46
- }
47
-
48
- /* Checked indicator - Primary blue state */
49
- voa-option[checked]:not([disabled])::part(indicator) {
50
- border-color: var(--colors-light-primary-light, #0064cb);
51
- background-color: var(--colors-light-primary-light, #0064cb);
52
- box-shadow: 0 0 0 3px rgba(0, 100, 203, 0.1);
53
- }
54
-
55
- /* Hover indicator - Unchecked */
56
- voa-option:not([disabled]):not([checked]):hover::part(indicator) {
57
- border-color: rgba(24, 24, 27, 0.3);
58
- box-shadow: inset 0 0 0 1px rgba(24, 24, 27, 0.3);
59
- }
60
-
61
- /* Hover indicator - Checked */
62
- voa-option[checked]:not([disabled]):hover::part(indicator) {
63
- border-color: var(--colors-light-primary-light-400, #0071c8);
64
- background-color: var(--colors-light-primary-light-400, #0071c8);
65
- box-shadow: 0 0 0 3px var(--colors-light-primary-light-opacity-15);
66
- }
67
-
68
- /* Focus indicator - Unchecked */
69
- voa-option:not([disabled]):not([checked]):focus-visible::part(indicator) {
70
- border-color: var(--colors-light-secondary-light, #00e5ce);
71
- box-shadow: inset 0 0 0 1px var(--colors-light-secondary-light, #00e5ce), 0 0 0 3px var(--colors-light-secondary-light-100, #b5eee3);
72
- }
73
-
74
- /* Focus indicator - Checked */
75
- voa-option[checked]:not([disabled]):focus-visible::part(indicator) {
76
- border-color: var(--colors-light-secondary-light, #00e5ce);
77
- background-color: var(--colors-light-primary-light, #0064cb);
78
- box-shadow: 0 0 0 2px var(--structure-colors-bg-base, #ffffff), 0 0 0 4px var(--colors-light-secondary-light, #00e5ce);
79
- }
80
-
81
- /* Disabled indicator border */
82
- voa-option[disabled]::part(indicator) {
83
- border-color: var(--colors-structure-fill-15);
84
- background-color: var(--colors-structure-fill-quaternary);
85
- opacity: 0.6;
86
- box-shadow: inset 0 0 0 1px var(--colors-structure-fill-terciary);
87
- }
88
-
89
- /* ============================================
90
- INDICATOR-DOT - Ponto interior do radio
91
- ============================================ */
92
-
93
- voa-option::part(indicator-dot) {
94
- /* Size e visibility são controlados pelos states abaixo */
95
- width: 0;
96
- height: 0;
97
- background-color: var(--structure-colors-bg-base, #ffffff);
98
- border-radius: 50%;
99
- transition: width 0.2s ease, height 0.2s ease;
100
- }
101
-
102
- /* Checked - Dot aparece com cor branca */
103
- voa-option[checked]:not([disabled])::part(indicator-dot) {
104
- width: var(--option-indicator-dot-size);
105
- height: var(--option-indicator-dot-size);
106
- background-color: var(--structure-colors-bg-base, #ffffff);
107
- }
108
-
109
- /* Disabled checked - Dot com opacidade */
110
- voa-option[disabled][checked]::part(indicator-dot) {
111
- width: var(--option-indicator-dot-size);
112
- height: var(--option-indicator-dot-size);
113
- background-color: rgba(255, 255, 255, 0.7);
114
- }
115
-
116
- /* ============================================
117
- LABEL - Texto da opção
118
- ============================================ */
119
-
120
- voa-option::part(label) {
121
- /* Tipografia - Semantic Token conforme Figma */
122
- font-family: var(--font-family-sans, 'Lato', sans-serif);
123
- font-size: var(--typography-base-type-scale-6);
124
- line-height: var(--line-height-body-md);
125
- font-weight: var(--typography-base-body-sm-regular-weight);
126
-
127
- /* Cor padrão - Texto base */
128
- color: rgba(24, 24, 27, 1);
129
-
130
- /* User select desabilitado */
131
- user-select: none;
132
-
133
- /* Transição suave para estados hover/focus */
134
- transition: color 0.2s ease;
135
- }
136
-
137
- /* ============================================
138
- ESTADOS - Default
139
- ============================================ */
140
-
141
- /* Default - Unchecked */
142
- voa-option:not([checked])::part(label) {
143
- color: rgba(24, 24, 27, 1);
144
- }
145
-
146
- /* Default - Checked */
147
- voa-option[checked]::part(label) {
148
- color: rgba(24, 24, 27, 1);
149
- }
150
-
151
- /* ============================================
152
- ESTADOS - Hover
153
- ============================================ */
154
-
155
- /* Hover - Unchecked */
156
- voa-option:not([checked]):not([disabled]):hover::part(label) {
157
- color: rgba(24, 24, 27, 1);
158
- }
159
-
160
- /* Hover - Checked */
161
- voa-option[checked]:not([disabled]):hover::part(label) {
162
- color: rgba(24, 24, 27, 1);
163
- }
164
-
165
- /* Hover - Base container cursor */
166
- voa-option:not([disabled]):hover {
167
- cursor: pointer;
168
- }
169
-
170
- /* ============================================
171
- ESTADOS - Focus
172
- ============================================ */
173
-
174
- /* Focus - Unchecked */
175
- voa-option:not([checked]):focus-visible::part(label) {
176
- color: rgba(24, 24, 27, 1);
177
- }
178
-
179
- /* Focus - Checked */
180
- voa-option[checked]:focus-visible::part(label) {
181
- color: rgba(24, 24, 27, 1);
182
- }
183
-
184
- /* ============================================
185
- ESTADO - Disabled
186
- ============================================ */
187
-
188
- /* Disabled - Unchecked */
189
- voa-option[disabled]:not([checked])::part(label) {
190
- color: rgba(24, 24, 27, 0.4);
191
- }
192
-
193
- /* Disabled - Checked */
194
- voa-option[disabled][checked]::part(label) {
195
- color: rgba(24, 24, 27, 0.4);
196
- }
197
-
198
- /* ============================================
199
- ACESSIBILIDADE - Focus visível
200
- ============================================ */
201
-
202
- voa-option:focus-within::part(base) {
203
- outline: none;
204
- }
205
-
206
- /* Respeitar preferências de movimento reduzido */
207
- @media (prefers-reduced-motion: reduce) {
208
- voa-option::part(indicator),
209
- voa-option::part(indicator-dot),
210
- voa-option::part(label) {
211
- transition: none;
212
- }
213
- }
@@ -1,125 +0,0 @@
1
- @import '../../tokens/global.css';
2
-
3
- /* Base styles for all pagination items (buttons) */
4
- voa-pagination-item::part(base) {
5
- border-radius: var(--voa-radius-md);
6
- background-color: var(--voa-bg-base);
7
- color: var(--voa-text-secondary);
8
- transition: all 0.2s ease;
9
- }
10
-
11
- /* Hover state */
12
- voa-pagination-item:hover::part(base) {
13
- background-color: var(--structure-colors-bg-elevated);
14
- }
15
-
16
- /* Active state (current page) - Figma: white bg, blue border, blue inner shadow */
17
- voa-pagination-item[active="true"]::part(base) {
18
- background-color: var(--voa-bg-base);
19
- border: var(--border-width-thin) solid var(--brand-base);
20
- color: var(--voa-text-primary);
21
- box-shadow: var(--input-active-inner-shadow);
22
- }
23
-
24
- /* Disabled state */
25
- voa-pagination-item[disabled="true"]::part(base) {
26
- opacity: 0.5;
27
- cursor: not-allowed;
28
- }
29
-
30
- /* Number text styling - Figma: Lato SemiBold, 16px, line-height 24px */
31
- voa-pagination-item::part(content) {
32
- font-family: var(--voa-font-family-sans);
33
- font-weight: var(--typography-base-body-sm-bold-weight);
34
- font-size: 1rem;
35
- line-height: 24px;
36
- color: inherit;
37
- text-align: center;
38
- }
39
-
40
- /* Ellipsis styling - Figma: Manrope SemiBold, 20px */
41
- voa-pagination-item[type="ellipsis"]::part(content) {
42
- font-family: 'Manrope', sans-serif;
43
- font-weight: var(--typography-base-body-sm-bold-weight);
44
- font-size: 1.25rem;
45
- line-height: 0;
46
- color: var(--voa-text-secondary);
47
- }
48
-
49
- /* Icon styling */
50
- voa-pagination-item::part(icon) {
51
- color: var(--voa-text-secondary);
52
- width: 16px;
53
- height: 16px;
54
- }
55
-
56
- voa-pagination-item::part(icon) svg {
57
- width: 16px;
58
- height: 16px;
59
- stroke: currentColor;
60
- fill: none;
61
- }
62
-
63
- /* Page Size & Goto Styling - Figma: Lato Regular, 14px, line-height 16px */
64
- voa-pagination-item::part(label) {
65
- font-family: var(--voa-font-family-sans);
66
- font-weight: var(--typography-base-body-sm-regular-weight);
67
- font-size: var(--typography-base-body-sm-regular-size);
68
- line-height: 16px;
69
- color: var(--voa-text-secondary);
70
- }
71
-
72
- /* Select box (page-size) - Figma: white bg, border, 32px height */
73
- voa-pagination-item::part(select) {
74
- height: 32px;
75
- padding: 0 var(--voa-spacing-xs);
76
- background-color: var(--voa-bg-base);
77
- border: var(--border-width-medium) solid var(--voa-border-color);
78
- border-radius: var(--voa-radius-md);
79
- display: flex;
80
- align-items: center;
81
- justify-content: center;
82
- gap: 4px;
83
- cursor: pointer;
84
- box-sizing: border-box;
85
- }
86
-
87
- /* Input wrapper (goto-page) - Figma: white bg, border, 32px height */
88
- voa-pagination-item::part(input-wrapper) {
89
- height: 32px;
90
- padding: 0 var(--voa-spacing-md);
91
- background-color: var(--voa-bg-base);
92
- border: var(--border-width-medium) solid var(--voa-border-color);
93
- border-radius: var(--voa-radius-md);
94
- display: flex;
95
- align-items: center;
96
- justify-content: center;
97
- box-sizing: border-box;
98
- }
99
-
100
- /* Input field - Figma: Lato Regular, 16px, line-height 24px */
101
- voa-pagination-item::part(input) {
102
- width: 20px;
103
- text-align: center;
104
- font-family: var(--voa-font-family-sans);
105
- font-weight: var(--typography-base-body-sm-regular-weight);
106
- font-size: 1rem;
107
- line-height: 24px;
108
- color: var(--voa-text-primary);
109
- border: none;
110
- background: transparent;
111
- padding: 0;
112
- }
113
-
114
- voa-pagination-item::part(input):focus {
115
- outline: none;
116
- }
117
-
118
- /* Value display in select */
119
- voa-pagination-item .voa-pagination-item__value {
120
- font-family: var(--voa-font-family-sans);
121
- font-weight: var(--typography-base-body-sm-regular-weight);
122
- font-size: 1rem;
123
- line-height: 24px;
124
- color: var(--voa-text-primary);
125
- }
@@ -1,235 +0,0 @@
1
- /**
2
- * Estilização Externa do VoaRadio
3
- *
4
- * Este arquivo demonstra como estilizar o componente voa-radio
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=1182-56
9
- *
10
- * Para usar, importe este arquivo após os tokens:
11
- * @import '@voa-ds/tokens/global.css';
12
- * @import '@voa-ds/styles/voa-radio.css';
13
- *
14
- * MAPEAMENTO DE TOKENS DO FIGMA PARA STYLE DICTIONARY:
15
- *
16
- * Figma Token → Style Dictionary Token
17
- * --------------------------------------------
18
- * --structure-colors/bg-base → --structure-colors-bg-base
19
- * --structure-colors/bg-elevated → --structure-colors-bg-elevated
20
- * --structure-colors/bg-base-disabled → --structure-colors-bg-base-disabled
21
- * --structure-colors/border-color → --structure-colors-border-color
22
- * --structure-colors/fill-secondary → --structure-colors-fill-secondary
23
- * --structure-colors/fill-quaternary → --structure-colors-fill-quaternary
24
- * --Colors/Light/primary-light-200 → --colors-light-primary-light-200 (#008fff)
25
- * --Colors/Light/primary-light-400 → --colors-light-primary-light-400 (#0071c8)
26
- * --Colors/Light/secondary-light-100 → --colors-light-secondary-light-100 (#b5eee3) - CYAN
27
- * --Colors/Light/secondary-light → --colors-light-secondary-light (#00e5ce) - CYAN
28
- * --asset-colors/text-hover → --text-hover (ou --brand-base)
29
- * --asset-colors/brand-base-50 → --brand-base-50
30
- * --asset-colors/brand-base-25 → --brand-base-25
31
- * --asset-colors/brand-hover → --brand-hover
32
- * --radius/radius-xxs → --radius-xxs
33
- * --radius/radius-round → --radius-round (100%)
34
- *
35
- * EFEITOS VISUAIS IMPORTANTES DO FIGMA:
36
- * - Estado focused checked: fill #008fff, stroke #0071c8, dot fill #b5eee3, dot stroke #00e5ce
37
- * - Estado focused unchecked: glow interno com brand-base-50
38
- * - Estados checked: sombras internas para efeito de profundidade
39
- */
40
-
41
- /* ============================================
42
- BASE - Elemento raiz do radio (label)
43
- ============================================ */
44
-
45
- voa-radio::part(base) {
46
- /* Sem estilos visuais aqui - apenas estrutura */
47
- display: inline-flex;
48
- align-items: center;
49
- gap: 0;
50
- }
51
-
52
- /* ============================================
53
- INDICATOR - Círculo externo do radio (20px)
54
- ============================================ */
55
-
56
- voa-radio::part(indicator) {
57
- /* Tamanho fixo conforme Figma */
58
- width: var(--radio-indicator-size);
59
- height: var(--radio-indicator-size);
60
- min-width: var(--radio-indicator-size);
61
- min-height: var(--radio-indicator-size);
62
-
63
- /* Border-radius circular */
64
- border-radius: var(--radius-round, 50%);
65
-
66
- /* Border padrão - Semantic Token */
67
- border: var(--border-width-thick) solid var(--structure-colors-border-color);
68
-
69
- /* Background padrão - Semantic Token */
70
- background-color: var(--structure-colors-bg-base);
71
-
72
- /* Transição suave */
73
- transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
74
- }
75
-
76
- /* ============================================
77
- INDICATOR - Estados Unchecked
78
- ============================================ */
79
-
80
- /* Default - Unchecked */
81
- voa-radio:not([checked])::part(indicator) {
82
- background-color: var(--structure-colors-bg-base);
83
- border-color: var(--structure-colors-border-color);
84
- }
85
-
86
- /* Hover - Unchecked */
87
- voa-radio:not([checked]):hover::part(indicator) {
88
- background-color: var(--structure-colors-bg-elevated);
89
- border-color: var(--structure-colors-border-color);
90
- /* Outline externo com brand-secondary-50 conforme Figma */
91
- box-shadow: 0 0 0 4px var(--brand-secondary-50, var(--colors-light-secondary-light-opacity-50, rgba(0, 229, 206, 0.5)));
92
- }
93
-
94
- /* Focus - Unchecked (COR ESPECIAL: stroke CYAN conforme Figma) */
95
- voa-radio:not([checked]):focus-visible::part(indicator) {
96
- background-color: var(--structure-colors-bg-base);
97
- /* Stroke CYAN (#00e5ce) conforme Figma, não brand-base-50 */
98
- border-color: var(--colors-light-secondary-light, var(--brand-secondary, #00e5ce)); /* rgba(0, 229, 206, 1) - CYAN */
99
- /* Glow interno conforme Figma - inset shadow com CYAN (brand-secondary-50) */
100
- box-shadow: var(--shadow-focus-secondary);
101
- }
102
-
103
- /* Disabled - Unchecked */
104
- voa-radio[disabled]:not([checked])::part(indicator) {
105
- background-color: var(--structure-colors-bg-base-disabled);
106
- border-color: var(--structure-colors-fill-secondary);
107
- cursor: not-allowed;
108
- }
109
-
110
- /* ============================================
111
- INDICATOR - Estados Checked
112
- ============================================ */
113
-
114
- /* Default - Checked */
115
- voa-radio[checked]::part(indicator) {
116
- /* Usar primary-light-200 quando disponível (mais claro), fallback para brand-base */
117
- background-color: var(--colors-light-primary-light-200, var(--voa-radio-v2-checked-bg, var(--text-hover, var(--brand-base))));
118
- border-color: var(--structure-colors-fill-secondary);
119
- /* Shadow interna sutil para efeito de profundidade conforme Figma */
120
- /* Nota: O Figma usa overlay complexo - replicamos com inset shadow */
121
- box-shadow: inset 0 var(--radius-xxs, 2px) 0 0 var(--structure-colors-bg-base-disabled, rgba(255, 255, 255, 0.25));
122
- }
123
-
124
- /* Hover - Checked (COR ESPECIAL: brand-base + stroke CYAN conforme Figma) */
125
- voa-radio[checked]:hover::part(indicator) {
126
- /* Hover checked usa brand-base (#0064cb) e stroke CYAN conforme Figma */
127
- background-color: var(--text-hover, var(--brand-base, #0064cb)); /* rgba(0, 100, 203, 1) */
128
- border-color: var(--colors-light-secondary-light, var(--brand-secondary, #00e5ce)); /* rgba(0, 229, 206, 1) - CYAN */
129
- /* Shadow interna mantida no hover */
130
- /* Outline externo com brand-secondary-50 conforme Figma */
131
- box-shadow: inset 0 var(--radius-xxs, 2px) 0 0 var(--structure-colors-bg-base-disabled, rgba(255, 255, 255, 0.25)),
132
- 0 0 0 4px var(--brand-secondary-50, var(--colors-light-secondary-light-opacity-50, rgba(0, 229, 206, 0.5)));
133
- }
134
-
135
- /* Focus - Checked (especial: usa cores diferentes conforme Figma) */
136
- voa-radio[checked]:focus-visible::part(indicator) {
137
- /* Cores específicas do estado focused checked conforme Figma */
138
- /* Fill: rgba(0, 143, 255, 1) - primary-light-200 */
139
- background-color: var(--colors-light-primary-light-200, var(--voa-radio-v2-checked-bg, #008fff)); /* Mais claro que brand-base */
140
- /* Stroke: rgba(0, 113, 200, 1) - primary-light-400 */
141
- border-color: var(--colors-light-primary-light-400, var(--voa-radio-v2-checked-border, #0071c8)); /* Stroke mais escuro */
142
- /* Shadow interna para efeito de profundidade conforme Figma */
143
- /* Nota: O Figma usa overlay com inset negativo - replicamos com inset shadow */
144
- box-shadow: inset 0 var(--radius-xxs, 2px) 0 0 var(--structure-colors-bg-base-disabled, rgba(255, 255, 255, 0.25));
145
- }
146
-
147
- /* Disabled - Checked */
148
- voa-radio[disabled][checked]::part(indicator) {
149
- /* Figma mostra brand-base (#0064cb) mas com opacidade reduzida visualmente (disabled) */
150
- /* Usando brand-base-25 para representar estado disabled */
151
- background-color: var(--brand-base-25, var(--colors-light-primary-light-opacity-25, rgba(0, 100, 203, 0.25)));
152
- /* Stroke também usa brand-base-25 conforme Figma (fill e stroke iguais) */
153
- border-color: var(--brand-base-25, var(--colors-light-primary-light-opacity-25, rgba(0, 100, 203, 0.25)));
154
- cursor: not-allowed;
155
- }
156
-
157
- /* ============================================
158
- DOT - Círculo interno quando selecionado (8px)
159
- ============================================ */
160
-
161
- voa-radio::part(dot) {
162
- /* Tamanho fixo conforme Figma */
163
- width: 8px;
164
- height: 8px;
165
- min-width: 8px;
166
- min-height: 8px;
167
-
168
- /* Border-radius circular */
169
- border-radius: var(--radius-round, 50%);
170
-
171
- /* Background padrão - Semantic Token */
172
- background-color: var(--structure-colors-bg-base);
173
-
174
- /* Border sutil - Semantic Token */
175
- border: var(--border-width-thin) solid var(--structure-colors-fill-quaternary);
176
-
177
- /* Posicionamento já definido no CSS estrutural (centralizado perfeitamente) */
178
- /* Não sobrescrever left/top aqui para manter centralização do CSS estrutural */
179
-
180
- /* Transição suave para transform, opacity, background-color e border-color */
181
- transition: transform 0.2s ease, opacity 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
182
- }
183
-
184
- /* Dot - Checked (visível) */
185
- voa-radio[checked]::part(dot) {
186
- background-color: var(--structure-colors-bg-base);
187
- border-color: var(--structure-colors-fill-quaternary);
188
- transform: scale(1);
189
- opacity: 1;
190
- }
191
-
192
- /* Dot - Focused Checked (COR ESPECIAL: CYAN conforme Figma) */
193
- voa-radio[checked]:focus-visible::part(dot) {
194
- /* Cores CYAN especiais do estado focused conforme Figma */
195
- /* IMPORTANTE: No estado focused, o dot tem cor CYAN, não branco */
196
- background-color: var(--colors-light-secondary-light-100, #b5eee3); /* CYAN claro - rgba(181, 238, 227, 1) */
197
- border-color: var(--colors-light-secondary-light, #00e5ce); /* CYAN - rgba(0, 229, 206, 1) */
198
- }
199
-
200
- /* Dot - Disabled Checked */
201
- voa-radio[disabled][checked]::part(dot) {
202
- background-color: var(--structure-colors-bg-base-disabled);
203
- border-color: var(--structure-colors-fill-quaternary);
204
- }
205
-
206
- /* ============================================
207
- INPUT - Input nativo (oculto mas acessível)
208
- ============================================ */
209
-
210
- voa-radio::part(input) {
211
- /* Já oculto no CSS estrutural, mas garantimos acessibilidade */
212
- position: absolute;
213
- opacity: 0;
214
- width: 0;
215
- height: 0;
216
- margin: 0;
217
- padding: 0;
218
- pointer-events: none;
219
- }
220
-
221
- /* ============================================
222
- ACESSIBILIDADE - Focus visível
223
- ============================================ */
224
-
225
- voa-radio:focus-within::part(base) {
226
- outline: none;
227
- }
228
-
229
- /* Respeitar preferências de movimento reduzido */
230
- @media (prefers-reduced-motion: reduce) {
231
- voa-radio::part(indicator),
232
- voa-radio::part(dot) {
233
- transition: none;
234
- }
235
- }