@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
@@ -1,24 +1,273 @@
1
1
  // @graupl/core carousel component styles.
2
+ //
3
+ // This module provides carousel layout, controls, and tabs.
4
+ //
5
+ // The following selectors are generated by default:
6
+ // - `.carousel`: The carousel container.
7
+ // - `.carousel-control-container`: The container for play/pause/prev/next controls.
8
+ // - `.carousel-control`: The control elements (with `.autoplay`, `.play`, `.pause`, `.previous`, `.next` modifiers).
9
+ // - `.carousel-item-container`: The container for carousel items.
10
+ // - `.carousel-item`: Individual carousel items (with `.active`, `.next`, `.previous` modifiers).
11
+ // - `.carousel-tab-container`: The container for tabs.
12
+ // - `.carousel-tab`: Individual tabs.
13
+ //
14
+ // The following custom properties can be used to customize the carousel component:
15
+ // | Property | Description | Default Value |
16
+ // | ------------------------------------------ | ------------------------------------------------ | ------------------------------------------------------------------- |
17
+ // | `--graupl-carousel-controls-height` | Height of the controls row. | `auto` |
18
+ // | `--graupl-carousel-tabs-width` | Width of the tabs column. | `1fr` |
19
+ // | `--graupl-carousel-tabs-height` | Height of the tabs row. | `auto` |
20
+ // | `--graupl-carousel-slide-height` | Height of the slide row. | `1fr` |
21
+ // | `--graupl-carousel-padding-x` | Horizontal padding of the carousel. | `var(--graupl-spacer-0)` |
22
+ // | `--graupl-carousel-padding-y` | Vertical padding of the carousel. | `var(--graupl-spacer-0)` |
23
+ // | `--graupl-carousel-padding` | Shorthand padding of the carousel. | `var(--graupl-carousel-padding-y) var(--graupl-carousel-padding-x)` |
24
+ // | `--graupl-carousel-item-max-width` | Max width of a carousel item. | `100%` |
25
+ // | `--graupl-carousel-transition-duration` | Duration used for slide transitions. | `500ms` |
26
+ // | `--graupl-carousel-item-container-padding` | Padding of the item container. | `var(--graupl-spacer-0) var(--graupl-spacer-0)` |
27
+ // | `--graupl-carousel-color` | Default text color for carousel content. | `var(--graupl-color)` |
28
+ // | `--graupl-carousel-background` | Default background color for the carousel. | `var(--graupl-background)` |
29
+ // | `--graupl-carousel-border-color` | Border color applied to carousel elements. | `var(--graupl-border-color)` |
30
+ // | `--graupl-carousel-control-color` | Text/icon color for carousel controls. | `var(--graupl-carousel-color)` |
31
+ // | `--graupl-carousel-control-visited-color` | Text/icon color for visited controls. | `var(--graupl-carousel-control-color)` |
32
+ // | `--graupl-carousel-control-focus-color` | Text/icon color for focused controls. | `var(--graupl-carousel-control-color)` |
33
+ // | `--graupl-carousel-control-hover-color` | Text/icon color for hovered controls. | `var(--graupl-carousel-background)` |
34
+ // | `--graupl-carousel-control-active-color` | Text/icon color for active controls. | `var(--graupl-carousel-control-hover-color)` |
35
+ // | `--graupl-carousel-control-disabled-color` | Text/icon color for disabled controls. | `var(--graupl-theme-active--primary--200)` |
36
+ // | `--graupl-carousel-control-background` | Background color for carousel controls. | `var(--graupl-carousel-background)` |
37
+ // | `--graupl-carousel-control-visited-background` | Background for visited controls. | `var(--graupl-carousel-control-background)` |
38
+ // | `--graupl-carousel-control-focus-background` | Background for focused controls. | `var(--graupl-carousel-control-background)` |
39
+ // | `--graupl-carousel-control-hover-background` | Background for hovered controls. | `var(--graupl-carousel-color)` |
40
+ // | `--graupl-carousel-control-active-background` | Background for active controls. | `var(--graupl-carousel-control-hover-background)` |
41
+ // | `--graupl-carousel-control-disabled-background` | Background for disabled controls. | `var(--graupl-carousel-background)` |
42
+ // | `--graupl-carousel-control-border-color` | Border color for carousel controls. | `var(--graupl-carousel-border-color)` |
43
+ // | `--graupl-carousel-control-visited-border-color` | Border color for visited controls. | `var(--graupl-carousel-control-border-color)` |
44
+ // | `--graupl-carousel-control-focus-border-color` | Border color for focused controls. | `var(--graupl-carousel-control-border-color)` |
45
+ // | `--graupl-carousel-control-hover-border-color` | Border color for hovered controls. | `var(--graupl-carousel-control-border-color)` |
46
+ // | `--graupl-carousel-control-active-border-color` | Border color for active controls. | `var(--graupl-carousel-control-hover-border-color)` |
47
+ // | `--graupl-carousel-control-disabled-border-color` | Border color for disabled controls. | `var(--graupl-theme-active--primary--200)` |
48
+ // | `--graupl-carousel-control-width` | Width of each control. | `4rem` |
49
+ // | `--graupl-carousel-control-height` | Height of each control. | `3rem` |
50
+ // | `--graupl-carousel-play-content` | Content for the play control pseudo-element. | `'▶'` |
51
+ // | `--graupl-carousel-pause-content` | Content for the pause control pseudo-element. | `'❚❚'` |
52
+ // | `--graupl-carousel-next-content` | Content for the next control pseudo-element. | `'▶'` |
53
+ // | `--graupl-carousel-previous-content` | Content for the previous control pseudo-element. | `'◀'` |
54
+ // | `--graupl-carousel-tab-color` | Text/icon color for carousel tabs. | `var(--graupl-carousel-color)` |
55
+ // | `--graupl-carousel-tab-visited-color` | Text/icon color for visited tabs. | `var(--graupl-carousel-tab-color)` |
56
+ // | `--graupl-carousel-tab-focus-color` | Text/icon color for focused tabs. | `var(--graupl-carousel-tab-color)` |
57
+ // | `--graupl-carousel-tab-hover-color` | Text/icon color for hovered tabs. | `var(--graupl-carousel-background)` |
58
+ // | `--graupl-carousel-tab-active-color` | Text/icon color for active tabs. | `var(--graupl-carousel-tab-hover-color)` |
59
+ // | `--graupl-carousel-tab-disabled-color` | Text/icon color for disabled tabs. | `var(--graupl-theme-active--primary--200)` |
60
+ // | `--graupl-carousel-tab-background` | Background color for carousel tabs. | `var(--graupl-carousel-background)` |
61
+ // | `--graupl-carousel-tab-visited-background` | Background for visited tabs. | `var(--graupl-carousel-tab-background)` |
62
+ // | `--graupl-carousel-tab-focus-background` | Background for focused tabs. | `var(--graupl-carousel-tab-background)` |
63
+ // | `--graupl-carousel-tab-hover-background` | Background for hovered tabs. | `var(--graupl-carousel-color)` |
64
+ // | `--graupl-carousel-tab-active-background` | Background for active tabs. | `var(--graupl-carousel-tab-hover-background)` |
65
+ // | `--graupl-carousel-tab-disabled-background`| Background for disabled tabs. | `var(--graupl-carousel-background)` |
66
+ // | `--graupl-carousel-tab-border-color` | Border color for carousel tabs. | `var(--graupl-carousel-border-color)` |
67
+ // | `--graupl-carousel-tab-visited-border-color` | Border color for visited tabs. | `var(--graupl-carousel-tab-border-color)` |
68
+ // | `--graupl-carousel-tab-focus-border-color` | Border color for focused tabs. | `var(--graupl-carousel-tab-border-color)` |
69
+ // | `--graupl-carousel-tab-hover-border-color` | Border color for hovered tabs. | `var(--graupl-carousel-tab-border-color)` |
70
+ // | `--graupl-carousel-tab-active-border-color`| Border color for active tabs. | `var(--graupl-carousel-tab-hover-border-color)` |
71
+ // | `--graupl-carousel-tab-disabled-border-color` | Border color for disabled tabs. | `var(--graupl-theme-active--primary--200)` |
72
+ // | `--graupl-carousel-tab-container-padding` | Padding of the tab container. | `var(--graupl-spacer-3) var(--graupl-spacer-3)` |
73
+ // | `--graupl-carousel-tab-container-gap` | Gap inside the tab container. | `var(--graupl-spacer-3)` |
74
+ //
75
+ // The following sass variables can be used to customize the generation of the carousel component:
76
+ // | Variable | Description | Default Value |
77
+ // | ------------------------------------------- | ------------------------------------------------------- | ------------------------------ |
78
+ // | `$selector-base` | Selector base for the component. | `"."` |
79
+ // | `$modifier-selector-base` | Selector base for component modifiers. | `"."` |
80
+ // | `$generate-base-theme-map` | Flag to generate the base theme map. | `true` |
81
+ // | `$themeable` | Flag to generate theme modifiers. | `false` |
82
+ // | `$carousel-selector-base` | Selector base for the carousel container. | `$selector-base` |
83
+ // | `$carousel-selector` | Selector for the carousel container. | `"carousel"` |
84
+ // | `$carousel-theme-selector-base` | Selector base for theme modifiers. | `"."` |
85
+ // | `$carousel-theme-selector-prefix` | Selector prefix for theme modifiers. | `""` |
86
+ // | `$carousel-control-container-selector-base` | Selector base for the control container. | `$selector-base` |
87
+ // | `$carousel-control-container-selector` | Selector for the control container. | `"carousel-control-container"` |
88
+ // | `$carousel-control-selector-base` | Selector base for controls. | `$selector-base` |
89
+ // | `$carousel-control-selector` | Selector for controls. | `"carousel-control"` |
90
+ // | `$carousel-pause-selector-base` | Selector base for pause modifier. | `"."` |
91
+ // | `$carousel-pause-selector` | Selector for pause modifier. | `"pause"` |
92
+ // | `$carousel-play-selector-base` | Selector base for play modifier. | `"."` |
93
+ // | `$carousel-play-selector` | Selector for play modifier. | `"play"` |
94
+ // | `$carousel-autoplay-selector-base` | Selector base for autoplay modifier. | `"."` |
95
+ // | `$carousel-autoplay-selector` | Selector for autoplay modifier. | `"autoplay"` |
96
+ // | `$carousel-previous-selector-base` | Selector base for previous modifier. | `"."` |
97
+ // | `$carousel-previous-selector` | Selector for previous modifier. | `"previous"` |
98
+ // | `$carousel-next-selector-base` | Selector base for next modifier. | `"."` |
99
+ // | `$carousel-next-selector` | Selector for next modifier. | `"next"` |
100
+ // | `$carousel-item-container-selector-base` | Selector base for item container. | `$selector-base` |
101
+ // | `$carousel-item-container-selector` | Selector for item container. | `"carousel-item-container"` |
102
+ // | `$carousel-item-selector-base` | Selector base for items. | `$selector-base` |
103
+ // | `$carousel-item-selector` | Selector for items. | `"carousel-item"` |
104
+ // | `$carousel-tab-container-selector-base` | Selector base for tab container. | `$selector-base` |
105
+ // | `$carousel-tab-container-selector` | Selector for tab container. | `"carousel-tab-container"` |
106
+ // | `$carousel-tab-selector-base` | Selector base for tabs. | `$selector-base` |
107
+ // | `$carousel-tab-selector` | Selector for tabs. | `"carousel-tab"` |
108
+ // | `$carousel-active-item-selector-base` | Selector base for the active modifier. | `"."` |
109
+ // | `$carousel-active-item-selector` | Selector for the active modifier. | `"active"` |
110
+ // | `$carousel-next-item-selector-base` | Selector base for the next modifier. | `"."` |
111
+ // | `$carousel-next-item-selector` | Selector for the next modifier. | `"next"` |
112
+ // | `$carousel-previous-item-selector-base` | Selector base for the previous modifier. | `"."` |
113
+ // | `$carousel-previous-item-selector` | Selector for the previous modifier. | `"previous"` |
114
+ // | `$carousel-controls-height` | Height of the controls row. | `auto` |
115
+ // | `$carousel-tabs-width` | Width of the tabs column. | `1fr` |
116
+ // | `$carousel-tabs-height` | Height of the tabs row. | `auto` |
117
+ // | `$carousel-slide-height` | Height of the slide row. | `1fr` |
118
+ // | `$carousel-item-max-width` | Max width of a carousel item. | `100%` |
119
+ // | `$carousel-transition-duration` | Duration used for slide transitions. | `500ms` |
120
+ // | `$carousel-theme-mappings` | Map of properties/shades applied to all theme variants. | `()` |
121
+ // | `$carousel-theme-map` | Expanded map of properties/colors/shades per variant. | `()` |
122
+ //
123
+ // ## Using `$carousel-theme-mappings`
124
+ //
125
+ // `$carousel-theme-mappings` is a 1-level map of properties and shade values.
126
+ //
127
+ // e.g.
128
+ // ```scss
129
+ // $carousel-theme-mappings: (
130
+ // border-color: 700,
131
+ // )
132
+ // ```
133
+ //
134
+ // This directly[1] maps to all carousel variants, telling them what shade to use for said property.
135
+ // All carousel variants will use the following based on the example above:
136
+ // - Primary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--primary--700`,
137
+ // - Secondary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--secondary--700`, and
138
+ // - Tertiary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--tertiary--700`.
139
+ //
140
+ // You can use this to customize _all_ carousel variants in the same way.
141
+ //
142
+ // For example, if you use the following map:
143
+ // ```scss
144
+ // $carousel-theme-mappings: (
145
+ // border-color: 500,
146
+ // )
147
+ // ```
148
+ //
149
+ // All carousel variants will use the following:
150
+ // - Primary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--primary--500`,
151
+ // - Secondary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--secondary--500`, and
152
+ // - Tertiary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--tertiary--500`.
153
+ //
154
+ // [1] `$carousel-theme-mappings` gets parsed into a larger, more explicit map: `$carousel-theme-map`.
155
+ //
156
+ // Using `$carousel-theme-map`
157
+ //
158
+ // `$carousel-theme-map` is a multi-level map of properties, colors, and shade values.
159
+ //
160
+ // e.g.
161
+ // ```scss
162
+ // $carousel-theme-map: (
163
+ // primary: (
164
+ // border-color: (
165
+ // color: primary,
166
+ // shade: 700
167
+ // ),
168
+ // ),
169
+ // secondary: (
170
+ // border-color: (
171
+ // color: secondary,
172
+ // shade: 700
173
+ // ),
174
+ // ),
175
+ // tertiary: (
176
+ // border-color: (
177
+ // color: tertiary,
178
+ // shade: 700
179
+ // ),
180
+ // ),
181
+ // )
182
+ // ```
183
+ //
184
+ // This directly maps to all carousel variants, telling them what shade to use for said property.
185
+ // The carousel variants will use the following based on the example above:
186
+ // - Primary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--primary--700`,
187
+ // - Secondary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--secondary--700`, and
188
+ // - Tertiary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--tertiary--700`.
189
+ //
190
+ // You can use this to customize carousel variants individually.
191
+ //
192
+ // For example, if you use the following map:
193
+ //
194
+ // ```scss
195
+ // $carousel-theme-map: (
196
+ // primary: (
197
+ // border-color: (
198
+ // color: secondary,
199
+ // shade: 700
200
+ // ),
201
+ // ),
202
+ // secondary: (
203
+ // border-color: (
204
+ // color: secondary,
205
+ // shade: 700
206
+ // ),
207
+ // ),
208
+ // tertiary: (
209
+ // border-color: (
210
+ // color: secondary,
211
+ // shade: 700
212
+ // ),
213
+ // ),
214
+ // )
215
+ // ```
216
+ //
217
+ // The carousel variants will use the following:
218
+ // - Primary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--secondary--700`,
219
+ // - Secondary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--secondary--700`, and
220
+ // - Tertiary carousels will have their `--graupl-carousel-border-color` property set to `--graupl-theme-active--secondary--700`.
221
+ //
222
+ // @example
223
+ // <section class="carousel">
224
+ // <div class="carousel-control-container">
225
+ // <button class="carousel-control autoplay" aria-label="Toggle autoplay"></button>
226
+ // <button class="carousel-control previous" aria-label="Previous slide"></button>
227
+ // <button class="carousel-control next" aria-label="Next slide"></button>
228
+ // </div>
229
+ // <div class="carousel-tab-container">
230
+ // <button class="carousel-tab" aria-label="Slide 1"></button>
231
+ // <button class="carousel-tab" aria-label="Slide 2"></button>
232
+ // <button class="carousel-tab" aria-label="Slide 3"></button>
233
+ // </div>
234
+ // <div class="carousel-item-container">
235
+ // <div class="carousel-item active">
236
+ // <div class="ratio sixteen-by-nine">
237
+ // <img class="force-ratio" src="https://picsum.photos/1400/600?random=1" alt="Carousel slide 1" />
238
+ // </div>
239
+ // </div>
240
+ // <div class="carousel-item">
241
+ // <div class="ratio sixteen-by-nine">
242
+ // <img class="force-ratio" src="https://picsum.photos/1400/600?random=2" alt="Carousel slide 2" />
243
+ // </div>
244
+ // </div>
245
+ // </div>
246
+ // </section>
2
247
 
