@excom/valence 0.1.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 (123) hide show
  1. package/.rush/temp/chunked-rush-logs/valence.apply-exports.chunks.jsonl +1 -0
  2. package/.rush/temp/chunked-rush-logs/valence.build_package-metas.chunks.jsonl +1 -0
  3. package/.rush/temp/operation/apply-exports/all.log +1 -0
  4. package/.rush/temp/operation/apply-exports/log-chunks.jsonl +1 -0
  5. package/.rush/temp/operation/apply-exports/state.json +3 -0
  6. package/.rush/temp/operation/build_package-metas/all.log +1 -0
  7. package/.rush/temp/operation/build_package-metas/log-chunks.jsonl +1 -0
  8. package/.rush/temp/operation/build_package-metas/state.json +3 -0
  9. package/.rush/temp/shrinkwrap-deps.json +3 -0
  10. package/basic-vars.css +395 -0
  11. package/basic.css +3 -0
  12. package/package.json +35 -0
  13. package/rush-logs/valence.apply-exports.cache.log +1 -0
  14. package/rush-logs/valence.apply-exports.log +1 -0
  15. package/rush-logs/valence.build_package-metas.cache.log +1 -0
  16. package/rush-logs/valence.build_package-metas.log +1 -0
  17. package/src/aliases.css +125 -0
  18. package/src/apply.css +54 -0
  19. package/src/components/accordion.css +134 -0
  20. package/src/components/card.css +54 -0
  21. package/src/components/dropdown.css +235 -0
  22. package/src/components/group.css +119 -0
  23. package/src/components/loading.css +41 -0
  24. package/src/components/modal.css +172 -0
  25. package/src/components/nav.css +198 -0
  26. package/src/components/popover.css +83 -0
  27. package/src/components/progress.css +88 -0
  28. package/src/components/tooltip.css +209 -0
  29. package/src/content/button.css +184 -0
  30. package/src/content/code.css +68 -0
  31. package/src/content/embedded.css +49 -0
  32. package/src/content/figure.css +17 -0
  33. package/src/content/link.css +79 -0
  34. package/src/content/misc.css +29 -0
  35. package/src/content/table.css +144 -0
  36. package/src/content/typography.css +218 -0
  37. package/src/forms/basics.css +415 -0
  38. package/src/forms/checkbox-radio-switch.css +163 -0
  39. package/src/forms/input-color.css +27 -0
  40. package/src/forms/input-date.css +66 -0
  41. package/src/forms/input-file.css +37 -0
  42. package/src/forms/input-range.css +109 -0
  43. package/src/forms/input-search.css +52 -0
  44. package/src/layout/abstract.css +9 -0
  45. package/src/layout/container.css +43 -0
  46. package/src/layout/document.css +45 -0
  47. package/src/layout/grid.css +24 -0
  48. package/src/layout/landmarks.css +54 -0
  49. package/src/layout/overflow-auto.css +33 -0
  50. package/src/layout/section.css +10 -0
  51. package/src/mixins.basic.css +308 -0
  52. package/src/mixins.default.css +49 -0
  53. package/src/util.default.css +55 -0
  54. package/src/utilities/accessibility.css +69 -0
  55. package/src/utilities/opt-outs.css +32 -0
  56. package/support/demos/accordion.html +18 -0
  57. package/support/demos/aliases.html +6 -0
  58. package/support/demos/button.html +14 -0
  59. package/support/demos/card.html +8 -0
  60. package/support/demos/checkboxes.html +22 -0
  61. package/support/demos/code.html +6 -0
  62. package/support/demos/container.html +15 -0
  63. package/support/demos/css-variables.html +14 -0
  64. package/support/demos/dropdown.html +17 -0
  65. package/support/demos/embedded.html +7 -0
  66. package/support/demos/forms.html +18 -0
  67. package/support/demos/grid.html +13 -0
  68. package/support/demos/group.html +14 -0
  69. package/support/demos/input.html +11 -0
  70. package/support/demos/landmarks.html +20 -0
  71. package/support/demos/link.html +7 -0
  72. package/support/demos/loading.html +5 -0
  73. package/support/demos/modal.html +18 -0
  74. package/support/demos/nav.html +39 -0
  75. package/support/demos/opt-outs.html +8 -0
  76. package/support/demos/overflow-auto.html +12 -0
  77. package/support/demos/popover.html +6 -0
  78. package/support/demos/progress.html +4 -0
  79. package/support/demos/range.html +6 -0
  80. package/support/demos/schemes.html +12 -0
  81. package/support/demos/select.html +13 -0
  82. package/support/demos/table.html +18 -0
  83. package/support/demos/textarea.html +7 -0
  84. package/support/demos/tooltip.html +7 -0
  85. package/support/demos/typography.html +18 -0
  86. package/support/docs/ACCORDION.md +26 -0
  87. package/support/docs/ALIASES.md +35 -0
  88. package/support/docs/BUTTON.md +28 -0
  89. package/support/docs/CARD.md +23 -0
  90. package/support/docs/CHECKBOXES.md +21 -0
  91. package/support/docs/CODE.md +18 -0
  92. package/support/docs/CONTAINER.md +24 -0
  93. package/support/docs/CSS_VARIABLES.md +44 -0
  94. package/support/docs/DROPDOWN.md +22 -0
  95. package/support/docs/EMBEDDED.md +18 -0
  96. package/support/docs/FORMS.md +44 -0
  97. package/support/docs/GRID.md +19 -0
  98. package/support/docs/GROUP.md +24 -0
  99. package/support/docs/INPUT.md +26 -0
  100. package/support/docs/LANDMARKS.md +25 -0
  101. package/support/docs/LINK.md +23 -0
  102. package/support/docs/LOADING.md +15 -0
  103. package/support/docs/MODAL.md +36 -0
  104. package/support/docs/NAV.md +25 -0
  105. package/support/docs/OPT_OUTS.md +31 -0
  106. package/support/docs/OVERFLOW_AUTO.md +15 -0
  107. package/support/docs/POPOVER.md +19 -0
  108. package/support/docs/PROGRESS.md +14 -0
  109. package/support/docs/RANGE.md +16 -0
  110. package/support/docs/README.md +70 -0
  111. package/support/docs/SCHEMES.md +20 -0
  112. package/support/docs/SELECT.md +18 -0
  113. package/support/docs/TABLE.md +29 -0
  114. package/support/docs/TEXTAREA.md +16 -0
  115. package/support/docs/THEMES.md +39 -0
  116. package/support/docs/TOOLTIP.md +18 -0
  117. package/support/docs/TYPOGRAPHY.md +29 -0
  118. package/support/docs-sections.json +45 -0
  119. package/support/flat-vars.css +197 -0
  120. package/support/flat.css +4 -0
  121. package/support/package-meta.json +1820 -0
  122. package/support/paper-vars.css +203 -0
  123. package/support/paper.css +4 -0
