@volverjs/style 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +139 -0
  3. package/package.json +158 -0
  4. package/src/_config.scss +32 -0
  5. package/src/_context.scss +11 -0
  6. package/src/assets/24consulting.svg +63 -0
  7. package/src/assets/volverjs.svg +15 -0
  8. package/src/components/index.scss +17 -0
  9. package/src/components/vv-badge.scss +12 -0
  10. package/src/components/vv-button-group.scss +115 -0
  11. package/src/components/vv-button.scss +57 -0
  12. package/src/components/vv-card.scss +12 -0
  13. package/src/components/vv-collapse.scss +12 -0
  14. package/src/components/vv-dialog.scss +12 -0
  15. package/src/components/vv-dropdown.scss +12 -0
  16. package/src/components/vv-input-checkbox-group.scss +12 -0
  17. package/src/components/vv-input-checkbox.scss +28 -0
  18. package/src/components/vv-input-radio-group.scss +12 -0
  19. package/src/components/vv-input-radio.scss +20 -0
  20. package/src/components/vv-input-text.scss +49 -0
  21. package/src/components/vv-progress.scss +12 -0
  22. package/src/components/vv-select.scss +49 -0
  23. package/src/components/vv-table.scss +12 -0
  24. package/src/components/vv-text.scss +12 -0
  25. package/src/components/vv-textarea.scss +49 -0
  26. package/src/export.scss +411 -0
  27. package/src/preflight.scss +281 -0
  28. package/src/props/animation.scss +80 -0
  29. package/src/props/background.scss +5 -0
  30. package/src/props/borders.scss +6 -0
  31. package/src/props/colors.scss +5 -0
  32. package/src/props/effects.scss +5 -0
  33. package/src/props/filters.scss +6 -0
  34. package/src/props/index.scss +12 -0
  35. package/src/props/input.scss +5 -0
  36. package/src/props/layout.scss +6 -0
  37. package/src/props/media.scss +49 -0
  38. package/src/props/sizing.scss +6 -0
  39. package/src/props/spacing.scss +27 -0
  40. package/src/props/typography.scss +38 -0
  41. package/src/reset.scss +88 -0
  42. package/src/settings/_animation.scss +9 -0
  43. package/src/settings/_background.scss +56 -0
  44. package/src/settings/_borders.scss +24 -0
  45. package/src/settings/_breakpoints.scss +13 -0
  46. package/src/settings/_colors.scss +39 -0
  47. package/src/settings/_effects.scss +39 -0
  48. package/src/settings/_filters.scss +26 -0
  49. package/src/settings/_flexbox.scss +66 -0
  50. package/src/settings/_grid.scss +104 -0
  51. package/src/settings/_index.scss +34 -0
  52. package/src/settings/_input.scss +51 -0
  53. package/src/settings/_layout.scss +109 -0
  54. package/src/settings/_sizing.scss +99 -0
  55. package/src/settings/_spacing.scss +77 -0
  56. package/src/settings/_typography.scss +179 -0
  57. package/src/settings/components/_vv-badge.scss +43 -0
  58. package/src/settings/components/_vv-button-group.scss +20 -0
  59. package/src/settings/components/_vv-button.scss +214 -0
  60. package/src/settings/components/_vv-card.scss +74 -0
  61. package/src/settings/components/_vv-collapse.scss +111 -0
  62. package/src/settings/components/_vv-dialog.scss +183 -0
  63. package/src/settings/components/_vv-dropdown.scss +37 -0
  64. package/src/settings/components/_vv-input-checkbox-group.scss +60 -0
  65. package/src/settings/components/_vv-input-checkbox.scss +92 -0
  66. package/src/settings/components/_vv-input-radio-group.scss +1 -0
  67. package/src/settings/components/_vv-input-radio.scss +60 -0
  68. package/src/settings/components/_vv-input-text.scss +327 -0
  69. package/src/settings/components/_vv-progress.scss +45 -0
  70. package/src/settings/components/_vv-select.scss +216 -0
  71. package/src/settings/components/_vv-table.scss +29 -0
  72. package/src/settings/components/_vv-text.scss +42 -0
  73. package/src/settings/components/_vv-textarea.scss +275 -0
  74. package/src/style.scss +14 -0
  75. package/src/themes/dark/_context.scss +8 -0
  76. package/src/themes/dark/components/_vv-button.scss +24 -0
  77. package/src/themes/dark/components/_vv-input-checkbox.scss +24 -0
  78. package/src/themes/dark/components/index.scss +2 -0
  79. package/src/themes/dark/props/_background.scss +15 -0
  80. package/src/themes/dark/props/_colors.scss +15 -0
  81. package/src/themes/dark/props/index.scss +2 -0
  82. package/src/themes/dark/settings/_background.scss +12 -0
  83. package/src/themes/dark/settings/_colors.scss +15 -0
  84. package/src/themes/dark/settings/_index.scss +5 -0
  85. package/src/themes/dark/settings/components/_vv-button.scss +58 -0
  86. package/src/themes/dark/settings/components/_vv-input-checkbox.scss +26 -0
  87. package/src/themes/dark/style.scss +5 -0
  88. package/src/tools/_breakpoints.scss +126 -0
  89. package/src/tools/_functions.scss +138 -0
  90. package/src/tools/_index.scss +3 -0
  91. package/src/tools/_mixins.scss +902 -0
  92. package/src/utilities/animation.scss +8 -0
  93. package/src/utilities/backgrounds.scss +50 -0
  94. package/src/utilities/borders.scss +79 -0
  95. package/src/utilities/colors.scss +33 -0
  96. package/src/utilities/effects.scss +15 -0
  97. package/src/utilities/filters.scss +22 -0
  98. package/src/utilities/flexbox.scss +113 -0
  99. package/src/utilities/grid.scss +68 -0
  100. package/src/utilities/index.scss +12 -0
  101. package/src/utilities/layout.scss +188 -0
  102. package/src/utilities/sizing.scss +80 -0
  103. package/src/utilities/spacing.scss +109 -0
  104. package/src/utilities/typography.scss +226 -0