3
- @use "defaults";
4
- @use "variables" as *;
248
+ @use "../../base/button/mixins" as button-mixins;
5
249
  @use "../../defaults" as root-defaults;
6
250
  @use "../../mixins/layer" as *;
7
- @use "../../base/button/variables" as button-variables;
8
- @use "../../base/button/mixins" as button-mixins;
251
+ @use "../../mixins/state";
252
+ @use "../../mixins/theme";
253
+ @use "defaults";
254
+ @use "variables" as *;
9
255
 
10
256
  @include layer(base) {
11
- #{defaults.$carousel-control-selector} {
257
+ // .carousel-control
258
+ #{defaults.$carousel-control-selector-base}#{defaults.$carousel-control-selector} {
12
259
  @include button-mixins.apply-base;
13
260
  }
14
261
 
15
- #{defaults.$carousel-tab-selector} {
262
+ // .carousel-tab
263
+ #{defaults.$carousel-tab-selector-base}#{defaults.$carousel-tab-selector} {
16
264
  @include button-mixins.apply-base;
17
265
  }
18
266
  }
19
267
 
20
268
  @include layer(component) {
21
- #{defaults.$carousel-selector} {
269
+ // .carousel
270
+ #{defaults.$carousel-selector-base}#{defaults.$carousel-selector} {
22
271
  display: grid;
23
272
  position: relative;
24
273
  grid-template-columns: [slide-start controls-start] auto [tabs-start] $carousel-tabs-width [tabs-end] auto [controls-end slide-end];
@@ -27,19 +276,24 @@
27
276
  padding: $carousel-padding;
28
277
 
29
278
  &[data-graupl-action="next"] {
30
- #{defaults.$carousel-item-selector} {
31
- &#{defaults.$carousel-previous-item-selector} {
279
+ // .carousel-item
280
+ #{defaults.$carousel-item-selector-base}#{defaults.$carousel-item-selector} {
281
+ // &.carousel-previous-item
282
+ &#{defaults.$carousel-previous-item-selector-base}#{defaults.$carousel-previous-item-selector} {
32
283
  transform: translateX(calc(-1 * $carousel-item-max-width));
33
284
 
34
- &#{defaults.$carousel-active-item-selector} {
285
+ // &.carousel-active-item
286
+ &#{defaults.$carousel-active-item-selector-base}#{defaults.$carousel-active-item-selector} {
35
287
  transform: none;
36
288
  }
37
289
  }
