@volverjs/style 0.1.2-beta.8 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +53 -46
  3. package/dist/components/vv-accordion.css +1 -1
  4. package/dist/components/vv-alert.css +1 -0
  5. package/dist/components/vv-avatar.css +1 -0
  6. package/dist/components/vv-badge.css +1 -1
  7. package/dist/components/vv-breadcrumb.css +1 -1
  8. package/dist/components/vv-button-group.css +1 -1
  9. package/dist/components/vv-button.css +1 -1
  10. package/dist/components/vv-card.css +1 -1
  11. package/dist/components/vv-checkbox-group.css +1 -0
  12. package/dist/components/vv-checkbox.css +1 -0
  13. package/dist/components/vv-dialog.css +1 -1
  14. package/dist/components/vv-dropdown.css +1 -1
  15. package/dist/components/vv-input-text.css +1 -1
  16. package/dist/components/vv-nav.css +1 -1
  17. package/dist/components/vv-progress.css +1 -1
  18. package/dist/components/vv-radio-group.css +1 -0
  19. package/dist/components/vv-radio.css +1 -0
  20. package/dist/components/vv-select.css +1 -1
  21. package/dist/components/vv-skeleton.css +1 -0
  22. package/dist/components/vv-tab.css +1 -0
  23. package/dist/components/vv-table.css +1 -1
  24. package/dist/components/vv-text.css +1 -1
  25. package/dist/components/vv-textarea.css +1 -1
  26. package/dist/components/vv-toast.css +1 -0
  27. package/dist/components/vv-tooltip.css +1 -0
  28. package/dist/components.css +1 -1
  29. package/dist/export.css +1 -1
  30. package/dist/props/background.css +1 -1
  31. package/dist/props/breakpoints.css +1 -0
  32. package/dist/props/colors.css +1 -1
  33. package/dist/props/filters.css +1 -1
  34. package/dist/props/input.css +1 -1
  35. package/dist/props/layout.css +1 -1
  36. package/dist/props/spacing.css +1 -1
  37. package/dist/props/transitions.css +1 -0
  38. package/dist/props.css +1 -1
  39. package/dist/themes/dark/components.css +1 -1
  40. package/dist/themes/dark/props.css +1 -1
  41. package/dist/themes/dark/volver.css +1 -1
  42. package/dist/utilities/backgrounds.css +1 -1
  43. package/dist/utilities/borders.css +1 -1
  44. package/dist/utilities/colors.css +1 -1
  45. package/dist/utilities/effects.css +1 -1
  46. package/dist/utilities/filters.css +1 -1
  47. package/dist/utilities/flexbox.css +1 -1
  48. package/dist/utilities/interactivity.css +1 -0
  49. package/dist/utilities/layout.css +1 -1
  50. package/dist/utilities/sizing.css +1 -1
  51. package/dist/utilities/spacing.css +1 -1
  52. package/dist/utilities/transitions.css +1 -0
  53. package/dist/utilities/typography.css +1 -1
  54. package/dist/utilities.css +1 -1
  55. package/dist/volver.css +1 -1
  56. package/package.json +57 -37
  57. package/src/_config.scss +17 -11
  58. package/src/_context.scss +3 -3
  59. package/src/_preflight.scss +308 -247
  60. package/src/components/index.scss +25 -19
  61. package/src/components/vv-accordion.scss +3 -2
  62. package/src/components/vv-alert.scss +13 -0
  63. package/src/components/vv-avatar.scss +13 -0
  64. package/src/components/vv-badge.scss +3 -2
  65. package/src/components/vv-breadcrumb.scss +3 -2
  66. package/src/components/vv-button-group.scss +11 -10
  67. package/src/components/vv-button.scss +5 -8
  68. package/src/components/vv-card.scss +3 -2
  69. package/src/components/vv-checkbox-group.scss +13 -0
  70. package/src/components/{vv-input-checkbox.scss → vv-checkbox.scss} +7 -6
  71. package/src/components/vv-dialog.scss +3 -2
  72. package/src/components/vv-dropdown.scss +3 -2
  73. package/src/components/vv-input-text.scss +6 -5
  74. package/src/components/vv-nav.scss +3 -2
  75. package/src/components/vv-progress.scss +3 -2
  76. package/src/components/vv-radio-group.scss +13 -0
  77. package/src/components/{vv-input-radio.scss → vv-radio.scss} +6 -5
  78. package/src/components/vv-select.scss +6 -5
  79. package/src/components/vv-skeleton.scss +14 -0
  80. package/src/components/vv-tab.scss +13 -0
  81. package/src/components/vv-table.scss +3 -2
  82. package/src/components/vv-text.scss +3 -2
  83. package/src/components/vv-textarea.scss +6 -5
  84. package/src/components/vv-toast.scss +13 -0
  85. package/src/components/vv-tooltip.scss +33 -0
  86. package/src/export.scss +89 -27
  87. package/src/props/background.scss +1 -1
  88. package/src/props/borders.scss +1 -1
  89. package/src/props/breakpoints.scss +15 -0
  90. package/src/props/colors.scss +1 -1
  91. package/src/props/effects.scss +1 -1
  92. package/src/props/filters.scss +2 -1
  93. package/src/props/index.scss +13 -12
  94. package/src/props/input.scss +1 -1
  95. package/src/props/layout.scss +1 -1
  96. package/src/props/media.scss +1 -1
  97. package/src/props/sizing.scss +1 -1
  98. package/src/props/spacing.scss +2 -2
  99. package/src/props/{animation.scss → transitions.scss} +53 -2
  100. package/src/props/typography.scss +2 -2
  101. package/src/settings/_background.scss +6 -1
  102. package/src/settings/_breakpoints.scss +2 -0
  103. package/src/settings/_colors.scss +23 -4
  104. package/src/settings/_effects.scss +47 -2
  105. package/src/settings/_filters.scss +9 -0
  106. package/src/settings/_index.scss +40 -33
  107. package/src/settings/_input.scss +8 -6
  108. package/src/settings/_interactivity.scss +39 -0
  109. package/src/settings/_layout.scss +18 -10
  110. package/src/settings/_spacing.scss +1 -0
  111. package/src/settings/_transitions.scss +44 -0
  112. package/src/settings/components/_vv-accordion.scss +40 -34
  113. package/src/settings/components/_vv-alert.scss +161 -0
  114. package/src/settings/components/_vv-avatar.scss +55 -0
  115. package/src/settings/components/_vv-badge.scss +43 -11
  116. package/src/settings/components/_vv-breadcrumb.scss +23 -15
  117. package/src/settings/components/_vv-button-group.scss +4 -0
  118. package/src/settings/components/_vv-button.scss +30 -25
  119. package/src/settings/components/_vv-card.scss +2 -2
  120. package/src/settings/components/{_vv-input-checkbox-group.scss → _vv-checkbox-group.scss} +2 -1
  121. package/src/settings/components/{_vv-input-checkbox.scss → _vv-checkbox.scss} +46 -11
  122. package/src/settings/components/_vv-dialog.scss +71 -89
  123. package/src/settings/components/_vv-input-text.scss +83 -37
  124. package/src/settings/components/_vv-nav.scss +98 -13
  125. package/src/settings/components/_vv-progress.scss +1 -1
  126. package/src/settings/components/_vv-radio-group.scss +3 -0
  127. package/src/settings/components/{_vv-input-radio.scss → _vv-radio.scss} +33 -4
  128. package/src/settings/components/_vv-select.scss +34 -43
  129. package/src/settings/components/_vv-skeleton.scss +22 -0
  130. package/src/settings/components/_vv-tab.scss +16 -0
  131. package/src/settings/components/_vv-table.scss +8 -1
  132. package/src/settings/components/_vv-text.scss +20 -0
  133. package/src/settings/components/_vv-textarea.scss +49 -24
  134. package/src/settings/components/_vv-toast.scss +259 -0
  135. package/src/settings/components/_vv-tooltip.scss +74 -0
  136. package/src/themes/dark/_context.scss +7 -4
  137. package/src/themes/dark/components/_vv-button.scss +2 -4
  138. package/src/themes/dark/components/index.scss +1 -2
  139. package/src/themes/dark/props/_background.scss +1 -1
  140. package/src/themes/dark/props/_colors.scss +1 -1
  141. package/src/themes/dark/props/_input.scss +15 -0
  142. package/src/themes/dark/props/index.scss +3 -2
  143. package/src/themes/dark/settings/_background.scss +5 -0
  144. package/src/themes/dark/settings/_colors.scss +22 -2
  145. package/src/themes/dark/settings/_index.scss +4 -4
  146. package/src/themes/dark/settings/_input.scss +8 -0
  147. package/src/themes/dark/settings/components/_vv-button.scss +9 -9
  148. package/src/themes/dark/volver.scss +2 -2
  149. package/src/tools/_breakpoints.scss +7 -7
  150. package/src/tools/_functions.scss +95 -37
  151. package/src/tools/_index.scss +3 -3
  152. package/src/tools/_mixins.scss +166 -35
  153. package/src/utilities/backgrounds.scss +15 -8
  154. package/src/utilities/borders.scss +22 -9
  155. package/src/utilities/colors.scss +9 -5
  156. package/src/utilities/effects.scss +23 -5
  157. package/src/utilities/filters.scss +15 -4
  158. package/src/utilities/flexbox.scss +15 -8
  159. package/src/utilities/grid.scss +17 -9
  160. package/src/utilities/index.scss +13 -12
  161. package/src/utilities/interactivity.scss +10 -0
  162. package/src/utilities/layout.scss +35 -23
  163. package/src/utilities/sizing.scss +23 -26
  164. package/src/utilities/spacing.scss +1 -1
  165. package/src/utilities/transitions.scss +47 -0
  166. package/src/utilities/typography.scss +34 -17
  167. package/src/volver.scss +4 -4
  168. package/dist/components/vv-input-checkbox-group.css +0 -1
  169. package/dist/components/vv-input-checkbox.css +0 -1
  170. package/dist/components/vv-input-radio-group.css +0 -1
  171. package/dist/components/vv-input-radio.css +0 -1
  172. package/dist/props/animation.css +0 -1
  173. package/dist/utilities/animation.css +0 -1
  174. package/src/components/vv-input-checkbox-group.scss +0 -12
  175. package/src/components/vv-input-radio-group.scss +0 -12
  176. package/src/settings/_animation.scss +0 -9
  177. package/src/settings/components/_vv-input-radio-group.scss +0 -1
  178. package/src/themes/dark/components/_vv-input-checkbox.scss +0 -24
  179. package/src/themes/dark/settings/components/_vv-input-checkbox.scss +0 -26
  180. package/src/utilities/animation.scss +0 -8
