voa-ds-core 1.0.8 → 1.0.10

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 (49) hide show
  1. package/dist/collection/components/GetStarted/ImportandoEstilos.stories.js +32 -11
  2. package/dist/collection/components/GetStarted/ImportandoEstilos.stories.js.map +1 -1
  3. package/dist/collection/styles/external/saas-dashboard.css +566 -0
  4. package/dist/collection/styles/external/voa-accordion.external.css +295 -0
  5. package/dist/collection/styles/external/voa-alert.external.css +348 -0
  6. package/dist/collection/styles/external/voa-avatar.external.css +118 -0
  7. package/dist/collection/styles/external/voa-badge.external.css +346 -0
  8. package/dist/collection/styles/external/voa-breadcrumbs.external.css +183 -0
  9. package/dist/collection/styles/external/voa-button.external.css +257 -0
  10. package/dist/collection/styles/external/voa-card.external.css +30 -0
  11. package/dist/collection/styles/external/voa-checkbox.external.css +303 -0
  12. package/dist/collection/styles/external/voa-input-addon.external.css +204 -0
  13. package/dist/collection/styles/external/voa-input.external.css +307 -0
  14. package/dist/collection/styles/external/voa-keybinding.external.css +34 -0
  15. package/dist/collection/styles/external/voa-option.external.css +213 -0
  16. package/dist/collection/styles/external/voa-pagination.external.css +125 -0
  17. package/dist/collection/styles/external/voa-radio.external.css +235 -0
  18. package/dist/collection/styles/external/voa-radio.styles.ts +155 -0
  19. package/dist/collection/styles/external/voa-select.external.css +568 -0
  20. package/dist/collection/styles/external/voa-switch.external.css +215 -0
  21. package/dist/collection/styles/external/voa-tab.external.css +284 -0
  22. package/dist/collection/styles/external/voa-tag.external.css +206 -0
  23. package/dist/collection/styles/external/voa-text-area.external.css +174 -0
  24. package/dist/collection/styles/external/voa-tooltip.external.css +320 -0
  25. package/dist/collection/styles/voa-components.css +32 -0
  26. package/dist/voa/styles/external/saas-dashboard.css +566 -0
  27. package/dist/voa/styles/external/voa-accordion.external.css +295 -0
  28. package/dist/voa/styles/external/voa-alert.external.css +348 -0
  29. package/dist/voa/styles/external/voa-avatar.external.css +118 -0
  30. package/dist/voa/styles/external/voa-badge.external.css +346 -0
  31. package/dist/voa/styles/external/voa-breadcrumbs.external.css +183 -0
  32. package/dist/voa/styles/external/voa-button.external.css +257 -0
  33. package/dist/voa/styles/external/voa-card.external.css +30 -0
  34. package/dist/voa/styles/external/voa-checkbox.external.css +303 -0
  35. package/dist/voa/styles/external/voa-input-addon.external.css +204 -0
  36. package/dist/voa/styles/external/voa-input.external.css +307 -0
  37. package/dist/voa/styles/external/voa-keybinding.external.css +34 -0
  38. package/dist/voa/styles/external/voa-option.external.css +213 -0
  39. package/dist/voa/styles/external/voa-pagination.external.css +125 -0
  40. package/dist/voa/styles/external/voa-radio.external.css +235 -0
  41. package/dist/voa/styles/external/voa-radio.styles.ts +155 -0
  42. package/dist/voa/styles/external/voa-select.external.css +568 -0
  43. package/dist/voa/styles/external/voa-switch.external.css +215 -0
  44. package/dist/voa/styles/external/voa-tab.external.css +284 -0
  45. package/dist/voa/styles/external/voa-tag.external.css +206 -0
  46. package/dist/voa/styles/external/voa-text-area.external.css +174 -0
  47. package/dist/voa/styles/external/voa-tooltip.external.css +320 -0
  48. package/dist/voa/styles/voa-components.css +32 -0
  49. package/package.json +3 -1
