@graupl/graupl 1.0.0-beta.0 → 1.0.0-beta.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 (170) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/css/base/button.css +1 -1
  3. package/dist/css/base/button.css.map +1 -1
  4. package/dist/css/base/form.css +1 -1
  5. package/dist/css/base/form.css.map +1 -1
  6. package/dist/css/base/link.css +1 -1
  7. package/dist/css/base/link.css.map +1 -1
  8. package/dist/css/base/table.css +1 -1
  9. package/dist/css/base/table.css.map +1 -1
  10. package/dist/css/base.css +1 -1
  11. package/dist/css/base.css.map +1 -1
  12. package/dist/css/component/accordion.css +1 -1
  13. package/dist/css/component/accordion.css.map +1 -1
  14. package/dist/css/component/alert.css +1 -1
  15. package/dist/css/component/alert.css.map +1 -1
  16. package/dist/css/component/card.css +1 -1
  17. package/dist/css/component/card.css.map +1 -1
  18. package/dist/css/component/carousel.css +1 -1
  19. package/dist/css/component/carousel.css.map +1 -1
  20. package/dist/css/component/input-group.css +1 -1
  21. package/dist/css/component/input-group.css.map +1 -1
  22. package/dist/css/component/list.css +2 -0
  23. package/dist/css/component/list.css.map +1 -0
  24. package/dist/css/component/menu.css +1 -1
  25. package/dist/css/component/menu.css.map +1 -1
  26. package/dist/css/component/navigation.css +1 -1
  27. package/dist/css/component/navigation.css.map +1 -1
  28. package/dist/css/component.css +1 -1
  29. package/dist/css/component.css.map +1 -1
  30. package/dist/css/graupl.css +1 -1
  31. package/dist/css/graupl.css.map +1 -1
  32. package/dist/css/layout/columns.css.map +1 -1
  33. package/dist/css/layout/container.css.map +1 -1
  34. package/dist/css/layout/flex-columns.css.map +1 -1
  35. package/dist/css/layout.css +1 -1
  36. package/dist/css/layout.css.map +1 -1
  37. package/dist/css/normalize.css.map +1 -1
  38. package/dist/css/state/focus.css +1 -1
  39. package/dist/css/state/focus.css.map +1 -1
  40. package/dist/css/state.css +1 -1
  41. package/dist/css/state.css.map +1 -1
  42. package/dist/css/theme/color.css.map +1 -1
  43. package/dist/css/theme/typography.css.map +1 -1
  44. package/dist/css/theme.css.map +1 -1
  45. package/dist/css/utilities/alignment.css.map +1 -1
  46. package/dist/css/utilities/border.css +2 -0
  47. package/dist/css/utilities/border.css.map +1 -0
  48. package/dist/css/utilities/color.css +1 -1
  49. package/dist/css/utilities/color.css.map +1 -1
  50. package/dist/css/utilities/display.css +1 -1
  51. package/dist/css/utilities/display.css.map +1 -1
  52. package/dist/css/utilities/flex.css +1 -1
  53. package/dist/css/utilities/flex.css.map +1 -1
  54. package/dist/css/utilities/height.css +1 -1
  55. package/dist/css/utilities/height.css.map +1 -1
  56. package/dist/css/utilities/inset.css +1 -1
  57. package/dist/css/utilities/inset.css.map +1 -1
  58. package/dist/css/utilities/justification.css.map +1 -1
  59. package/dist/css/utilities/list.css.map +1 -1
  60. package/dist/css/utilities/order.css.map +1 -1
  61. package/dist/css/utilities/postion.css +1 -1
  62. package/dist/css/utilities/postion.css.map +1 -1
  63. package/dist/css/utilities/ratio.css +1 -1
  64. package/dist/css/utilities/ratio.css.map +1 -1
  65. package/dist/css/utilities/spacing.css +1 -1
  66. package/dist/css/utilities/spacing.css.map +1 -1
  67. package/dist/css/utilities/typography.css +1 -1
  68. package/dist/css/utilities/typography.css.map +1 -1
  69. package/dist/css/utilities/visibility.css.map +1 -1
  70. package/dist/css/utilities/width.css +1 -1
  71. package/dist/css/utilities/width.css.map +1 -1
  72. package/dist/css/utilities.css +1 -1
  73. package/dist/css/utilities.css.map +1 -1
  74. package/docs/components/alert.md +28 -28
  75. package/docs/components/button.md +36 -36
  76. package/docs/components/card.md +39 -39
  77. package/docs/components/inputgroup.md +12 -12
  78. package/docs/components/menu.md +112 -112
  79. package/docs/components/navigation.md +52 -52
  80. package/docs/content.md +86 -86
  81. package/docs/defaults.md +10 -10
  82. package/docs/forms.md +34 -34
  83. package/docs/layout.md +21 -21
  84. package/docs/state.md +8 -8
  85. package/docs/theme.md +58 -58
  86. package/docs/utilities.md +1 -1
  87. package/index.html +84 -12
  88. package/package.json +1 -1
  89. package/scss/component/list.scss +3 -0
  90. package/scss/utilities/border.scss +3 -0
  91. package/src/scss/_defaults.scss +14 -5
  92. package/src/scss/_variables.scss +10 -10
  93. package/src/scss/base/button/_index.scss +70 -70
  94. package/src/scss/base/button/_mixins.scss +22 -22
  95. package/src/scss/base/button/_variables.scss +36 -36
  96. package/src/scss/base/form/_variables.scss +34 -37
  97. package/src/scss/base/link/_index.scss +41 -41
  98. package/src/scss/base/link/_variables.scss +60 -60
  99. package/src/scss/base/table/_index.scss +7 -7
  100. package/src/scss/base/table/_variables.scss +26 -26
  101. package/src/scss/component/_index.scss +1 -0
  102. package/src/scss/component/accordion/_index.scss +6 -6
  103. package/src/scss/component/accordion/_variables.scss +65 -65
  104. package/src/scss/component/alert/_index.scss +11 -11
  105. package/src/scss/component/alert/_variables.scss +40 -43
  106. package/src/scss/component/card/_index.scss +6 -6
  107. package/src/scss/component/card/_variables.scss +39 -39
  108. package/src/scss/component/carousel/_index.scss +3 -3
  109. package/src/scss/component/carousel/_variables.scss +21 -21
  110. package/src/scss/component/input-group/_index.scss +1 -1
  111. package/src/scss/component/input-group/_variables.scss +12 -12
  112. package/src/scss/component/list/_defaults.scss +15 -0
  113. package/src/scss/component/list/_index.scss +50 -0
  114. package/src/scss/component/list/_variables.scss +176 -0
  115. package/src/scss/component/menu/_index.scss +135 -135
  116. package/src/scss/component/menu/_variables.scss +112 -112
  117. package/src/scss/component/navigation/_index.scss +38 -38
  118. package/src/scss/component/navigation/_variables.scss +52 -52
  119. package/src/scss/functions/_screen.scss +8 -0
  120. package/src/scss/functions/_utility.scss +28 -0
  121. package/src/scss/layout/columns/_index.scss +6 -6
  122. package/src/scss/layout/columns/_variables.scss +7 -7
  123. package/src/scss/layout/container/_variables.scss +10 -10
  124. package/src/scss/layout/flex-columns/_index.scss +8 -8
  125. package/src/scss/layout/flex-columns/_variables.scss +4 -4
  126. package/src/scss/mixins/_layer.scss +5 -1
  127. package/src/scss/mixins/_screen.scss +24 -3
  128. package/src/scss/mixins/_state.scss +18 -0
  129. package/src/scss/mixins/_theme.scss +15 -0
  130. package/src/scss/mixins/_utility.scss +119 -17
  131. package/src/scss/state/focus/_variables.scss +8 -8
  132. package/src/scss/theme/color/_index.scss +7 -7
  133. package/src/scss/theme/color/_variables.scss +7 -7
  134. package/src/scss/theme/typography/_variables.scss +52 -52
  135. package/src/scss/utilities/_index.scss +1 -0
  136. package/src/scss/utilities/alignment/_defaults.scss +7 -5
  137. package/src/scss/utilities/alignment/_index.scss +117 -24
  138. package/src/scss/utilities/border/_defaults.scss +61 -0
  139. package/src/scss/utilities/border/_index.scss +269 -0
  140. package/src/scss/utilities/border/_variables.scss +6 -0
  141. package/src/scss/utilities/color/_defaults.scss +6 -4
  142. package/src/scss/utilities/color/_index.scss +137 -26
  143. package/src/scss/utilities/display/_defaults.scss +8 -4
  144. package/src/scss/utilities/display/_index.scss +88 -15
  145. package/src/scss/utilities/flex/_defaults.scss +30 -6
  146. package/src/scss/utilities/flex/_index.scss +215 -31
  147. package/src/scss/utilities/height/_defaults.scss +7 -5
  148. package/src/scss/utilities/height/_index.scss +183 -45
  149. package/src/scss/utilities/inset/_defaults.scss +4 -2
  150. package/src/scss/utilities/inset/_index.scss +58 -5
  151. package/src/scss/utilities/justification/_defaults.scss +7 -5
  152. package/src/scss/utilities/justification/_index.scss +117 -24
  153. package/src/scss/utilities/list/_defaults.scss +6 -4
  154. package/src/scss/utilities/list/_index.scss +86 -17
  155. package/src/scss/utilities/order/_defaults.scss +5 -3
  156. package/src/scss/utilities/order/_index.scss +68 -20
  157. package/src/scss/utilities/position/_defaults.scss +5 -3
  158. package/src/scss/utilities/position/_index.scss +55 -10
  159. package/src/scss/utilities/ratio/_defaults.scss +7 -5
  160. package/src/scss/utilities/ratio/_index.scss +51 -12
  161. package/src/scss/utilities/ratio/_variables.scss +1 -1
  162. package/src/scss/utilities/spacing/_defaults.scss +4 -2
  163. package/src/scss/utilities/spacing/_index.scss +241 -28
  164. package/src/scss/utilities/typography/_defaults.scss +21 -5
  165. package/src/scss/utilities/typography/_index.scss +577 -143
  166. package/src/scss/utilities/visibility/_defaults.scss +5 -3
  167. package/src/scss/utilities/visibility/_index.scss +56 -10
  168. package/src/scss/utilities/width/_defaults.scss +7 -5
  169. package/src/scss/utilities/width/_index.scss +183 -45
  170. package/stylelint.config.js +1 -0
