@graupl/core 1.0.0-beta.22 → 1.0.0-beta.24

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 (273) hide show
  1. package/dist/css/base/button.css +2 -2
  2. package/dist/css/base/button.css.map +1 -1
  3. package/dist/css/base/form.css +2 -2
  4. package/dist/css/base/form.css.map +1 -1
  5. package/dist/css/base/link.css +2 -2
  6. package/dist/css/base/link.css.map +1 -1
  7. package/dist/css/base/table.css +2 -2
  8. package/dist/css/base/table.css.map +1 -1
  9. package/dist/css/base.css +2 -2
  10. package/dist/css/base.css.map +1 -1
  11. package/dist/css/component/accordion.css +2 -5
  12. package/dist/css/component/accordion.css.map +1 -1
  13. package/dist/css/component/alert.css +2 -2
  14. package/dist/css/component/alert.css.map +1 -1
  15. package/dist/css/component/badge.css +2 -2
  16. package/dist/css/component/badge.css.map +1 -1
  17. package/dist/css/component/card.css +2 -2
  18. package/dist/css/component/card.css.map +1 -1
  19. package/dist/css/component/carousel.css +2 -2
  20. package/dist/css/component/carousel.css.map +1 -1
  21. package/dist/css/component/disclosure.css +2 -2
  22. package/dist/css/component/disclosure.css.map +1 -1
  23. package/dist/css/component/input-group.css +2 -2
  24. package/dist/css/component/input-group.css.map +1 -1
  25. package/dist/css/component/list.css +2 -2
  26. package/dist/css/component/list.css.map +1 -1
  27. package/dist/css/component/menu.css +2 -2
  28. package/dist/css/component/menu.css.map +1 -1
  29. package/dist/css/component/navigation.css +2 -2
  30. package/dist/css/component/navigation.css.map +1 -1
  31. package/dist/css/component.css +2 -5
  32. package/dist/css/component.css.map +1 -1
  33. package/dist/css/graupl.css +2 -5
  34. package/dist/css/graupl.css.map +1 -1
  35. package/dist/css/init.css +2 -2
  36. package/dist/css/init.css.map +1 -1
  37. package/dist/css/layout/columns.css +2 -2
  38. package/dist/css/layout/columns.css.map +1 -1
  39. package/dist/css/layout/container.css +2 -2
  40. package/dist/css/layout/container.css.map +1 -1
  41. package/dist/css/layout/flex-columns.css +2 -2
  42. package/dist/css/layout/flex-columns.css.map +1 -1
  43. package/dist/css/layout.css +2 -5
  44. package/dist/css/layout.css.map +1 -1
  45. package/dist/css/normalize.css +2 -2
  46. package/dist/css/normalize.css.map +1 -1
  47. package/dist/css/state/focus.css +2 -2
  48. package/dist/css/state/focus.css.map +1 -1
  49. package/dist/css/state.css +2 -2
  50. package/dist/css/state.css.map +1 -1
  51. package/dist/css/theme/color.css +2 -2
  52. package/dist/css/theme/color.css.map +1 -1
  53. package/dist/css/theme/typography.css +2 -2
  54. package/dist/css/theme/typography.css.map +1 -1
  55. package/dist/css/theme.css +2 -2
  56. package/dist/css/theme.css.map +1 -1
  57. package/dist/css/utilities/alignment.css +1 -1
  58. package/dist/css/utilities/alignment.css.map +1 -1
  59. package/dist/css/utilities/background.css +2 -2
  60. package/dist/css/utilities/background.css.map +1 -1
  61. package/dist/css/utilities/border.css +2 -2
  62. package/dist/css/utilities/border.css.map +1 -1
  63. package/dist/css/utilities/color.css +2 -2
  64. package/dist/css/utilities/color.css.map +1 -1
  65. package/dist/css/utilities/container.css +1 -1
  66. package/dist/css/utilities/container.css.map +1 -1
  67. package/dist/css/utilities/display.css +2 -2
  68. package/dist/css/utilities/display.css.map +1 -1
  69. package/dist/css/utilities/flex.css +2 -2
  70. package/dist/css/utilities/flex.css.map +1 -1
  71. package/dist/css/utilities/gradient.css +2 -2
  72. package/dist/css/utilities/gradient.css.map +1 -1
  73. package/dist/css/utilities/height.css +2 -2
  74. package/dist/css/utilities/height.css.map +1 -1
  75. package/dist/css/utilities/inset.css +2 -2
  76. package/dist/css/utilities/inset.css.map +1 -1
  77. package/dist/css/utilities/justification.css +1 -1
  78. package/dist/css/utilities/justification.css.map +1 -1
  79. package/dist/css/utilities/list.css +1 -1
  80. package/dist/css/utilities/list.css.map +1 -1
  81. package/dist/css/utilities/order.css +2 -2
  82. package/dist/css/utilities/order.css.map +1 -1
  83. package/dist/css/utilities/position.css +2 -2
  84. package/dist/css/utilities/position.css.map +1 -1
  85. package/dist/css/utilities/ratio.css +2 -2
  86. package/dist/css/utilities/ratio.css.map +1 -1
  87. package/dist/css/utilities/spacing.css +2 -2
  88. package/dist/css/utilities/spacing.css.map +1 -1
  89. package/dist/css/utilities/typography.css +2 -2
  90. package/dist/css/utilities/typography.css.map +1 -1
  91. package/dist/css/utilities/visibility.css +2 -2
  92. package/dist/css/utilities/visibility.css.map +1 -1
  93. package/dist/css/utilities/visually-hidden.css +2 -2
  94. package/dist/css/utilities/visually-hidden.css.map +1 -1
  95. package/dist/css/utilities/width.css +2 -2
  96. package/dist/css/utilities/width.css.map +1 -1
  97. package/dist/css/utilities/z-index.css +1 -1
  98. package/dist/css/utilities/z-index.css.map +1 -1
  99. package/dist/css/utilities.css +2 -2
  100. package/dist/css/utilities.css.map +1 -1
  101. package/dist/js/accordion.js.map +1 -1
  102. package/dist/js/alert.js.map +1 -1
  103. package/dist/js/carousel.js.map +1 -1
  104. package/dist/js/component/accordion.cjs.js.map +1 -1
  105. package/dist/js/component/accordion.es.js.map +1 -1
  106. package/dist/js/component/accordion.iife.js.map +1 -1
  107. package/dist/js/component/alert.cjs.js.map +1 -1
  108. package/dist/js/component/alert.es.js.map +1 -1
  109. package/dist/js/component/alert.iife.js.map +1 -1
  110. package/dist/js/component/carousel.cjs.js.map +1 -1
  111. package/dist/js/component/carousel.es.js.map +1 -1
  112. package/dist/js/component/carousel.iife.js.map +1 -1
  113. package/dist/js/component/disclosure.cjs.js +2 -2
  114. package/dist/js/component/disclosure.cjs.js.map +1 -1
  115. package/dist/js/component/disclosure.es.js +2 -2
  116. package/dist/js/component/disclosure.es.js.map +1 -1
  117. package/dist/js/component/disclosure.iife.js +2 -2
  118. package/dist/js/component/disclosure.iife.js.map +1 -1
  119. package/dist/js/component/tabs.cjs.js +5 -0
  120. package/dist/js/component/tabs.cjs.js.map +1 -0
  121. package/dist/js/component/tabs.es.js +5 -0
  122. package/dist/js/component/tabs.es.js.map +1 -0
  123. package/dist/js/component/tabs.iife.js +5 -0
  124. package/dist/js/component/tabs.iife.js.map +1 -0
  125. package/dist/js/disclosure.js +2 -2
  126. package/dist/js/disclosure.js.map +1 -1
  127. package/dist/js/generator/accordion.cjs.js.map +1 -1
  128. package/dist/js/generator/accordion.es.js.map +1 -1
  129. package/dist/js/generator/accordion.iife.js.map +1 -1
  130. package/dist/js/generator/alert.cjs.js.map +1 -1
  131. package/dist/js/generator/alert.es.js.map +1 -1
  132. package/dist/js/generator/alert.iife.js.map +1 -1
  133. package/dist/js/generator/carousel.cjs.js.map +1 -1
  134. package/dist/js/generator/carousel.es.js.map +1 -1
  135. package/dist/js/generator/carousel.iife.js.map +1 -1
  136. package/dist/js/generator/disclosure.cjs.js +2 -2
  137. package/dist/js/generator/disclosure.cjs.js.map +1 -1
  138. package/dist/js/generator/disclosure.es.js +2 -2
  139. package/dist/js/generator/disclosure.es.js.map +1 -1
  140. package/dist/js/generator/disclosure.iife.js +2 -2
  141. package/dist/js/generator/disclosure.iife.js.map +1 -1
  142. package/dist/js/generator/navigation.cjs.js.map +1 -1
  143. package/dist/js/generator/navigation.es.js.map +1 -1
  144. package/dist/js/generator/navigation.iife.js.map +1 -1
  145. package/dist/js/generator/tabs.cjs.js +5 -0
  146. package/dist/js/generator/tabs.cjs.js.map +1 -0
  147. package/dist/js/generator/tabs.es.js +5 -0
  148. package/dist/js/generator/tabs.es.js.map +1 -0
  149. package/dist/js/generator/tabs.iife.js +5 -0
  150. package/dist/js/generator/tabs.iife.js.map +1 -0
  151. package/dist/js/graupl.js +5 -5
  152. package/dist/js/graupl.js.map +1 -1
  153. package/dist/js/navigation.js.map +1 -1
  154. package/dist/js/tabs.js +5 -0
  155. package/dist/js/tabs.js.map +1 -0
  156. package/package.json +4 -3
  157. package/src/js/disclosure/Disclosure.js +25 -45
  158. package/src/js/domHelpers.js +39 -22
  159. package/src/js/tabs/TabToggle.js +378 -0
  160. package/src/js/tabs/Tabs.js +1091 -0
  161. package/src/js/tabs/generator.js +32 -0
  162. package/src/js/tabs/index.js +5 -0
  163. package/src/scss/_defaults.scss +21 -88
  164. package/src/scss/_variables.scss +70 -0
  165. package/src/scss/base/button/_defaults.scss +2 -24
  166. package/src/scss/base/button/_index.scss +53 -52
  167. package/src/scss/base/button/_mixins.scss +24 -58
  168. package/src/scss/base/button/_variables.scss +139 -0
  169. package/src/scss/base/form/_defaults.scss +72 -2
  170. package/src/scss/base/form/_index.scss +196 -70
  171. package/src/scss/base/form/_variables.scss +166 -0
  172. package/src/scss/base/link/_defaults.scss +31 -0
  173. package/src/scss/base/link/_index.scss +177 -172
  174. package/src/scss/base/link/_variables.scss +215 -0
  175. package/src/scss/base/table/_defaults.scss +1 -11
  176. package/src/scss/base/table/_index.scss +126 -117
  177. package/src/scss/base/table/_variables.scss +214 -3
  178. package/src/scss/component/_index.scss +1 -0
  179. package/src/scss/component/accordion/_defaults.scss +73 -22
  180. package/src/scss/component/accordion/_index.scss +437 -62
  181. package/src/scss/component/accordion/_variables.scss +527 -101
  182. package/src/scss/component/alert/_defaults.scss +23 -32
  183. package/src/scss/component/alert/_index.scss +236 -30
  184. package/src/scss/component/alert/_variables.scss +155 -6
  185. package/src/scss/component/badge/_defaults.scss +1 -0
  186. package/src/scss/component/badge/_index.scss +25 -28
  187. package/src/scss/component/badge/_variables.scss +66 -2
  188. package/src/scss/component/card/_defaults.scss +64 -13
  189. package/src/scss/component/card/_index.scss +276 -30
  190. package/src/scss/component/card/_variables.scss +132 -0
  191. package/src/scss/component/carousel/_defaults.scss +73 -15
  192. package/src/scss/component/carousel/_index.scss +357 -41
  193. package/src/scss/component/carousel/_variables.scss +391 -0
  194. package/src/scss/component/disclosure/_index.scss +4 -4
  195. package/src/scss/component/disclosure/_variables.scss +127 -2
  196. package/src/scss/component/input-group/_defaults.scss +10 -3
  197. package/src/scss/component/input-group/_index.scss +72 -4
  198. package/src/scss/component/input-group/_variables.scss +37 -0
  199. package/src/scss/component/list/_defaults.scss +35 -2
  200. package/src/scss/component/list/_index.scss +159 -5
  201. package/src/scss/component/list/_variables.scss +152 -0
  202. package/src/scss/component/menu/_defaults.scss +49 -7
  203. package/src/scss/component/menu/_index.scss +325 -99
  204. package/src/scss/component/menu/_variables.scss +484 -1
  205. package/src/scss/component/navigation/_defaults.scss +45 -3
  206. package/src/scss/component/navigation/_index.scss +249 -98
  207. package/src/scss/component/navigation/_variables.scss +334 -5
  208. package/src/scss/component/tabs/_defaults.scss +82 -0
  209. package/src/scss/component/tabs/_index.scss +497 -0
  210. package/src/scss/component/tabs/_variables.scss +974 -0
  211. package/src/scss/layout/columns/_defaults.scss +5 -3
  212. package/src/scss/layout/columns/_index.scss +27 -21
  213. package/src/scss/layout/columns/_variables.scss +13 -0
  214. package/src/scss/layout/container/_defaults.scss +28 -11
  215. package/src/scss/layout/container/_index.scss +305 -161
  216. package/src/scss/layout/container/_variables.scss +148 -15
  217. package/src/scss/layout/flex-columns/_defaults.scss +5 -3
  218. package/src/scss/layout/flex-columns/_index.scss +28 -20
  219. package/src/scss/layout/flex-columns/_variables.scss +9 -0
  220. package/src/scss/mixins/_state.scss +37 -0
  221. package/src/scss/mixins/_theme.scss +36 -1
  222. package/src/scss/state/focus/_index.scss +17 -12
  223. package/src/scss/state/focus/_variables.scss +30 -4
  224. package/src/scss/theme/color/_defaults.scss +6 -35
  225. package/src/scss/theme/color/_index.scss +167 -1
  226. package/src/scss/theme/color/_variables.scss +155 -0
  227. package/src/scss/theme/typography/_defaults.scss +26 -19
  228. package/src/scss/theme/typography/_index.scss +176 -20
  229. package/src/scss/theme/typography/_variables.scss +186 -0
  230. package/src/scss/utilities/_template/_index.scss +0 -1
  231. package/src/scss/utilities/alignment/_defaults.scss +0 -33
  232. package/src/scss/utilities/alignment/_index.scss +24 -25
  233. package/src/scss/utilities/background/_defaults.scss +0 -77
  234. package/src/scss/utilities/background/_index.scss +32 -37
  235. package/src/scss/utilities/border/_defaults.scss +0 -33
  236. package/src/scss/utilities/border/_index.scss +25 -26
  237. package/src/scss/utilities/color/_defaults.scss +0 -19
  238. package/src/scss/utilities/color/_index.scss +22 -22
  239. package/src/scss/utilities/container/_defaults.scss +0 -11
  240. package/src/scss/utilities/container/_index.scss +20 -19
  241. package/src/scss/utilities/display/_defaults.scss +0 -11
  242. package/src/scss/utilities/display/_index.scss +20 -19
  243. package/src/scss/utilities/flex/_defaults.scss +0 -55
  244. package/src/scss/utilities/flex/_index.scss +28 -31
  245. package/src/scss/utilities/gradient/_defaults.scss +0 -28
  246. package/src/scss/utilities/gradient/_index.scss +27 -28
  247. package/src/scss/utilities/gradient/_variables.scss +15 -0
  248. package/src/scss/utilities/height/_defaults.scss +0 -8
  249. package/src/scss/utilities/height/_index.scss +22 -21
  250. package/src/scss/utilities/inset/_defaults.scss +0 -16
  251. package/src/scss/utilities/inset/_index.scss +20 -20
  252. package/src/scss/utilities/justification/_defaults.scss +0 -33
  253. package/src/scss/utilities/justification/_index.scss +24 -25
  254. package/src/scss/utilities/list/_defaults.scss +0 -22
  255. package/src/scss/utilities/list/_index.scss +22 -22
  256. package/src/scss/utilities/order/_defaults.scss +0 -8
  257. package/src/scss/utilities/order/_index.scss +20 -19
  258. package/src/scss/utilities/position/_defaults.scss +0 -11
  259. package/src/scss/utilities/position/_index.scss +20 -19
  260. package/src/scss/utilities/ratio/_defaults.scss +0 -8
  261. package/src/scss/utilities/ratio/_index.scss +22 -21
  262. package/src/scss/utilities/ratio/_variables.scss +6 -0
  263. package/src/scss/utilities/spacing/_defaults.scss +0 -11
  264. package/src/scss/utilities/spacing/_index.scss +18 -17
  265. package/src/scss/utilities/typography/_defaults.scss +0 -22
  266. package/src/scss/utilities/typography/_index.scss +27 -26
  267. package/src/scss/utilities/visibility/_defaults.scss +0 -11
  268. package/src/scss/utilities/visibility/_index.scss +19 -18
  269. package/src/scss/utilities/visually-hidden/_index.scss +19 -17
  270. package/src/scss/utilities/width/_defaults.scss +0 -8
  271. package/src/scss/utilities/width/_index.scss +21 -20
  272. package/src/scss/utilities/z-index/_defaults.scss +0 -11
  273. package/src/scss/utilities/z-index/_index.scss +19 -18