38
290
 
39
- &#{defaults.$carousel-next-item-selector} {
291
+ // &.carousel-next-item
292
+ &#{defaults.$carousel-next-item-selector-base}#{defaults.$carousel-next-item-selector} {
40
293
  transform: translateX($carousel-item-max-width);
41
294
 
42
- &#{defaults.$carousel-active-item-selector} {
295
+ // &.carousel-active-item
296
+ &#{defaults.$carousel-active-item-selector-base}#{defaults.$carousel-active-item-selector} {
43
297
  transform: none;
44
298
  }
45
299
  }
@@ -47,19 +301,24 @@
47
301
  }
48
302
 
49
303
  &[data-graupl-action="previous"] {
50
- #{defaults.$carousel-item-selector} {
51
- &#{defaults.$carousel-previous-item-selector} {
304
+ // .carousel-item
305
+ #{defaults.$carousel-item-selector-base}#{defaults.$carousel-item-selector} {
306
+ // &.carousel-previous-item
307
+ &#{defaults.$carousel-previous-item-selector-base}#{defaults.$carousel-previous-item-selector} {
52
308
  transform: translateX($carousel-item-max-width);
53
309
 
54
- &#{defaults.$carousel-active-item-selector} {
310
+ // &.carousel-active-item
311
+ &#{defaults.$carousel-active-item-selector-base}#{defaults.$carousel-active-item-selector} {
55
312
  transform: none;
56
313
  }