@@ -5,6 +5,7 @@ $vv-input-text: (
5
5
  margin-bottom: var(--input-gap),
6
6
  font-size: var(--input-font-size),
7
7
  line-height: var(--input-line-height),
8
+ min-width: var(--input-min-width),
8
9
  element: (
9
10
  label: (
10
11
  _alias: '> label',
@@ -25,7 +26,8 @@ $vv-input-text: (
25
26
  overflow: hidden,
26
27
  background-color: var(--input-background-color),
27
28
  will-change: background-color,
28
- transition: background-color 0.3s ease-in-out,
29
+ transition: var(--transition-colors),
30
+ min-height: var(--spacing-50),
29
31
  pseudo: (
30
32
  before: (
31
33
  position: absolute,
@@ -41,7 +43,7 @@ $vv-input-text: (
41
43
  transform: scaleX(0),
42
44
  transform-origin: left,
43
45
  will-change: transform,
44
- transition: transform 0.3s ease-in-out,
46
+ transition: var(--transition-transform),
45
47
  ),
46
48
  ),
47
49
  state: (
@@ -63,9 +65,11 @@ $vv-input-text: (
63
65
  display: block,
64
66
  flex: 1,
65
67
  color: var(--input-color),
66
- [padding]: var(--input-padding-top) var(--input-padding-right)
67
- var(--input-padding-bottom) var(--input-padding-left),
68
- min-height: var(--spacing-50),
68
+ [margin-block]: var(--input-spacing-top) var(--input-spacing-bottom),
69
+ [padding-inline]: var(--input-spacing-left)
70
+ var(--input-spacing-right),
71
+ min-width: 0,
72
+ block-size: calc(var(--input-line-height) * var(--input-font-size)),
69
73
  pseudo: (
70
74
  placeholder: (
71
75
  color: var(--input-placeholder-color),
@@ -78,19 +82,16 @@ $vv-input-text: (
78
82
  opacity: 0,
79
83
  ),
80
84
  search-cancel-button: (
81
- display: none,
85
+ -webkit-appearance: none,
86
+ opacity: 0,
82
87
  ),
83
88
  color-swatch-wrapper: (
84
- display: block,
85
- border: none,
86
- height: 100%,
87
- padding: 0,
89
+ padding: 1px,
88
90
  ),
89
91
  color-swatch: (
90
- display: block,
91
- border: none,
92
92
  height: var(--spacing-20),
93
93
  border-radius: var(--spacing-4),
94
+ padding: 0,
94
95
  ),
95
96
  outer-spin-button: (
96
97
  display: none,
@@ -98,6 +99,12 @@ $vv-input-text: (
98
99
  inner-spin-button: (
99
100
  display: none,
100
101
  ),
102
+ datetime-edit-fields-wrapper: (
103
+ padding: 0,
104
+ ),
105
+ datetime-edit-day-field: (
106
+ padding: 0,
107
+ ),
101
108
  ),
102
109
  state: (
103
110
  disabled: (
@@ -114,35 +121,52 @@ $vv-input-text: (
114
121
  ),
115
122
  icon: (
116
123
  _alias: ':where(svg, [data-icon])',
117
- margin: var(--input-padding-top) var(--input-padding-right)
118
- var(--input-padding-bottom) var(--input-padding-left),
119
- position: var(--input-icon-position),
124
+ margin: var(--input-spacing-top) var(--input-spacing-right)
125
+ var(--input-spacing-bottom) var(--input-spacing-left),
120
126
  width: var(--input-icon-width),
121
127
  height: var(--input-icon-height),
122
128
  padding: var(--input-icon-padding),
129
+ ),
130
+ icon-left: (
131
+ _alias: '> div > :where(svg, [data-icon])',
132
+ position: var(--input-icon-position),
123
133
  pointer-events: var(--input-icon-pointer-events),
124
134
  ),
125
135
  icon-right: (
126
136
  _alias: 'input + :where(svg, [data-icon])',
137
+ position: var(--input-icon-position),
138
+ pointer-events: var(--input-icon-pointer-events),
127
139
  right: 0,
128
140
  ),
129
141
  actions-group: (
130
142
  display: flex,
131
143
  flex-direction: column,
132
- position: absolute,
133
- right: 0,
134
- top: 0,
135
- bottom: var(--spacing-px),
144
+ height: var(--input-min-height),
145
+ ),
146
+ action: (
147
+ cursor: pointer,
148
+ state: (
149
+ focus-visible: (
150
+ text-shadow: 0 1px 0 var(--color-gray-darken-5),
151
+ ),
152
+ ),
136
153
  ),
137
154
  action-chevron: (
138
155
  flex: 1,
139
- width: calc(1em + var(--spacing-sm) * 2),
156
+ width:
157
+ calc(
158
+ var(--input-icon-width) + var(--input-spacing-left) +
159
+ var(--input-spacing-right)
160
+ ),
140
161
  background-position: center var(--spacing-2),
141
162
  background-size: var(--text-14) auto,
142
163
  background-repeat: no-repeat,
143
164
  background-image: var(--bg-chevron),
144
165
  cursor: pointer,
145
166
  state: (
167
+ focus-visible: (
168
+ background-color: var(--color-surface-3),
169
+ ),
146
170
  hover: (
147
171
  background-color: var(--color-surface-4),
148
172
  ),
@@ -166,13 +190,23 @@ $vv-input-text: (
166
190
  overflow: var(--input-hint-overflow),
167
191
  max-width: var(--input-hint-max-width),
168
192
  ),
193
+ limit: (
194
+ [padding-right]: var(--input-spacing-right),
195
+ font-size: var(--input-hint-font-size),
196
+ color: var(--input-hint-color),
197
+ ),
169
198
  ),
170
199
  modifier: (
171
200
  icon-left: (
172
- --input-padding-left: calc(var(--spacing-sm) * 2 + 1em),
201
+ --input-spacing-left: calc(var(--spacing-sm) * 2 + 1em),
173
202
  ),
174
203
  icon-right: (
175
- --input-padding-right: calc(var(--spacing-sm) * 2 + 1em),
204
+ --input-spacing-right: calc(var(--spacing-sm) * 2 + 1em),
205
+ element: (
206
+ limit: (
207
+ margin-left: calc((var(--spacing-sm) + 1em) * -1),
208
+ ),
209
+ ),
176
210
  ),
177
211
  valid: (
178
212
  element: (
@@ -187,6 +221,9 @@ $vv-input-text: (
187
221
  hint: (
188
222
  color: var(--input-valid-color),
189
223
  ),
224
+ limit: (
225
+ color: var(--input-valid-color),
226
+ ),
190
227
  icon-right: (
191
228
  color: var(--input-valid-color),
192
229
  ),
@@ -205,6 +242,9 @@ $vv-input-text: (
205
242
  hint: (
206
243
  color: var(--input-invalid-color),
207
244
  ),
245
+ limit: (
246
+ color: var(--input-invalid-color),
247
+ ),
208
248
  icon-right: (
209
249
  color: var(--input-invalid-color),
210
250
  ),
@@ -219,40 +259,46 @@ $vv-input-text: (
219
259
  background: var(--color-brand-lighten-5),
220
260
  ),
221
261
  after: (
222
- animation: var(--animate-indeterminate),
262
+ animation: var(--animation-indeterminate),
223
263
  ),
224
264
  ),
225
265
  ),
226
266
  ),
227
267
  ),
228
268
  floating: (
229
- [margin-left]: var(--input-padding-left),
230
- [margin-right]: var(--input-padding-right),
269
+ [margin-left]: var(--input-spacing-left),
270
+ [margin-right]: var(--input-spacing-right),
231
271
  element: (
232
272
  wrapper: (
233
- [margin-left]: calc(var(--input-padding-left) * -1),
234
- [margin-right]: calc(var(--input-padding-right) * -1),
273
+ [margin-left]: calc(var(--input-spacing-left) * -1),
274
+ [margin-right]: calc(var(--input-spacing-right) * -1),
235
275
  ),
236
276
  hint: (
237
- [margin-left]: calc(var(--input-padding-left) * -1),
238
- [margin-right]: calc(var(--input-padding-right) * -1),
277
+ [margin-left]: calc(var(--input-spacing-left) * -1),
278
+ [margin-right]: calc(var(--input-spacing-right) * -1),
239
279
  ),
240
280
  label: (
241
281
  position: absolute,
242
282
  z-index: 1,
283
+ display: flex,
284
+ align-items: center,
285
+ min-height: var(--input-min-height),
243
286
  pointer-events: none,
244
287
  font-size: inherit,
245
- [padding-top]: var(--input-padding-top),
246
- [padding-bottom]: var(--input-padding-bottom),
288
+ [padding-top]: var(--input-spacing-top),
289
+ [padding-bottom]: var(--input-spacing-bottom),
247
290
  padding-inline: 0,
248
291
  margin: 0,
249
292
  will-change: 'transform',
250
- transform-origin: left,
251
- transition: all 0.3s ease-in-out,
293
+ transition: var(--transition-all),
252
294
  ),
253
295
  input: (
296
+ will-change: 'transform',
297
+ transition: var(--transition-all),
254
298
  pseudo: (
255
299
  placeholder: (
300
+ will-change: 'opacity',
301
+ transition: var(--transition-opacity),
256
302
  opacity: 0,
257
303
  ),
258
304
  ),
@@ -262,11 +308,11 @@ $vv-input-text: (
262
308
  focus-within: (
263
309
  element: (
264
310
  label: (
265
- transform: translateY(-1.2ch),
311
+ transform: translateY(-0.8em),
266
312
  font-size: var(--text-12),
267
313
  ),
268
314
  input: (
269
- transform: translateY(0.85ch),
315
+ transform: translateY(0.55em),
270
316
  pseudo: (
271
317
  placeholder: (
272
318
  opacity: 1,
@@ -278,11 +324,11 @@ $vv-input-text: (
278
324
  dirty: (
279
325
  element: (
280
326
  label: (
281
- transform: translateY(-1.2ch),
327
+ transform: translateY(-0.8em),
282
328
  font-size: var(--text-12),
283
329
  ),
284
330
  input: (
285
- transform: translateY(0.85ch),
331
+ transform: translateY(0.55em),
286
332
  pseudo: (
287
333
  placeholder: (
288
334
  opacity: 1,
@@ -1,5 +1,6 @@
1
1
  $vv-nav: (
2
2
  --nav-item-padding: var(--spacing-xs) var(--spacing-sm),
3
+ display: flex,
3
4
  element: (
4
5
  menu: (
5
6
  _alias: 'ul',
@@ -12,29 +13,23 @@ $vv-nav: (
12
13
  _alias: 'li',
13
14
  ),
14
15
  heading-label: (
15
- _alias: '[aria-hidden="true"]',
16
16
  display: block,
17
17
  font-weight: var(--font-semibold),
18
18
  [padding]: var(--nav-item-padding),
19
19
  ),
20
20
  item-label: (
21
21
  _alias: 'li > a',
22
- display: block,
22
+ display: flex,
23
+ align-items: center,
23
24
  will-change: background-color color,
24
- transition: all 0.3s ease-in-out,
25
- border-radius: var(--rounded-md),
25
+ transition: var(--transition-all),
26
26
  color: var(--color-word-3),
27
27
  [padding]: var(--nav-item-padding),
28
28
  state: (
29
29
  hover: (
30
- background-color: var(--color-surface-2),
31
30
  color: var(--color-word-1),
32
31
  ),
33
- active: (
34
- background-color: var(--color-surface-3),
35
- ),
36
32
  current: (
37
- background-color: var(--color-surface-2),
38
33
  color: var(--color-word-1),
39
34
  ),
40
35
  ),
@@ -48,10 +43,100 @@ $vv-nav: (
48
43
  ),
49
44
  ),
50
45
  modifier: (
51
- menu: (
52
- font-size: 0.9em,
53
- display: flex,
54
- flex-direction: column,
46
+ sidebar: (
47
+ font-size: var(--text-14),
48
+ element: (
49
+ item-label: (
50
+ border-radius: var(--rounded-md),
51
+ state: (
52
+ hover: (
53
+ background-color: var(--color-surface-2),
54
+ ),
55
+ active: (
56
+ background-color: var(--color-surface-3),
57
+ ),
58
+ current: (
59
+ background-color: var(--color-surface-2),
60
+ ),
61
+ ),
62
+ ),
63
+ ),
64
+ ),
65
+ aside: (
66
+ --nav-item-padding: var(--spacing-8) var(--spacing-12),
67
+ font-size: var(--text-12),
68
+ border-left: var(--border) solid var(--color-surface-3),
69
+ element: (
70
+ heading-label: (
71
+ text-transform: uppercase,
72
+ ),
73
+ item-label: (
74
+ margin-left: calc(-1 * var(--border)),
75
+ border-left: var(--border) solid var(--color-surface-3),
76
+ border-radius: 0,
77
+ state: (
78
+ hover: (
79
+ border-color: var(--color-brand),
80
+ ),
81
+ current: (
82
+ border-color: var(--color-brand),
83
+ ),
84
+ ),
85
+ ),
86
+ divider: (
87
+ margin-block: var(--spacing-8),
88
+ ),
89
+ ),
90
+ ),
91
+ tabs: (
92
+ element: (
93
+ menu: (
94
+ overflow: auto hidden,
95
+ overscroll-behavior-x: contain,
96
+ scroll-behavior: smooth,
97
+ scroll-snap-type: x mandatory,
98
+ flex-direction: row,
99
+ border-bottom: 1px solid var(--color-surface-4),
100
+ scrollbar-width: none,
101
+ pseudo: (
102
+ -webkit-scrollbar: (
103
+ width: 0,
104
+ height: 0,
105
+ ),
106
+ ),
107
+ ),
108
+ item-label: (
109
+ border-bottom: 2px solid transparent,
110
+ margin-bottom: -1px,
111
+ white-space: nowrap,
112
+ state: (
113
+ hover: (
114
+ color: var(--color-brand),
115
+ ),
116
+ current: (
117
+ color: var(--color-brand),
118
+ border-color: var(--color-brand),
119
+ background-color:
120
+ hsla(
121
+ var(--color-brand-hue)
122
+ var(--color-brand-saturation)
123
+ var(--color-brand-lightness) / 5%
124
+ ),
125
+ ),
126
+ ),
127
+ ),
128
+ ),
129
+ ),
130
+ full: (
131
+ element: (
132
+ item: (
133
+ flex: 1 1 0%,
134
+ ),
135
+ item-label: (
136
+ display: block,
137
+ text-align: center,
138
+ ),
139
+ ),
55
140
  ),
56
141
  ),
57
142
  ) !default;
@@ -31,7 +31,7 @@ $vv-progress: (
31
31
  var(--color-surface-2) 30%
32
32
  )
33
33
  top left/150% 150% no-repeat,
34
- animation: var(--animate-progress-indeterminate),
34
+ animation: var(--animation-progress-indeterminate),
35
35
  pseudo: (
36
36
  progress-bar: (
37
37
  background: transparent,
@@ -0,0 +1,3 @@
1
+ @use 'vv-checkbox-group' as *;
2
+
3
+ $vv-radio-group: $vv-checkbox-group !default;
@@ -1,6 +1,6 @@
1
- $vv-input-radio: (
1
+ $vv-radio: (
2
2
  display: inline-flex,
3
- flex-wrap: nowrap,
3
+ flex-wrap: wrap,
4
4
  align-items: center,
5
5
  cursor: pointer,
6
6
  user-select: none,
@@ -8,22 +8,39 @@ $vv-input-radio: (
8
8
  color: var(--input-color),
9
9
  font-size: var(--input-font-size),
10
10
  line-height: var(--input-line-height),
11
+ min-width: var(--input-min-width),
11
12
  state: (
12
13
  disabled: (
13
14
  opacity: 0.3,
14
15
  cursor: not-allowed,
15
16
  ),
17
+ ),
18
+ modifier: (
16
19
  readonly: (
17
20
  opacity: 1,
18
21
  cursor: default,
19
22
  pointer-events: none,
20
23
  ),
24
+ valid: (
25
+ element: (
26
+ hint: (
27
+ color: var(--input-valid-color),
28
+ ),
29
+ ),
30
+ ),
31
+ invalid: (
32
+ element: (
33
+ hint: (
34
+ color: var(--input-invalid-color),
35
+ ),
36
+ ),
37
+ ),
21
38
  ),
22
39
  element: (
23
40
  input: (
24
41
  _alias: "> input[type='radio']",
25
42
  border: var(--spacing-2) solid var(--input-color),
26
- width: var(--spacing-20),
43
+ min-width: var(--spacing-20),
27
44
  height: var(--spacing-20),
28
45
  border-radius: 50%,
29
46
  margin: 0 var(--input-label-gap) 0 0,
@@ -40,7 +57,7 @@ $vv-input-radio: (
40
57
  border-radius: 50%,
41
58
  transform: translate(-50%, -50%) scale(0),
42
59
  will-change: transform,
43
- transition: transform 0.3s ease-in-out,
60
+ transition: var(--transition-transform),
44
61
  ),
45
62
  ),
46
63
  state: (
@@ -57,5 +74,17 @@ $vv-input-radio: (
57
74
  ),
58
75
  ),
59
76
  ),
77
+ hint: (
78
+ _alias: '> small',
79
+ flex-basis: 100%,
80
+ display: var(--input-hint-display),
81
+ font-size: var(--input-hint-font-size),
82
+ color: var(--input-hint-color),
83
+ padding-top: var(--input-hint-gap),
84
+ white-space: var(--input-hint-white-space),
85
+ text-overflow: var(--input-hint-text-overflow),
86
+ overflow: var(--input-hint-overflow),
87
+ max-width: var(--input-hint-max-width),
88
+ ),
60
89
  ),
61
90
  ) !default;
@@ -6,6 +6,7 @@ $vv-select: (
6
6
  font-size: var(--input-font-size),
7
7
  line-height: var(--input-line-height),
8
8
  user-select: none,
9
+ min-width: var(--input-min-width),
9
10
  element: (
10
11
  label: (
11
12
  _alias: '> label',
@@ -25,7 +26,7 @@ $vv-select: (
25
26
  flex: 1,
26
27
  background-color: var(--input-background-color),
27
28
  will-change: background-color,
28
- transition: background-color 0.3s ease-in-out,
29
+ transition: var(--transition-colors),
29
30
  pseudo: (
30
31
  before: (
31
32
  position: absolute,
@@ -41,7 +42,7 @@ $vv-select: (
41
42
  transform: scaleX(0),
42
43
  transform-origin: left,
43
44
  will-change: transform,
44
- transition: transform 0.3s ease-in-out,
45
+ transition: var(--transition-transform),
45
46
  ),
46
47
  ),
47
48
  state: (
@@ -68,26 +69,35 @@ $vv-select: (
68
69
  ),
69
70
  input: (
70
71
  _alias: 'select',
71
- display: block,
72
+ display: flex,
73
+ align-items: center,
72
74
  flex: 1,
73
75
  color: var(--input-placeholder-color),
74
- [padding]: var(--input-padding-top) var(--input-padding-right)
75
- var(--input-padding-bottom) var(--input-padding-left),
76
- min-height: var(--spacing-50),
76
+ [padding]: var(--input-spacing-top) var(--input-spacing-right)
77
+ var(--input-spacing-bottom) var(--input-spacing-left),
77
78
  background-image: var(--bg-chevron),
78
79
  background-repeat: no-repeat,
79
- [background-position]: right var(--input-padding-right) center,
80
+ [background-position]: right var(--input-spacing-right) center,
80
81
  background-size: 1em,
82
+ min-height: var(--spacing-50),
81
83
  state: (
82
84
  disabled: (
83
85
  cursor: not-allowed,
84
86
  ),
85
87
  ),
88
+ pseudo: (
89
+ marker: (
90
+ display: none,
91
+ ),
92
+ -webkit-details-marker: (
93
+ display: none,
94
+ ),
95
+ ),
86
96
  ),
87
97
  icon: (
88
98
  _alias: ':where(svg, [data-icon])',
89
- margin: var(--input-padding-top) var(--input-padding-right)
90
- var(--input-padding-bottom) var(--input-padding-left),
99
+ margin: var(--input-spacing-top) var(--input-spacing-right)
100
+ var(--input-spacing-bottom) var(--input-spacing-left),
91
101
  position: var(--input-icon-position),
92
102
  width: var(--input-icon-width),
93
103
  height: var(--input-icon-height),
@@ -120,10 +130,10 @@ $vv-select: (
120
130
  ),
121
131
  ),
122
132
  icon-left: (
123
- --input-padding-left: calc(var(--spacing-sm) * 2 + 1em),
133
+ --input-spacing-left: calc(var(--spacing-sm) * 2 + 1em),
124
134
  ),
125
135
  icon-right: (
126
- --input-padding-right: calc(var(--spacing-sm) * 2 + 1em),
136
+ --input-spacing-right: calc(var(--spacing-sm) * 2 + 1em),
127
137
  ),
128
138
  valid: (
129
139
  element: (
@@ -170,36 +180,36 @@ $vv-select: (
170
180
  background: var(--color-brand-lighten-5),
171
181
  ),
172
182
  after: (
173
- animation: var(--animate-indeterminate),
183
+ animation: var(--animation-indeterminate),
174
184
  ),
175
185
  ),
176
186
  ),
177
187
  ),
178
188
  ),
179
189
  floating: (
180
- [margin-left]: var(--input-padding-left),
181
- [margin-right]: var(--input-padding-right),
190
+ [margin-left]: var(--input-spacing-left),
191
+ [margin-right]: var(--input-spacing-right),
182
192
  element: (
183
193
  wrapper: (
184
- [margin-left]: calc(var(--input-padding-left) * -1),
185
- [margin-right]: calc(var(--input-padding-right) * -1),
194
+ [margin-left]: calc(var(--input-spacing-left) * -1),
195
+ [margin-right]: calc(var(--input-spacing-right) * -1),
186
196
  ),
187
197
  hint: (
188
- [margin-left]: calc(var(--input-padding-left) * -1),
189
- [margin-right]: calc(var(--input-padding-right) * -1),
198
+ [margin-left]: calc(var(--input-spacing-left) * -1),
199
+ [margin-right]: calc(var(--input-spacing-right) * -1),
190
200
  ),
191
201
  label: (
192
202
  position: absolute,
193
203
  z-index: 1,
194
204
  pointer-events: none,
195
205
  font-size: inherit,
196
- [padding-top]: var(--input-padding-top),
197
- [padding-bottom]: var(--input-padding-bottom),
206
+ [padding-top]: var(--input-spacing-top),
207
+ [padding-bottom]: var(--input-spacing-bottom),
198
208
  padding-inline: 0,
199
209
  margin: 0,
200
210
  will-change: 'transform',
201
211
  transform-origin: left,
202
- transition: all 0.3s ease-in-out,
212
+ transition: var(--transition-all),
203
213
  ),
204
214
  input: (
205
215
  pseudo: (
@@ -210,36 +220,17 @@ $vv-select: (
210
220
  ),
211
221
  ),
212
222
  state: (
213
- focus-within: (
214
- element: (
215
- label: (
216
- transform: translateY(-1.2ch),
217
- font-size: var(--text-12),
218
- ),
219
- input: (
220
- [padding-top]:
221
- calc(var(--input-padding-top) + 0.85ch),
222
- [padding-bottom]:
223
- calc(var(--input-padding-bottom) - 0.85ch),
224
- pseudo: (
225
- placeholder: (
226
- opacity: 1,
227
- ),
228
- ),
229
- ),
230
- ),
231
- ),
232
223
  dirty: (
233
224
  element: (
234
225
  label: (
235
- transform: translateY(-1.2ch),
226
+ transform: translateY(-0.8em),
236
227
  font-size: var(--text-12),
237
228
  ),
238
229
  input: (
239
230
  [padding-top]:
240
- calc(var(--input-padding-top) + 0.85ch),
231
+ calc(var(--input-spacing-top) + 0.55em),
241
232
  [padding-bottom]:
242
- calc(var(--input-padding-bottom) - 0.85ch),
233
+ calc(var(--input-spacing-bottom) - 0.55em),
243
234
  pseudo: (
244
235
  placeholder: (
245
236
  opacity: 1,
@@ -0,0 +1,22 @@
1
+ $vv-skeleton: (
2
+ --skeleton-background: var(--color-surface-2),
3
+ --skeleton-shine-color: var(--color-surface),
4
+ display: grid,
5
+ gap: calc(1em * (var(--leading-normal) - 1)),
6
+ element: (
7
+ item: (
8
+ [background]:
9
+ linear-gradient(
10
+ 110deg,
11
+ var(--skeleton-background) 8%,
12
+ var(--skeleton-shine-color) 18%,
13
+ var(--skeleton-background) 33%
14
+ ),
15
+ [color]: transparent,
16
+ background-size: 200% 100%,
17
+ height: 1em,
18
+ border-radius: var(--rounded),
19
+ animation: var(--animation-shine),
20
+ ),
21
+ ),
22
+ ) !default;