@@ -0,0 +1,269 @@
1
+ // @graupl/graupl border utilities styles.
2
+ //
3
+ // Responsive class must be within their own loop to prevent specificity issues.
4
+ // This keeps responsive specificity tied to screen size before property order.
5
+
6
+ @use "../../defaults" as root-defaults;
7
+ @use "../../functions/important";
8
+ @use "../../mixins/layer" as *;
9
+ @use "../../mixins/screen";
10
+ @use "../../mixins/utility";
11
+ @use "../../theme/color/variables" as color;
12
+ @use "../../variables" as root-variables;
13
+ @use "defaults";
14
+ @use "sass:map";
15
+ @use "variables" as *;
16
+
17
+ @include layer(utilities) {
18
+ $selector-prefix: root-defaults.$utility-selector-prefix;
19
+ $selector: "#{$selector-prefix}#{defaults.$default-border-selector}";
20
+
21
+ // Create a class to apply the default border styling.
22
+ @include utility.create-mapped(
23
+ $selector,
24
+ (
25
+ border-width: root-variables.$border-width,
26
+ border-radius: root-variables.$border-radius,
27
+ border-style: root-variables.$border-style,
28
+ )
29
+ );
30
+
31
+ // For each border width, create a class to apply the border width.
32
+ @each $width, $value in defaults.$border-widths {
33
+ $selector: "#{$selector-prefix}#{defaults.$border-width-selector-prefix}#{$width}";
34
+
35
+ @include utility.create($selector, border-width, $value);
36
+ }
37
+
38
+ // For each border style, create a class to apply the border style.
39
+ @each $border-style, $value in defaults.$border-styles {
40
+ $selector: "#{$selector-prefix}#{defaults.$border-style-selector-prefix}#{$border-style}";
41
+
42
+ @include utility.create($selector, border-style, $value);
43
+ }
44
+
45
+ // For each theme colour, create a utility class for border color.
46
+ @each $color, $map in map.get(color.$themes, active) {
47
+ @each $shade, $value in $map {
48
+ $selector: "#{$selector-prefix}#{defaults.$border-color-selector-prefix}#{$color}-#{$shade}";
49
+
50
+ @include utility.create($selector, border-color, $value);
51
+ }
52
+ }
53
+
54
+ // For each border color, create a utility class for border color.
55
+ @each $name, $value in defaults.$border-colors {
56
+ $selector: "#{$selector-prefix}#{defaults.$border-color-selector-prefix}#{$name}";
57
+
58
+ @include utility.create($selector, border-color, $value);
59
+ }
60
+
61
+ // Generate screen-aware utilities.
62
+ @if defaults.$screen-aware and root-defaults.$screen-aware-utilities {
63
+ @each $screen-name in map.keys(root-defaults.$screen-sizes) {
64
+ $selector-prefix: "#{root-defaults.$utility-selector-prefix}#{$screen-name}#{root-defaults.$utility-screen-aware-separator}";
65
+ $selector: "#{$selector-prefix}#{defaults.$default-border-selector}";
66
+
67
+ // Create a class to apply the default border styling.
68
+ @include utility.create-mapped(
69
+ $selector,
70
+ (
71
+ border-width: root-variables.$border-width,
72
+ border-radius: root-variables.$border-radius,
73
+ border-style: root-variables.$border-style,
74
+ ),
75
+ $screen: $screen-name
76
+ );
77
+
78
+ // For each border width, create a class to apply the border width.
79
+ @each $width, $value in defaults.$border-widths {
80
+ $selector: "#{$selector-prefix}#{defaults.$border-width-selector-prefix}#{$width}";
81
+
82
+ @include utility.create(
83
+ $selector,
84
+ border-width,
85
+ $value,
86
+ $screen: $screen-name
87
+ );
88
+ }
89
+
90
+ // For each border style, create a class to apply the border style.
91
+ @each $border-style, $value in defaults.$border-styles {
92
+ $selector: "#{$selector-prefix}#{defaults.$border-style-selector-prefix}#{$border-style}";
93
+
94
+ @include utility.create(
95
+ $selector,
96
+ border-style,
97
+ $value,
98
+ $screen: $screen-name
99
+ );
100
+ }
101
+
102
+ // For each theme colour, create a utility class for border color.
103
+ @each $color, $map in map.get(color.$themes, active) {
104
+ @each $shade, $value in $map {
105
+ $selector: "#{$selector-prefix}#{defaults.$border-color-selector-prefix}#{$color}-#{$shade}";
106
+
107
+ @include utility.create(
108
+ $selector,
109
+ border-color,
110
+ $value,
111
+ $screen: $screen-name
112
+ );
113
+ }
114
+ }
115
+
116
+ // For each border color, create a utility class for border color.
117
+ @each $name, $value in defaults.$border-colors {
118
+ $selector: "#{$selector-prefix}#{defaults.$border-color-selector-prefix}#{$name}";
119
+
120
+ @include utility.create(
121
+ $selector,
122
+ border-color,
123
+ $value,
124
+ $screen: $screen-name
125
+ );
126
+ }
127
+ }
128
+ }
129
+
130
+ // Generate theme-aware utilities.
131
+ @if defaults.$theme-aware and root-defaults.$theme-aware-utilities {
132
+ @each $theme-name, $colors in color.$themes {
133
+ @if $theme-name != active {
134
+ $selector-prefix: "#{root-defaults.$utility-selector-prefix}#{$theme-name}#{root-defaults.$utility-theme-aware-separator}";
135
+ $selector: "#{$selector-prefix}#{defaults.$default-border-selector}";
136
+
137
+ // Create a class to apply the default border styling.
138
+ @include utility.create-mapped(
139
+ $selector,
140
+ (
141
+ border-width: root-variables.$border-width,
142
+ border-radius: root-variables.$border-radius,
143
+ border-style: root-variables.$border-style,
144
+ ),
145
+ $theme: $theme-name
146
+ );
147
+
148
+ // For each border width, create a class to apply the border width.
149
+ @each $width, $value in defaults.$border-widths {
150
+ $selector: "#{$selector-prefix}#{defaults.$border-width-selector-prefix}#{$width}";
151
+
152
+ @include utility.create(
153
+ $selector,
154
+ border-width,
155
+ $value,
156
+ $theme: $theme-name
157
+ );
158
+ }
159
+
160
+ // For each border style, create a class to apply the border style.
161
+ @each $border-style, $value in defaults.$border-styles {
162
+ $selector: "#{$selector-prefix}#{defaults.$border-style-selector-prefix}#{$border-style}";
163
+
164
+ @include utility.create(
165
+ $selector,
166
+ border-style,
167
+ $value,
168
+ $theme: $theme-name
169
+ );
170
+ }
171
+
172
+ // For each theme colour, create a utility class for border color.
173
+ @each $color, $map in map.get(color.$themes, active) {
174
+ @each $shade, $value in $map {
175
+ $selector: "#{$selector-prefix}#{defaults.$border-color-selector-prefix}#{$color}-#{$shade}";
176
+
177
+ @include utility.create(
178
+ $selector,
179
+ border-color,
180
+ $value,
181
+ $theme: $theme-name
182
+ );
183
+ }
184
+ }
185
+
186
+ // For each border color, create a utility class for border color.
187
+ @each $name, $value in defaults.$border-colors {
188
+ $selector: "#{$selector-prefix}#{defaults.$border-color-selector-prefix}#{$name}";
189
+
190
+ @include utility.create(
191
+ $selector,
192
+ border-color,
193
+ $value,
194
+ $theme: $theme-name
195
+ );
196
+ }
197
+ }
198
+ }
199
+ }
200
+
201
+ // Generate state-aware utilities.
202
+ @if defaults.$state-aware and root-defaults.$state-aware-utilities {
203
+ @each $state-name, $value in root-defaults.$state-selectors {
204
+ $selector-prefix: "#{root-defaults.$utility-selector-prefix}#{$state-name}#{root-defaults.$utility-state-aware-separator}";
205
+ $selector: "#{$selector-prefix}#{defaults.$default-border-selector}";
206
+
207
+ // Create a class to apply the default border styling.
208
+ @include utility.create-mapped(
209
+ $selector,
210
+ (
211
+ border-width: root-variables.$border-width,
212
+ border-radius: root-variables.$border-radius,
213
+ border-style: root-variables.$border-style,
214
+ ),
215
+ $state: $state-name
216
+ );
217
+
218
+ // For each border width, create a class to apply the border width.
219
+ @each $width, $value in defaults.$border-widths {
220
+ $selector: "#{$selector-prefix}#{defaults.$border-width-selector-prefix}#{$width}";
221
+
222
+ @include utility.create(
223
+ $selector,
224
+ border-width,
225
+ $value,
226
+ $state: $state-name
227
+ );
228
+ }
229
+
230
+ // For each border style, create a class to apply the border style.
231
+ @each $border-style, $value in defaults.$border-styles {
232
+ $selector: "#{$selector-prefix}#{defaults.$border-style-selector-prefix}#{$border-style}";
233
+
234
+ @include utility.create(
235
+ $selector,
236
+ border-style,
237
+ $value,
238
+ $state: $state-name
239
+ );
240
+ }
241
+
242
+ // For each theme colour, create a utility class for border color.
243
+ @each $color, $map in map.get(color.$themes, active) {
244
+ @each $shade, $value in $map {
245
+ $selector: "#{$selector-prefix}#{defaults.$border-color-selector-prefix}#{$color}-#{$shade}";
246
+
247
+ @include utility.create(
248
+ $selector,
249
+ border-color,
250
+ $value,
251
+ $state: $state-name
252
+ );
253
+ }
254
+ }
255
+
256
+ // For each border color, create a utility class for border color.
257
+ @each $name, $value in defaults.$border-colors {
258
+ $selector: "#{$selector-prefix}#{defaults.$border-color-selector-prefix}#{$name}";
259
+
260
+ @include utility.create(
261
+ $selector,
262
+ border-color,
263
+ $value,
264
+ $state: $state-name
265
+ );
266
+ }
267
+ }
268
+ }
269
+ }
@@ -0,0 +1,6 @@
1
+ // @graupl/graupl border utilities variables.
2
+ //
3
+ // These values are to be used to directly style components and provide a
4
+ // cleaner way to reference custom properties.
5
+
6
+ @use "defaults";
@@ -9,7 +9,7 @@
9
9
  @use "sass:map";
