@semanticus/semanticus-css 2.2.0 → 3.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 (150) hide show
  1. package/README.md +23 -22
  2. package/dist/semanticus-no-utilities.css +1 -1
  3. package/dist/semanticus-semantics.css +1 -1
  4. package/dist/semanticus-utilities.css +1 -1
  5. package/dist/semanticus.css +2 -2
  6. package/dist/semanticus.palette.amber.css +1 -1
  7. package/dist/semanticus.palette.azure.css +1 -1
  8. package/dist/semanticus.palette.blue.css +1 -1
  9. package/dist/semanticus.palette.cyan.css +1 -1
  10. package/dist/semanticus.palette.fuchsia.css +1 -1
  11. package/dist/semanticus.palette.green.css +1 -1
  12. package/dist/semanticus.palette.grey.css +1 -1
  13. package/dist/semanticus.palette.indigo.css +1 -1
  14. package/dist/semanticus.palette.jade.css +1 -1
  15. package/dist/semanticus.palette.lime.css +1 -1
  16. package/dist/semanticus.palette.orange.css +1 -1
  17. package/dist/semanticus.palette.pink.css +1 -1
  18. package/dist/semanticus.palette.pumpkin.css +1 -1
  19. package/dist/semanticus.palette.purple.css +1 -1
  20. package/dist/semanticus.palette.red.css +1 -1
  21. package/dist/semanticus.palette.sand.css +1 -1
  22. package/dist/semanticus.palette.slate.css +1 -1
  23. package/dist/semanticus.palette.violet.css +1 -1
  24. package/dist/semanticus.palette.yellow.css +1 -1
  25. package/dist/semanticus.palette.zinc.css +1 -1
  26. package/dist/semanticus.size.pico.css +1 -1
  27. package/package.json +1 -1
  28. package/src/components/_card.css +55 -46
  29. package/src/components/_icons.css +2 -2
  30. package/src/components/_pane.css +15 -8
  31. package/src/components/_sidebar.css +6 -6
  32. package/src/components/_variables.css +28 -0
  33. package/src/components/modules.css +2 -0
  34. package/src/index.css +1 -1
  35. package/src/palettes/amber.css +22 -26
  36. package/src/palettes/azure.css +22 -26
  37. package/src/palettes/blue.css +22 -26
  38. package/src/palettes/cyan.css +22 -26
  39. package/src/palettes/fuchsia.css +25 -26
  40. package/src/palettes/green.css +22 -26
  41. package/src/palettes/grey.css +22 -26
  42. package/src/palettes/indigo.css +22 -26
  43. package/src/palettes/jade.css +22 -26
  44. package/src/palettes/lime.css +22 -26
  45. package/src/palettes/orange.css +22 -26
  46. package/src/palettes/pink.css +22 -26
  47. package/src/palettes/pumpkin.css +25 -26
  48. package/src/palettes/purple.css +22 -26
  49. package/src/palettes/red.css +22 -26
  50. package/src/palettes/sand.css +22 -26
  51. package/src/palettes/slate.css +22 -26
  52. package/src/palettes/violet.css +22 -26
  53. package/src/palettes/yellow.css +22 -26
  54. package/src/palettes/zinc.css +22 -26
  55. package/src/semantics/attributes/_aria-busy.css +1 -10
  56. package/src/semantics/attributes/_aria-disabled.css +2 -23
  57. package/src/semantics/attributes/_disabled.css +3 -0
  58. package/src/semantics/attributes/_popover.css +4 -3
  59. package/src/semantics/attributes/_role-group-search.css +135 -0
  60. package/src/semantics/attributes/_role-list.css +23 -0
  61. package/src/semantics/attributes/_role-status-alert.css +28 -22
  62. package/src/semantics/attributes/_role-tooltip.css +11 -8
  63. package/src/semantics/elements/_address.css +2 -2
  64. package/src/semantics/elements/_aside.css +4 -3
  65. package/src/semantics/elements/_blockquote.css +6 -6
  66. package/src/semantics/elements/_body.css +0 -2
  67. package/src/semantics/elements/_buttons.css +100 -0
  68. package/src/semantics/elements/_code.css +18 -8
  69. package/src/semantics/elements/_del.css +1 -1
  70. package/src/semantics/elements/_details.css +147 -162
  71. package/src/semantics/elements/_dialog.css +24 -17
  72. package/src/semantics/elements/_fieldset.css +27 -0
  73. package/src/semantics/elements/_figure.css +1 -1
  74. package/src/semantics/elements/_footer.css +0 -1
  75. package/src/semantics/elements/_header.css +0 -1
  76. package/src/semantics/elements/_headings.css +86 -9
  77. package/src/semantics/elements/_hgroup.css +2 -2
  78. package/src/semantics/elements/_hr.css +2 -2
  79. package/src/semantics/elements/_inputs.css +14 -0
  80. package/src/semantics/elements/_ins.css +1 -1
  81. package/src/semantics/elements/_label.css +4 -0
  82. package/src/semantics/elements/_links.css +34 -41
  83. package/src/semantics/elements/_lists.css +10 -8
  84. package/src/semantics/elements/_mark.css +2 -2
  85. package/src/semantics/elements/_nav.css +65 -35
  86. package/src/semantics/elements/_p.css +2 -2
  87. package/src/semantics/elements/_progress.css +18 -11
  88. package/src/semantics/elements/{_document.css → _root.css} +12 -9
  89. package/src/semantics/elements/_section.css +0 -1
  90. package/src/semantics/elements/_small.css +27 -0
  91. package/src/semantics/elements/_table.css +20 -6
  92. package/src/semantics/elements/inputs/_checkbox-radio.css +30 -0
  93. package/src/semantics/elements/inputs/_checkbox.css +19 -0
  94. package/src/semantics/elements/{_type-color.css → inputs/_color.css} +5 -3
  95. package/src/semantics/elements/inputs/_common.css +87 -0
  96. package/src/semantics/elements/inputs/_date.css +53 -0
  97. package/src/semantics/elements/inputs/_file.css +35 -0
  98. package/src/semantics/elements/inputs/_input.css +47 -0
  99. package/src/semantics/elements/inputs/_radio.css +11 -0
  100. package/src/semantics/elements/inputs/_range.css +69 -0
  101. package/src/semantics/elements/inputs/_search.css +48 -0
  102. package/src/semantics/elements/inputs/_select.css +32 -0
  103. package/src/semantics/elements/inputs/_switch.css +46 -0
  104. package/src/semantics/elements/inputs/_textarea.css +30 -0
  105. package/src/semantics/modules.css +9 -13
  106. package/src/sizes/pico.css +24 -23
  107. package/src/utilities/_grid.css +917 -179
  108. package/src/utilities/_variables.css +21 -14
  109. package/src/utilities/borders/_border-radius.css +9 -9
  110. package/src/utilities/borders/_border-style.css +10 -10
  111. package/src/utilities/colors/_bg-colors.css +22 -38
  112. package/src/utilities/colors/_border-colors.css +20 -26
  113. package/src/utilities/colors/_subtle-colors.css +55 -61
  114. package/src/utilities/colors/_text-bg-colors.css +35 -35
  115. package/src/utilities/colors/_text-colors.css +24 -46
  116. package/src/utilities/effects/_focus-ring.css +14 -11
  117. package/src/utilities/layout/_misc.css +4 -3
  118. package/src/utilities/sizing/_width.css +48 -0
  119. package/src/utilities/spacing/_gap.css +0 -43
  120. package/src/utilities/spacing/_margin.css +0 -1
  121. package/src/utilities/spacing/_padding.css +0 -1
  122. package/src/utilities/typography/_font-sizes.css +6 -6
  123. package/src/variables/_all.css +3 -4
  124. package/src/variables/_theme.css +394 -237
  125. package/src/variants/_intent.css +8 -0
  126. package/src/variants/_variables.css +109 -9
  127. package/src/variants/intent/_common.css +33 -0
  128. package/src/variants/intent/_contrast.css +30 -31
  129. package/src/variants/intent/_danger.css +7 -30
  130. package/src/variants/intent/_info.css +7 -30
  131. package/src/variants/intent/_primary.css +7 -30
  132. package/src/variants/intent/_secondary.css +7 -30
  133. package/src/variants/intent/_success.css +7 -30
  134. package/src/variants/intent/_warning.css +7 -30
  135. package/src/variants/modifiers/_ghost.css +52 -152
  136. package/src/variants/modifiers/_striped.css +6 -5
  137. package/src/variants/modifiers/_subtle.css +55 -113
  138. package/src/variants/modules.css +1 -7
  139. package/src/semantics/attributes/_role-group.css +0 -126
  140. package/src/semantics/attributes/_role-search.css +0 -14
  141. package/src/semantics/elements/_article.css +0 -3
  142. package/src/semantics/elements/_button.css +0 -124
  143. package/src/semantics/elements/_input.css +0 -302
  144. package/src/semantics/elements/_main.css +0 -3
  145. package/src/semantics/elements/_type-checkbox-radio.css +0 -139
  146. package/src/semantics/elements/_type-date.css +0 -37
  147. package/src/semantics/elements/_type-file.css +0 -23
  148. package/src/semantics/elements/_type-range.css +0 -87
  149. package/src/semantics/elements/_type-search.css +0 -30
  150. package/src/variables/_elements.css +0 -195