57
314
  }
58
315
 
59
- &#{defaults.$carousel-next-item-selector} {
316
+ // &.carousel-next-item
317
+ &#{defaults.$carousel-next-item-selector-base}#{defaults.$carousel-next-item-selector} {
60
318
  transform: translateX(calc(-1 * $carousel-item-max-width));
61
319
 
62
- &#{defaults.$carousel-active-item-selector} {
320
+ // &.carousel-active-item
321
+ &#{defaults.$carousel-active-item-selector-base}#{defaults.$carousel-active-item-selector} {
63
322
  transform: none;
64
323
  }
65
324
  }
@@ -67,7 +326,8 @@
67
326
  }
68
327
  }
69
328
 
70
- #{defaults.$carousel-control-container-selector} {
329
+ // .carousel-control-container
330
+ #{defaults.$carousel-control-container-selector-base}#{defaults.$carousel-control-container-selector} {
71
331
  display: grid;
72
332
  z-index: 1;
73
333
  grid-area: controls;
@@ -79,24 +339,29 @@
79
339
  pointer-events: none;
80
340
  }
81
341
 
82
- #{defaults.$carousel-control-selector} {
342
+ // .carousel-control
343
+ #{defaults.$carousel-control-selector-base}#{defaults.$carousel-control-selector} {
83
344
  pointer-events: auto;