@@ -11,17 +11,30 @@
11
11
  @use "sass:map";
12
12
 
13
13
  // Alert selectors.
14
+ $selector-base: root-defaults.$component-selector-base !default;
15
+ $modifier-selector-base: root-defaults.$modifier-selector-base !default;
14
16
  $generate-base-theme-map: root-defaults.$generate-base-theme-maps !default;
15
- $alert-selector: ".alert" !default;
16
- $alert-theme-selector-prefix: "." !default;
17
- $alert-body-selector: ".alert-body" !default;
18
- $alert-header-selector: ".alert-header" !default;
19
- $alert-footer-selector: ".alert-footer" !default;
20
- $alert-title-selector: ".alert-title" !default;
21
- $alert-dismisser-selector: ".alert-dismisser" !default;
22
- $alert-hidden-selector: ".hide" !default;
23
- $alert-shown-selector: ".show" !default;
24
- $alert-transition-selector: ".transitioning" !default;
17
+ $themeable: true !default;
18
+ $alert-selector-base: $selector-base !default;
19
+ $alert-selector: "alert" !default;
20
+ $alert-theme-selector-base: $modifier-selector-base !default;
21
+ $alert-theme-selector-prefix: "" !default;
22
+ $alert-body-selector-base: $selector-base !default;
23
+ $alert-body-selector: "alert-body" !default;
24
+ $alert-header-selector-base: $selector-base !default;
25
+ $alert-header-selector: "alert-header" !default;
26
+ $alert-footer-selector-base: $selector-base !default;
27
+ $alert-footer-selector: "alert-footer" !default;
28
+ $alert-title-selector-base: $selector-base !default;
29
+ $alert-title-selector: "alert-title" !default;
30
+ $alert-dismisser-selector-base: $selector-base !default;
31
+ $alert-dismisser-selector: "alert-dismisser" !default;
32
+ $alert-hidden-selector-base: $modifier-selector-base !default;
33
+ $alert-hidden-selector: "hide" !default;
34
+ $alert-shown-selector-base: $modifier-selector-base !default;
35
+ $alert-shown-selector: "show" !default;
36
+ $alert-transition-selector-base: $modifier-selector-base !default;
37
+ $alert-transition-selector: "transitioning" !default;
25
38
 