@@ -0,0 +1,411 @@
1
+ @use 'sass:map';
2
+ @use 'sass:meta';
3
+ @use 'sass:string';
4
+
5
+ // context
6
+ @import 'context';
7
+
8
+ :export {
9
+ // ============================================================== */
10
+ // #region CUSTOMIZATION
11
+ // colors
12
+ @each $key, $value in $colors {
13
+ @if type-of($value) == 'map' {
14
+ @each $subKey, $subValue in $value {
15
+ @if type-of($value) not 'map' {
16
+ @if not str-index($subKey, #{$key}) {
17
+ #{'colors__' + $key}: $subValue;
18
+ }
19
+
20
+ @if not
21
+ str-index($subKey, 'hue') and not
22
+ str-index($subKey, 'saturation') and not
23
+ str-index($subKey, 'lightness') and not
24
+ str-index($subKey, #{$key})
25
+ {
26
+ #{'colors__' + $key}-#{$subKey}: $subValue;
27
+ }
28
+ }
29
+ }
30
+ } @else {
31
+ #{'colors__' + $key}: $value;
32
+ }
33
+ }
34
+
35
+ // #endregion
36
+
37
+ // ==============================================================
38
+ // #region LAYOUT
39
+ // aspect-ratio
40
+ @each $key, $value in $aspect-ratio {
41
+ $name: meta.inspect($value);
42
+ $name: str-replace($name, '"', '');
43
+
44
+ #{'aspect-ratio__' + $key}: $name;
45
+ }
46
+
47
+ // breakpoints
48
+ @each $key, $value in $breakpoints {
49
+ #{'breakpoints__' + $key}: $value;
50
+ }
51
+
52
+ // columns
53
+ @each $index in $columns {
54
+ #{'columns__' + $index}: $index;
55
+ }
56
+
57
+ // break-after
58
+ @each $index in $break-after {
59
+ #{'break-after__' + $index}: $index;
60
+ }
61
+
62
+ // break-before
63
+ @each $index in $break-before {
64
+ #{'break-before__' + $index}: $index;
65
+ }
66
+
67
+ // break-inside
68
+ @each $index in $break-inside {
69
+ #{'break-inside__' + $index}: $index;
70
+ }
71
+
72
+ // display-without-breakpoints
73
+ @each $index in $display-without-breakpoints {
74
+ #{'display-without-breakpoints__' + $index}: $index;
75
+ }
76
+
77
+ // display-with-breakpoints
78
+ @each $index in $display-with-breakpoints {
79
+ #{'display-with-breakpoints__' + $index}: $index;
80
+ }
81
+
82
+ // object-fit
83
+ @each $index in $object-fit {
84
+ #{'object-fit__' + $index}: $index;
85
+ }
86
+
87
+ // object-position
88
+ @each $key, $value in $object-position {
89
+ #{'object-position__' + $key}: $value;
90
+ }
91
+
92
+ // position
93
+ @each $index in $position {
94
+ #{'position__' + $index}: $index;
95
+ }
96
+
97
+ // visibility
98
+ @each $key, $value in $visibility {
99
+ #{'visibility__' + $key}: $value;
100
+ }
101
+
102
+ // z-index
103
+ @each $key, $value in $z-index {
104
+ $measure: meta.inspect($value);
105
+ $measure: str-replace($measure, '"', '');
106
+
107
+ #{'z-index__' + $key}: $measure;
108
+ }
109
+
110
+ // #endregion
111
+
112
+ // ==============================================================
113
+ // #region FLEXBOX
114
+ // flex-direction
115
+ @each $key, $value in $flex-direction {
116
+ #{'flex-direction__' + $key}: $value;
117
+ }
118
+
119
+ // flex-wrap
120
+ @each $index in $flex-wrap {
121
+ #{'flex-wrap__' + $index}: $index;
122
+ }
123
+
124
+ // flex
125
+ @each $key, $value in $flex {
126
+ #{'flex__' + $key}: $value;
127
+ }
128
+
129
+ // order
130
+ @each $key, $value in $order {
131
+ #{'order__' + $key}: $value;
132
+ }
133
+
134
+ // justify-align-content
135
+ @each $key, $value in $justify-align-content {
136
+ #{'justify-align-content__' + $key}: $value;
137
+ }
138
+
139
+ // justify-align-items
140
+ @each $key, $value in $justify-align-items {
141
+ #{'justify-align-items__' + $key}: $value;
142
+ }
143
+
144
+ // justify-align-self
145
+ @each $key, $value in $justify-align-self {
146
+ #{'justify-align-self__' + $key}: $value;
147
+ }
148
+
149
+ // grid-template-columns
150
+ @each $key, $value in $grid-template-columns {
151
+ #{'grid-template-columns__' + $key}: $value;
152
+ }
153
+
154
+ // grid-column
155
+ @each $key, $value in $grid-column {
156
+ #{'grid-column__' + $key}: $value;
157
+ }
158
+
159
+ // grid-column-start-end
160
+ @each $key, $value in $grid-column-start-end {
161
+ #{'grid-column-start-end__' + $key}: $value;
162
+ }
163
+
164
+ // grid-template-rows
165
+ @each $key, $value in $grid-template-rows {
166
+ #{'grid-template-rows__' + $key}: $value;
167
+ }
168
+
169
+ // grid-row
170
+ @each $key, $value in $grid-row {
171
+ #{'grid-row__' + $key}: $value;
172
+ }
173
+
174
+ // grid-row-start-end
175
+ @each $key, $value in $grid-row-start-end {
176
+ #{'grid-row-start-end__' + $key}: $value;
177
+ }
178
+
179
+ // grid-auto-flow
180
+ @each $key, $value in $grid-auto-flow {
181
+ #{'grid-auto-flow__' + $key}: $value;
182
+ }
183
+
184
+ // grid-auto-rows-columns
185
+ @each $key, $value in $grid-auto-rows-columns {
186
+ #{'grid-auto-rows-columns__' + $key}: $value;
187
+ }
188
+
189
+ // #endregion
190
+
191
+ // ============================================================== */
192
+ // #region SPACING
193
+ // spacing & spacing-dynamic
194
+ @each $size, $value in map.merge($spacing, $spacing-dynamic) {
195
+ @if type-of($value) == 'map' {
196
+ @each $subKey, $subValue in $value {
197
+ @if type-of($value) not 'map' {
198
+ #{'spacers__' + $size}-#{$subKey}: $subValue;
199
+ }
200
+ }
201
+ } @else {
202
+ #{'spacers__' + $size}: $value;
203
+ }
204
+ }
205
+
206
+ // font-size & font-size-dynamic
207
+ @each $size, $value in map.merge($font-size, $font-size-dynamic) {
208
+ @if type-of($value) == 'map' {
209
+ @each $subKey, $subValue in $value {
210
+ @if type-of($value) not 'map' {
211
+ #{'font-size__' + $size}-#{$subKey}: $subValue;
212
+ }
213
+ }
214
+ } @else {
215
+ #{'font-size__' + $size}: $value;
216
+ }
217
+ }
218
+
219
+ // width spacer
220
+ @each $key, $value in $width {
221
+ $name: meta.inspect($key);
222
+ $name: str-replace($name, '\\/', '/');
223
+
224
+ #{'width-spacer__' + $name}: $value;
225
+ }
226
+
227
+ // height spacer
228
+ @each $key, $value in $height {
229
+ $name: meta.inspect($key);
230
+ $name: str-replace($name, '\\/', '/');
231
+
232
+ #{'height-spacer__' + $name}: $value;
233
+ }
234
+
235
+ // border radius
236
+ @each $key, $value in $border-radius {
237
+ #{'border-radius-spacer__' + $key}: $value;
238
+ }
239
+
240
+ // border width
241
+ @each $key, $value in $border-width {
242
+ #{'border-width-spacer__' + $key}: $value;
243
+ }
244
+
245
+ // #endregion
246
+
247
+ // ============================================================== */
248
+ // #region SIZING
249
+ // min width
250
+ @each $key, $value in $min-width {
251
+ #{'min-width__' + $key}: $value;
252
+ }
253
+
254
+ // min height
255
+ @each $key, $value in $min-height {
256
+ #{'min-height__' + $key}: $value;
257
+ }
258
+
259
+ // max width
260
+ @each $key, $value in $max-width {
261
+ #{'max-width__' + $key}: $value;
262
+ }
263
+
264
+ // max height
265
+ @each $key, $value in $max-height {
266
+ #{'max-height__' + $key}: $value;
267
+ }
268
+
269
+ // max height
270
+ @each $key, $value in $max-height {
271
+ #{'max-height__' + $key}: $value;
272
+ }
273
+
274
+ // #endregion
275
+
276
+ // ============================================================== */
277
+ // #region TYPOGRAPHY
278
+ // font-family
279
+ @each $key, $value in $font-family {
280
+ #{'font-family__' + $key}: $value;
281
+ }
282
+
283
+ // font-weight
284
+ @each $key, $value in $font-weight {
285
+ #{'font-weight__' + $key}: $value;
286
+ }
287
+
288
+ // line-height
289
+ @each $key, $value in $line-height {
290
+ #{'line-height__' + $key}: $value;
291
+ }
292
+
293
+ // letter-spacing
294
+ @each $key, $value in $letter-spacing {
295
+ #{'letter-spacing__' + $key}: $value;
296
+ }
297
+
298
+ // font-variant-numeric
299
+ @each $key, $value in $font-variant-numeric {
300
+ #{'font-variant-numeric__' + $key}: $value;
301
+ }
302
+
303
+ // text-align
304
+ @each $index in $text-align {
305
+ #{'text-align__' + $index}: $index;
306
+ }
307
+
308
+ // list-style-type
309
+ @each $index in $list-style-type {
310
+ #{'list-style-type__' + $index}: $index;
311
+ }
312
+
313
+ // list-style-position
314
+ @each $index in $list-style-position {
315
+ #{'list-style-position__' + $index}: $index;
316
+ }
317
+
318
+ // text-decorator-line
319
+ @each $key, $value in $text-decorator-line {
320
+ #{'text-decorator-line__' + $key}: $value;
321
+ }
322
+
323
+ // text-decorator-style
324
+ @each $index in $text-decorator-style {
325
+ #{'text-decorator-style__' + $index}: $index;
326
+ }
327
+
328
+ // text-decorator-thickness
329
+ @each $key, $value in $text-decorator-thickness {
330
+ #{'text-decorator-thickness__' + $key}: $value;
331
+ }
332
+
333
+ // text-underline-offset
334
+ @each $key, $value in $text-underline-offset {
335
+ #{'text-underline-offset__' + $key}: $value;
336
+ }
337
+
338
+ // text-transform
339
+ @each $key, $value in $text-transform {
340
+ #{'text-transform__' + $key}: $value;
341
+ }
342
+
343
+ // vertical-align
344
+ @each $index in $vertical-align {
345
+ #{'vertical-align__' + $index}: $index;
346
+ }
347
+
348
+ // white-space
349
+ @each $index in $white-space {
350
+ #{'white-space__' + $index}: $index;
351
+ }
352
+
353
+ // #endregion
354
+
355
+ // ============================================================== */
356
+ // #region BACKGROUND
357
+ // background-attachment
358
+ @each $index in $background-attachment {
359
+ #{'background-attachment__' + $index}: $index;
360
+ }
361
+
362
+ // background-clip
363
+ @each $key, $value in $background-clip {
364
+ #{'background-clip__' + $key}: $value;
365
+ }
366
+
367
+ // background-origin
368
+ @each $key, $value in $background-origin {
369
+ #{'background-origin__' + $key}: $value;
370
+ }
371
+
372
+ // background-position
373
+ @each $key, $value in $background-position {
374
+ #{'background-position__' + $key}: $value;
375
+ }
376
+
377
+ // background-repeat
378
+ @each $key, $value in $background-repeat {
379
+ #{'background-repeat__' + $key}: $value;
380
+ }
381
+
382
+ // background-size
383
+ @each $index in $background-size {
384
+ #{'background-size__' + $index}: $index;
385
+ }
386
+
387
+ // background-image
388
+ @each $key, $value in $background-image {
389
+ #{'background-image__' + $key}: $value;
390
+ }
391
+
392
+ // #endregion
393
+
394
+ // ============================================================== */
395
+ // #region BORDER
396
+ // border-style
397
+ @each $index in $border-style {
398
+ #{'border-style__' + $index}: $index;
399
+ }
400
+
401
+ // #endregion
402
+
403
+ // ============================================================== */
404
+ // #region EFFECTS
405
+ // blend-mode
406
+ @each $index in $blend-mode {
407
+ #{'blend-mode__' + $index}: $index;
408
+ }
409
+
410
+ // #endregion
411
+ }
@@ -0,0 +1,281 @@
1
+ :where(:host, :root, [class*='theme']) {
2
+ accent-color: var(--color-brand);
3
+ background: var(--color-surface);
4
+ caret-color: var(--color-brand);
5
+ color-scheme: var(--color-scheme);
6
+ color: var(--color-word);
7
+ scrollbar-color: var(--color-brand);
8
+ font-family: var(--font-sans);
9
+ }
10
+
11
+ :where(.preflight) {
12
+ // typography
13
+ :where(h1, h2, h3, h4, h5, h6) {
14
+ @extend %vv-text !optional;
15
+ @extend %vv-text--headline !optional;
16
+ }
17
+
18
+ :where(h1) {
19
+ @extend %vv-text--size-1 !optional;
20
+ }
21
+
22
+ :where(h2) {
23
+ @extend %vv-text--size-2 !optional;
24
+ }
25
+
26
+ :where(h3) {
27
+ @extend %vv-text--size-3 !optional;
28
+ }
29
+
30
+ :where(h4) {
31
+ @extend %vv-text--size-4 !optional;
32
+ }
33
+
34
+ :where(h5) {
35
+ @extend %vv-text--size-5 !optional;
36
+ }
37
+
38
+ :where(h6) {
39
+ @extend %vv-text--size-6 !optional;
40
+ }
41
+
42
+ :where(p) {
43
+ @extend %vv-text !optional;
44
+ @extend %vv-text--copy !optional;
45
+ }
46
+
47
+ :where(blockquote) {
48
+ @extend %vv-text !optional;
49
+ @extend %vv-text--quote !optional;
50
+ }
51
+
52
+ :where(ul, ol) {
53
+ @extend %list-inside !optional;
54
+ @extend %my-sm !optional;
55
+ @extend %pl-lg !optional;
56
+ }
57
+
58
+ :where(ul) {
59
+ @extend %list-disc !optional;
60
+ }
61
+
62
+ :where(ol) {
63
+ @extend %list-decimal !optional;
64
+ }
65
+
66
+ :where(b, strong, th) {
67
+ @extend %font-bold !optional;
68
+ }
69
+
70
+ :where(em, i, cite, dfn, var) {
71
+ @extend %italic !optional;
72
+ }
73
+
74
+ :where(dfn, var) {
75
+ @extend %font-serif !optional;
76
+ }
77
+
78
+ :where(del, s) {
79
+ @extend %line-through !optional;
80
+ }
81
+
82
+ :where(ins, u, cite, a) {
83
+ @extend %underline !optional;
84
+ }
85
+
86
+ :where(abbr) {
87
+ @extend %underline !optional;
88
+ @extend %decoration-dotted !optional;
89
+ }
90
+
91
+ :where(code) {
92
+ @extend %font-mono !optional;
93
+ }
94
+
95
+ :where(sub) {
96
+ @extend %align-sub !optional;
97
+ @extend %text-smaller !optional;
98
+ }
99
+
100
+ :where(sup) {
101
+ @extend %align-super !optional;
102
+ @extend %text-smaller !optional;
103
+ }
104
+
105
+ :where(q) {
106
+ @extend %font-serif !optional;
107
+ }
108
+
109
+ :where(small) {
110
+ @extend %text-smaller !optional;
111
+ }
112
+
113
+ :where(mark) {
114
+ @extend %bg-warning !optional;
115
+ }
116
+
117
+ :where(pre) {
118
+ @extend %font-mono !optional;
119
+ @extend %whitespace-pre-line !optional;
120
+ }
121
+
122
+ :where(dl) {
123
+ @extend %my-sm !optional;
124
+ }
125
+
126
+ :where(dd) {
127
+ @extend %ml-sm !optional;
128
+ }
129
+
130
+ :where(hr) {
131
+ @extend %my-lg !optional;
132
+ @extend %border !optional;
133
+ @extend %border-solid !optional;
134
+ @extend %border-surface-3 !optional;
135
+ }
136
+
137
+ // buttons
138
+ :where(button, input[type='button'], input[type='submit'], input[type='reset']) {
139
+ @extend %vv-button !optional;
140
+
141
+ &:where([type='button']) {
142
+ @extend %vv-button--primary !optional;
143
+ }
144
+
145
+ &:where([type='reset']) {
146
+ @extend %vv-button--secondary !optional;
147
+ }
148
+
149
+ &:where(:disabled) {
150
+ @extend %vv-button--disabled !optional;
151
+ }
152
+
153
+ &:where(:hover) {
154
+ @extend %vv-button--hover !optional;
155
+ }
156
+
157
+ &:where(:focus) {
158
+ @extend %vv-button--focus !optional;
159
+ }
160
+
161
+ &:where(:focus-visible) {
162
+ @extend %vv-button--focus-visible !optional;
163
+ }
164
+
165
+ &:where(:visited) {
166
+ @extend %vv-button--visited !optional;
167
+ }
168
+
169
+ &:where(:active) {
170
+ @extend %vv-button--active !optional;
171
+ }
172
+ }
173
+
174
+ // table
175
+ :where(table) {
176
+ @extend %vv-table !optional;
177
+
178
+ :where(tr) {
179
+ @extend %vv-table__tr !optional;
180
+ }
181
+
182
+ :where(td) {
183
+ @extend %vv-table__td !optional;
184
+ }
185
+
186
+ :where(th) {
187
+ @extend %vv-table__th !optional;
188
+ }
189
+ }
190
+
191
+ // progress
192
+ :where(progress) {
193
+ @extend %vv-progress !optional;
194
+ }
195
+
196
+ // checkbox
197
+ :where(label:has(input[type='checkbox'])) {
198
+ @extend %vv-input-checkbox !optional;
199
+
200
+ :where(input[type='checkbox']) {
201
+ @extend %vv-input-checkbox__input !optional;
202
+
203
+ &:checked {
204
+ @extend %vv-input-checkbox-element-input--checked !optional;
205
+ }
206
+
207
+ &:indeterminate {
208
+ @extend %vv-input-checkbox-element-input--indeterminate
209
+ !optional;
210
+ }
211
+
212
+ &:focus-visible {
213
+ @extend %vv-input-checkbox-element-input--focus-visible
214
+ !optional;
215
+ }
216
+ }
217
+ }
218
+
219
+ :where(label:has(input[type='checkbox']:disabled)) {
220
+ @extend %vv-input-checkbox--disabled !optional;
221
+ }
222
+
223
+ // radio
224
+ :where(label:has(input[type='radio'])) {
225
+ @extend %vv-input-checkbox !optional;
226
+
227
+ :where(input[type='radio']) {
228
+ @extend %vv-input-radio__input !optional;
229
+
230
+ &:checked {
231
+ @extend %vv-input-radio-element-input--checked !optional;
232
+ }
233
+
234
+ &:focus-visible {
235
+ @extend %vv-input-radio-element-input--focus-visible !optional;
236
+ }
237
+ }
238
+ }
239
+
240
+ :where(label:has(input[type='radio']:disabled)) {
241
+ @extend %vv-input-radio--disabled !optional;
242
+ }
243
+
244
+ // textarea
245
+ :where(textarea) {
246
+ @extend %vv-textarea__wrapper !optional;
247
+ @extend %vv-textarea__input !optional;
248
+
249
+ &:disabled {
250
+ @extend %vv-textarea--disabled !optional;
251
+ }
252
+
253
+ &:readonly {
254
+ @extend %vv-textarea--readonly !optional;
255
+ }
256
+ }
257
+
258
+ // select
259
+ :where(select) {
260
+ @extend %vv-select__wrapper !optional;
261
+ @extend %vv-select__input !optional;
262
+
263
+ &:disabled {
264
+ @extend %vv-select--disabled !optional;
265
+ }
266
+ }
267
+
268
+ // input text
269
+ :where(input:not([type='radio'], [type='checkbox'], [type='button'], [type='submit'], [type='reset'])) {
270
+ @extend %vv-input-text__wrapper !optional;
271
+ @extend %vv-input-text__input !optional;
272
+
273
+ &:disabled {
274
+ @extend %vv-input-text--disabled !optional;
275
+ }
276
+
277
+ &:readonly {
278
+ @extend %vv-input-text--readonly !optional;
279
+ }
280
+ }
281
+ }