@graupl/graupl 1.0.0-alpha.12 → 1.0.0-alpha.14

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/.github/workflows/codeql-analysis.yml +3 -3
  2. package/.husky/commit-msg +0 -1
  3. package/.husky/pre-commit +0 -1
  4. package/CHANGELOG.md +65 -0
  5. package/dist/base/button.css +1 -1
  6. package/dist/base/button.css.map +1 -1
  7. package/dist/base/form.css +1 -1
  8. package/dist/base/form.css.map +1 -1
  9. package/dist/base/link.css +1 -1
  10. package/dist/base/link.css.map +1 -1
  11. package/dist/base/table.css +1 -1
  12. package/dist/base/table.css.map +1 -1
  13. package/dist/base.css +1 -1
  14. package/dist/base.css.map +1 -1
  15. package/dist/component/alert.css +2 -0
  16. package/dist/component/alert.css.map +1 -0
  17. package/dist/component/card.css +2 -0
  18. package/dist/component/card.css.map +1 -0
  19. package/dist/component/carousel.css +2 -0
  20. package/dist/component/carousel.css.map +1 -0
  21. package/dist/component/input-group.css +1 -1
  22. package/dist/component/input-group.css.map +1 -1
  23. package/dist/component/menu.css +2 -0
  24. package/dist/component/menu.css.map +1 -0
  25. package/dist/component/navigation.css +2 -0
  26. package/dist/component/navigation.css.map +1 -0
  27. package/dist/component.css +1 -1
  28. package/dist/component.css.map +1 -1
  29. package/dist/graupl.css +1 -1
  30. package/dist/graupl.css.map +1 -1
  31. package/dist/layout/columns.css +1 -1
  32. package/dist/layout/columns.css.map +1 -1
  33. package/dist/layout/container.css.map +1 -1
  34. package/dist/layout/flex-columns.css +2 -0
  35. package/dist/layout/flex-columns.css.map +1 -0
  36. package/dist/layout.css +1 -1
  37. package/dist/layout.css.map +1 -1
  38. package/dist/normalize.css.map +1 -1
  39. package/dist/state/focus.css.map +1 -1
  40. package/dist/state.css.map +1 -1
  41. package/dist/theme/color.css.map +1 -1
  42. package/dist/theme/typography.css +1 -1
  43. package/dist/theme/typography.css.map +1 -1
  44. package/dist/theme.css +1 -1
  45. package/dist/theme.css.map +1 -1
  46. package/dist/utilities/alignment.css.map +1 -1
  47. package/dist/utilities/color.css.map +1 -1
  48. package/dist/utilities/display.css +1 -1
  49. package/dist/utilities/display.css.map +1 -1
  50. package/dist/utilities/flex.css.map +1 -1
  51. package/dist/utilities/height.css +2 -0
  52. package/dist/utilities/height.css.map +1 -0
  53. package/dist/utilities/inset.css.map +1 -1
  54. package/dist/utilities/justification.css.map +1 -1
  55. package/dist/utilities/list.css.map +1 -1
  56. package/dist/utilities/order.css +2 -0
  57. package/dist/utilities/order.css.map +1 -0
  58. package/dist/utilities/postion.css.map +1 -1
  59. package/dist/utilities/spacing.css +1 -1
  60. package/dist/utilities/spacing.css.map +1 -1
  61. package/dist/utilities/typography.css +1 -1
  62. package/dist/utilities/typography.css.map +1 -1
  63. package/dist/utilities/visibility.css.map +1 -1
  64. package/dist/utilities/width.css +2 -0
  65. package/dist/utilities/width.css.map +1 -0
  66. package/dist/utilities.css +1 -1
  67. package/dist/utilities.css.map +1 -1
  68. package/docs/.vitepress/config.js +39 -12
  69. package/docs/components/alert.md +130 -0
  70. package/docs/components/button.md +84 -0
  71. package/docs/components/card.md +369 -0
  72. package/docs/components/index.md +1 -0
  73. package/docs/components/inputgroup.md +159 -0
  74. package/docs/components/menu.md +326 -0
  75. package/docs/components/navigation.md +158 -0
  76. package/docs/content.md +237 -0
  77. package/docs/defaults.md +121 -0
  78. package/docs/forms.md +79 -0
  79. package/docs/functions.md +9 -0
  80. package/docs/getting-started.md +1 -0
  81. package/docs/index.md +1 -7
  82. package/docs/introduction.md +22 -2
  83. package/docs/layout.md +200 -0
  84. package/docs/mixins.md +47 -0
  85. package/docs/state.md +67 -0
  86. package/docs/theme.md +258 -0
  87. package/docs/utilities.md +357 -0
  88. package/eslint.config.js +1 -0
  89. package/index.html +760 -325
  90. package/package.json +5 -6
  91. package/scss/component/alert.scss +3 -0
  92. package/scss/component/card.scss +3 -0
  93. package/scss/component/carousel.scss +3 -0
  94. package/scss/component/menu.scss +3 -0
  95. package/scss/component/navigation.scss +3 -0
  96. package/scss/layout/flex-columns.scss +3 -0
  97. package/scss/utilities/height.scss +3 -0
  98. package/scss/utilities/order.scss +3 -0
  99. package/scss/utilities/width.scss +3 -0
  100. package/src/js/alert/Alert.js +511 -0
  101. package/src/js/alert/index.js +21 -0
  102. package/src/js/carousel/Carousel.js +1376 -0
  103. package/src/js/carousel/index.js +20 -0
  104. package/src/js/domHelpers.js +37 -0
  105. package/src/js/eventHandlers.js +32 -0
  106. package/src/js/navigation.js +34 -0
  107. package/src/js/validate.js +225 -0
  108. package/src/scss/_defaults.scss +15 -1
  109. package/src/scss/base/_index.scss +1 -1
  110. package/src/scss/base/button/_defaults.scss +15 -3
  111. package/src/scss/base/button/_index.scss +80 -120
  112. package/src/scss/base/button/_mixins.scss +164 -0
  113. package/src/scss/base/button/_variables.scss +43 -11
  114. package/src/scss/base/form/_index.scss +3 -5
  115. package/src/scss/base/form/_variables.scss +8 -0
  116. package/src/scss/base/link/_defaults.scss +37 -6
  117. package/src/scss/base/link/_index.scss +73 -13
  118. package/src/scss/base/link/_variables.scss +175 -18
  119. package/src/scss/base/table/_index.scss +3 -5
  120. package/src/scss/base/table/_variables.scss +8 -0
  121. package/src/scss/component/_index.scss +6 -1
  122. package/src/scss/component/alert/_defaults.scss +49 -0
  123. package/src/scss/component/alert/_index.scss +118 -0
  124. package/src/scss/component/alert/_variables.scss +170 -0
  125. package/src/scss/component/card/_defaults.scss +32 -0
  126. package/src/scss/component/card/_index.scss +177 -0
  127. package/src/scss/component/card/_variables.scss +185 -0
  128. package/src/scss/component/carousel/_defaults.scss +43 -0
  129. package/src/scss/component/carousel/_index.scss +182 -0
  130. package/src/scss/component/carousel/_variables.scss +104 -0
  131. package/src/scss/component/input-group/_index.scss +1 -1
  132. package/src/scss/component/menu/_defaults.scss +66 -0
  133. package/src/scss/component/menu/_index.scss +305 -0
  134. package/src/scss/component/menu/_variables.scss +495 -0
  135. package/src/scss/component/navigation/_defaults.scss +29 -0
  136. package/src/scss/component/navigation/_index.scss +189 -0
  137. package/src/scss/component/navigation/_variables.scss +237 -0
  138. package/src/scss/functions/_theme.scss +16 -0
  139. package/src/scss/layout/_index.scss +2 -1
  140. package/src/scss/layout/columns/_index.scss +23 -1
  141. package/src/scss/layout/container/_index.scss +1 -1
  142. package/src/scss/layout/flex-columns/_defaults.scss +18 -0
  143. package/src/scss/layout/flex-columns/_index.scss +77 -0
  144. package/src/scss/layout/flex-columns/_variables.scss +26 -0
  145. package/src/scss/mixins/_layer.scss +2 -4
  146. package/src/scss/mixins/_media-queries.scss +8 -0
  147. package/src/scss/mixins/_visually-hidden.scss +20 -0
  148. package/src/scss/state/_index.scss +1 -1
  149. package/src/scss/state/focus/_index.scss +1 -1
  150. package/src/scss/theme/_index.scss +1 -1
  151. package/src/scss/theme/color/_index.scss +1 -1
  152. package/src/scss/theme/typography/_defaults.scss +1 -1
  153. package/src/scss/theme/typography/_index.scss +1 -1
  154. package/src/scss/theme/typography/_variables.scss +5 -2
  155. package/src/scss/utilities/_index.scss +5 -1
  156. package/src/scss/utilities/alignment/_index.scss +1 -1
  157. package/src/scss/utilities/color/_index.scss +1 -1
  158. package/src/scss/utilities/display/_defaults.scss +2 -0
  159. package/src/scss/utilities/display/_index.scss +11 -1
  160. package/src/scss/utilities/flex/_index.scss +1 -1
  161. package/src/scss/utilities/height/_defaults.scss +38 -0
  162. package/src/scss/utilities/height/_index.scss +23 -0
  163. package/src/scss/utilities/height/_variables.scss +6 -0
  164. package/src/scss/utilities/inset/_index.scss +1 -1
  165. package/src/scss/utilities/justification/_index.scss +1 -1
  166. package/src/scss/utilities/list/_index.scss +1 -1
  167. package/src/scss/utilities/order/_defaults.scss +19 -0
  168. package/src/scss/utilities/order/_index.scss +35 -0
  169. package/src/scss/utilities/order/_variables.scss +6 -0
  170. package/src/scss/utilities/position/_index.scss +1 -1
  171. package/src/scss/utilities/ratio/_defaults.scss +25 -0
  172. package/src/scss/utilities/ratio/_index.scss +34 -0
  173. package/src/scss/utilities/ratio/_variables.scss +9 -0
  174. package/src/scss/utilities/spacing/_index.scss +34 -17
  175. package/src/scss/utilities/typography/_index.scss +1 -1
  176. package/src/scss/utilities/visibility/_index.scss +1 -1
  177. package/src/scss/utilities/width/_defaults.scss +38 -0
  178. package/src/scss/utilities/width/_index.scss +23 -0
  179. package/src/scss/utilities/width/_variables.scss +6 -0
  180. package/stylelint.config.js +1 -0