26
39
  // Alert state theme defaults.
27
40
  // This map is used to define the default colour shades for the
@@ -45,30 +58,8 @@ $-alert-theme-mappings: (
45
58
  link-active-color: 900,
46
59
  link-disabled-color: 400,
47
60
  );
48
- $custom-alert-state-theme-map: () !default;
49
- $alert-state-theme-map: () !default;
50
61
  $alert-theme-mappings: () !default;
51
62
 
52
- // @todo remove this once $custom-alert-state-theme-map is removed
53
- @if $custom-alert-state-theme-map != () {
54
- @warn "`$custom-alert-state-theme-map` is deprecated and will be removed in a future release of Graupl. Use `$alert-theme-mappings` instead.";
55
-
56
- $alert-state-theme-map: map.merge(
57
- $alert-theme-mappings,
58
- $custom-alert-state-theme-map
59
- );
60
- }
61
-
62
- // @todo remove the once $alert-state-theme-map is removed
63
- @if $alert-state-theme-map != () {
64
- @warn "`$alert-state-theme-map` is deprecated and will be removed in a future release of Graupl. Use `$alert-theme-mappings` instead.";
65
-
66
- $alert-theme-mappings: map.merge(
67
- $alert-theme-mappings,
68
- $alert-state-theme-map
69
- );
70
- }
71
-
72
63
  // Merge the custom alert state theme map with the default one.