@@ -0,0 +1,204 @@
1
+ /*
2
+ * VoaInputAddon Component Styles
3
+ *
4
+ * Estilos aplicados via CSS Parts API usando design tokens semânticos.
5
+ * Baseado no design do Figma: https://www.figma.com/design/wDStUEuqpl7Tu1oHpiAml6/Voa-Design-System?node-id=438-2157
6
+ *
7
+ * Typography Tokens:
8
+ * - Desktop/Body-md/Bold: font-family: var(--base/family/family-sans, 'Lato'), font-weight: var(--typography-base-body-sm-bold-weight), font-size: 16px, line-height: 24px
9
+ * - Desktop/Body-sm/Regular: font-family: var(--base/family/family-sans, 'Lato'), font-weight: var(--typography-base-body-sm-regular-weight), font-size: 14px, line-height: 16px
10
+ * - Desktop/Body-sm/Bold: font-family: var(--base/family/family-sans, 'Lato'), font-weight: var(--typography-base-body-sm-bold-weight), font-size: 14px, line-height: 16px
11
+ */
12
+
13
+ /* Base */
14
+ voa-input-addon::part(base) {
15
+ display: flex;
16
+ align-items: center;
17
+ box-sizing: border-box;
18
+ flex-shrink: 0;
19
+ flex-grow: 0;
20
+ height: 46px;
21
+ }
22
+
23
+ voa-input-addon--interactive::part(base) {
24
+ cursor: pointer;
25
+ user-select: none;
26
+ }
27
+
28
+ voa-input-addon--interactive::part(base):hover {
29
+ opacity: 0.8;
30
+ }
31
+
32
+ voa-input-addon--interactive::part(base):focus-visible {
33
+ outline: 2px solid var(--brand-base);
34
+ outline-offset: 2px;
35
+ }
36
+
37
+ /* Content */
38
+ voa-input-addon::part(content) {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: var(--spacing-spacing-xxs, 2px);
42
+ height: 100%;
43
+ flex-shrink: 0;
44
+ }
45
+
46
+ /* Text - Desktop/Body-md/Bold */
47
+ voa-input-addon::part(text) {
48
+ font-family: var(--typography-base-family-sans, 'Lato', sans-serif);
49
+ font-size: var(--typography-base-type-scale-6, 16px);
50
+ font-weight: var(--typography-base-body-sm-bold-weight, 600);
51
+ line-height: 24px;
52
+ color: var(--text-placeholder, #9f9fa8);
53
+ }
54
+
55
+ /* Variante: Label */
56
+ voa-input-addon[variant="label"]::part(base) {
57
+ background-color: var(--palette-gray-gray-2, #e9ecef);
58
+ border-right: 1px solid var(--palette-gray-gray-2, #e9ecef);
59
+ padding: 10px var(--structure-large-spacing-rg, 12px) 10px 10px;
60
+ }
61
+
62
+ voa-input-addon[variant="label"]::part(content) {
63
+ gap: 10px;
64
+ }
65
+
66
+ /* Variante: Select */
67
+ voa-input-addon[variant="select"]::part(base) {
68
+ background-color: var(--palette-gray-gray-2, #e9ecef);
69
+ border-right: 1px solid var(--palette-gray-gray-2, #e9ecef);
70
+ padding: 10px var(--spacing-spacing-xxs, 2px) 10px 10px;
71
+ }
72
+
73
+ voa-input-addon[variant="select"]::part(dropdown-icon) {
74
+ width: 24px;
75
+ height: 24px;
76
+ color: var(--text-placeholder, #9f9fa8);
77
+ }
78
+
79
+ /* Variante: Flags */
80
+ voa-input-addon[variant="flags"]::part(base) {
81
+ background-color: var(--palette-gray-gray-2, #e9ecef);
82
+ padding: var(--structure-large-spacing-rg, 12px) 0 var(--structure-large-spacing-rg, 12px) var(--structure-large-spacing-rg, 12px);
83
+ }
84
+
85
+ voa-input-addon[variant="flags"]::part(content) {
86
+ gap: 0;
87
+ }
88
+
89
+ voa-input-addon[variant="flags"]::part(icon) {
90
+ width: 24px;
91
+ height: 24px;
92
+ background-color: var(--palette-gray-gray-6, #868e96);
93
+ border-radius: 100px;
94
+ flex-shrink: 0;
95
+ }
96
+
97
+ voa-input-addon[variant="flags"]::part(text) {
98
+ padding-left: var(--spacing-spacing-xs, 4px);
99
+ font-family: var(--typography-base-family-sans, 'Lato', sans-serif);
100
+ font-size: var(--typography-base-body-sm-regular-size, 14px);
101
+ font-weight: var(--typography-base-body-sm-regular-weight, 400);
102
+ line-height: var(--typography-base-body-sm-regular-line-height, 16px);
103
+ color: var(--palette-gray-gray-6, #868e96);
104
+ }
105
+
106
+ voa-input-addon[variant="flags"]::part(dropdown-icon) {
107
+ width: 24px;
108
+ height: 24px;
109
+ color: var(--text-placeholder, #9f9fa8);
110
+ }
111
+
112
+ /* Variante: Button */
113
+ voa-input-addon[variant="button"]::part(base) {
114
+ padding: var(--spacing-spacing-xs, 4px);
115
+ gap: var(--spacing-spacing-xs, 4px);
116
+ }
117
+
118
+ voa-input-addon[variant="button"]::part(content) {
119
+ background-color: var(--palette-gray-gray-3, #dee2e6);
120
+ border: var(--border-width-thin) solid var(--palette-gray-gray-5, #adb5bd);
121
+ border-radius: var(--structure-large-radius-md, 12px);
122
+ padding: var(--spacing-spacing-xs, 4px) var(--spacing-spacing-sm, 8px);
123
+ gap: var(--spacing-spacing-xxs, 2px);
124
+ justify-content: center;
125
+ height: 100%;
126
+ }
127
+
128
+ voa-input-addon[variant="button"]::part(text) {
129
+ font-family: var(--typography-base-family-sans, 'Lato', sans-serif);
130
+ font-size: var(--typography-base-body-sm-regular-size, 14px);
131
+ font-weight: var(--typography-base-body-sm-bold-weight, 600);
132
+ line-height: var(--typography-base-body-sm-regular-line-height, 16px);
133
+ color: var(--palette-gray-gray-6, #868e96);
134
+ }
135
+
136
+ /* Variante: Clear */
137
+ voa-input-addon[variant="clear"]::part(base) {
138
+ padding: 11px var(--structure-large-spacing-rg, 12px);
139
+ gap: 10px;
140
+ }
141
+
142
+ voa-input-addon[variant="clear"]::part(content) {
143
+ gap: 10px;
144
+ }
145
+
146
+ voa-input-addon[variant="clear"]::part(icon) {
147
+ width: 24px;
148
+ height: 24px;
149
+ color: #76767f; /* Figma spec: rgba(118, 118, 127, 1) */
150
+ }
151
+
152
+ /* Variante: Shortcut */
153
+ voa-input-addon[variant="shortcut"]::part(base) {
154
+ gap: var(--spacing-spacing-xs, 4px);
155
+ }
156
+
157
+ voa-input-addon[variant="shortcut"]::part(content) {
158
+ gap: var(--spacing-spacing-xs, 4px);
159
+ }
160
+
161
+ /* Note: Shortcut variant uses voa-keybinding component internally */
162
+ /* Style voa-keybinding separately if needed */
163
+
164
+ /* Variante: Currency-pre */
165
+ voa-input-addon[variant="currency-pre"]::part(base) {
166
+ padding: 10px;
167
+ gap: 10px;
168
+ }
169
+
170
+ voa-input-addon[variant="currency-pre"]::part(content) {
171
+ gap: 10px;
172
+ }
173
+
174
+ voa-input-addon[variant="currency-pre"]::part(text) {
175
+ font-family: 'Manrope', sans-serif;
176
+ font-size: var(--typography-base-type-scale-6, 16px);
177
+ font-weight: var(--typography-base-body-sm-bold-weight, 600);
178
+ line-height: 24px;
179
+ color: var(--text-placeholder, #9f9fa8);
180
+ }
181
+
182
+ /* Variante: Currency-post */
183
+ voa-input-addon[variant="currency-post"]::part(base) {
184
+ gap: var(--spacing-spacing-sm, 8px);
185
+ }
186
+
187
+ voa-input-addon[variant="currency-post"]::part(content) {
188
+ gap: var(--spacing-spacing-sm, 8px);
189
+ }
190
+
191
+ voa-input-addon[variant="currency-post"]::part(text) {
192
+ font-family: var(--typography-base-family-sans, 'Lato', sans-serif);
193
+ font-size: var(--typography-base-body-sm-regular-size, 14px);
194
+ font-weight: var(--typography-base-body-sm-bold-weight, 600);
195
+ line-height: var(--typography-base-body-sm-regular-line-height, 16px);
196
+ color: var(--palette-gray-gray-6, #868e96);
197
+ }
198
+
199
+ voa-input-addon[variant="currency-post"]::part(dropdown-icon) {
200
+ width: 24px;
201
+ height: 24px;
202
+ color: var(--text-placeholder, #9f9fa8);
203
+ }
204
+
@@ -0,0 +1,307 @@
1
+ /*
2
+ * VoaInput Component Styles
3
+ *
4
+ * Estilos aplicados via CSS Parts API usando design tokens semânticos.
5
+ * Baseado no design do Figma: https://www.figma.com/design/wDStUEuqpl7Tu1oHpiAml6/Voa-Design-System?node-id=437-2006
6
+ */
7
+
8
+ /* Input Container */
9
+ voa-input::part(container) {
10
+ background-color: var(--colors-structure-bg-base, #ffffff);
11
+ border: var(--border-width-medium) solid var(--structure-colors-border-color, #adb5bd);
12
+ border-radius: var(--structure-large-radius-lg, 16px);
13
+ padding: var(--structure-large-spacing-rg, 12px);
14
+ gap: var(--structure-large-spacing-sm, 8px);
15
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
16
+ box-shadow: var(--voa-shadow-input);
17
+ }
18
+
19
+ /* Quando há prefix ou suffix, remover padding do container mas manter altura */
20
+ voa-input[data-has-prefix="true"]::part(container),
21
+ voa-input[data-has-suffix="true"]::part(container) {
22
+ padding: 0;
23
+ gap: 0;
24
+ align-items: stretch;
25
+ }
26
+
27
+ /* Garantir que addons não redimensionem o container */
28
+ voa-input[data-has-prefix="true"]::part(prefix),
29
+ voa-input[data-has-suffix="true"]::part(suffix) {
30
+ align-self: stretch;
31
+ display: flex;
32
+ align-items: center;
33
+ margin: 0;
34
+ padding: 0;
35
+ }
36
+
37
+ /* Padding do input quando há addons - apenas nas laterais sem addon */
38
+ voa-input[data-has-prefix="true"]:not([data-has-suffix="true"])::part(input) {
39
+ padding: 0;
40
+ padding-right: var(--structure-large-spacing-rg, 12px);
41
+ }
42
+
43
+ voa-input[data-has-suffix="true"]:not([data-has-prefix="true"])::part(input) {
44
+ padding: 0;
45
+ padding-left: var(--structure-large-spacing-rg, 12px);
46
+ }
47
+
48
+ voa-input[data-has-prefix="true"][data-has-suffix="true"]::part(input) {
49
+ padding: 0;
50
+ }
51
+
52
+ /* Padding padrão do input quando não há addons */
53
+ voa-input:not([data-has-prefix="true"]):not([data-has-suffix="true"])::part(input) {
54
+ padding: 0 var(--structure-large-spacing-rg, 12px);
55
+ }
56
+
57
+ voa-input[size="sm"]::part(container) {
58
+ padding: var(--structure-large-spacing-sm, 8px);
59
+ height: 32px;
60
+ max-height: 32px;
61
+ }
62
+
63
+ voa-input[size="sm"][data-has-prefix="true"]::part(container),
64
+ voa-input[size="sm"][data-has-suffix="true"]::part(container) {
65
+ padding: 0;
66
+ gap: 0;
67
+ height: 32px;
68
+ max-height: 32px;
69
+ }
70
+
71
+ voa-input[size="sm"][data-has-prefix="true"]:not([data-has-suffix="true"])::part(input) {
72
+ padding: 0;
73
+ padding-right: var(--structure-large-spacing-sm, 8px);
74
+ }
75
+
76
+ voa-input[size="sm"][data-has-suffix="true"]:not([data-has-prefix="true"])::part(input) {
77
+ padding: 0;
78
+ padding-left: var(--structure-large-spacing-sm, 8px);
79
+ }
80
+
81
+ voa-input[size="sm"][data-has-prefix="true"][data-has-suffix="true"]::part(input) {
82
+ padding: 0;
83
+ }
84
+
85
+ voa-input[size="sm"]:not([data-has-prefix="true"]):not([data-has-suffix="true"])::part(input) {
86
+ padding: 0 var(--structure-large-spacing-sm, 8px);
87
+ }
88
+
89
+ voa-input[size="md"]::part(container) {
90
+ padding: var(--structure-large-spacing-rg, 12px);
91
+ height: 48px;
92
+ max-height: 48px;
93
+ }
94
+
95
+ voa-input[size="md"][data-has-prefix="true"]::part(container),
96
+ voa-input[size="md"][data-has-suffix="true"]::part(container) {
97
+ padding: 0;
98
+ gap: 0;
99
+ height: 48px;
100
+ max-height: 48px;
101
+ }
102
+
103
+ voa-input[size="md"][data-has-prefix="true"]:not([data-has-suffix="true"])::part(input) {
104
+ padding: 0;
105
+ padding-right: var(--structure-large-spacing-rg, 12px);
106
+ }
107
+
108
+ voa-input[size="md"][data-has-suffix="true"]:not([data-has-prefix="true"])::part(input) {
109
+ padding: 0;
110
+ padding-left: var(--structure-large-spacing-rg, 12px);
111
+ }
112
+
113
+ voa-input[size="md"][data-has-prefix="true"][data-has-suffix="true"]::part(input) {
114
+ padding: 0;
115
+ }
116
+
117
+ voa-input[size="md"]:not([data-has-prefix="true"]):not([data-has-suffix="true"])::part(input) {
118
+ padding: 0 var(--structure-large-spacing-rg, 12px);
119
+ }
120
+
121
+ voa-input[size="lg"]::part(container) {
122
+ padding: var(--structure-large-spacing-rg, 12px);
123
+ height: 56px;
124
+ max-height: 56px;
125
+ }
126
+
127
+ voa-input[size="lg"][data-has-prefix="true"]::part(container),
128
+ voa-input[size="lg"][data-has-suffix="true"]::part(container) {
129
+ padding: 0;
130
+ gap: 0;
131
+ height: 56px;
132
+ max-height: 56px;
133
+ }
134
+
135
+ voa-input[size="lg"][data-has-prefix="true"]:not([data-has-suffix="true"])::part(input) {
136
+ padding: 0;
137
+ padding-right: var(--structure-large-spacing-rg, 12px);
138
+ }
139
+
140
+ voa-input[size="lg"][data-has-suffix="true"]:not([data-has-prefix="true"])::part(input) {
141
+ padding: 0;
142
+ padding-left: var(--structure-large-spacing-rg, 12px);
143
+ }
144
+
145
+ voa-input[size="lg"][data-has-prefix="true"][data-has-suffix="true"]::part(input) {
146
+ padding: 0;
147
+ }
148
+
149
+ voa-input[size="lg"]:not([data-has-prefix="true"]):not([data-has-suffix="true"])::part(input) {
150
+ padding: 0 var(--structure-large-spacing-rg, 12px);
151
+ }
152
+
153
+ /* Input element */
154
+ voa-input::part(input) {
155
+ font-family: var(--typography-base-family-sans, 'Lato', sans-serif);
156
+ font-size: var(--typography-base-type-scale-6, 16px);
157
+ line-height: var(--typography-base-type-scale-4, 24px);
158
+ color: var(--text-primary, #0b1215);
159
+ background-color: transparent;
160
+ border: none;
161
+ outline: none;
162
+ flex: 1 1 0%;
163
+ min-width: 0;
164
+ width: 100%;
165
+ height: 100%;
166
+ box-sizing: border-box;
167
+ padding: 0;
168
+ }
169
+
170
+ voa-input::part(input)::placeholder {
171
+ color: var(--text-placeholder, #9f9fa8);
172
+ }
173
+
174
+ /* Title Row & Label */
175
+ voa-input::part(title-row) {
176
+ margin-bottom: 6px;
177
+ }
178
+
179
+ voa-input::part(label) {
180
+ font-family: var(--typography-base-family-sans, 'Lato', sans-serif);
181
+ font-size: var(--typography-base-type-scale-5, 20px);
182
+ font-weight: var(--typography-base-body-sm-bold-weight);
183
+ line-height: 32px;
184
+ color: var(--text-secondary, #495057);
185
+ display: block;
186
+ }
187
+
188
+ /* Info */
189
+ voa-input::part(info) {
190
+ color: var(--text-secondary, #495057);
191
+ font-family: var(--typography-base-family-sans, 'Lato', sans-serif);
192
+ font-size: var(--typography-base-type-scale-8, 12px);
193
+ line-height: var(--typography-base-body-sm-regular-line-height, 16px);
194
+ padding-bottom: 6px; /* Align with label baseline visually */
195
+ }
196
+
197
+ voa-input::part(info-icon) {
198
+ color: var(--text-secondary, #495057);
199
+ }
200
+
201
+ voa-input .voa-input__required-indicator {
202
+ color: var(--semantic-colors-danger, #e51937);
203
+ margin-left: var(--structure-large-spacing-xxs, 2px);
204
+ }
205
+
206
+ /* Helper text */
207
+ voa-input::part(helper-text) {
208
+ font-family: var(--typography-base-family-sans, 'Lato', sans-serif);
209
+ font-size: var(--typography-base-body-sm-regular-size, 14px);
210
+ line-height: var(--typography-base-body-sm-regular-line-height, 16px);
211
+ color: var(--text-secondary, #495057);
212
+ margin-top: 6px;
213
+ display: block;
214
+ }
215
+
216
+ voa-input[error]::part(helper-text) {
217
+ color: var(--semantic-colors-danger, #e51937);
218
+ }
219
+
220
+ voa-input[valid]::part(helper-text) {
221
+ color: var(--semantic-colors-success, #109e7c);
222
+ }
223
+
224
+ voa-input[warning]::part(helper-text) {
225
+ color: var(--semantic-colors-warning, #ff9900);
226
+ }
227
+
228
+ /* States - Hover */
229
+ voa-input:not([disabled]):not([readonly]):hover::part(container) {
230
+ border-color: var(--input-hover-border-color, var(--brand-base, #0064cb));
231
+ background-color: var(--palette-gray-gray-1, #f1f3f5);
232
+ }
233
+
234
+ /* States - Focused */
235
+ voa-input:focus-within::part(container) {
236
+ border-color: var(--input-focus-border-color, var(--brand-base, #0064cb));
237
+ box-shadow: var(--input-active-inner-shadow, inset 0px 0px 8px 2px rgba(0, 100, 203, 0.5)),
238
+ var(--input-active-drop-shadow, 0px 4px 4px rgba(24, 24, 27, 0.15));
239
+ }
240
+
241
+ /* States - Error */
242
+ voa-input[error]::part(container) {
243
+ border-color: var(--semantic-colors-danger, #e51937);
244
+ }
245
+
246
+ voa-input[error]:focus-within::part(container) {
247
+ border-color: var(--semantic-colors-danger, #e51937);
248
+ box-shadow: inset 0px 0px 8px 2px var(--semantic-colors-danger, #e51937),
249
+ var(--input-active-drop-shadow, 0px 4px 4px rgba(24, 24, 27, 0.15));
250
+ }
251
+
252
+ /* States - Valid */
253
+ voa-input[valid]::part(container) {
254
+ border-color: var(--semantic-colors-success, #109e7c);
255
+ }
256
+
257
+ voa-input[valid]:focus-within::part(container) {
258
+ border-color: var(--semantic-colors-success, #109e7c);
259
+ box-shadow: inset 0px 0px 8px 2px var(--semantic-colors-success, #109e7c),
260
+ var(--input-active-drop-shadow, 0px 4px 4px rgba(24, 24, 27, 0.15));
261
+ }
262
+
263
+ /* States - Warning */
264
+ voa-input[warning]::part(container) {
265
+ border-color: var(--semantic-colors-warning, #ff9900);
266
+ }
267
+
268
+ voa-input[warning]:focus-within::part(container) {
269
+ border-color: var(--semantic-colors-warning, #ff9900);
270
+ box-shadow: inset 0px 0px 8px 2px var(--semantic-colors-warning, #ff9900),
271
+ var(--input-active-drop-shadow, 0px 4px 4px rgba(24, 24, 27, 0.15));
272
+ }
273
+
274
+ /* States - Disabled */
275
+ voa-input[disabled]::part(container) {
276
+ background-color: var(--colors-structure-bg-base-disabled, rgba(255, 255, 255, 0.25));
277
+ border-color: var(--structure-colors-border-color-secondary, #dee2e6);
278
+ opacity: 0.6;
279
+ cursor: not-allowed;
280
+ }
281
+
282
+ voa-input[disabled]::part(input) {
283
+ color: var(--text-disabled, #0b1215);
284
+ cursor: not-allowed;
285
+ }
286
+
287
+ /* States - Readonly */
288
+ voa-input[readonly]::part(container) {
289
+ background-color: var(--colors-structure-bg-container, #f1f3f5);
290
+ }
291
+
292
+ /* Prefix/Suffix slots */
293
+ voa-input::part(prefix),
294
+ voa-input::part(suffix) {
295
+ display: flex;
296
+ align-items: center;
297
+ flex-shrink: 0;
298
+ flex-grow: 0;
299
+ width: auto;
300
+ min-width: 0;
301
+ }
302
+
303
+ /* Unfilled variant */
304
+ voa-input[fill="false"]::part(container) {
305
+ background-color: transparent;
306
+ box-shadow: none;
307
+ }
@@ -0,0 +1,34 @@
1
+ /*
2
+ * VoaKeybinding Component Styles
3
+ *
4
+ * Estilos aplicados via CSS Parts API usando design tokens semânticos.
5
+ * Baseado no design do Figma: https://www.figma.com/design/wDStUEuqpl7Tu1oHpiAml6/Voa-Design-System?node-id=439-2322
6
+ */
7
+
8
+ voa-keybinding::part(base) {
9
+ display: inline-flex;
10
+ align-items: center;
11
+ gap: var(--spacing-spacing-xxs, 2px);
12
+ border: var(--border-width-thin) solid var(--structure-colors-border-color);
13
+ border-radius: var(--structure-large-radius-sm);
14
+ padding: var(--structure-large-radius-xs) var(--structure-large-spacing-xs);
15
+ background-color: transparent;
16
+ }
17
+
18
+ voa-keybinding::part(key-icon) {
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ width: 16px;
23
+ height: 16px;
24
+ color: var(--palette-gray-gray-6, #868e96);
25
+ }
26
+
27
+ voa-keybinding::part(key-text) {
28
+ font-family: var(--font-family-sans, 'Lato', sans-serif);
29
+ font-size: var(--typography-base-body-sm-regular-size);
30
+ font-weight: var(--typography-base-body-sm-bold-weight);
31
+ line-height: normal;
32
+ color: var(--palette-gray-gray-6, #868e96);
33
+ }
34
+