@@ -0,0 +1,415 @@
1
+ /**
2
+ * Basic form elements.
3
+ * Reboot from normalize.css v8.0.1 (MIT) and sanitize.css v13.0.0 (CC0).
4
+ */
5
+
6
+ @define-mixin module-basics {
7
+ /* 1. Font styles (all browsers)
8
+ 2. Drop Firefox / Safari margin */
9
+ input,
10
+ optgroup,
11
+ select,
12
+ textarea {
13
+ margin: 0; /* 2 */
14
+ font-size: var(--v-font-size); /* 1 */
15
+ line-height: var(--v-line-height); /* 1 */
16
+ font-family: inherit; /* 1 */
17
+ letter-spacing: inherit; /* 2 */
18
+ }
19
+
20
+ /* Show overflow in IE */
21
+ input {
22
+ overflow: visible;
23
+ }
24
+
25
+ /* Don't inherit `text-transform` in Edge, Firefox, IE */
26
+ select {
27
+ text-transform: none;
28
+ }
29
+
30
+ /* 1. Wrap text in Edge / IE
31
+ 2. Inherit color from `fieldset` in IE
32
+ 3. No padding, so zeroing `fieldset` isn't a surprise */
33
+ legend {
34
+ max-width: 100%; /* 1 */
35
+ padding: 0; /* 3 */
36
+ color: inherit; /* 2 */
37
+ white-space: normal; /* 1 */
38
+ }
39
+
40
+ /* 1. Drop IE's default vertical scrollbar */
41
+ textarea {
42
+ overflow: auto; /* 1 */
43
+ }
44
+
45
+ /* Drop IE 10 padding */
46
+ [type="checkbox"],
47
+ [type="radio"] {
48
+ padding: 0;
49
+ }
50
+
51
+ /* Safari spinner cursor */
52
+ ::-webkit-inner-spin-button,
53
+ ::-webkit-outer-spin-button {
54
+ height: auto;
55
+ }
56
+
57
+ /* 1. Chrome / Safari search appearance
58
+ 2. Safari outline */
59
+ [type="search"] {
60
+ -webkit-appearance: textfield; /* 1 */
61
+ outline-offset: -2px; /* 2 */
62
+ }
63
+
64
+ /* Drop Chrome / Safari macOS inner padding */
65
+ [type="search"]::-webkit-search-decoration {
66
+ -webkit-appearance: none;
67
+ }
68
+
69
+ /* 1. Style clickable types in iOS / Safari
70
+ 2. Inherit font in Safari */
71
+ ::-webkit-file-upload-button {
72
+ -webkit-appearance: button; /* 1 */
73
+ font: inherit; /* 2 */
74
+ }
75
+
76
+ /* Drop Firefox focus inner border / padding */
77
+ ::-moz-focus-inner {
78
+ padding: 0;
79
+ border-style: none;
80
+ }
81
+
82
+ /* Drop Firefox focus outline */
83
+ :-moz-focusring {
84
+ outline: none;
85
+ }
86
+
87
+ /* Drop Firefox extra `:invalid` styles */
88
+ :-moz-ui-invalid {
89
+ box-shadow: none;
90
+ }
91
+
92
+ /* Hide IE's inconsistent expand control (opinionated) */
93
+ ::-ms-expand {
94
+ display: none;
95
+ }
96
+
97
+ /* No border / padding (opinionated) */
98
+ [type="file"],
99
+ [type="range"] {
100
+ padding: 0;
101
+ border-width: 0;
102
+ }
103
+
104
+ /* Force height on non-checkbox / radio / range inputs */
105
+ input:not([type="checkbox"], [type="radio"], [type="range"]) {
106
+ height: calc(
107
+ (1rem * var(--v-line-height)) +
108
+ (var(--v-form-element-spacing-vertical) * 2) +
109
+ (var(--v-border-width) * 2)
110
+ );
111
+ }
112
+
113
+ /* Fieldset */
114
+ fieldset {
115
+ width: 100%;
116
+ margin: 0;
117
+ margin-bottom: var(--v-spacing);
118
+ padding: 0;
119
+ border: 0;
120
+ }
121
+
122
+ /* Label & legend */
123
+ :--label,
124
+ fieldset legend {
125
+ display: block;
126
+ margin-bottom: calc(var(--v-spacing) * 0.375);
127
+ color: var(--v-color);
128
+ font-weight: var(--v-form-label-font-weight, var(--v-font-weight));
129
+ }
130
+
131
+ fieldset legend {
132
+ margin-bottom: calc(var(--v-spacing) * 0.5);
133
+ }
134
+
135
+ /* Blocks, 100% */
136
+ input:not([type="checkbox"], [type="radio"]),
137
+ button[type="submit"],
138
+ select,
139
+ textarea {
140
+ width: 100%;
141
+ }
142
+
143
+ /* Reset appearance (not checkbox, radio, range, file) */
144
+ input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]),
145
+ select,
146
+ textarea {
147
+ appearance: none;
148
+ padding: var(--v-form-element-spacing-vertical)
149
+ var(--v-form-element-spacing-horizontal);
150
+ }
151
+
152
+ /* Common styles */
153
+ input,
154
+ select,
155
+ textarea {
156
+ --v-background-color: var(--v-form-element-background-color);
157
+ --v-border-color: var(--v-form-element-border-color);
158
+ --v-color: var(--v-form-element-color);
159
+ --v-box-shadow: none;
160
+ border: var(--v-border-width) solid var(--v-border-color);
161
+ border-radius: var(--v-border-radius);
162
+ outline: none;
163
+ background-color: var(--v-background-color);
164
+ box-shadow: var(--v-box-shadow);
165
+ color: var(--v-color);
166
+ font-weight: var(--v-font-weight);
167
+
168
+ transition:
169
+ background-color var(--v-transition),
170
+ border-color var(--v-transition),
171
+ color var(--v-transition),
172
+ box-shadow var(--v-transition);
173
+ }
174
+
175
+ /* Active & Focus, background */
176
+ input:not(
177
+ [type="submit"],
178
+ [type="button"],
179
+ [type="reset"],
180
+ [type="checkbox"],
181
+ [type="radio"],
182
+ [readonly]
183
+ ),
184
+ :where(select, textarea):not([readonly]) {
185
+ &:is(:active, :focus) {
186
+ --v-background-color: var(--v-form-element-active-background-color);
187
+ }
188
+ }
189
+
190
+ /* Active & Focus, border */
191
+ input:not(
192
+ [type="submit"],
193
+ [type="button"],
194
+ [type="reset"],
195
+ [role="switch"],
196
+ [readonly]
197
+ ),
198
+ :where(select, textarea):not([readonly]) {
199
+ &:is(:active, :focus) {
200
+ --v-border-color: var(--v-form-element-active-border-color);
201
+ }
202
+ }
203
+
204
+ /* Focus, box-shadow */
205
+ input:not(
206
+ [type="submit"],
207
+ [type="button"],
208
+ [type="reset"],
209
+ [type="range"],
210
+ [type="file"],
211
+ [readonly]
212
+ ),
213
+ :where(select, textarea):not([readonly]) {
214
+ &:focus {
215
+ --v-box-shadow: 0 0 0 var(--v-outline-width)
216
+ var(--v-form-element-focus-color);
217
+ }
218
+ }
219
+
220
+ /* Disabled */
221
+ input:not([type="submit"], [type="button"], [type="reset"])[disabled],
222
+ select[disabled],
223
+ textarea[disabled],
224
+ :--label[aria-disabled="true"],
225
+ :where(fieldset[disabled])
226
+ :is(
227
+ input:not([type="submit"], [type="button"], [type="reset"]),
228
+ select,
229
+ textarea
230
+ ) {
231
+ opacity: var(--v-form-element-disabled-opacity);
232
+ pointer-events: none;
233
+ }
234
+
235
+ :--label[aria-disabled="true"] input[disabled] {
236
+ opacity: 1;
237
+ }
238
+
239
+ /* Aria-invalid */
240
+ :where(input, select, textarea) {
241
+ &:not(
242
+ [type="checkbox"],
243
+ [type="radio"],
244
+ [type="date"],
245
+ [type="datetime-local"],
246
+ [type="month"],
247
+ [type="time"],
248
+ [type="week"],
249
+ [type="range"]
250
+ ) {
251
+ &[aria-invalid] {
252
+ padding-right: calc(
253
+ var(--v-form-element-spacing-horizontal) + 1.5rem
254
+ ) !important;
255
+ padding-left: var(--v-form-element-spacing-horizontal);
256
+ padding-inline-start: var(
257
+ --v-form-element-spacing-horizontal
258
+ ) !important;
259
+ padding-inline-end: calc(
260
+ var(--v-form-element-spacing-horizontal) + 1.5rem
261
+ ) !important;
262
+ background-position: center right 0.75rem;
263
+ background-size: 1rem auto;
264
+ background-repeat: no-repeat;
265
+ }
266
+
267
+ &[aria-invalid="false"]:not(select) {
268
+ background-image: var(--v-icon-valid);
269
+ }
270
+
271
+ &[aria-invalid="true"]:not(select) {
272
+ background-image: var(--v-icon-invalid);
273
+ }
274
+ }
275
+
276
+ &[aria-invalid="false"] {
277
+ --v-border-color: var(--v-form-element-valid-border-color);
278
+
279
+ &:is(:active, :focus) {
280
+ --v-border-color: var(
281
+ --v-form-element-valid-active-border-color
282
+ ) !important;
283
+
284
+ &:not([type="checkbox"], [type="radio"]) {
285
+ --v-box-shadow: 0 0 0 var(--v-outline-width)
286
+ var(--v-form-element-valid-focus-color) !important;
287
+ }
288
+ }
289
+ }
290
+
291
+ &[aria-invalid="true"] {
292
+ --v-border-color: var(--v-form-element-invalid-border-color);
293
+
294
+ &:is(:active, :focus) {
295
+ --v-border-color: var(
296
+ --v-form-element-invalid-active-border-color
297
+ ) !important;
298
+
299
+ &:not([type="checkbox"], [type="radio"]) {
300
+ --v-box-shadow: 0 0 0 var(--v-outline-width)
301
+ var(--v-form-element-invalid-focus-color) !important;
302
+ }
303
+ }
304
+ }
305
+ }
306
+
307
+ [dir="rtl"] {
308
+ :where(input, select, textarea) {
309
+ &:not([type="checkbox"], [type="radio"]) {
310
+ &:is([aria-invalid], [aria-invalid="true"], [aria-invalid="false"]) {
311
+ background-position: center left 0.75rem;
312
+ }
313
+ }
314
+ }
315
+ }
316
+
317
+ /* Placeholder */
318
+ input::placeholder,
319
+ input::-webkit-input-placeholder,
320
+ textarea::placeholder,
321
+ textarea::-webkit-input-placeholder,
322
+ select:invalid {
323
+ color: var(--v-form-element-placeholder-color);
324
+ opacity: 1;
325
+ }
326
+
327
+ /* Margin bottom (Not Checkboxes and Radios) */
328
+ input:not([type="checkbox"], [type="radio"]),
329
+ select,
330
+ textarea {
331
+ margin-bottom: var(--v-spacing);
332
+ }
333
+
334
+ /* Select */
335
+ select {
336
+ /* Unstyle the IE10+ `<select>` caret */
337
+ &::-ms-expand {
338
+ border: 0;
339
+ background-color: transparent;
340
+ }
341
+
342
+ &:not([multiple], [size]) {
343
+ padding-right: calc(var(--v-form-element-spacing-horizontal) + 1.5rem);
344
+ padding-left: var(--v-form-element-spacing-horizontal);
345
+ padding-inline-start: var(--v-form-element-spacing-horizontal);
346
+ padding-inline-end: calc(
347
+ var(--v-form-element-spacing-horizontal) + 1.5rem
348
+ );
349
+ background-image: var(--v-icon-chevron);
350
+ background-position: center right 0.75rem;
351
+ background-size: 1rem auto;
352
+ background-repeat: no-repeat;
353
+ }
354
+
355
+ &[multiple] {
356
+ option {
357
+ &:checked {
358
+ background: var(--v-form-element-selected-background-color);
359
+ color: var(--v-form-element-color);
360
+ }
361
+ }
362
+ }
363
+ }
364
+
365
+ [dir="rtl"] {
366
+ select {
367
+ &:not([multiple], [size]) {
368
+ background-position: center left 0.75rem;
369
+ }
370
+ }
371
+ }
372
+
373
+ /* Textarea */
374
+ textarea {
375
+ display: block;
376
+ resize: vertical;
377
+
378
+ &[aria-invalid] {
379
+ --v-icon-height: calc(
380
+ (1rem * var(--v-line-height)) +
381
+ (var(--v-form-element-spacing-vertical) * 2) +
382
+ (var(--v-border-width) * 2)
383
+ );
384
+ background-position: top right 0.75rem !important;
385
+ background-size: 1rem var(--v-icon-height) !important;
386
+ }
387
+ }
388
+
389
+ /* Helper text under inputs (`small` siblings) */
390
+ :where(input, select, textarea, fieldset, .grid) {
391
+ + :--small {
392
+ @mixin util-small-note;
393
+ margin-top: calc(var(--v-spacing) * -0.75);
394
+ }
395
+ &[aria-invalid="false"] {
396
+ + :--small {
397
+ color: var(--v-ins-color);
398
+ }
399
+ }
400
+ &[aria-invalid="true"] {
401
+ + :--small {
402
+ color: var(--v-del-color);
403
+ }
404
+ }
405
+ }
406
+
407
+ /* Input inside a label */
408
+ :--label {
409
+ @mixin abstract-wrapper {
410
+ > :where(input, select, textarea) {
411
+ margin-top: calc(var(--v-spacing) * 0.25);
412
+ }
413
+ }
414
+ }
415
+ }
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Checkboxes, radios, and switches
3
+ */
4
+
5
+ @define-mixin module-checkbox-radio-switch {
6
+ /* Labels. Firefox lacks `:has()`, so this misses there. */
7
+ :--label {
8
+ &:has([type="checkbox"], [type="radio"]) {
9
+ width: fit-content;
10
+ cursor: pointer;
11
+ }
12
+ }
13
+
14
+ [type="checkbox"],
15
+ [type="radio"] {
16
+ -webkit-appearance: none;
17
+ -moz-appearance: none;
18
+ appearance: none;
19
+ width: 1.25em;
20
+ height: 1.25em;
21
+ margin-top: -0.125em;
22
+ margin-inline-end: 0.5em;
23
+ border-width: var(--v-border-width);
24
+ vertical-align: middle;
25
+ cursor: pointer;
26
+
27
+ &::-ms-check {
28
+ display: none; /* Unstyle IE checkboxes */
29
+ }
30
+
31
+ &:checked,
32
+ &:checked:active,
33
+ &:checked:focus {
34
+ --v-background-color: var(--v-primary-background);
35
+ --v-border-color: var(--v-primary-border);
36
+ background-image: var(--v-icon-checkbox);
37
+ background-position: center;
38
+ background-size: 0.75em auto;
39
+ background-repeat: no-repeat;
40
+ }
41
+
42
+ & ~ :--label {
43
+ display: inline-block;
44
+ margin-bottom: 0;
45
+ cursor: pointer;
46
+
47
+ &:not(:last-of-type) {
48
+ margin-inline-end: 1em;
49
+ }
50
+ }
51
+ }
52
+
53
+ /* Checkboxes */
54
+ [type="checkbox"] {
55
+ &:indeterminate {
56
+ --v-background-color: var(--v-primary-background);
57
+ --v-border-color: var(--v-primary-border);
58
+ background-image: var(--v-icon-minus);
59
+ background-position: center;
60
+ background-size: 0.75em auto;
61
+ background-repeat: no-repeat;
62
+ }
63
+ }
64
+
65
+ /* Radios */
66
+ [type="radio"] {
67
+ border-radius: 50%;
68
+
69
+ &:checked,
70
+ &:checked:active,
71
+ &:checked:focus {
72
+ --v-background-color: var(--v-primary-inverse);
73
+ border-width: 0.35em;
74
+ background-image: none;
75
+ }
76
+ }
77
+
78
+ /* Switches */
79
+ [type="checkbox"][role="switch"] {
80
+ --v-background-color: var(--v-switch-background-color);
81
+ --v-color: var(--v-switch-color);
82
+
83
+ width: 2.25em;
84
+ height: 1.25em;
85
+ border: var(--v-border-width) solid var(--v-border-color);
86
+ border-radius: 1.25em;
87
+ background-color: var(--v-background-color);
88
+ line-height: 1.25em;
89
+
90
+ &:not([aria-invalid]) {
91
+ --v-border-color: var(--v-switch-background-color);
92
+ }
93
+
94
+ &::before {
95
+ display: block;
96
+ aspect-ratio: 1;
97
+ height: 100%;
98
+ border-radius: 50%;
99
+ background-color: var(--v-color);
100
+ box-shadow: var(--v-switch-thumb-box-shadow);
101
+ content: "";
102
+
103
+ transition: margin 0.1s ease-in-out;
104
+ }
105
+
106
+ &:focus {
107
+ --v-background-color: var(--v-switch-background-color);
108
+ --v-border-color: var(--v-switch-background-color);
109
+ }
110
+
111
+ &:checked {
112
+ --v-background-color: var(--v-switch-checked-background-color);
113
+ --v-border-color: var(--v-switch-checked-background-color);
114
+ background-image: none;
115
+
116
+ &::before {
117
+ margin-inline-start: calc(2.25em - 1.25em);
118
+ }
119
+ }
120
+
121
+ &[disabled] {
122
+ --v-background-color: var(--v-border-color);
123
+ }
124
+ }
125
+
126
+ /* Aria-invalid */
127
+ [type="checkbox"],
128
+ [type="checkbox"][role="switch"] {
129
+ &[aria-invalid="false"] {
130
+ &:checked,
131
+ &:checked:active,
132
+ &:checked:focus {
133
+ --v-background-color: var(--v-form-element-valid-border-color);
134
+ }
135
+ }
136
+ &:checked,
137
+ &:checked:active,
138
+ &:checked:focus {
139
+ &[aria-invalid="true"] {
140
+ --v-background-color: var(--v-form-element-invalid-border-color);
141
+ }
142
+ }
143
+ }
144
+
145
+ [type="checkbox"],
146
+ [type="radio"],
147
+ [type="checkbox"][role="switch"] {
148
+ &[aria-invalid="false"] {
149
+ &:checked,
150
+ &:checked:active,
151
+ &:checked:focus {
152
+ --v-border-color: var(--v-form-element-valid-border-color);
153
+ }
154
+ }
155
+ &:checked,
156
+ &:checked:active,
157
+ &:checked:focus {
158
+ &[aria-invalid="true"] {
159
+ --v-border-color: var(--v-form-element-invalid-border-color);
160
+ }
161
+ }
162
+ }
163
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * `input[type="color"]`
3
+ */
4
+
5
+ @define-mixin module-input-color {
6
+ [type="color"] {
7
+ /* Wrapper */
8
+ &::-webkit-color-swatch-wrapper {
9
+ padding: 0;
10
+ }
11
+
12
+ &::-moz-focus-inner {
13
+ padding: 0;
14
+ }
15
+
16
+ /* Swatch */
17
+ &::-webkit-color-swatch {
18
+ border: 0;
19
+ border-radius: calc(var(--v-border-radius) * 0.5);
20
+ }
21
+
22
+ &::-moz-color-swatch {
23
+ border: 0;
24
+ border-radius: calc(var(--v-border-radius) * 0.5);
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Datetime inputs
3
+ */
4
+
5
+ @define-mixin module-input-date {
6
+ /* `:not()` for specificity, so padding needs no `!important` */
7
+ input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]) {
8
+ &:is(
9
+ [type="date"],
10
+ [type="datetime-local"],
11
+ [type="month"],
12
+ [type="time"],
13
+ [type="week"]
14
+ ) {
15
+ --v-icon-position: 0.75rem;
16
+ --v-icon-width: 1rem;
17
+ padding-right: calc(var(--v-icon-width) + var(--v-icon-position));
18
+ background-image: var(--v-icon-date);
19
+ background-position: center right var(--v-icon-position);
20
+ background-size: var(--v-icon-width) auto;
21
+ background-repeat: no-repeat;
22
+ }
23
+
24
+ /* Time */
25
+ &[type="time"] {
26
+ background-image: var(--v-icon-time);
27
+ }
28
+ }
29
+
30
+ /* Calendar picker */
31
+ [type="date"],
32
+ [type="datetime-local"],
33
+ [type="month"],
34
+ [type="time"],
35
+ [type="week"] {
36
+ &::-webkit-calendar-picker-indicator {
37
+ width: var(--v-icon-width);
38
+ margin-right: calc(var(--v-icon-width) * -1);
39
+ margin-left: var(--v-icon-position);
40
+ opacity: 0;
41
+ }
42
+ }
43
+
44
+ /* Firefox hides calendar icons */
45
+ @-moz-document url-prefix() {
46
+ [type="date"],
47
+ [type="datetime-local"],
48
+ [type="month"],
49
+ [type="time"],
50
+ [type="week"] {
51
+ padding-right: var(--v-form-element-spacing-horizontal) !important;
52
+ background-image: none !important;
53
+ }
54
+ }
55
+
56
+ [dir="rtl"]
57
+ :is(
58
+ [type="date"],
59
+ [type="datetime-local"],
60
+ [type="month"],
61
+ [type="time"],
62
+ [type="week"]
63
+ ) {
64
+ text-align: right;
65
+ }
66
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `input[type="file"]`
3
+ */
4
+
5
+ @define-mixin module-input-file {
6
+ /* 1. Show the focused file-button outline despite overflow: hidden */
7
+ [type="file"] {
8
+ --v-color: var(--v-muted-color);
9
+ margin-left: calc(var(--v-outline-width) * -1); /* 1 */
10
+ padding: calc(var(--v-form-element-spacing-vertical) * 0.5) 0;
11
+ padding-left: var(--v-outline-width); /* 1 */
12
+ border: 0;
13
+ border-radius: 0;
14
+ background: none;
15
+
16
+ &::file-selector-button {
17
+ margin-right: calc(var(--v-spacing) / 2);
18
+ padding: calc(var(--v-form-element-spacing-vertical) * 0.5)
19
+ var(--v-form-element-spacing-horizontal);
20
+ }
21
+
22
+ &:is(:hover, :active, :focus) {
23
+ &::file-selector-button {
24
+ --v-background-color: var(--v-secondary-hover-background);
25
+ --v-border-color: var(--v-secondary-hover-border);
26
+ }
27
+ }
28
+
29
+ &:focus {
30
+ &::file-selector-button {
31
+ --v-box-shadow:
32
+ var(--v-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
33
+ 0 0 0 var(--v-outline-width) var(--v-secondary-focus);
34
+ }
35
+ }
36
+ }
37
+ }