84
345
 
85
- &#{defaults.$carousel-autoplay-selector} {
346
+ // &.autoplay
347
+ &#{defaults.$carousel-autoplay-selector-base}#{defaults.$carousel-autoplay-selector} {
86
348
  grid-area: autoplay;
87
349
  }
88
350
 
89
- &#{defaults.$carousel-play-selector}::before {
351
+ // &.play::before
352
+ &#{defaults.$carousel-play-selector-base}#{defaults.$carousel-play-selector}::before {
90
353
  content: $carousel-play-content;
91
354
  display: inline-block;
92
355
  }
93
356
 
94
- &#{defaults.$carousel-pause-selector}::before {
357
+ // &.pause::before
358
+ &#{defaults.$carousel-pause-selector-base}#{defaults.$carousel-pause-selector}::before {
95
359
  content: $carousel-pause-content;
96
360
  display: inline-block;
97
361
  }
98
362
 
99
- &#{defaults.$carousel-next-selector} {
363
+ // &.next
364
+ &#{defaults.$carousel-next-selector-base}#{defaults.$carousel-next-selector} {
100
365
  grid-area: next;
101
366
 
102
367
  &::before {
@@ -105,7 +370,8 @@
105
370
  }
106
371
  }
107
372
 
108
- &#{defaults.$carousel-previous-selector} {
373
+ // &.previous
374
+ &#{defaults.$carousel-previous-selector-base}#{defaults.$carousel-previous-selector} {
109
375
  grid-area: previous;