@@ -0,0 +1,495 @@
1
+ // @graupl/graupl menu component 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";
7
+ @use "../../defaults" as root-defaults;
8
+ @use "../../variables" as root-variables;
9
+ @use "../../theme/color/variables" as color;
10
+ @use "../../functions/theme";
11
+ @use "sass:map";
12
+
13
+ // Menu properties.
14
+ $menu-flex-direction: var(
15
+ --#{root-defaults.$prefix}-menu-flex-direction,
16
+ #{defaults.$menu-flex-direction}
17
+ );
18
+ $menu-padding-x: var(
19
+ --#{root-defaults.$prefix}-menu-padding-x,
20
+ #{map.get(root-variables.$spacers, 0)}
21
+ );
22
+ $menu-padding-y: var(
23
+ --#{root-defaults.$prefix}-menu-padding-y,
24
+ #{map.get(root-variables.$spacers, 0)}
25
+ );
26
+ $menu-padding: var(
27
+ --#{root-defaults.$prefix}-menu-padding,
28
+ #{$menu-padding-y} #{$menu-padding-x}
29
+ );
30
+
31
+ // Menu gap properties.
32
+ $menu-column-gap: var(
33
+ --#{root-defaults.$prefix}-menu-column-gap,
34
+ #{map.get(root-variables.$spacers, 0)}
35
+ );
36
+ $menu-row-gap: var(
37
+ --#{root-defaults.$prefix}-menu-row-gap,
38
+ #{map.get(root-variables.$spacers, 0)}
39
+ );
40
+ $menu-gap: var(
41
+ --#{root-defaults.$prefix}-menu-gap,
42
+ #{$menu-column-gap} #{$menu-row-gap}
43
+ );
44
+
45
+ // Menu display properties.
46
+ $menu-show-display: var(
47
+ --#{root-defaults.$prefix}-menu-show-display,
48
+ #{defaults.$menu-show-display}
49
+ );
50
+ $menu-hide-display: var(
51
+ --#{root-defaults.$prefix}-menu-hide-display,
52
+ #{defaults.$menu-hide-display}
53
+ );
54
+ $menu-display: var(
55
+ --#{root-defaults.$prefix}-menu-display,
56
+ #{defaults.$menu-show-display}
57
+ );
58
+
59
+ // Menu color properties.
60
+ $menu-background: var(
61
+ --#{root-defaults.$prefix}-menu-background,
62
+ #{color.$root-background}
63
+ );
64
+ $menu-color: var(--#{root-defaults.$prefix}-menu-color, #{color.$root-color});
65
+
66
+ // Menu border properties.
67
+ $menu-border-color: var(
68
+ --#{root-defaults.$prefix}-menu-border-color,
69
+ #{$menu-color}
70
+ );
71
+ $menu-border-radius: var(
72
+ --#{root-defaults.$prefix}-menu-border-radius,
73
+ #{root-variables.$border-radius}
74
+ );
75
+ $menu-border-style: var(
76
+ --#{root-defaults.$prefix}-menu-border-style,
77
+ #{root-variables.$border-style}
78
+ );
79
+ $menu-border-width: var(
80
+ --#{root-defaults.$prefix}-menu-border-width,
81
+ #{defaults.$menu-border-width}
82
+ );
83
+ $menu-border: var(
84
+ --#{root-defaults.$prefix}-menu-border,
85
+ #{$menu-border-width} #{$menu-border-style}
86
+ );
87
+
88
+ // Submenu properties
89
+ $submenu-flex-direction: var(
90
+ --#{root-defaults.$prefix}-submenu-flex-direction,
91
+ #{defaults.$submenu-flex-direction}
92
+ );
93
+ $submenu-z-index: var(
94
+ --#{root-defaults.$prefix}-submenu-z-index,
95
+ #{defaults.$submenu-z-index}
96
+ );
97
+ $submenu-padding-x: var(
98
+ --#{root-defaults.$prefix}-submenu-padding-x,
99
+ #{map.get(root-variables.$spacers, 0)}
100
+ );
101
+ $submenu-padding-y: var(
102
+ --#{root-defaults.$prefix}-submenu-padding-y,
103
+ #{map.get(root-variables.$spacers, 0)}
104
+ );
105
+ $submenu-padding: var(
106
+ --#{root-defaults.$prefix}-submenu-padding,
107
+ #{$submenu-padding-y} #{$submenu-padding-x}
108
+ );
109
+
110
+ // Submenu gap properties.
111
+ $submenu-column-gap: var(
112
+ --#{root-defaults.$prefix}-submenu-column-gap,
113
+ #{$menu-column-gap}
114
+ );
115
+ $submenu-row-gap: var(
116
+ --#{root-defaults.$prefix}-submenu-row-gap,
117
+ #{$menu-row-gap}
118
+ );
119
+ $submenu-gap: var(
120
+ --#{root-defaults.$prefix}-submenu-gap,
121
+ #{$submenu-column-gap} #{$submenu-row-gap}
122
+ );
123
+
124
+ // Submenu display properties.
125
+ $submenu-show-display: var(
126
+ --#{root-defaults.$prefix}-submenu-show-display,
127
+ #{defaults.$submenu-show-display}
128
+ );
129
+ $submenu-hide-display: var(
130
+ --#{root-defaults.$prefix}-submenu-hide-display,
131
+ #{defaults.$submenu-hide-display}
132
+ );
133
+ $submenu-display: var(
134
+ --#{root-defaults.$prefix}-submenu-display,
135
+ #{defaults.$submenu-hide-display}
136
+ );
137
+
138
+ // Submenu color properties.
139
+ $submenu-background: var(
140
+ --#{root-defaults.$prefix}-submenu-background,
141
+ #{$menu-background}
142
+ );
143
+ $submenu-color: var(--#{root-defaults.$prefix}-submenu-color, #{$menu-color});
144
+
145
+ // Submenu border properties.
146
+ $submenu-border-color: var(
147
+ --#{root-defaults.$prefix}-submenu-border-color,
148
+ #{$submenu-color}
149
+ );
150
+ $submenu-border-radius: var(
151
+ --#{root-defaults.$prefix}-submenu-border-radius,
152
+ #{root-variables.$border-radius}
153
+ );
154
+ $submenu-border-style: var(
155
+ --#{root-defaults.$prefix}-submenu-border-style,
156
+ #{root-variables.$border-style}
157
+ );
158
+ $submenu-border-width: var(
159
+ --#{root-defaults.$prefix}-submenu-border-width,
160
+ #{root-variables.$border-width}
161
+ );
162
+ $submenu-border: var(
163
+ --#{root-defaults.$prefix}-submenu-border,
164
+ #{$submenu-border-width} #{$submenu-border-style}
165
+ );
166
+
167
+ // Submenu position properties.
168
+ $submenu-position: var(
169
+ --#{root-defaults.$prefix}-submenu-position,
170
+ #{defaults.$submenu-position}
171
+ );
172
+ $submenu-top: var(
173
+ --#{root-defaults.$prefix}-submenu-top,
174
+ #{defaults.$submenu-top}
175
+ );
176
+ $submenu-right: var(
177
+ --#{root-defaults.$prefix}-submenu-right,
178
+ #{defaults.$submenu-right}
179
+ );
180
+ $submenu-bottom: var(
181
+ --#{root-defaults.$prefix}-submenu-bottom,
182
+ #{defaults.$submenu-bottom}
183
+ );
184
+ $submenu-left: var(
185
+ --#{root-defaults.$prefix}-submenu-left,
186
+ #{defaults.$submenu-left}
187
+ );
188
+ $submenu-inset: var(
189
+ --#{root-defaults.$prefix}-submenu-inset,
190
+ #{$submenu-top} #{$submenu-right} #{$submenu-bottom} #{$submenu-left}
191
+ );
192
+
193
+ // Menu item properties.
194
+ $menu-item-min-width: var(
195
+ --#{root-defaults.$prefix}-menu-item-min-width,
196
+ #{defaults.$menu-item-min-width}
197
+ );
198
+ $menu-item-max-width: var(
199
+ --#{root-defaults.$prefix}-menu-item-max-width,
200
+ #{defaults.$menu-item-max-width}
201
+ );
202
+ $menu-item-padding-x: var(
203
+ --#{root-defaults.$prefix}-menu-item-padding-x,
204
+ #{map.get(root-variables.$spacers, 0)}
205
+ );
206
+ $menu-item-padding-y: var(
207
+ --#{root-defaults.$prefix}-menu-item-padding-y,
208
+ #{map.get(root-variables.$spacers, 0)}
209
+ );
210
+ $menu-item-padding: var(
211
+ --#{root-defaults.$prefix}-menu-item-padding,
212
+ #{$menu-item-padding-y} #{$menu-item-padding-x}
213
+ );
214
+
215
+ // Submenu item properties.
216
+ $submenu-item-width: var(
217
+ --#{root-defaults.$prefix}-submenu-item-width,
218
+ #{defaults.$submenu-item-width}
219
+ );
220
+
221
+ // Menu link properties.
222
+ $menu-link-padding-x: var(
223
+ --#{root-defaults.$prefix}-menu-link-padding-x,
224
+ #{map.get(root-variables.$spacers, 5)}
225
+ );
226
+ $menu-link-padding-y: var(
227
+ --#{root-defaults.$prefix}-menu-link-padding-y,
228
+ #{map.get(root-variables.$spacers, 3)}
229
+ );
230
+ $menu-link-padding: var(
231
+ --#{root-defaults.$prefix}-menu-link-padding,
232
+ #{$menu-link-padding-y} #{$menu-link-padding-x}
233
+ );
234
+
235
+ // Menu link transform properties.
236
+ $menu-link-transition: var(
237
+ --#{root-defaults.$prefix}-menu-link-transition,
238
+ background #{map.get(root-variables.$transition-durations, fast)} #{root-variables.$transition-timing-function},
239
+ color #{map.get(root-variables.$transition-durations, fast)} #{root-variables.$transition-timing-function}
240
+ );
241
+ $menu-link-transition-reduced-motion: var(
242
+ --#{root-defaults.$prefix}-menu-link-transition-reduced-motion,
243
+ background #{map.get(root-variables.$transition-durations, none)} #{root-variables.$transition-timing-function},
244
+ color #{map.get(root-variables.$transition-durations, none)} #{root-variables.$transition-timing-function}
245
+ );
246
+ $menu-link-transform: var(
247
+ --#{root-defaults.$prefix}-menu-link-transform,
248
+ #{defaults.$menu-link-transform}
249
+ );
250
+ $menu-link-visited-transform: var(
251
+ --#{root-defaults.$prefix}-menu-link-visited-transform,
252
+ #{defaults.$menu-link-visited-transform}
253
+ );
254
+ $menu-link-focus-transform: var(
255
+ --#{root-defaults.$prefix}-menu-link-focus-transform,
256
+ #{defaults.$menu-link-focus-transform}
257
+ );
258
+ $menu-link-hover-transform: var(
259
+ --#{root-defaults.$prefix}-menu-link-hover-transform,
260
+ #{defaults.$menu-link-hover-transform}
261
+ );
262
+ $menu-link-active-transform: var(
263
+ --#{root-defaults.$prefix}-menu-link-active-transform,
264
+ #{defaults.$menu-link-active-transform}
265
+ );
266
+ $menu-link-disabled-transform: var(
267
+ --#{root-defaults.$prefix}-menu-link-disabled-transform,
268
+ #{defaults.$menu-link-disabled-transform}
269
+ );
270
+
271
+ // Menu link gap properties.
272
+ $menu-link-column-gap: var(
273
+ --#{root-defaults.$prefix}-menu-link-column-gap,
274
+ #{$menu-link-padding-x}
275
+ );
276
+ $menu-link-row-gap: var(
277
+ --#{root-defaults.$prefix}-menu-link-row-gap,
278
+ #{map.get(root-variables.$spacers, 0)}
279
+ );
280
+ $menu-link-gap: var(
281
+ --#{root-defaults.$prefix}-menu-link-gap,
282
+ #{$menu-link-column-gap} #{$menu-link-row-gap}
283
+ );
284
+
285
+ // Menu link colors.
286
+ $menu-link-background: var(
287
+ --#{root-defaults.$prefix}-menu-link-background,
288
+ #{$menu-background}
289
+ );
290
+ $menu-link-visited-background: var(
291
+ --#{root-defaults.$prefix}-menu-link-visited-background,
292
+ #{$menu-background}
293
+ );
294
+ $menu-link-focus-background: var(
295
+ --#{root-defaults.$prefix}-menu-link-focus-background,
296
+ #{$menu-background}
297
+ );
298
+ $menu-link-hover-background: var(
299
+ --#{root-defaults.$prefix}-menu-link-hover-background,
300
+ #{$menu-color}
301
+ );
302
+ $menu-link-active-background: var(
303
+ --#{root-defaults.$prefix}-menu-link-active-background,
304
+ #{$menu-color}
305
+ );
306
+ $menu-link-disabled-background: var(
307
+ --#{root-defaults.$prefix}-menu-link-disabled-background,
308
+ #{color.$root-background}
309
+ );
310
+ $menu-link-color: var(
311
+ --#{root-defaults.$prefix}-menu-link-color,
312
+ #{$menu-color}
313
+ );
314
+ $menu-link-visited-color: var(
315
+ --#{root-defaults.$prefix}-menu-link-visited-color,
316
+ #{$menu-color}
317
+ );
318
+ $menu-link-focus-color: var(
319
+ --#{root-defaults.$prefix}-menu-link-focus-color,
320
+ #{$menu-color}
321
+ );
322
+ $menu-link-hover-color: var(
323
+ --#{root-defaults.$prefix}-menu-link-hover-color,
324
+ #{$menu-background}
325
+ );
326
+ $menu-link-active-color: var(
327
+ --#{root-defaults.$prefix}-menu-link-active-color,
328
+ #{$menu-background}
329
+ );
330
+ $menu-link-disabled-color: var(
331
+ --#{root-defaults.$prefix}-menu-link-disabled-color,
332
+ #{theme.get(primary, 200)}
333
+ );
334
+
335
+ // Menu link text decoration properties.
336
+ $menu-link-text-decoration: var(
337
+ --#{root-defaults.$prefix}-menu-link-text-decoration,
338
+ #{defaults.$menu-link-text-decoration}
339
+ );
340
+ $menu-link-visited-text-decoration: var(
341
+ --#{root-defaults.$prefix}-menu-link-visited-text-decoration,
342
+ #{defaults.$menu-link-visited-text-decoration}
343
+ );
344
+ $menu-link-focus-text-decoration: var(
345
+ --#{root-defaults.$prefix}-menu-link-focus-text-decoration,
346
+ #{defaults.$menu-link-focus-text-decoration}
347
+ );
348
+ $menu-link-hover-text-decoration: var(
349
+ --#{root-defaults.$prefix}-menu-link-hover-text-decoration,
350
+ #{defaults.$menu-link-hover-text-decoration}
351
+ );
352
+ $menu-link-active-text-decoration: var(
353
+ --#{root-defaults.$prefix}-menu-link-active-text-decoration,
354
+ #{defaults.$menu-link-active-text-decoration}
355
+ );
356
+ $menu-link-disabled-text-decoration: var(
357
+ --#{root-defaults.$prefix}-menu-link-disabled-text-decoration,
358
+ #{defaults.$menu-link-disabled-text-decoration}
359
+ );
360
+ $menu-link-text-decoration-thickness: var(
361
+ --#{root-defaults.$prefix}-menu-link-text-decoration-thickness,
362
+ #{root-variables.$border-width}
363
+ );
364
+ $menu-link-visited-text-decoration-thickness: var(
365
+ --#{root-defaults.$prefix}-menu-link-visited-text-decoration-thickness,
366
+ #{root-variables.$border-width}
367
+ );
368
+ $menu-link-focus-text-decoration-thickness: var(
369
+ --#{root-defaults.$prefix}-menu-link-focus-text-decoration-thickness,
370
+ #{root-variables.$border-width}
371
+ );
372
+ $menu-link-hover-text-decoration-thickness: var(
373
+ --#{root-defaults.$prefix}-menu-link-hover-text-decoration-thickness,
374
+ #{root-variables.$border-width}
375
+ );
376
+ $menu-link-active-text-decoration-thickness: var(
377
+ --#{root-defaults.$prefix}-menu-link-active-text-decoration-thickness,
378
+ #{root-variables.$border-width}
379
+ );
380
+ $menu-link-disabled-text-decoration-thickness: var(
381
+ --#{root-defaults.$prefix}-menu-link-disabled-text-decoration-thickness,
382
+ #{root-variables.$border-width}
383
+ );
384
+ $menu-link-text-decoration-style: var(
385
+ --#{root-defaults.$prefix}-menu-link-text-decoration-style,
386
+ #{defaults.$menu-link-text-decoration-style}
387
+ );
388
+ $menu-link-visited-text-decoration-style: var(
389
+ --#{root-defaults.$prefix}-menu-link-visited-text-decoration-style,
390
+ #{defaults.$menu-link-visited-text-decoration-style}
391
+ );
392
+ $menu-link-focus-text-decoration-style: var(
393
+ --#{root-defaults.$prefix}-menu-link-focus-text-decoration-style,
394
+ #{defaults.$menu-link-focus-text-decoration-style}
395
+ );
396
+ $menu-link-hover-text-decoration-style: var(
397
+ --#{root-defaults.$prefix}-menu-link-hover-text-decoration-style,
398
+ #{defaults.$menu-link-hover-text-decoration-style}
399
+ );
400
+ $menu-link-active-text-decoration-style: var(
401
+ --#{root-defaults.$prefix}-menu-link-active-text-decoration-style,
402
+ #{defaults.$menu-link-active-text-decoration-style}
403
+ );
404
+ $menu-link-disabled-text-decoration-style: var(
405
+ --#{root-defaults.$prefix}-menu-link-disabled-text-decoration-style,
406
+ #{defaults.$menu-link-disabled-text-decoration-style}
407
+ );
408
+ $menu-link-text-decoration-color: var(
409
+ --#{root-defaults.$prefix}-menu-link-text-decoration-color,
410
+ #{$menu-link-color}
411
+ );
412
+ $menu-link-visited-text-decoration-color: var(
413
+ --#{root-defaults.$prefix}-menu-link-visited-text-decoration-color,
414
+ #{$menu-link-visited-color}
415
+ );
416
+ $menu-link-focus-text-decoration-color: var(
417
+ --#{root-defaults.$prefix}-menu-link-focus-text-decoration-color,
418
+ #{$menu-link-focus-color}
419
+ );
420
+ $menu-link-hover-text-decoration-color: var(
421
+ --#{root-defaults.$prefix}-menu-link-hover-text-decoration-color,
422
+ #{$menu-link-hover-color}
423
+ );
424
+ $menu-link-active-text-decoration-color: var(
425
+ --#{root-defaults.$prefix}-menu-link-active-text-decoration-color,
426
+ #{$menu-link-active-color}
427
+ );
428
+ $menu-link-disabled-text-decoration-color: var(
429
+ --#{root-defaults.$prefix}-menu-link-disabled-text-decoration-color,
430
+ #{$menu-link-disabled-color}
431
+ );
432
+
433
+ // Menu link border properties.
434
+ $menu-link-border-radius: var(
435
+ --#{root-defaults.$prefix}-menu-link-border-radius,
436
+ #{root-variables.$border-radius}
437
+ );
438
+ $menu-link-border-style: var(
439
+ --#{root-defaults.$prefix}-menu-link-border-style,
440
+ #{root-variables.$border-style}
441
+ );
442
+ $menu-link-border-width: var(
443
+ --#{root-defaults.$prefix}-menu-link-border-width,
444
+ #{defaults.$menu-link-border-width}
445
+ );
446
+ $menu-link-border: var(
447
+ --#{root-defaults.$prefix}-menu-link-border,
448
+ #{$menu-link-border-width} #{$menu-link-border-style}
449
+ );
450
+ $menu-link-border-color: var(
451
+ --#{root-defaults.$prefix}-menu-link-border-color,
452
+ #{$menu-link-color}
453
+ );
454
+ $menu-link-visited-border-color: var(
455
+ --#{root-defaults.$prefix}-menu-link-visited-border-color,
456
+ #{$menu-link-color}
457
+ );
458
+ $menu-link-focus-border-color: var(
459
+ --#{root-defaults.$prefix}-menu-link-focus-border-color,
460
+ #{$menu-link-color}
461
+ );
462
+ $menu-link-hover-border-color: var(
463
+ --#{root-defaults.$prefix}-menu-link-hover-border-color,
464
+ #{$menu-link-color}
465
+ );
466
+ $menu-link-active-border-color: var(
467
+ --#{root-defaults.$prefix}-menu-link-active-border-color,
468
+ #{$menu-link-color}
469
+ );
470
+ $menu-link-disabled-border-color: var(
471
+ --#{root-defaults.$prefix}-menu-link-disabled-border-color,
472
+ #{$menu-link-color}
473
+ );
474
+
475
+ // Submenu toggle properties.
476
+ $submenu-toggle-transform: var(
477
+ --#{root-defaults.$prefix}-submenu-toggle-transform,
478
+ #{defaults.$submenu-toggle-transform}
479
+ );
480
+ $submenu-toggle-open-transform: var(
481
+ --#{root-defaults.$prefix}-submenu-toggle-open-transform,
482
+ #{defaults.$submenu-toggle-open-transform}
483
+ );
484
+ $submenu-toggle-content: var(
485
+ --#{root-defaults.$prefix}-submenu-toggle-content,
486
+ #{defaults.$submenu-toggle-content}
487
+ );
488
+ $submenu-toggle-transition: var(
489
+ --#{root-defaults.$prefix}-submenu-toggle-transition,
490
+ transform #{map.get(root-variables.$transition-durations, fast)} #{root-variables.$transition-timing-function}
491
+ );
492
+ $submenu-toggle-transition-reduced-motion: var(
493
+ --#{root-defaults.$prefix}-submenu-toggle-transition-reduced-motion,
494
+ none
495
+ );
@@ -0,0 +1,29 @@
1
+ // @graupl/graupl navigation component default values.
2
+ //
3
+ // Generally, these should not be used directly when styling components unless a static value is needed.
4
+ // They are mainly used to provide class selectors, fallbacks for custom properties, or loop values.
5
+ //
6
+ // They should not be used to define direct property values (i.e. font-size, color, etc.).
7
+ // Those should be defined as custom properties in the `_variables.scss` file.
8
+
9
+ // Navigation selectors.
10
+ $navigation-selector: ".navigation" !default;
11
+ $navigation-toggle-selector: ".navigation-toggle" !default;
12
+ $navigation-branding-selector: ".navigation-branding" !default;
13
+
14
+ // Navigation toggle properties.
15
+ $navigation-toggle-content: "'☰'" !default;
16
+
17
+ // Navigation branding properties.
18
+ $navigation-branding-text-decoration: none !default;
19
+ $navigation-branding-visited-text-decoration: $navigation-branding-text-decoration !default;
20
+ $navigation-branding-focus-text-decoration: $navigation-branding-text-decoration !default;
21
+ $navigation-branding-hover-text-decoration: $navigation-branding-text-decoration !default;
22
+ $navigation-branding-active-text-decoration: $navigation-branding-text-decoration !default;
23
+ $navigation-branding-disabled-text-decoration: $navigation-branding-text-decoration !default;
24
+ $navigation-branding-text-decoration-style: solid !default;
25
+ $navigation-branding-visited-text-decoration-style: $navigation-branding-text-decoration-style !default;
26
+ $navigation-branding-focus-text-decoration-style: $navigation-branding-text-decoration-style !default;
27
+ $navigation-branding-hover-text-decoration-style: $navigation-branding-text-decoration-style !default;
28
+ $navigation-branding-active-text-decoration-style: $navigation-branding-text-decoration-style !default;
29
+ $navigation-branding-disabled-text-decoration-style: $navigation-branding-text-decoration-style !default;
@@ -0,0 +1,189 @@
1
+ // @graupl/graupl navigation component styles.
2
+
3
+ @use "defaults";
4
+ @use "variables" as *;
5
+ @use "../../defaults" as root-defaults;
6
+ @use "../menu/defaults" as menu-defaults;
7
+ @use "../menu/variables" as menu-variables;
8
+ @use "../../mixins/layer" as *;
9
+ @use "../../mixins/media-queries" as *;
10
+
11
+ @include layer(component) {
12
+ // Navigation.
13
+ #{defaults.$navigation-selector} {
14
+ display: grid;
15
+ grid-template-areas:
16
+ "branding - toggle"
17
+ "menu menu menu";
18
+ grid-template-columns: auto 1fr auto;
19
+ isolation: isolate;
20
+
21
+ #{menu-defaults.$menu-selector} {
22
+ grid-area: menu;
23
+
24
+ &#{menu-defaults.$menu-show-selector} {
25
+ --#{root-defaults.$prefix}-menu-display: #{menu-variables.$menu-show-display};
26
+ }
27
+
28
+ &#{menu-defaults.$menu-hide-selector} {
29
+ --#{root-defaults.$prefix}-menu-display: #{menu-variables.$menu-hide-display};
30
+ }
31
+ }
32
+ }
33
+
34
+ // Navigation toggle.
35
+ #{defaults.$navigation-toggle-selector} {
36
+ display: flex;
37
+ grid-area: toggle;
38
+ align-items: center;
39
+ justify-content: center;
40
+ min-width: $navigation-toggle-min-width;
41
+ min-height: $navigation-toggle-min-height;
42
+ padding: $navigation-toggle-padding;
43
+ border: $navigation-toggle-border;
44
+ border-radius: $navigation-toggle-border-radius;
45
+
46
+ &::before {
47
+ content: $navigation-toggle-content;
48
+ display: block;
49
+ }
50
+ }
51
+
52
+ // Navigation branding.
53
+ #{defaults.$navigation-branding-selector} {
54
+ display: flex;
55
+ grid-area: branding;
56
+ align-items: center;
57
+ justify-content: flex-start;
58
+ padding: $navigation-branding-padding;
59
+ font-size: $navigation-branding-font-size;
60
+ font-weight: $navigation-branding-font-weight;
61
+ text-decoration: $navigation-branding-text-decoration;
62
+ text-decoration-style: $navigation-branding-text-decoration-style;
63
+ text-decoration-thickness: $navigation-branding-text-decoration-thickness;
64
+
65
+ &:visited {
66
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration: #{$navigation-branding-visited-text-decoration};
67
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-thickness: #{$navigation-branding-visited-text-decoration-thickness};
68
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-style: #{$navigation-branding-visited-text-decoration-style};
69
+ }
70
+
71
+ &:focus-visible {
72
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration: #{$navigation-branding-focus-text-decoration};
73
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-thickness: #{$navigation-branding-focus-text-decoration-thickness};
74
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-style: #{$navigation-branding-focus-text-decoration-style};
75
+ }
76
+
77
+ &:hover {
78
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration: #{$navigation-branding-hover-text-decoration};
79
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-thickness: #{$navigation-branding-hover-text-decoration-thickness};
80
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-style: #{$navigation-branding-hover-text-decoration-style};
81
+ }
82
+
83
+ &:active {
84
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration: #{$navigation-branding-active-text-decoration};
85
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-thickness: #{$navigation-branding-active-text-decoration-thickness};
86
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-style: #{$navigation-branding-active-text-decoration-style};
87
+ }
88
+
89
+ &:disabled,
90
+ &[disabled] {
91
+ &,
92
+ &:visited,
93
+ &:focus-visible,
94
+ &:hover,
95
+ &:active {
96
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration: #{$navigation-branding-disabled-text-decoration};
97
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-thickness: #{$navigation-branding-disabled-text-decoration-thickness};
98
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-style: #{$navigation-branding-disabled-text-decoration-style};
99
+ }
100
+ }
101
+ }
102
+
103
+ @include screen-trigger(navigation-collapse) {
104
+ // Navigation.
105
+ #{defaults.$navigation-selector} {
106
+ --#{root-defaults.$prefix}-menu-flex-direction: column;
107
+ --#{root-defaults.$prefix}-submenu-position: relative;
108
+ --#{root-defaults.$prefix}-menu-item-min-width: 100%;
109
+ --#{root-defaults.$prefix}-submenu-inset: auto;
110
+ }
111
+ }
112
+
113
+ @include screen-trigger(navigation-expand) {
114
+ // Navigation.
115
+ #{defaults.$navigation-selector} {
116
+ --#{root-defaults.$prefix}-menu-hide-display: #{menu-variables.$menu-show-display};
117
+
118
+ grid-template-areas: "branding - menu";
119
+ }
120
+
121
+ // Navigation toggle.
122
+ #{defaults.$navigation-toggle-selector} {
123
+ display: none;
124
+ }
125
+ }
126
+ }
127
+
128
+ @include layer(theme) {
129
+ // Navigation.
130
+ #{defaults.$navigation-selector} {
131
+ --#{root-defaults.$prefix}-menu-background: #{$navigation-background};
132
+ --#{root-defaults.$prefix}-menu-color: #{$navigation-color};
133
+ --#{root-defaults.$prefix}-submenu-background: #{$navigation-background};
134
+ --#{root-defaults.$prefix}-submenu-color: #{$navigation-color};
135
+
136
+ background: $navigation-background;
137
+ color: $navigation-color;
138
+ }
139
+
140
+ // Navigation toggle.
141
+ #{defaults.$navigation-toggle-selector} {
142
+ border-color: $navigation-toggle-border-color;
143
+ background: $navigation-toggle-background;
144
+ color: $navigation-toggle-color;
145
+
146
+ &:hover {
147
+ --#{root-defaults.$prefix}-navigation-toggle-background: #{$navigation-toggle-hover-background};
148
+ --#{root-defaults.$prefix}-navigation-toggle-color: #{$navigation-toggle-hover-color};
149
+ }
150
+ }
151
+
152
+ // Navigation branding.
153
+ #{defaults.$navigation-branding-selector} {
154
+ color: $navigation-branding-color;
155
+ text-decoration-color: $navigation-branding-text-decoration-color;
156
+
157
+ &:visited {
158
+ --#{root-defaults.$prefix}-navigation-branding-color: #{$navigation-branding-visited-color};
159
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-color: #{$navigation-branding-visited-text-decoration-color};
160
+ }
161
+
162
+ &:focus-visible {
163
+ --#{root-defaults.$prefix}-navigation-branding-color: #{$navigation-branding-focus-color};
164
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-color: #{$navigation-branding-focus-text-decoration-color};
165
+ }
166
+
167
+ &:hover {
168
+ --#{root-defaults.$prefix}-navigation-branding-color: #{$navigation-branding-hover-color};
169
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-color: #{$navigation-branding-hover-text-decoration-color};
170
+ }
171
+
172
+ &:active {
173
+ --#{root-defaults.$prefix}-navigation-branding-color: #{$navigation-branding-active-color};
174
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-color: #{$navigation-branding-active-text-decoration-color};
175
+ }
176
+
177
+ &:disabled,
178
+ &[disabled] {
179
+ &,
180
+ &:visited,
181
+ &:focus-visible,
182
+ &:hover,
183
+ &:active {
184
+ --#{root-defaults.$prefix}-navigation-branding-color: #{$navigation-branding-disabled-color};
185
+ --#{root-defaults.$prefix}-navigation-branding-text-decoration-color: #{$navigation-branding-disabled-text-decoration-color};
186
+ }
187
+ }
188
+ }
189
+ }