73
64
  @if $generate-base-theme-map {
74
65
  $alert-theme-mappings: map.merge(
@@ -1,23 +1,219 @@
1
1
  // @graupl/core alert component styles.
2
+ //
3
+ // This module provides the alert component styles.
4
+ //
5
+ // The following selectors are generated by default:
6
+ // - `.alert`: The alert container.
7
+ // - `.alert-body`: The alert body content.
8
+ // - `.alert-header`: The alert header content.
9
+ // - `.alert-footer`: The alert footer content.
10
+ // - `.alert-title`: The alert title element.
11
+ // - `.alert-dismisser`: The alert dismisser control.
12
+ // - `.show`: Modifier applied when the alert is shown.
13
+ // - `.hide`: Modifier applied when the alert is hidden.
14
+ // - `.transitioning`: Modifier applied while the alert is transitioning.
15
+ //
16
+ // The following custom properties can be used to customize the alert component:
17
+ // | Property | Description | Default Value |
18
+ // | --- | --- | --- |
19
+ // | `--graupl-alert-padding-x` | Horizontal padding of the alert. | `var(--graupl-spacer-5)` |
20
+ // | `--graupl-alert-padding-y` | Vertical padding of the alert. | `var(--graupl-spacer-5)` |
21
+ // | `--graupl-alert-padding` | Shorthand padding of the alert. | `var(--graupl-alert-padding-y) var(--graupl-alert-padding-x)` |
22
+ // | `--graupl-alert-gap` | Gap inside the alert (column/row). | `var(--graupl-alert-column-gap) var(--graupl-alert-row-gap)` |
23
+ // | `--graupl-alert-background` | Background colour of the alert. | `var(--graupl-background)` |
24
+ // | `--graupl-alert-color` | Text colour of the alert. | `var(--graupl-color)` |
25
+ // | `--graupl-alert-border-width` | Border width of the alert. | `var(--graupl-border-top-width) var(--graupl-border-right-width) var(--graupl-border-bottom-width) var(--graupl-border-left-width)` |
26
+ // | `--graupl-alert-border-style` | Border style of the alert. | `var(--graupl-border-top-style) var(--graupl-border-right-style) var(--graupl-border-bottom-style) var(--graupl-border-left-style)` |
27
+ // | `--graupl-alert-border-radius` | Border radius of the alert. | `var(--graupl-border-top-left-radius) var(--graupl-border-top-right-radius) var(--graupl-border-bottom-right-radius) var(--graupl-border-bottom-left-radius)` |
28
+ // | `--graupl-alert-border-color` | Border colour of the alert. | `var(--graupl-alert-color)` |
29
+ // | `--graupl-alert-transition` | Transition applied to alert appearance. | `opacity var(--graupl-transition-duration-fast) var(--graupl-transition-timing-function), transform var(--graupl-transition-duration-fast) var(--graupl-transition-timing-function)` |
30
+ // | `--graupl-alert-transition-reduced-motion` | Transition when reduced motion is enabled. | `opacity var(--graupl-transition-duration-fast) var(--graupl-transition-timing-function)` |
31
+ // | `--graupl-alert-header-padding` | Padding for the alert header. | `0 0` |
32
+ // | `--graupl-alert-body-padding` | Padding for the alert body. | `0 0` |
33
+ // | `--graupl-alert-footer-padding` | Padding for the alert footer. | `0 0` |
34
+ // | `--graupl-alert-title-color` | Text colour of the alert title. | `var(--graupl-alert-color)` |
35
+ // | `--graupl-alert-title-font-size` | Font size of the alert title. | `var(--graupl-h4)` |
36
+ // | `--graupl-alert-title-font-weight` | Font weight of the alert title. | `var(--graupl-font-weight-h4)` |
37
+ // | `--graupl-alert-title-font-family` | Font family of the alert title. | `var(--graupl-font-family-h4)` |
38
+ // | `--graupl-alert-title-line-height` | Line height of the alert title. | `var(--graupl-line-height-h4)` |
39
+ // | `--graupl-alert-title-margin` | Margin for the alert title. | `0 0 0 0` |
40
+ // | `--graupl-alert-link-color` | Link colour inside alerts. | `unset` (inherits) |
41
+ // | `--graupl-alert-link-visited-color` | Visited link colour inside alerts. | `unset` |
42
+ // | `--graupl-alert-link-focus-color` | Focused link colour inside alerts. | `unset` |
43
+ // | `--graupl-alert-link-hover-color` | Hovered link colour inside alerts. | `unset` |
44
+ // | `--graupl-alert-link-active-color` | Active link colour inside alerts. | `unset` |
45
+ // | `--graupl-alert-link-disabled-color` | Disabled link colour inside alerts. | `unset` |
46
+ //
47
+ // The following sass variables can be used to customize the generation of the alert component:
48
+ // | Variable | Description | Default Value |
49
+ // | --- | --- | --- |
50
+ // | `$selector-base` | Selector base for the component. | `"."` |
51
+ // | `$modifier-selector-base` | Selector base for component modifiers. | `"."` |
52
+ // | `$generate-base-theme-map` | Flag to generate the base theme map. | `true` |
53
+ // | `$themeable` | Flag to generate theme modifiers. | `true` |
54
+ // | `$alert-selector-base` | Selector base for the alert container. | `$selector-base` |
55
+ // | `$alert-selector` | Selector for the alert container. | `"alert"` |
56
+ // | `$alert-theme-selector-base` | Selector base for theme modifiers. | `"."` |
57
+ // | `$alert-theme-selector-prefix` | Selector prefix for theme modifiers. | `""` |
58
+ // | `$alert-body-selector-base` | Selector base for the alert body. | `$selector-base` |
59
+ // | `$alert-body-selector` | Selector for the alert body. | `"alert-body"` |
60
+ // | `$alert-header-selector-base` | Selector base for the alert header. | `$selector-base` |
61
+ // | `$alert-header-selector` | Selector for the alert header. | `"alert-header"` |
62
+ // | `$alert-footer-selector-base` | Selector base for the alert footer. | `$selector-base` |
63
+ // | `$alert-footer-selector` | Selector for the alert footer. | `"alert-footer"` |
64
+ // | `$alert-title-selector-base` | Selector base for the alert title. | `$selector-base` |
65
+ // | `$alert-title-selector` | Selector for the alert title. | `"alert-title"` |
66
+ // | `$alert-dismisser-selector-base` | Selector base for the alert dismisser. | `$selector-base` |
67
+ // | `$alert-dismisser-selector` | Selector for the alert dismisser. | `"alert-dismisser"` |
68
+ // | `$alert-hidden-selector-base` | Selector base for the hidden modifier. | `"."` |
69
+ // | `$alert-hidden-selector` | Selector applied when hidden. | `"hide"` |
70
+ // | `$alert-shown-selector-base` | Selector base for the shown modifier. | `"."` |
71
+ // | `$alert-shown-selector` | Selector applied when shown. | `"show"` |
72
+ // | `$alert-transition-selector-base` | Selector base for the transitioning modifier. | `"."` |
73
+ // | `$alert-transition-selector` | Selector applied while transitioning. | `"transitioning"` |
74
+ //
75
+ // ## Using `$alert-theme-mappings`
76
+ //
77
+ // `$alert-theme-mappings` is a 1-level map of properties and shade values.
78
+ //
79
+ // e.g.
80
+ // ```scss
81
+ // $alert-theme-mappings: (
82
+ // border-color: 700,
83
+ // )
84
+ // ```
85
+ //
86
+ // This directly[1] maps to all alert variants, telling them what shade to use for said property.
87
+ // All alert variants will use the following based on the example above:
88
+ // - Primary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--primary--700`,
89
+ // - Secondary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--secondary--700`, and
90
+ // - Tertiary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--tertiary--700`.
91
+ //
92
+ // You can use this to customize _all_ alerts variants in the same way.
93
+ //
94
+ // For example, if you use the following map:
95
+ // ```scss
96
+ // $alert-theme-mappings: (
97
+ // border-color: 500,
98
+ // )
99
+ // ```
100
+ //
101
+ // All alert variants will use the following:
102
+ // - Primary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--primary--500`,
103
+ // - Secondary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--secondary--500`, and
104
+ // - Tertiary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--tertiary--500`.
105
+ //
106
+ // [1] `$alert-theme-mappings` gets parsed into a larger, more explicit map: `$alert-theme-map`.
107
+ //
108
+ // Using `$alert-theme-map`
109
+ //
110
+ // `$alert-theme-map` is a multi-level map of properties, colors, and shade values.
111
+ //
112
+ // e.g.
113
+ // ```scss
114
+ // $alert-theme-map: (
115
+ // primary: (
116
+ // border-color: (
117
+ // color: primary,
118
+ // shade: 700
119
+ // ),
120
+ // ),
121
+ // secondary: (
122
+ // border-color: (
123
+ // color: secondary,
124
+ // shade: 700
125
+ // ),
126
+ // ),
127
+ // tertiary: (
128
+ // border-color: (
129
+ // color: tertiary,
130
+ // shade: 700
131
+ // ),
132
+ // ),
133
+ // )
134
+ // ```
135
+ //
136
+ // This directly maps to all alert variants, telling them what shade to use for said property.
137
+ // The alert variants will use the following based on the example above:
138
+ // - Primary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--primary--700`,
139
+ // - Secondary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--secondary--700`, and
140
+ // - Tertiary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--tertiary--700`.
141
+ //
142
+ // You can use this to customize alert variants individually.
143
+ //
144
+ // For example, if you use the following map:
145
+ //
146
+ // ```scss
147
+ // $alert-theme-map: (
148
+ // primary: (
149
+ // border-color: (
150
+ // color: secondary,
151
+ // shade: 700
152
+ // ),
153
+ // ),
154
+ // secondary: (
155
+ // border-color: (
156
+ // color: secondary,
157
+ // shade: 700
158
+ // ),
159
+ // ),
160
+ // tertiary: (
161
+ // border-color: (
162
+ // color: secondary,
163
+ // shade: 700
164
+ // ),
165
+ // ),
166
+ // )
167
+ // ```
168
+ //
169
+ // The alert variants will use the following:
170
+ // - Primary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--secondary--700`,
171
+ // - Secondary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--secondary--700`, and
172
+ // - Tertiary alerts will have their `--graupl-alert-border-color` property set to `--graupl-theme-active--secondary--700`.
173
+ //
174
+ // @example
175
+ // <div class="alert">
176
+ // <div class="alert-header">
177
+ // <h3 class="alert-title">Alert</h3>
178
+ // </div>
179
+ // <div class="alert-body">
180
+ // <p>This is some text that describes the alert.</p>
181
+ // </div>
182
+ // </div>
183
+ //
184
+ // @example
185
+ // <div class="alert primary">
186
+ // <div class="alert-header">
187
+ // <h3 class="alert-title">Alert</h3>
188
+ // </div>
189
+ // <div class="alert-body">
190
+ // <p>This is some text that describes the alert.</p>
191
+ // </div>
192
+ // <div class="alert-footer">
193
+ // <a href="#">Action</a>
194
+ // </div>
195
+ // <button class="alert-dismisser">x</button>
196
+ // </div>
2
197
 
3
198
  @use "defaults";
4
199
  @use "variables" as *;
5
200
  @use "../../defaults" as root-defaults;
6
- @use "../../theme/color/variables" as color;
7
201
  @use "../../mixins/layer" as *;
8
202
  @use "../../mixins/animation";
9
- @use "../../functions/theme";
203
+ @use "../../mixins/theme";
10
204
  @use "../../base/button/mixins" as button-mixins;
11
205
  @use "sass:map";
12
206
 
13
207
  @include layer(base) {
14
- #{defaults.$alert-dismisser-selector} {
208
+ // .alert-dismisser
209
+ #{defaults.$alert-dismisser-selector-base}#{defaults.$alert-dismisser-selector} {
15
210
  @include button-mixins.apply-base;
16
211
  }
17
212
  }
18
213
 
19
214
  @include layer(component) {
20
- #{defaults.$alert-selector} {
215
+ // .alert
216
+ #{defaults.$alert-selector-base}#{defaults.$alert-selector} {
21
217
  --#{root-defaults.$prefix}button-border: 0;
22
218
 
23
219
  display: grid;
@@ -30,57 +226,67 @@
30
226
  border-radius: $alert-border-radius;
31
227
  gap: $alert-gap;
32
228
 
33
- &#{defaults.$alert-hidden-selector} {
229
+ // &.hide
230
+ &#{defaults.$alert-hidden-selector-base}#{defaults.$alert-hidden-selector} {
34
231
  display: none;
35
232
  }
36
233
 
37
- &#{defaults.$alert-transition-selector} {
234
+ // &.transitioning
235
+ &#{defaults.$alert-transition-selector-base}#{defaults.$alert-transition-selector} {
38
236
  display: grid;
39
237
  opacity: 0;
40
238
  }