@@ -1,9 +1,13 @@
1
+ /* modern-normalize */
2
+ *,
3
+ ::before,
4
+ ::after {
5
+ box-sizing: border-box;
6
+ }
1
7
 
2
-
3
- :where(:root),
4
- :where(:host) {
5
- background-color: var(--color-background);
6
- color: var(--color-text);
8
+ :where(:root, :host) {
9
+ background-color: var(--background-color);
10
+ color: var(--typography-color);
7
11
  font-weight: var(--font-weight);
8
12
  font-size: var(--font-size);
9
13
  line-height: var(--line-height);
@@ -14,11 +18,10 @@
14
18
  tab-size: 4;
15
19
  }
16
20
 
17
- /* modern-normalize */
18
- *, ::before, ::after {
19
- box-sizing: border-box;
21
+ ::selection {
22
+ background-color: var(--selection-background-color);
20
23
  }
21
24
 
22
25
  html {
23
- -webkit-text-size-adjust: 100%
26
+ -webkit-text-size-adjust: 100%;
24
27
  }
@@ -1,4 +1,3 @@
1
1
  section {
2
- width: 100%;
3
2
  margin-bottom: var(--spacing);
4
3
  }
@@ -1,3 +1,30 @@
1
1
  small {
2
+ --font-size: var(--small-font-size);
3
+
2
4
  font-size: var(--font-size);
5
+
6
+ :where(input, select, textarea, fieldset) + & {
7
+ display: block;
8
+ width: 100%;
9
+ margin-bottom: var(--spacing);
10
+ color: var(--color-muted);
11
+ }
12
+
13
+ :where(
14
+ input:not([type="checkbox"], [type="radio"], [role="switch"]),
15
+ select,
16
+ textarea,
17
+ fieldset
18
+ )
19
+ + & {
20
+ margin-top: calc(var(--spacing) * -0.75);
21
+ }
22
+
23
+ :where(input, select, textarea, fieldset)[aria-invalid="false"] + & {
24
+ color: var(--success-color);
25
+ }
26
+
27
+ :where(input, select, textarea, fieldset)[aria-invalid="true"] + & {
28
+ color: var(--danger-color);
29
+ }
3
30
  }
@@ -2,10 +2,10 @@ table {
2
2
  border-collapse: collapse;
3
3
  border-color: currentcolor; /* modern-normalize */
4
4
  border-spacing: 0;
5
- color: var(--color-text);
5
+ color: var(--typography-color);
6
6
  font-style: normal;
7
7
  font-weight: var(--font-weight);
8
- margin-bottom: var(--typography-spacing-vertical);
8
+ margin-bottom: var(--typography-margin-block);
9
9
  margin-top: 0;
10
10
  text-indent: 0;
11
11
  width: 100%;
@@ -14,18 +14,32 @@ table {
14
14
  th,
15
15
  td {
16
16
  padding: calc(var(--spacing) / 2) var(--spacing);
17
- border-bottom: var(--border-size) solid var(--color-border);
18
- background-color: var(--color-background);
19
- color: var(--color-text);
17
+ border-bottom: var(--border-width) solid var(--border-color);
18
+ background-color: var(--background-color);
19
+ color: var(--typography-color);
20
20
  font-weight: var(--font-weight);
21
21
  text-align: left;
22
22
  text-align: start;
23
23
  }
24
24
 
25
+ thead {
26
+ & th,
27
+ & td {
28
+ --font-weight: var(--table-header-font-weight);
29
+ --border-width: var(--table-header-border-width);
30
+ }
31
+ }
32
+
25
33
  tfoot {
26
34
  & th,
27
35
  & td {
28
- border-top: var(--border-size) solid var(--color-border);
36
+ --font-weight: var(--table-header-font-weight);
37
+ --border-width: var(--table-header-border-width);
38
+ }
39
+
40
+ & th,
41
+ & td {
42
+ border-top: var(--border-width) solid var(--border-color);
29
43
  border-bottom: 0;
30
44
  }
31
45
  }
@@ -0,0 +1,30 @@
1
+ /* See ./_common.css for shared styles */
2
+
3
+ [type="checkbox"],
4
+ [type="radio"] {
5
+ --_inputs-border-width: var(--input-checkbox-border-width);
6
+
7
+ padding: 0;
8
+ appearance: none;
9
+ width: 1.25em;
10
+ height: 1.25em;
11
+ margin-top: -0.125em;
12
+ margin-inline-end: 0.5em;
13
+ vertical-align: middle;
14
+ cursor: pointer;
15
+ accent-color: var(--_inputs-accent-color);
16
+
17
+ &:is(:checked, :checked:active, :checked:focus) {
18
+ --_inputs-border-color: var(--_inputs-accent-color);
19
+ }
20
+
21
+ & ~ label {
22
+ display: inline-block;
23
+ margin-bottom: 0;
24
+ cursor: pointer;
25
+
26
+ &:not(:last-of-type) {
27
+ margin-inline-end: 1em;
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,19 @@
1
+ /* See ./_common.css for shared styles */
2
+
3
+ [type="checkbox"] {
4
+ &:is(:checked, :checked:active, :checked:focus) {
5
+ --_inputs-background-color: var(--_inputs-accent-color);
6
+
7
+ background-image: var(--icon-checkbox);
8
+ background-position: center;
9
+ background-size: 0.75em auto;
10
+ background-repeat: no-repeat;
11
+ }
12
+
13
+ &:indeterminate {
14
+ background-image: var(--icon-minus);
15
+ background-position: center;
16
+ background-size: 0.75em auto;
17
+ background-repeat: no-repeat;
18
+ }
19
+ }
@@ -1,4 +1,6 @@
1
- [type=color] {
1
+ /* See ./_common.css for shared styles */
2
+
3
+ [type="color"] {
2
4
  &::-webkit-color-swatch-wrapper {
3
5
  padding: 0;
4
6
  }
@@ -9,11 +11,11 @@
9
11
 
10
12
  &::-webkit-color-swatch {
11
13
  border: 0;
12
- border-radius: calc(var(--radius) * 0.5);
14
+ border-radius: calc(var(--_inputs-border-radius) * 0.5);
13
15
  }
14
16
 
15
17
  &::-moz-color-swatch {
16
18
  border: 0;
17
- border-radius: calc(var(--radius) * 0.5);
19
+ border-radius: calc(var(--_inputs-border-radius) * 0.5);
18
20
  }
19
21
  }
@@ -0,0 +1,87 @@
1
+ input,
2
+ optgroup,
3
+ select,
4
+ textarea {
5
+ margin: 0;
6
+ font-size: 1rem;
7
+ line-height: var(--line-height);
8
+ font-family: inherit;
9
+ letter-spacing: inherit;
10
+ }
11
+
12
+ :where(input, select, textarea) {
13
+ --_inputs-color: var(--inputs-color);
14
+ --_inputs-background-color: var(--inputs-background-color);
15
+ --_inputs-border-color: var(--inputs-border-color);
16
+ --_inputs-accent-color: var(--inputs-accent-color);
17
+ --_inputs-accent-color-muted: var(--inputs-accent-color-muted);
18
+ --_inputs-border-width: var(--border-width);
19
+ --_inputs-border-radius: var(--border-radius);
20
+ --_inputs-outline-color: var(--primary-outline-color);
21
+
22
+ /* Non button inputs */
23
+ &:not([type="button"], [type="submit"], [type="reset"], [type="file"]) {
24
+ padding: var(--inputs-padding-block) var(--inputs-padding-inline);
25
+ border: var(--_inputs-border-width) solid var(--_inputs-border-color);
26
+ border-radius: var(--_inputs-border-radius);
27
+ background-color: var(--_inputs-background-color);
28
+ color: var(--_inputs-color);
29
+ font-weight: var(--font-weight);
30
+ transition:
31
+ background-color var(--transition),
32
+ border-color var(--transition),
33
+ color var(--transition);
34
+
35
+ &:is(:active, :focus, :focus-visible) {
36
+ --_inputs-background-color: var(--inputs-background-color-focus);
37
+
38
+ outline-offset: 0;
39
+ outline: var(--outline-width) solid var(--_inputs-outline-color);
40
+ box-shadow: 0 0 0 var(--focus-ring-width) var(--_inputs-outline-color);
41
+ }
42
+ }
43
+
44
+ &[aria-invalid="false"] {
45
+ --_inputs-border-color: var(--success-background-color);
46
+ --_inputs-accent-color: var(--success-background-color);
47
+ --_inputs-outline-color: var(--success-outline-color);
48
+ }
49
+
50
+ &[aria-invalid="true"] {
51
+ --_inputs-border-color: var(--danger-background-color);
52
+ --_inputs-accent-color: var(--danger-background-color);
53
+ --_inputs-outline-color: var(--danger-outline-color);
54
+ }
55
+
56
+ &:not([type="checkbox"], [type="radio"]) {
57
+ width: 100%;
58
+ margin-bottom: var(--spacing);
59
+ }
60
+
61
+ label > & {
62
+ margin-top: calc(var(--spacing) * 0.25);
63
+ }
64
+
65
+ &::placeholder {
66
+ color: var(--inputs-placeholder-color);
67
+ }
68
+ }
69
+
70
+ ::-webkit-inner-spin-button,
71
+ ::-webkit-outer-spin-button {
72
+ height: auto;
73
+ }
74
+
75
+ ::-webkit-file-upload-button {
76
+ appearance: auto;
77
+ font: inherit;
78
+ }
79
+
80
+ ::-moz-focus-inner {
81
+ padding: 0;
82
+ border-style: none;
83
+ }
84
+
85
+ :-moz-ui-invalid {
86
+ box-shadow: none;
87
+ }
@@ -0,0 +1,53 @@
1
+ /* See ./_common.css for shared styles */
2
+
3
+ [type="date"],
4
+ [type="datetime-local"],
5
+ [type="month"],
6
+ [type="time"],
7
+ [type="week"] {
8
+ background-image: var(--icon-date);
9
+ background-position: center right var(--icons-background-position-gap);
10
+ background-size: var(--icons-width) auto;
11
+ background-repeat: no-repeat;
12
+ padding-right: calc(
13
+ var(--icons-width) + var(--icons-background-position-gap)
14
+ );
15
+
16
+ &::-webkit-calendar-picker-indicator {
17
+ width: var(--icons-width);
18
+ margin-right: calc(
19
+ (var(--icons-width) + (var(--_inputs-border-width) * 2)) * -1
20
+ );
21
+ margin-left: var(--icons-background-position-gap);
22
+
23
+ /* Attempt at hidding the native icon, without hiding the outline in the process */
24
+ background: transparent;
25
+ color: transparent;
26
+
27
+ &:is(:active, :focus) {
28
+ outline: var(--outline-width) solid var(--_inputs-outline-color);
29
+ outline-offset: 2px;
30
+ border-radius: var(--_inputs-border-radius);
31
+ }
32
+ }
33
+
34
+ &[dir="rtl"],
35
+ [dir="rtl"] & {
36
+ text-align: right;
37
+ }
38
+ }
39
+
40
+ [type="time"] {
41
+ background-image: var(--icon-time);
42
+ }
43
+
44
+ @-moz-document url-prefix() {
45
+ [type="date"],
46
+ [type="datetime-local"],
47
+ [type="month"],
48
+ [type="time"],
49
+ [type="week"] {
50
+ padding-right: var(--inputs-padding-inline);
51
+ background-image: none;
52
+ }
53
+ }
@@ -0,0 +1,35 @@
1
+ /* See ./_common.css for shared styles */
2
+
3
+ [type="file"] {
4
+ margin-left: calc(var(--focus-ring-width) * -1);
5
+ padding: calc(var(--inputs-padding-block) * 0.5) 0;
6
+ padding-left: var(--outline-width);
7
+ border: 0;
8
+ border-radius: 0;
9
+ background: none;
10
+
11
+ &:is(:active, :focus, :focus-visible) {
12
+ outline: none; /* We are outlining the file-selector-button instead */
13
+ box-shadow: none;
14
+
15
+ &::file-selector-button {
16
+ outline: var(--outline-width) solid var(--_buttons-outline-color);
17
+ box-shadow: 0 0 0 var(--focus-ring-width) var(--_buttons-outline-color);
18
+ }
19
+ }
20
+
21
+ &::file-selector-button {
22
+ margin-left: var(--focus-ring-width);
23
+ margin-right: calc(var(--spacing) / 2);
24
+ padding: calc(var(--inputs-padding-block) * 0.5)
25
+ var(--inputs-padding-inline);
26
+ }
27
+
28
+ &[aria-invalid="false"] {
29
+ color: var(--success-color);
30
+ }
31
+
32
+ &[aria-invalid="true"] {
33
+ color: var(--danger-color);
34
+ }
35
+ }
@@ -0,0 +1,47 @@
1
+ /* See ./_common.css for shared styles */
2
+
3
+ input {
4
+ overflow: visible;
5
+
6
+ &:not([type="checkbox"], [type="radio"], [type="range"]) {
7
+ height: calc(
8
+ 1rem * var(--line-height) + var(--inputs-padding-block) * 2 +
9
+ var(--_inputs-border-width) * 2
10
+ );
11
+ }
12
+
13
+ &:not(
14
+ [type="checkbox"],
15
+ [type="radio"],
16
+ [type="range"],
17
+ [type="date"],
18
+ [type="datetime-local"],
19
+ [type="month"],
20
+ [type="time"],
21
+ [type="week"],
22
+ [type="search"]
23
+ ) {
24
+ &[aria-invalid] {
25
+ background-position: center right var(--icons-background-position-gap);
26
+ background-repeat: no-repeat;
27
+ background-size: var(--icons-width) auto;
28
+ padding-inline-end: calc(
29
+ var(--inputs-padding-inline) + var(--icons-width) +
30
+ var(--icons-background-position-gap)
31
+ );
32
+
33
+ &[aria-invalid="false"] {
34
+ background-image: var(--icon-valid);
35
+ }
36
+
37
+ &[aria-invalid="true"] {
38
+ background-image: var(--icon-invalid);
39
+ }
40
+ }
41
+
42
+ &[dir="rtl"],
43
+ [dir="rtl"] & {
44
+ background-position: center left var(--icons-background-position-gap);
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,11 @@
1
+ /* See ./_common.css and ./_checkbox-radio.css for shared styles */
2
+
3
+ [type="radio"] {
4
+ --_inputs-border-radius: 50%;
5
+
6
+ &:is(:checked, :checked:active, :checked:focus) {
7
+ --_inputs-background-color: var(--input-radio-background-color);
8
+
9
+ border-width: 0.35em;
10
+ }
11
+ }
@@ -0,0 +1,69 @@
1
+ /* See ./_common.css for shared styles */
2
+
3
+ [type="range"] {
4
+ --_input-range-thumb-size: var(--input-range-thumb-size);
5
+ --_input-range-thumb-background-color: var(--_inputs-accent-color);
6
+ --_input-range-thumb-border-color: var(--input-range-thumb-border-color);
7
+ --_input-range-thumb-border-width: var(--input-range-thumb-border-width);
8
+ --_input-range-thumb-margin-top: var(--input-range-thumb-margin-top);
9
+ --_input-range-track-height: var(--input-range-track-height);
10
+ --_input-range-track-background-color: var(
11
+ --input-range-track-background-color
12
+ );
13
+
14
+ accent-color: var(--_inputs-accent-color);
15
+ appearance: none;
16
+ width: 100%;
17
+ height: var(--_input-range-thumb-size);
18
+ background: none;
19
+ padding: 0;
20
+ border-width: 0;
21
+
22
+ &::-webkit-slider-runnable-track {
23
+ width: 100%;
24
+ height: var(--_input-range-track-height);
25
+ border-radius: var(--_inputs-border-radius);
26
+ background-color: var(--_input-range-track-background-color);
27
+ }
28
+
29
+ &::-moz-range-track {
30
+ width: 100%;
31
+ height: var(--_input-range-track-height);
32
+ border-radius: var(--_inputs-border-radius);
33
+ background-color: var(--_input-range-track-background-color);
34
+ }
35
+
36
+ &::-moz-range-thumb,
37
+ &::-webkit-slider-thumb {
38
+ appearance: none;
39
+ width: var(--_input-range-thumb-size);
40
+ height: var(--_input-range-thumb-size);
41
+ margin-top: var(--_input-range-thumb-margin-top);
42
+ border: var(--_input-range-thumb-border-width) solid
43
+ var(--_input-range-thumb-border-color);
44
+ border-radius: 50%;
45
+ background-color: var(--_input-range-thumb-background-color);
46
+ cursor: pointer;
47
+ transition: transform var(--transition);
48
+ }
49
+
50
+ &:is(:active, :focus, :focus-visible) {
51
+ --_input-range-thumb-border-color: var(--_inputs-outline-color);
52
+
53
+ outline: none !important; /* We are outlining the file-selector-button instead */
54
+ box-shadow: none !important;
55
+
56
+ &::-moz-range-thumb,
57
+ &::-webkit-slider-thumb {
58
+ outline: var(--outline-width) solid var(--_inputs-outline-color);
59
+ outline-offset: calc((var(--focus-ring-width) * -1));
60
+ }
61
+ }
62
+
63
+ &:active {
64
+ &::-moz-range-thumb,
65
+ &::-webkit-slider-thumb {
66
+ transform: scale(1.25);
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,48 @@
1
+ /* See ./_common.css for shared styles */
2
+
3
+ input[type="search"] {
4
+ --_inputs-border-radius: var(--input-search-border-radius);
5
+
6
+ appearance: none;
7
+
8
+ &::-webkit-search-decoration {
9
+ appearance: none;
10
+ }
11
+
12
+ background-image: var(--icon-search);
13
+ background-position: left var(--icons-background-position-gap) center;
14
+ background-repeat: no-repeat;
15
+ background-size: var(--icons-width) auto;
16
+ padding-inline-start: calc(
17
+ var(--inputs-padding-inline) + var(--icons-width) +
18
+ var(--icons-background-position-gap)
19
+ );
20
+
21
+ &[aria-invalid] {
22
+ padding-inline-end: calc(
23
+ var(--inputs-padding-inline) + var(--icons-width) +
24
+ var(--icons-background-position-gap)
25
+ );
26
+ background-position:
27
+ left var(--icons-background-position-gap) center,
28
+ right var(--icons-background-position-gap) center;
29
+ }
30
+
31
+ &[aria-invalid="false"] {
32
+ background-image: var(--icon-search), var(--icon-valid);
33
+ }
34
+
35
+ &[aria-invalid="true"] {
36
+ background-image: var(--icon-search), var(--icon-invalid);
37
+ }
38
+
39
+ [dir="rtl"] & {
40
+ background-position: right var(--icons-background-position-gap) center;
41
+
42
+ &[aria-invalid] {
43
+ background-position:
44
+ right var(--icons-background-position-gap) center,
45
+ left var(--icons-background-position-gap) center;
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,32 @@
1
+ /* See ./_common.css for shared styles */
2
+
3
+ select {
4
+ text-transform: none;
5
+ appearance: none;
6
+
7
+ &:not([multiple], [size]) {
8
+ background-image: var(--icon-chevron);
9
+ background-position: center right var(--icons-background-position-gap);
10
+ background-repeat: no-repeat;
11
+ background-size: var(--icons-width) auto;
12
+ padding-inline-end: calc(
13
+ var(--inputs-padding-inline) + var(--icons-width) +
14
+ var(--icons-background-position-gap)
15
+ );
16
+ }
17
+
18
+ &[multiple] option:checked {
19
+ background: var(--inputs-border-color);
20
+ color: var(--inputs-color);
21
+ }
22
+
23
+ &[dir="rtl"],
24
+ [dir="rtl"] & {
25
+ background-position: center left var(--icons-background-position-gap);
26
+ }
27
+
28
+ &:invalid {
29
+ color: var(--inputs-placeholder-color);
30
+ opacity: 1;
31
+ }
32
+ }
@@ -0,0 +1,46 @@
1
+ /* See ./_common.css for shared styles */
2
+
3
+ [type="checkbox"][role="switch"] {
4
+ --_inputs-border-width: var(--input-switch-border-width);
5
+ --_inputs-background-color: var(--_inputs-accent-color-muted);
6
+ --_input-switch-thumb-background-color: var(
7
+ --input-switch-thumb-background-color
8
+ );
9
+ --_inputs-border-radius: var(--input-switch-border-radius);
10
+
11
+ width: 2.25em;
12
+ height: 1.25em;
13
+ line-height: 1.25em;
14
+
15
+ &:before {
16
+ display: block;
17
+ aspect-ratio: 1;
18
+ height: 100%;
19
+ border-radius: 50%;
20
+ background-color: var(--_input-switch-thumb-background-color);
21
+ content: "";
22
+ transition: margin 0.1s ease-in-out;
23
+ }
24
+
25
+ &:not(:checked) {
26
+ &:not([aria-invalid]) {
27
+ --_inputs-border-color: var(--_inputs-accent-color-muted);
28
+ }
29
+
30
+ &:focus {
31
+ --_inputs-background-color: var(--_inputs-accent-color-muted);
32
+ }
33
+ }
34
+
35
+ &:checked {
36
+ background-image: none;
37
+
38
+ &::before {
39
+ margin-inline-start: calc(2.25em - 1.25em);
40
+ }
41
+ }
42
+
43
+ &[disabled] {
44
+ --_inputs-background-color: var(--_inputs-border-color);
45
+ }
46
+ }
@@ -0,0 +1,30 @@
1
+ /* See ./_common.css for shared styles */
2
+
3
+ textarea {
4
+ overflow: auto;
5
+ display: block;
6
+ resize: vertical;
7
+
8
+ &[aria-invalid] {
9
+ background-position: top right var(--icons-background-position-gap);
10
+ background-repeat: no-repeat;
11
+ background-size: var(--icons-width)
12
+ calc(
13
+ var(--icons-width) * var(--line-height) +
14
+ var(--inputs-padding-block) * 2 + var(--_inputs-border-width) * 2
15
+ );
16
+
17
+ &[aria-invalid="false"] {
18
+ background-image: var(--icon-valid);
19
+ }
20
+
21
+ &[aria-invalid="true"] {
22
+ background-image: var(--icon-invalid);
23
+ }
24
+ }
25
+
26
+ &[dir="rtl"],
27
+ [dir="rtl"] & {
28
+ background-position: top left var(--icons-background-position-gap);
29
+ }
30
+ }