110
376
 
111
377
  &::before {
@@ -115,7 +381,8 @@
115
381
  }
116
382
  }
117
383
 
118
- #{defaults.$carousel-item-container-selector} {
384
+ // .carousel-item-container
385
+ #{defaults.$carousel-item-container-selector-base}#{defaults.$carousel-item-container-selector} {
119
386
  display: grid;
120
387
  z-index: 0;
121
388
  grid-area: slide;
@@ -125,46 +392,49 @@
125
392
  isolation: isolate;
126
393
  }
127
394
 
128
- #{defaults.$carousel-item-selector} {
395
+ // .carousel-item
396
+ #{defaults.$carousel-item-selector-base}#{defaults.$carousel-item-selector} {
129
397
  z-index: -1;
130
398
  grid-area: items;
131
399
  max-width: $carousel-item-max-width;
132
400
  opacity: 0;
133
401
 
134
- &#{defaults.$carousel-active-item-selector} {
402
+ // &.carousel-active-item
403
+ &#{defaults.$carousel-active-item-selector-base}#{defaults.$carousel-active-item-selector} {
135
404
  z-index: 1;
136
405
  transform: none;
137
- transition: transform
138
- var(--#{root-defaults.$prefix}carousel-transition-duration, 500ms)
139
- ease-in-out;
406
+ transition: transform #{$carousel-transition-duration} ease-in-out;
140
407
  opacity: 1;
141
408
  }
142
409
 
143
- &#{defaults.$carousel-previous-item-selector} {
410
+ // &.carousel-previous-item
411
+ &#{defaults.$carousel-previous-item-selector-base}#{defaults.$carousel-previous-item-selector} {
144
412
  z-index: 1;