41
239
 
42
- &#{defaults.$alert-shown-selector} {
240
+ // &.show
241
+ &#{defaults.$alert-shown-selector-base}#{defaults.$alert-shown-selector} {
43
242
  display: grid;
44
243
  }
45
-
46
- @include animation.off {
47
- #{defaults.$alert-selector} {
48
- --#{root-defaults.$prefix}alert-transition: #{$alert-transition-reduced-motion};
49
- }
50
- }
51
244
  }
52
245
 
53
- #{defaults.$alert-header-selector} {
246
+ // .alert-header
247
+ #{defaults.$alert-header-selector-base}#{defaults.$alert-header-selector} {
54
248
  grid-column: content;
55
249
  grid-row: header;
56
250
  padding: $alert-header-padding;
57
251
  }
58
252
 
59
- #{defaults.$alert-body-selector} {
253
+ // .alert-body
254
+ #{defaults.$alert-body-selector-base}#{defaults.$alert-body-selector} {
60
255
  grid-column: content;
61
256
  grid-row: body;
62
257
  padding: $alert-body-padding;
63
258
  }
64
259
 
65
- #{defaults.$alert-footer-selector} {
260
+ // .alert-footer
261
+ #{defaults.$alert-footer-selector-base}#{defaults.$alert-footer-selector} {
66
262
  grid-column: content;
