@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,66 @@
1
+ // @graupl/graupl menu 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
+ // Menu selectors.
10
+ $menu-selector: ".menu" !default;
11
+ $submenu-selector: ".submenu" !default;
12
+ $menu-item-selector: ".menu-item" !default;
13
+ $menu-link-selector: ".menu-link" !default;
14
+ $submenu-toggle-selector: ".submenu-toggle" !default;
15
+ $menu-show-selector: ".show" !default;
16
+ $menu-hide-selector: ".hide" !default;
17
+
18
+ // Flex properties.
19
+ $menu-flex-direction: row !default;
20
+ $submenu-flex-direction: column !default;
21
+
22
+ // Visibility properties.
23
+ $menu-show-display: flex !default;
24
+ $menu-hide-display: none !default;
25
+ $submenu-show-display: $menu-show-display !default;
26
+ $submenu-hide-display: $menu-hide-display !default;
27
+
28
+ // Menu item properties.
29
+ $menu-item-min-width: min-content !default;
30
+ $menu-item-max-width: 100% !default;
31
+
32
+ // Submenu properties.
33
+ $submenu-position: absolute !default;
34
+ $submenu-z-index: 2 !default;
35
+ $submenu-top: 100% !default;
36
+ $submenu-right: auto !default;
37
+ $submenu-bottom: auto !default;
38
+ $submenu-left: 0 !default;
39
+
40
+ // Submenu item properties.
41
+ $submenu-item-width: 100% !default;
42
+
43
+ // Menu link properties.
44
+ $menu-link-text-decoration: none !default;
45
+ $menu-link-visited-text-decoration: $menu-link-text-decoration !default;
46
+ $menu-link-focus-text-decoration: $menu-link-text-decoration !default;
47
+ $menu-link-hover-text-decoration: $menu-link-text-decoration !default;
48
+ $menu-link-active-text-decoration: $menu-link-text-decoration !default;
49
+ $menu-link-disabled-text-decoration: $menu-link-text-decoration !default;
50
+ $menu-link-text-decoration-style: solid !default;
51
+ $menu-link-visited-text-decoration-style: $menu-link-text-decoration-style !default;
52
+ $menu-link-focus-text-decoration-style: $menu-link-text-decoration-style !default;
53
+ $menu-link-hover-text-decoration-style: $menu-link-text-decoration-style !default;
54
+ $menu-link-active-text-decoration-style: $menu-link-text-decoration-style !default;
55
+ $menu-link-disabled-text-decoration-style: $menu-link-text-decoration-style !default;
56
+ $menu-link-transform: none !default;
57
+ $menu-link-visited-transform: $menu-link-transform !default;
58
+ $menu-link-focus-transform: $menu-link-transform !default;
59
+ $menu-link-hover-transform: $menu-link-transform !default;
60
+ $menu-link-active-transform: $menu-link-transform !default;
61
+ $menu-link-disabled-transform: $menu-link-transform !default;
62
+ $menu-border-width: 0 !default;
63
+ $menu-link-border-width: 0 !default;
64
+ $submenu-toggle-transform: rotate(0deg) !default;
65
+ $submenu-toggle-open-transform: rotate(-180deg) !default;
66
+ $submenu-toggle-content: "'▼'" !default;
@@ -0,0 +1,305 @@
1
+ // @graupl/graupl menu component styles.
2
+
3
+ @use "defaults";
4
+ @use "variables" as *;
5
+ @use "../../defaults" as root-defaults;
6
+ @use "../../base/button/defaults" as button-defaults;
7
+ @use "../../base/button/variables" as button-variables;
8
+ @use "../../mixins/layer" as *;
9
+ @use "../../mixins/media-queries" as *;
10
+
11
+ @include layer(component) {
12
+ #{defaults.$menu-selector} {
13
+ --#{root-defaults.$prefix}-link-padding: #{$menu-link-padding};
14
+ --#{root-defaults.$prefix}-link-border-width: #{$menu-link-border-width};
15
+ --#{root-defaults.$prefix}-link-border-radius: #{$menu-link-border-radius};
16
+ --#{root-defaults.$prefix}-link-border-style: #{$menu-link-border-style};
17
+ --#{root-defaults.$prefix}-link-text-decoration: #{$menu-link-text-decoration};
18
+ --#{root-defaults.$prefix}-link-text-decoration-thickness: #{$menu-link-text-decoration-thickness};
19
+ --#{root-defaults.$prefix}-link-text-decoration-style: #{$menu-link-text-decoration-style};
20
+ --#{root-defaults.$prefix}-link-transform: #{$menu-link-transform};
21
+ --#{root-defaults.$prefix}-link-visited-text-decoration: #{$menu-link-visited-text-decoration};
22
+ --#{root-defaults.$prefix}-link-visited-text-decoration-thickness: #{$menu-link-visited-text-decoration-thickness};
23
+ --#{root-defaults.$prefix}-link-visited-text-decoration-style: #{$menu-link-visited-text-decoration-style};
24
+ --#{root-defaults.$prefix}-link-visited-transform: #{$menu-link-visited-transform};
25
+ --#{root-defaults.$prefix}-link-focus-text-decoration: #{$menu-link-focus-text-decoration};
26
+ --#{root-defaults.$prefix}-link-focus-text-decoration-thickness: #{$menu-link-focus-text-decoration-thickness};
27
+ --#{root-defaults.$prefix}-link-focus-text-decoration-style: #{$menu-link-focus-text-decoration-style};
28
+ --#{root-defaults.$prefix}-link-focus-transform: #{$menu-link-focus-transform};
29
+ --#{root-defaults.$prefix}-link-hover-text-decoration: #{$menu-link-hover-text-decoration};
30
+ --#{root-defaults.$prefix}-link-hover-text-decoration-thickness: #{$menu-link-hover-text-decoration-thickness};
31
+ --#{root-defaults.$prefix}-link-hover-text-decoration-style: #{$menu-link-hover-text-decoration-style};
32
+ --#{root-defaults.$prefix}-link-hover-transform: #{$menu-link-hover-transform};
33
+ --#{root-defaults.$prefix}-link-active-text-decoration: #{$menu-link-active-text-decoration};
34
+ --#{root-defaults.$prefix}-link-active-text-decoration-thickness: #{$menu-link-active-text-decoration-thickness};
35
+ --#{root-defaults.$prefix}-link-active-text-decoration-style: #{$menu-link-active-text-decoration-style};
36
+ --#{root-defaults.$prefix}-link-active-transform: #{$menu-link-active-transform};
37
+ --#{root-defaults.$prefix}-link-disabled-text-decoration: #{$menu-link-disabled-text-decoration};
38
+ --#{root-defaults.$prefix}-link-disabled-text-decoration-thickness: #{$menu-link-disabled-text-decoration-thickness};
39
+ --#{root-defaults.$prefix}-link-disabled-text-decoration-style: #{$menu-link-disabled-text-decoration-style};
40
+ --#{root-defaults.$prefix}-link-disabled-transform: #{$menu-link-disabled-transform};
41
+
42
+ display: $menu-display;
43
+ flex-direction: $menu-flex-direction;
44
+ padding: $menu-padding;
45
+ border: $menu-border;
46
+ border-radius: $menu-border-radius;
47
+ list-style: none;
48
+ gap: $menu-gap;
49
+ isolation: isolate;
50
+
51
+ &#{defaults.$menu-show-selector} {
52
+ --#{root-defaults.$prefix}-menu-display: #{$menu-show-display};
53
+ }
54
+
55
+ &#{defaults.$menu-hide-selector} {
56
+ --#{root-defaults.$prefix}-menu-display: #{$menu-hide-display};
57
+ }
58
+ }
59
+
60
+ #{defaults.$submenu-selector} {
61
+ display: $submenu-display;
62
+ position: $submenu-position;
63
+ z-index: $submenu-z-index;
64
+ flex: 1 1;
65
+ flex-direction: $submenu-flex-direction;
66
+ padding: $submenu-padding;
67
+ border: $submenu-border;
68
+ border-radius: $submenu-border-radius;
69
+ list-style: none;
70
+ gap: $submenu-gap;
71
+ isolation: isolate;
72
+ inset: $submenu-inset;
73
+
74
+ &#{defaults.$menu-show-selector} {
75
+ --#{root-defaults.$prefix}-submenu-display: #{$submenu-show-display};
76
+ }
77
+
78
+ &#{defaults.$menu-hide-selector} {
79
+ --#{root-defaults.$prefix}-submenu-display: #{$submenu-hide-display};
80
+ }
81
+ }
82
+
83
+ #{defaults.$menu-item-selector} {
84
+ display: flex;
85
+ position: relative;
86
+ flex-wrap: wrap;
87
+ align-items: center;
88
+ justify-content: center;
89
+ min-width: $menu-item-min-width;
90
+ max-width: $menu-item-max-width;
91
+ padding: $menu-item-padding;
92
+ }
93
+
94
+ #{defaults.$menu-link-selector} {
95
+ display: flex;
96
+ width: 100%;
97
+ padding: $menu-link-padding;
98
+ transform: $menu-link-transform;
99
+ transition: $menu-link-transition;
100
+ border: $menu-link-border;
101
+ border-radius: $menu-link-border-radius;
102
+ text-decoration: $menu-link-text-decoration;
103
+ text-decoration-style: $menu-link-text-decoration-style;
104
+ gap: $menu-link-gap;
105
+ text-decoration-thickness: $menu-link-text-decoration-thickness;
106
+
107
+ &:visited {
108
+ --#{root-defaults.$prefix}-menu-link-text-decoration: #{$menu-link-visited-text-decoration};
109
+ --#{root-defaults.$prefix}-menu-link-text-decoration-thickness: #{$menu-link-visited-text-decoration-thickness};
110
+ --#{root-defaults.$prefix}-menu-link-text-decoration-style: #{$menu-link-visited-text-decoration-style};
111
+ --#{root-defaults.$prefix}-menu-link-transform: #{$menu-link-visited-transform};
112
+ }
113
+
114
+ &:focus-visible {
115
+ --#{root-defaults.$prefix}-menu-link-text-decoration: #{$menu-link-focus-text-decoration};
116
+ --#{root-defaults.$prefix}-menu-link-text-decoration-thickness: #{$menu-link-focus-text-decoration-thickness};
117
+ --#{root-defaults.$prefix}-menu-link-text-decoration-style: #{$menu-link-focus-text-decoration-style};
118
+ --#{root-defaults.$prefix}-menu-link-transform: #{$menu-link-focus-transform};
119
+ }
120
+
121
+ &:hover {
122
+ --#{root-defaults.$prefix}-menu-link-text-decoration: #{$menu-link-hover-text-decoration};
123
+ --#{root-defaults.$prefix}-menu-link-text-decoration-thickness: #{$menu-link-hover-text-decoration-thickness};
124
+ --#{root-defaults.$prefix}-menu-link-text-decoration-style: #{$menu-link-hover-text-decoration-style};
125
+ --#{root-defaults.$prefix}-menu-link-transform: #{$menu-link-hover-transform};
126
+ }
127
+
128
+ &:active {
129
+ --#{root-defaults.$prefix}-menu-link-text-decoration: #{$menu-link-active-text-decoration};
130
+ --#{root-defaults.$prefix}-menu-link-text-decoration-thickness: #{$menu-link-active-text-decoration-thickness};
131
+ --#{root-defaults.$prefix}-menu-link-text-decoration-style: #{$menu-link-active-text-decoration-style};
132
+ --#{root-defaults.$prefix}-menu-link-transform: #{$menu-link-active-transform};
133
+ }
134
+
135
+ &:disabled,
136
+ &[disabled] {
137
+ &,
138
+ &:visited,
139
+ &:focus-visible,
140
+ &:hover,
141
+ &:active {
142
+ --#{root-defaults.$prefix}-menu-link-text-decoration: #{$menu-link-disabled-text-decoration};
143
+ --#{root-defaults.$prefix}-menu-link-text-decoration-thickness: #{$menu-link-disabled-text-decoration-thickness};
144
+ --#{root-defaults.$prefix}-menu-link-text-decoration-style: #{$menu-link-disabled-text-decoration-style};
145
+ --#{root-defaults.$prefix}-menu-link-transform: #{$menu-link-disabled-transform};
146
+ }
147
+ }
148
+
149
+ &#{button-defaults.$button-selector} {
150
+ --#{root-defaults.$prefix}-menu-link-padding: #{button-variables.$button-padding};
151
+ --#{root-defaults.$prefix}-menu-link-border-width: #{button-variables.$button-border-width};
152
+ --#{root-defaults.$prefix}-menu-link-border-radius: #{button-variables.$button-border-radius};
153
+ --#{root-defaults.$prefix}-menu-link-border-style: #{button-variables.$button-border-style};
154
+ --#{root-defaults.$prefix}-menu-link-text-decoration: none;
155
+ --#{root-defaults.$prefix}-menu-link-visited-text-decoration: none;
156
+ --#{root-defaults.$prefix}-menu-link-focus-text-decoration: none;
157
+ --#{root-defaults.$prefix}-menu-link-hover-text-decoration: none;
158
+ --#{root-defaults.$prefix}-menu-link-active-text-decoration: none;
159
+ --#{root-defaults.$prefix}-menu-link-disabled-text-decoration: none;
160
+ --#{root-defaults.$prefix}-menu-link-transition: #{button-variables.$button-transition};
161
+ --#{root-defaults.$prefix}-menu-link-transition-reduced-motion: #{button-variables.$button-transition-reduced-motion};
162
+ --#{root-defaults.$prefix}-menu-link-transform: #{button-variables.$button-transform};
163
+ --#{root-defaults.$prefix}-menu-link-visited-transform: #{button-variables.$button-visited-transform};
164
+ --#{root-defaults.$prefix}-menu-link-focus-transform: #{button-variables.$button-focus-transform};
165
+ --#{root-defaults.$prefix}-menu-link-hover-transform: #{button-variables.$button-hover-transform};
166
+ --#{root-defaults.$prefix}-menu-link-active-transform: #{button-variables.$button-active-transform};
167
+ --#{root-defaults.$prefix}-menu-link-disabled-transform: #{button-variables.$button-disabled-transform};
168
+ }
169
+ }
170
+
171
+ #{defaults.$submenu-toggle-selector} {
172
+ display: flex;
173
+ align-items: center;
174
+ justify-content: space-between;
175
+
176
+ &::after {
177
+ content: $submenu-toggle-content;
178
+ display: block;
179
+ transform: $submenu-toggle-transform;
180
+ transition: $submenu-toggle-transition;
181
+ }
182
+
183
+ &[aria-expanded="true"]::after {
184
+ --#{root-defaults.$prefix}-submenu-toggle-transform: #{$submenu-toggle-open-transform};
185
+ }
186
+ }
187
+
188
+ @include animation-off {
189
+ #{defaults.$menu-link-selector} {
190
+ --#{root-defaults.$prefix}-menu-link-transition: #{$menu-link-transition-reduced-motion};
191
+ }
192
+
193
+ #{defaults.$submenu-toggle-selector}::after {
194
+ --#{root-defaults.$prefix}-submenu-toggle-transition: #{$submenu-toggle-transition-reduced-motion};
195
+ }
196
+ }
197
+ }
198
+
199
+ @include layer(theme) {
200
+ #{defaults.$menu-selector} {
201
+ --#{root-defaults.$prefix}-link-color: #{$menu-link-color};
202
+ --#{root-defaults.$prefix}-link-background: #{$menu-link-background};
203
+ --#{root-defaults.$prefix}-link-border-color: #{$menu-link-border-color};
204
+ --#{root-defaults.$prefix}-link-text-decoration-color: #{$menu-link-text-decoration-color};
205
+ --#{root-defaults.$prefix}-link-visited-color: #{$menu-link-visited-color};
206
+ --#{root-defaults.$prefix}-link-visited-background: #{$menu-link-visited-background};
207
+ --#{root-defaults.$prefix}-link-visited-border-color: #{$menu-link-visited-border-color};
208
+ --#{root-defaults.$prefix}-link-visited-text-decoration-color: #{$menu-link-visited-text-decoration-color};
209
+ --#{root-defaults.$prefix}-link-focus-color: #{$menu-link-focus-color};
210
+ --#{root-defaults.$prefix}-link-focus-background: #{$menu-link-focus-background};
211
+ --#{root-defaults.$prefix}-link-focus-border-color: #{$menu-link-focus-border-color};
212
+ --#{root-defaults.$prefix}-link-focus-text-decoration-color: #{$menu-link-focus-text-decoration-color};
213
+ --#{root-defaults.$prefix}-link-hover-color: #{$menu-link-hover-color};
214
+ --#{root-defaults.$prefix}-link-hover-background: #{$menu-link-hover-background};
215
+ --#{root-defaults.$prefix}-link-hover-border-color: #{$menu-link-hover-border-color};
216
+ --#{root-defaults.$prefix}-link-hover-text-decoration-color: #{$menu-link-hover-text-decoration-color};
217
+ --#{root-defaults.$prefix}-link-active-color: #{$menu-link-active-color};
218
+ --#{root-defaults.$prefix}-link-active-background: #{$menu-link-active-background};
219
+ --#{root-defaults.$prefix}-link-active-border-color: #{$menu-link-active-border-color};
220
+ --#{root-defaults.$prefix}-link-active-text-decoration-color: #{$menu-link-active-text-decoration-color};
221
+ --#{root-defaults.$prefix}-link-disabled-color: #{$menu-link-disabled-color};
222
+ --#{root-defaults.$prefix}-link-disabled-background: #{$menu-link-disabled-background};
223
+ --#{root-defaults.$prefix}-link-disabled-border-color: #{$menu-link-disabled-border-color};
224
+ --#{root-defaults.$prefix}-link-disabled-text-decoration-color: #{$menu-link-disabled-text-decoration-color};
225
+
226
+ border-color: $menu-border-color;
227
+ background: $menu-background;
228
+ color: $menu-color;
229
+ }
230
+
231
+ #{defaults.$submenu-selector} {
232
+ border-color: $submenu-border-color;
233
+ background: $submenu-background;
234
+ color: $submenu-color;
235
+ }
236
+
237
+ #{defaults.$menu-link-selector} {
238
+ border-color: $menu-link-border-color;
239
+ background: $menu-link-background;
240
+ color: $menu-link-color;
241
+ text-decoration-color: $menu-link-text-decoration-color;
242
+
243
+ &:visited {
244
+ --#{root-defaults.$prefix}-menu-link-background: #{$menu-link-visited-background};
245
+ --#{root-defaults.$prefix}-menu-link-color: #{$menu-link-visited-color};
246
+ --#{root-defaults.$prefix}-menu-link-text-decoration-color: #{$menu-link-visited-text-decoration-color};
247
+ --#{root-defaults.$prefix}-menu-link-border-color: #{$menu-link-visited-border-color};
248
+ }
249
+
250
+ &:focus-visible {
251
+ --#{root-defaults.$prefix}-menu-link-background: #{$menu-link-focus-background};
252
+ --#{root-defaults.$prefix}-menu-link-color: #{$menu-link-focus-color};
253
+ --#{root-defaults.$prefix}-menu-link-text-decoration-color: #{$menu-link-focus-text-decoration-color};
254
+ --#{root-defaults.$prefix}-menu-link-border-color: #{$menu-link-focus-border-color};
255
+ }
256
+
257
+ &:hover {
258
+ --#{root-defaults.$prefix}-menu-link-background: #{$menu-link-hover-background};
259
+ --#{root-defaults.$prefix}-menu-link-color: #{$menu-link-hover-color};
260
+ --#{root-defaults.$prefix}-menu-link-text-decoration-color: #{$menu-link-hover-text-decoration-color};
261
+ --#{root-defaults.$prefix}-menu-link-border-color: #{$menu-link-hover-border-color};
262
+ }
263
+
264
+ &:active {
265
+ --#{root-defaults.$prefix}-menu-link-background: #{$menu-link-active-background};
266
+ --#{root-defaults.$prefix}-menu-link-color: #{$menu-link-active-color};
267
+ --#{root-defaults.$prefix}-menu-link-text-decoration-color: #{$menu-link-active-text-decoration-color};
268
+ --#{root-defaults.$prefix}-menu-link-border-color: #{$menu-link-active-border-color};
269
+ }
270
+
271
+ &:disabled {
272
+ &,
273
+ &:hover,
274
+ &:active,
275
+ &:focus-visible,
276
+ &:visited {
277
+ --#{root-defaults.$prefix}-menu-link-background: #{$menu-link-disabled-background};
278
+ --#{root-defaults.$prefix}-menu-link-color: #{$menu-link-disabled-color};
279
+ --#{root-defaults.$prefix}-menu-link-text-decoration-color: #{$menu-link-disabled-text-decoration-color};
280
+ --#{root-defaults.$prefix}-menu-link-border-color: #{$menu-link-disabled-border-color};
281
+ }
282
+ }
283
+
284
+ &#{button-defaults.$button-selector} {
285
+ --#{root-defaults.$prefix}-menu-link-background: #{button-variables.$button-background};
286
+ --#{root-defaults.$prefix}-menu-link-color: #{button-variables.$button-color};
287
+ --#{root-defaults.$prefix}-menu-link-border-color: #{button-variables.$button-border-color};
288
+ --#{root-defaults.$prefix}-menu-link-visited-background: #{button-variables.$button-visited-background};
289
+ --#{root-defaults.$prefix}-menu-link-visited-color: #{button-variables.$button-visited-color};
290
+ --#{root-defaults.$prefix}-menu-link-visited-border-color: #{button-variables.$button-visited-border-color};
291
+ --#{root-defaults.$prefix}-menu-link-focus-background: #{button-variables.$button-focus-background};
292
+ --#{root-defaults.$prefix}-menu-link-focus-color: #{button-variables.$button-focus-color};
293
+ --#{root-defaults.$prefix}-menu-link-focus-border-color: #{button-variables.$button-focus-border-color};
294
+ --#{root-defaults.$prefix}-menu-link-hover-background: #{button-variables.$button-hover-background};
295
+ --#{root-defaults.$prefix}-menu-link-hover-color: #{button-variables.$button-hover-color};
296
+ --#{root-defaults.$prefix}-menu-link-hover-border-color: #{button-variables.$button-hover-border-color};
297
+ --#{root-defaults.$prefix}-menu-link-active-background: #{button-variables.$button-active-background};
298
+ --#{root-defaults.$prefix}-menu-link-active-color: #{button-variables.$button-active-color};
299
+ --#{root-defaults.$prefix}-menu-link-active-border-color: #{button-variables.$button-active-border-color};
300
+ --#{root-defaults.$prefix}-menu-link-disabled-background: #{button-variables.$button-disabled-background};
301
+ --#{root-defaults.$prefix}-menu-link-disabled-color: #{button-variables.$button-disabled-color};
302
+ --#{root-defaults.$prefix}-menu-link-disabled-border-color: #{button-variables.$button-disabled-border-color};
303
+ }
304
+ }
305
+ }