145
413
  transform: translateX(calc(-1 * $carousel-item-max-width));
146
- transition: transform
147
- var(--#{root-defaults.$prefix}carousel-transition-duration, 500ms)
148
- ease-in-out;
414
+ transition: transform #{$carousel-transition-duration} ease-in-out;
149
415
  opacity: 1;
150
416
 
151
- &#{defaults.$carousel-active-item-selector} {
417
+ // &.carousel-active-item
418
+ &#{defaults.$carousel-active-item-selector-base}#{defaults.$carousel-active-item-selector} {
152
419
  transform: none;
153
420
  }
154
421
  }
155
422
 
156
- &#{defaults.$carousel-next-item-selector} {
423
+ // &.carousel-next-item
424
+ &#{defaults.$carousel-next-item-selector-base}#{defaults.$carousel-next-item-selector} {
157
425
  z-index: 1;
158
426
  transform: translateX($carousel-item-max-width);
159
427
  opacity: 1;
160
428
 
161
- &#{defaults.$carousel-active-item-selector} {
429
+ // &.carousel-active-item
430
+ &#{defaults.$carousel-active-item-selector-base}#{defaults.$carousel-active-item-selector} {
162
431
  transform: none;
163
432
  }
164
433
  }
165
434
  }
166
435
 
167
- #{defaults.$carousel-tab-container-selector} {
436
+ // .carousel-tab-container
437
+ #{defaults.$carousel-tab-container-selector-base}#{defaults.$carousel-tab-container-selector} {
168
438
  display: flex;
169
439
  z-index: 1;
170
440
  grid-area: tabs;
@@ -174,7 +444,8 @@
174
444
  pointer-events: none;
175
445
  }
176
446
 
177
- #{defaults.$carousel-tab-selector} {
447
+ // .carousel-tab
448
+ #{defaults.$carousel-tab-selector-base}#{defaults.$carousel-tab-selector} {
178
449
  --#{root-defaults.$prefix}button-border-radius: 50%;
179
450
 
180
451
  pointer-events: auto;
@@ -182,11 +453,56 @@
182
453
  }
183
454
 
184
455
  @include layer(theme) {
185
- #{defaults.$carousel-control-selector} {
456
+ // .carousel
457
+ #{defaults.$carousel-selector-base}#{defaults.$carousel-selector} {
458
+ @if root-defaults.$themeable-components and defaults.$themeable {
459
+ @include theme.generate-modifiers(
460
+ defaults.$carousel-theme-map,
461
+ defaults.$carousel-theme-selector-base,
462
+ defaults.$carousel-theme-selector-prefix,
463
+ "carousel-"
464
+ );
465
+ @include theme.generate-modifiers(
466
+ defaults.$carousel-theme-map,
467
+ defaults.$carousel-theme-selector-base,
468
+ defaults.$carousel-theme-selector-prefix,
469
+ "carousel-",
470
+ ""
471
+ );
472
+ }
473
+ }
474
+
475
+ // .carousel-control
476
+ #{defaults.$carousel-control-selector-base}#{defaults.$carousel-control-selector} {
186
477
  @include button-mixins.apply-theme;
478
+
479
+ border-color: $carousel-control-border-color;
480
+ background: $carousel-control-background;
481
+ color: $carousel-control-color;
482
+
483
+ @include state.generate-modifiers(
484
+ (
485
+ border-color: $carousel-control-border-color-states,
486
+ color: $carousel-control-color-states,
487
+ background: $carousel-control-background-states,
488
+ )
489
+ );
187
490
  }
188
491
 
189
- #{defaults.$carousel-tab-selector} {
492
+ // .carousel-tab
493
+ #{defaults.$carousel-tab-selector-base}#{defaults.$carousel-tab-selector} {
190
494
  @include button-mixins.apply-theme;
495
+
496
+ border-color: $carousel-tab-border-color;
497
+ background: $carousel-tab-background;
498
+ color: $carousel-tab-color;
499
+
500
+ @include state.generate-modifiers(
501
+ (
502
+ border-color: $carousel-tab-border-color-states,
503
+ color: $carousel-tab-color-states,
504
+ background: $carousel-tab-background-states,
505
+ )
506
+ );
191
507
  }
192
508
  }