67
263
  grid-row: footer;
68
264
  padding: $alert-footer-padding;
69
265
  }
70
266
 
71
- #{defaults.$alert-dismisser-selector} {
267
+ // .alert-dismisser
268
+ #{defaults.$alert-dismisser-selector-base}#{defaults.$alert-dismisser-selector} {
72
269
  grid-column: dismiss;
73
270
  grid-row: 1 / -1;
74
271
  align-self: flex-start;
75
272
  }
76
273
 
77
- #{defaults.$alert-title-selector} {
274
+ // .alert-title
275
+ #{defaults.$alert-title-selector-base}#{defaults.$alert-title-selector} {
78
276
  margin: $alert-title-margin;
79
277
  }
278
+
279
+ @include animation.off {
280
+ // .alert
281
+ #{defaults.$alert-selector-base}#{defaults.$alert-selector} {
282
+ --#{root-defaults.$prefix}alert-transition: #{$alert-transition-reduced-motion};
283
+ }
284
+ }
80
285
  }
81
286
 
82
287
  @include layer(theme) {
83
- #{defaults.$alert-selector} {
288
+ // .alert
289
+ #{defaults.$alert-selector-base}#{defaults.$alert-selector} {
84
290
  --#{root-defaults.$prefix}button-background: #{$alert-background};
85
291
  --#{root-defaults.$prefix}button-focus-background: #{$alert-background};
86
292
  --#{root-defaults.$prefix}link-color: #{$alert-link-color};
@@ -94,23 +300,23 @@
94
300
  background-color: $alert-background;
95
301
  color: $alert-color;
96
302
 
97
- @each $color, $map in defaults.$alert-theme-map {
98
- &#{defaults.$alert-theme-selector-prefix}#{$color} {
99
- @each $prop, $value in $map {
100
- --#{root-defaults.$prefix}alert-#{$prop}: #{theme.get(
101
- map.get($value, color),
102
- map.get($value, shade)
103
- )};
104
- }
105
- }
303
+ @if root-defaults.$themeable-components and defaults.$themeable {
304
+ @include theme.generate-modifiers(
305
+ defaults.$alert-theme-map,
306
+ defaults.$alert-theme-selector-base,
307
+ defaults.$alert-theme-selector-prefix,
308
+ "alert-"
309
+ );
106
310
  }
107
311
  }
108
312
 
109
- #{defaults.$alert-dismisser-selector} {
313
+ // .alert-dismisser
314
+ #{defaults.$alert-dismisser-selector-base}#{defaults.$alert-dismisser-selector} {
110
315
  @include button-mixins.apply-theme;
111
316
  }
112
317
 
113
- #{defaults.$alert-title-selector} {
318
+ // .alert-title
319
+ #{defaults.$alert-title-selector-base}#{defaults.$alert-title-selector} {
114
320
  color: $alert-title-color;
115
321
  font-size: $alert-title-font-size;
116
322
  font-weight: $alert-title-font-weight;