10
10
 
11
11
  // Background utility properties.
12
- $background-class-prefix: "bg-" !default;
12
+ $background-selector-prefix: "bg-" !default;
13
13
  $base-background-properties: (
14
14
  inherit: inherit,
15
15
  current: currentcolor,
@@ -22,7 +22,7 @@ $background-properties: map.merge(
22
22
  );
23
23
 
24
24
  // Text utility properties.
25
- $text-class-prefix: "text-" !default;
25
+ $text-selector-prefix: "text-" !default;
26
26
  $base-text-properties: (
27
27
  inherit: inherit,
28
28
  current: currentcolor,
@@ -31,5 +31,7 @@ $base-text-properties: (
31
31
  $custom-text-properties: () !default;
32
32
  $text-properties: map.merge($base-text-properties, $custom-text-properties);
33
33
 
34
- // Responsive utility flag.
35
- $responsive: false !default;
34
+ // Utility modifier flags.
35
+ $screen-aware: false !default;
36
+ $theme-aware: true !default;
37
+ $state-aware: true !default;
@@ -12,80 +12,191 @@
12
12
  @use "variables" as *;
13
13
 
14
14
  @include layer(utilities) {
15
+ $selector-prefix: root-defaults.$utility-selector-prefix;
16
+
15
17
  // For each theme colour, create a utility class for background and color.
16
18
  @each $color, $map in map.get(color.$themes, active) {
17
19
  @each $shade, $value in $map {
18
- $name: #{$color}-#{$shade};
19
-
20
- @include utility.create(
21
- ".#{defaults.$background-class-prefix}#{$name}",
22
- background,
23
- $value
24
- );
25
- @include utility.create(
26
- ".#{defaults.$text-class-prefix}#{$name}",
27
- color,
28
- $value
29
- );
20
+ $selector: "#{$selector-prefix}#{defaults.$background-selector-prefix}#{$color}-#{$shade}";
21
+
22
+ @include utility.create($selector, background, $value);
23
+
24
+ $selector: "#{$selector-prefix}#{defaults.$text-selector-prefix}#{$color}-#{$shade}";
25
+
26
+ @include utility.create($selector, color, $value);
30
27
  }
31
28
  }
32
29
 
33
30
  // For each background property, create a utility class.
34
31
  @each $name, $value in defaults.$background-properties {
35
- $selector: ".#{defaults.$background-class-prefix}#{$name}";
32
+ $selector: "#{$selector-prefix}#{defaults.$background-selector-prefix}#{$name}";
36
33
 
37
34
  @include utility.create($selector, background, $value);
38
35
  }
39
36
 
40
37
  // For each text property, create a utility class.
41
38
  @each $name, $value in defaults.$text-properties {
42
- $selector: ".#{defaults.$text-class-prefix}#{$name}";
39
+ $selector: "#{$selector-prefix}#{defaults.$text-selector-prefix}#{$name}";
43
40
 
44
41
  @include utility.create($selector, color, $value);
45
42
  }
46
43
 
47
- // Create responsive utilities.
48
- @if defaults.$responsive and root-defaults.$responsive-utilities {
49
- @each $screen-size in map.keys(root-defaults.$screen-sizes) {
44
+ // Generate screen-aware utilities.
45
+ @if defaults.$screen-aware and root-defaults.$screen-aware-utilities {
46
+ @each $screen-name in map.keys(root-defaults.$screen-sizes) {
47
+ $selector-prefix: "#{root-defaults.$utility-selector-prefix}#{$screen-name}#{root-defaults.$utility-screen-aware-separator}";
48
+
50
49
  // For each theme colour, create a utility class for background and color.
51
50
  @each $color, $map in map.get(color.$themes, active) {
52
51
  @each $shade, $value in $map {
53
- $name: #{$color}-#{$shade};
52
+ $selector: "#{$selector-prefix}#{defaults.$background-selector-prefix}#{$color}-#{$shade}";
54
53
 
55
54
  @include utility.create(
56
- ".#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$background-class-prefix}#{$name}",
55
+ $selector,
57
56
  background,
58
57
  $value,
59
- $screen-size
58
+ $screen: $screen-name
60
59
  );
60
+
61
+ $selector: "#{$selector-prefix}#{defaults.$text-selector-prefix}#{$color}-#{$shade}";
62
+
61
63
  @include utility.create(
62
- ".#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}#{$name}",
64
+ $selector,
63
65
  color,
64
66
  $value,
65
- $screen-size
67
+ $screen: $screen-name
66
68
  );
67
69
  }
68
70
  }
69
71
 
70
72
  // For each background property, create a utility class.
71
73
  @each $name, $value in defaults.$background-properties {
74
+ $selector: "#{$selector-prefix}#{defaults.$background-selector-prefix}#{$name}";
75
+
72
76
  @include utility.create(
73
- ".#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$background-class-prefix}#{$name}",
77
+ $selector,
74
78
  background,
75
79
  $value,
76
- $screen-size
80
+ $screen: $screen-name
77
81
  );
78
82
  }
79
83
 
80
84
  // For each text property, create a utility class.
81
85
  @each $name, $value in defaults.$text-properties {
86
+ $selector: "#{$selector-prefix}#{defaults.$text-selector-prefix}#{$name}";
87
+
82
88
  @include utility.create(
83
- ".#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}#{$name}",
89
+ $selector,
84
90
  color,
85
91
  $value,
86
- $screen-size
92
+ $screen: $screen-name
93
+ );
94
+ }
95
+ }
96
+ }
97
+
98
+ // Generate theme-aware utilities.
99
+ @if defaults.$theme-aware and root-defaults.$theme-aware-utilities {
100
+ @each $theme-name, $colors in color.$themes {
101
+ @if $theme-name != active {
102
+ $selector-prefix: "#{root-defaults.$utility-selector-prefix}#{$theme-name}#{root-defaults.$utility-theme-aware-separator}";
103
+
104
+ // For each theme colour, create a utility class for background and color.
105
+ @each $color, $map in map.get(color.$themes, active) {
106
+ @each $shade, $value in $map {
107
+ $selector: "#{$selector-prefix}#{defaults.$background-selector-prefix}#{$color}-#{$shade}";
108
+
109
+ @include utility.create(
110
+ $selector,
111
+ background,
112
+ $value,
113
+ $theme: $theme-name
114
+ );
115
+
116
+ $selector: "#{$selector-prefix}#{defaults.$text-selector-prefix}#{$color}-#{$shade}";
117
+
118
+ @include utility.create(
119
+ $selector,
120
+ color,
121
+ $value,
122
+ $theme: $theme-name
123
+ );
124
+ }
125
+ }
126
+
127
+ // For each background property, create a utility class.
128
+ @each $name, $value in defaults.$background-properties {
129
+ $selector: "#{$selector-prefix}#{defaults.$background-selector-prefix}#{$name}";
130
+
131
+ @include utility.create(
132
+ $selector,
133
+ background,
134
+ $value,
135
+ $theme: $theme-name
136
+ );
137
+ }
138
+
139
+ // For each text property, create a utility class.
140
+ @each $name, $value in defaults.$text-properties {
141
+ $selector: "#{$selector-prefix}#{defaults.$text-selector-prefix}#{$name}";
142
+
143
+ @include utility.create(
144
+ $selector,
145
+ color,
146
+ $value,
147
+ $theme: $theme-name
148
+ );
149
+ }
150
+ }
151
+ }
152
+ }
153
+
154
+ // Generate state-aware utilities.
155
+ @if defaults.$state-aware and root-defaults.$state-aware-utilities {
156
+ @each $state-name, $value in root-defaults.$state-selectors {
157
+ $selector-prefix: "#{root-defaults.$utility-selector-prefix}#{$state-name}#{root-defaults.$utility-state-aware-separator}";
158
+
159
+ // For each theme colour, create a utility class for background and color.
160
+ @each $color, $map in map.get(color.$themes, active) {
161
+ @each $shade, $value in $map {
162
+ $selector: "#{$selector-prefix}#{defaults.$background-selector-prefix}#{$color}-#{$shade}";
163
+
164
+ @include utility.create(
165
+ $selector,
166
+ background,
167
+ $value,
168
+ $state: $state-name
169
+ );
170
+
171
+ $selector: "#{$selector-prefix}#{defaults.$text-selector-prefix}#{$color}-#{$shade}";
172
+
173
+ @include utility.create(
174
+ $selector,
175
+ color,
176
+ $value,
177
+ $state: $state-name
178
+ );
179
+ }
180
+ }
181
+
182
+ // For each background property, create a utility class.
183
+ @each $name, $value in defaults.$background-properties {
184
+ $selector: "#{$selector-prefix}#{defaults.$background-selector-prefix}#{$name}";
185
+
186
+ @include utility.create(
187
+ $selector,
188
+ background,
189
+ $value,
190
+ $state: $state-name
87
191
  );
88
192
  }
193
+
194
+ // For each text property, create a utility class.
195
+ @each $name, $value in defaults.$text-properties {
196
+ $selector: "#{$selector-prefix}#{defaults.$text-selector-prefix}#{$name}";
197
+
198
+ @include utility.create($selector, color, $value, $state: $state-name);
199
+ }
89
200
  }
90
201
  }
91
202
  }
@@ -8,7 +8,7 @@
8
8
 
9
9
  @use "sass:map";
10
10
 
11
- $display-class-prefix: "display-" !default;
11
+ $display-selector-prefix: "display-" !default;
12
12
  $base-display-properties: (
13
13
  block: block,
14
14
  inline-block: inline-block,
@@ -27,6 +27,10 @@ $display-properties: map.merge(
27
27
  $base-display-properties,
28
28
  $custom-display-properties
29
29
  );
30
- $visually-hidden-class: "visually-hidden" !default;
31
- $visually-hidden-focusable-class: "visually-hidden-focusable" !default;
32
- $responsive: true !default;
30
+ $visually-hidden-selector: "visually-hidden" !default;
31
+ $visually-hidden-focusable-selector: "visually-hidden-focusable" !default;
32
+
33
+ // Utility modifier flags.
34
+ $screen-aware: true !default;
35
+ $theme-aware: false !default;
36
+ $state-aware: false !default;
@@ -6,53 +6,126 @@
6
6
  @use "../../defaults" as root-defaults;
7
7
  @use "../../mixins/layer" as *;
8
8
  @use "../../mixins/screen";
9
+ @use "../../mixins/theme";
10
+ @use "../../mixins/state";
9
11
  @use "../../mixins/utility";
10
12
  @use "../../mixins/visually-hidden";
13
+ @use "../../theme/color/variables" as color;
11
14
  @use "defaults";
12
15
  @use "sass:map";
13
16
  @use "variables" as *;
14
17
 
15
18
  @include layer(utilities) {
19
+ $selector-prefix: root-defaults.$utility-selector-prefix;
20
+
16
21
  // For each display property, create a utility class.
17
22
  @each $name, $property in defaults.$display-properties {
18
- @include utility.create(
19
- ".#{defaults.$display-class-prefix}#{$name}",
20
- display,
21
- $property
22
- );
23
+ $selector: "#{$selector-prefix}#{defaults.$display-selector-prefix}#{$name}";
24
+
25
+ @include utility.create($selector, display, $property);
23
26
  }
24
27
 
25
28
  // Visually hidden utility classes.
26
- #{defaults.$visually-hidden-class} {
29
+ #{$selector-prefix}#{defaults.$visually-hidden-selector} {
27
30
  @include visually-hidden.apply;
28
31
  }
29
32
 
30
- #{defaults.$visually-hidden-focusable-class} {
33
+ #{$selector-prefix}#{defaults.$visually-hidden-focusable-selector} {
31
34
  @include visually-hidden.focusable;
32
35
  }
33
36
 
34
37
  // Create responsive utilities for visually hidden classes.
35
- @if defaults.$responsive and root-defaults.$responsive-utilities {
36
- @each $screen-size in map.keys(root-defaults.$screen-sizes) {
38
+ @if defaults.$screen-aware and root-defaults.$screen-aware-utilities {
39
+ @each $screen-name in map.keys(root-defaults.$screen-sizes) {
40
+ $selector-prefix: "#{root-defaults.$utility-selector-prefix}#{$screen-name}#{root-defaults.$utility-screen-aware-separator}";
41
+
42
+ // For each display property, create a utility class.
43
+ @each $name, $property in defaults.$display-properties {
44
+ $selector: "#{$selector-prefix}#{defaults.$display-selector-prefix}#{$name}";
45
+
46
+ @include utility.create(
47
+ $selector,
48
+ display,
49
+ $property,
50
+ $screen: $screen-name
51
+ );
52
+ }
53
+
54
+ // Visually hidden utility classes.
55
+ #{$selector-prefix}#{defaults.$visually-hidden-selector} {
56
+ @include screen.up($screen-name) {
57
+ @include visually-hidden.apply;
58
+ }
59
+ }
60
+
61
+ #{$selector-prefix}#{defaults.$visually-hidden-focusable-selector} {
62
+ @include screen.up($screen-name) {
63
+ @include visually-hidden.focusable;
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ // Generate theme-aware utilities.
70
+ @if defaults.$theme-aware and root-defaults.$theme-aware-utilities {
71
+ @each $theme-name, $colors in color.$themes {
72
+ @if $theme-name != active {
73
+ $selector-prefix: "#{root-defaults.$utility-selector-prefix}#{$theme-name}#{root-defaults.$utility-theme-aware-separator}";
74
+
75
+ // For each display property, create a utility class.
76
+ @each $name, $property in defaults.$display-properties {
77
+ $selector: "#{$selector-prefix}#{defaults.$display-selector-prefix}#{$name}";
78
+
79
+ @include utility.create(
80
+ $selector,
81
+ display,
82
+ $property,
83
+ $theme: $theme-name
84
+ );
85
+ }
86
+
87
+ // Visually hidden utility classes.
88
+ #{$selector-prefix}#{defaults.$visually-hidden-selector} {
89
+ @include theme.theme($theme-name) {
90
+ @include visually-hidden.apply;
91
+ }
92
+ }
93
+
94
+ #{$selector-prefix}#{defaults.$visually-hidden-focusable-selector} {
95
+ @include theme.theme($theme-name) {
96
+ @include visually-hidden.focusable;
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+
103
+ // Generate state-aware utilities.
104
+ @if defaults.$state-aware and root-defaults.$state-aware-utilities {
105
+ @each $state-name, $value in root-defaults.$state-selectors {
106
+ $selector-prefix: "#{root-defaults.$utility-selector-prefix}#{$state-name}#{root-defaults.$utility-state-aware-separator}";
107
+
37
108
  // For each display property, create a utility class.
38
109
  @each $name, $property in defaults.$display-properties {
110
+ $selector: "#{$selector-prefix}#{defaults.$display-selector-prefix}#{$name}";
111
+
39
112
  @include utility.create(
40
- ".#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$display-class-prefix}#{$name}",
113
+ $selector,
41
114
  display,
42
115
  $property,
43
- $screen-size
116
+ $state: $state-name
44
117
  );
45
118
  }
46
119
 
47
120
  // Visually hidden utility classes.
48
- .#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$visually-hidden-class} {
49
- @include screen.up($screen-size) {
121
+ #{$selector-prefix}#{defaults.$visually-hidden-selector} {
122
+ @include state.state($state-name) {
50
123
  @include visually-hidden.apply;
51
124
  }
52
125
  }
53
126
 
54
- .#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$visually-hidden-focusable-class} {
55
- @include screen.up($screen-size) {
127
+ #{$selector-prefix}#{defaults.$visually-hidden-focusable-selector} {
128
+ @include state.state($state-name) {
56
129
  @include visually-hidden.focusable;
57
130
  }
58
131
  }