@graupl/core 1.0.0-beta.10

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 (303) hide show
  1. package/dist/css/base/button.css +2 -0
  2. package/dist/css/base/button.css.map +1 -0
  3. package/dist/css/base/form.css +2 -0
  4. package/dist/css/base/form.css.map +1 -0
  5. package/dist/css/base/link.css +2 -0
  6. package/dist/css/base/link.css.map +1 -0
  7. package/dist/css/base/table.css +2 -0
  8. package/dist/css/base/table.css.map +1 -0
  9. package/dist/css/base.css +2 -0
  10. package/dist/css/base.css.map +1 -0
  11. package/dist/css/component/accordion.css +5 -0
  12. package/dist/css/component/accordion.css.map +1 -0
  13. package/dist/css/component/alert.css +2 -0
  14. package/dist/css/component/alert.css.map +1 -0
  15. package/dist/css/component/card.css +2 -0
  16. package/dist/css/component/card.css.map +1 -0
  17. package/dist/css/component/carousel.css +2 -0
  18. package/dist/css/component/carousel.css.map +1 -0
  19. package/dist/css/component/input-group.css +2 -0
  20. package/dist/css/component/input-group.css.map +1 -0
  21. package/dist/css/component/list.css +2 -0
  22. package/dist/css/component/list.css.map +1 -0
  23. package/dist/css/component/menu.css +2 -0
  24. package/dist/css/component/menu.css.map +1 -0
  25. package/dist/css/component/navigation.css +2 -0
  26. package/dist/css/component/navigation.css.map +1 -0
  27. package/dist/css/component.css +5 -0
  28. package/dist/css/component.css.map +1 -0
  29. package/dist/css/graupl.css +5 -0
  30. package/dist/css/graupl.css.map +1 -0
  31. package/dist/css/init.css +2 -0
  32. package/dist/css/init.css.map +1 -0
  33. package/dist/css/layout/columns.css +2 -0
  34. package/dist/css/layout/columns.css.map +1 -0
  35. package/dist/css/layout/container.css +2 -0
  36. package/dist/css/layout/container.css.map +1 -0
  37. package/dist/css/layout/flex-columns.css +2 -0
  38. package/dist/css/layout/flex-columns.css.map +1 -0
  39. package/dist/css/layout.css +5 -0
  40. package/dist/css/layout.css.map +1 -0
  41. package/dist/css/normalize.css +2 -0
  42. package/dist/css/normalize.css.map +1 -0
  43. package/dist/css/state/focus.css +2 -0
  44. package/dist/css/state/focus.css.map +1 -0
  45. package/dist/css/state.css +2 -0
  46. package/dist/css/state.css.map +1 -0
  47. package/dist/css/theme/color.css +2 -0
  48. package/dist/css/theme/color.css.map +1 -0
  49. package/dist/css/theme/typography.css +2 -0
  50. package/dist/css/theme/typography.css.map +1 -0
  51. package/dist/css/theme.css +2 -0
  52. package/dist/css/theme.css.map +1 -0
  53. package/dist/css/utilities/alignment.css +2 -0
  54. package/dist/css/utilities/alignment.css.map +1 -0
  55. package/dist/css/utilities/background.css +2 -0
  56. package/dist/css/utilities/background.css.map +1 -0
  57. package/dist/css/utilities/border.css +2 -0
  58. package/dist/css/utilities/border.css.map +1 -0
  59. package/dist/css/utilities/color.css +2 -0
  60. package/dist/css/utilities/color.css.map +1 -0
  61. package/dist/css/utilities/container.css +2 -0
  62. package/dist/css/utilities/container.css.map +1 -0
  63. package/dist/css/utilities/display.css +2 -0
  64. package/dist/css/utilities/display.css.map +1 -0
  65. package/dist/css/utilities/flex.css +2 -0
  66. package/dist/css/utilities/flex.css.map +1 -0
  67. package/dist/css/utilities/gradient.css +2 -0
  68. package/dist/css/utilities/gradient.css.map +1 -0
  69. package/dist/css/utilities/height.css +2 -0
  70. package/dist/css/utilities/height.css.map +1 -0
  71. package/dist/css/utilities/inset.css +2 -0
  72. package/dist/css/utilities/inset.css.map +1 -0
  73. package/dist/css/utilities/justification.css +2 -0
  74. package/dist/css/utilities/justification.css.map +1 -0
  75. package/dist/css/utilities/list.css +2 -0
  76. package/dist/css/utilities/list.css.map +1 -0
  77. package/dist/css/utilities/order.css +2 -0
  78. package/dist/css/utilities/order.css.map +1 -0
  79. package/dist/css/utilities/position.css +2 -0
  80. package/dist/css/utilities/position.css.map +1 -0
  81. package/dist/css/utilities/ratio.css +2 -0
  82. package/dist/css/utilities/ratio.css.map +1 -0
  83. package/dist/css/utilities/spacing.css +2 -0
  84. package/dist/css/utilities/spacing.css.map +1 -0
  85. package/dist/css/utilities/typography.css +2 -0
  86. package/dist/css/utilities/typography.css.map +1 -0
  87. package/dist/css/utilities/visibility.css +2 -0
  88. package/dist/css/utilities/visibility.css.map +1 -0
  89. package/dist/css/utilities/visually-hidden.css +2 -0
  90. package/dist/css/utilities/visually-hidden.css.map +1 -0
  91. package/dist/css/utilities/width.css +2 -0
  92. package/dist/css/utilities/width.css.map +1 -0
  93. package/dist/css/utilities/z-index.css +2 -0
  94. package/dist/css/utilities/z-index.css.map +1 -0
  95. package/dist/css/utilities.css +2 -0
  96. package/dist/css/utilities.css.map +1 -0
  97. package/package.json +58 -0
  98. package/scss/base/button.scss +3 -0
  99. package/scss/base/form.scss +3 -0
  100. package/scss/base/link.scss +3 -0
  101. package/scss/base/table.scss +3 -0
  102. package/scss/base.scss +3 -0
  103. package/scss/component/accordion.scss +3 -0
  104. package/scss/component/alert.scss +3 -0
  105. package/scss/component/card.scss +3 -0
  106. package/scss/component/carousel.scss +3 -0
  107. package/scss/component/input-group.scss +3 -0
  108. package/scss/component/list.scss +3 -0
  109. package/scss/component/menu.scss +3 -0
  110. package/scss/component/navigation.scss +3 -0
  111. package/scss/component.scss +3 -0
  112. package/scss/graupl.scss +3 -0
  113. package/scss/init.scss +3 -0
  114. package/scss/layout/columns.scss +3 -0
  115. package/scss/layout/container.scss +3 -0
  116. package/scss/layout/flex-columns.scss +3 -0
  117. package/scss/layout.scss +3 -0
  118. package/scss/normalize.scss +3 -0
  119. package/scss/state/focus.scss +3 -0
  120. package/scss/state.scss +3 -0
  121. package/scss/theme/color.scss +3 -0
  122. package/scss/theme/typography.scss +3 -0
  123. package/scss/theme.scss +3 -0
  124. package/scss/utilities/alignment.scss +3 -0
  125. package/scss/utilities/background.scss +3 -0
  126. package/scss/utilities/border.scss +3 -0
  127. package/scss/utilities/color.scss +3 -0
  128. package/scss/utilities/container.scss +3 -0
  129. package/scss/utilities/display.scss +3 -0
  130. package/scss/utilities/flex.scss +3 -0
  131. package/scss/utilities/gradient.scss +3 -0
  132. package/scss/utilities/height.scss +3 -0
  133. package/scss/utilities/inset.scss +3 -0
  134. package/scss/utilities/justification.scss +3 -0
  135. package/scss/utilities/list.scss +3 -0
  136. package/scss/utilities/order.scss +3 -0
  137. package/scss/utilities/position.scss +3 -0
  138. package/scss/utilities/ratio.scss +3 -0
  139. package/scss/utilities/spacing.scss +3 -0
  140. package/scss/utilities/typography.scss +3 -0
  141. package/scss/utilities/visibility.scss +3 -0
  142. package/scss/utilities/visually-hidden.scss +3 -0
  143. package/scss/utilities/width.scss +3 -0
  144. package/scss/utilities/z-index.scss +3 -0
  145. package/scss/utilities.scss +3 -0
  146. package/src/js/accordion/Accordion.js +1163 -0
  147. package/src/js/accordion/AccordionItem.js +496 -0
  148. package/src/js/accordion/index.js +10 -0
  149. package/src/js/alert/Alert.js +581 -0
  150. package/src/js/alert/index.js +11 -0
  151. package/src/js/carousel/Carousel.js +1427 -0
  152. package/src/js/carousel/index.js +10 -0
  153. package/src/js/domHelpers.js +37 -0
  154. package/src/js/eventHandlers.js +39 -0
  155. package/src/js/navigation/index.js +36 -0
  156. package/src/js/storage.js +106 -0
  157. package/src/js/validate.js +225 -0
  158. package/src/scss/_defaults.scss +184 -0
  159. package/src/scss/_index.scss +15 -0
  160. package/src/scss/_init.scss +6 -0
  161. package/src/scss/_normalize.scss +197 -0
  162. package/src/scss/_variables.scss +95 -0
  163. package/src/scss/base/_index.scss +6 -0
  164. package/src/scss/base/button/_defaults.scss +49 -0
  165. package/src/scss/base/button/_index.scss +206 -0
  166. package/src/scss/base/button/_mixins.scss +104 -0
  167. package/src/scss/base/button/_variables.scss +252 -0
  168. package/src/scss/base/form/_defaults.scss +24 -0
  169. package/src/scss/base/form/_index.scss +227 -0
  170. package/src/scss/base/form/_variables.scss +245 -0
  171. package/src/scss/base/link/_defaults.scss +35 -0
  172. package/src/scss/base/link/_index.scss +245 -0
  173. package/src/scss/base/link/_variables.scss +370 -0
  174. package/src/scss/base/table/_defaults.scss +68 -0
  175. package/src/scss/base/table/_index.scss +314 -0
  176. package/src/scss/base/table/_variables.scss +309 -0
  177. package/src/scss/component/_index.scss +10 -0
  178. package/src/scss/component/accordion/_defaults.scss +40 -0
  179. package/src/scss/component/accordion/_index.scss +198 -0
  180. package/src/scss/component/accordion/_variables.scss +356 -0
  181. package/src/scss/component/alert/_defaults.scss +49 -0
  182. package/src/scss/component/alert/_index.scss +119 -0
  183. package/src/scss/component/alert/_variables.scss +200 -0
  184. package/src/scss/component/card/_defaults.scss +32 -0
  185. package/src/scss/component/card/_index.scss +212 -0
  186. package/src/scss/component/card/_variables.scss +216 -0
  187. package/src/scss/component/carousel/_defaults.scss +43 -0
  188. package/src/scss/component/carousel/_index.scss +192 -0
  189. package/src/scss/component/carousel/_variables.scss +104 -0
  190. package/src/scss/component/input-group/_defaults.scss +30 -0
  191. package/src/scss/component/input-group/_index.scss +47 -0
  192. package/src/scss/component/input-group/_variables.scss +66 -0
  193. package/src/scss/component/list/_defaults.scss +15 -0
  194. package/src/scss/component/list/_index.scss +52 -0
  195. package/src/scss/component/list/_variables.scss +236 -0
  196. package/src/scss/component/menu/_defaults.scss +57 -0
  197. package/src/scss/component/menu/_index.scss +308 -0
  198. package/src/scss/component/menu/_variables.scss +642 -0
  199. package/src/scss/component/navigation/_defaults.scss +23 -0
  200. package/src/scss/component/navigation/_index.scss +190 -0
  201. package/src/scss/component/navigation/_variables.scss +290 -0
  202. package/src/scss/functions/_container.scss +38 -0
  203. package/src/scss/functions/_important.scss +36 -0
  204. package/src/scss/functions/_screen.scss +38 -0
  205. package/src/scss/functions/_theme.scss +39 -0
  206. package/src/scss/functions/_utility.scss +28 -0
  207. package/src/scss/layout/_index.scss +5 -0
  208. package/src/scss/layout/columns/_defaults.scss +24 -0
  209. package/src/scss/layout/columns/_index.scss +137 -0
  210. package/src/scss/layout/columns/_variables.scss +55 -0
  211. package/src/scss/layout/container/_defaults.scss +35 -0
  212. package/src/scss/layout/container/_index.scss +628 -0
  213. package/src/scss/layout/container/_variables.scss +114 -0
  214. package/src/scss/layout/flex-columns/_defaults.scss +28 -0
  215. package/src/scss/layout/flex-columns/_index.scss +184 -0
  216. package/src/scss/layout/flex-columns/_variables.scss +30 -0
  217. package/src/scss/mixins/_animation.scss +15 -0
  218. package/src/scss/mixins/_container.scss +80 -0
  219. package/src/scss/mixins/_layer.scss +16 -0
  220. package/src/scss/mixins/_screen.scss +77 -0
  221. package/src/scss/mixins/_state.scss +18 -0
  222. package/src/scss/mixins/_theme.scss +15 -0
  223. package/src/scss/mixins/_utility.scss +185 -0
  224. package/src/scss/mixins/_visually-hidden.scss +30 -0
  225. package/src/scss/state/_index.scss +3 -0
  226. package/src/scss/state/focus/_defaults.scss +9 -0
  227. package/src/scss/state/focus/_index.scss +42 -0
  228. package/src/scss/state/focus/_mixins.scss +13 -0
  229. package/src/scss/state/focus/_variables.scss +50 -0
  230. package/src/scss/theme/_index.scss +4 -0
  231. package/src/scss/theme/color/_defaults.scss +143 -0
  232. package/src/scss/theme/color/_index.scss +42 -0
  233. package/src/scss/theme/color/_variables.scss +133 -0
  234. package/src/scss/theme/typography/_defaults.scss +54 -0
  235. package/src/scss/theme/typography/_index.scss +120 -0
  236. package/src/scss/theme/typography/_variables.scss +248 -0
  237. package/src/scss/utilities/_index.scss +23 -0
  238. package/src/scss/utilities/_template/_defaults.scss +41 -0
  239. package/src/scss/utilities/_template/_index.scss +171 -0
  240. package/src/scss/utilities/_template/_variables.scss +6 -0
  241. package/src/scss/utilities/alignment/_defaults.scss +76 -0
  242. package/src/scss/utilities/alignment/_index.scss +336 -0
  243. package/src/scss/utilities/alignment/_variables.scss +6 -0
  244. package/src/scss/utilities/background/_defaults.scss +122 -0
  245. package/src/scss/utilities/background/_index.scss +634 -0
  246. package/src/scss/utilities/background/_variables.scss +6 -0
  247. package/src/scss/utilities/border/_defaults.scss +73 -0
  248. package/src/scss/utilities/border/_index.scss +558 -0
  249. package/src/scss/utilities/border/_variables.scss +6 -0
  250. package/src/scss/utilities/color/_defaults.scss +49 -0
  251. package/src/scss/utilities/color/_index.scss +469 -0
  252. package/src/scss/utilities/color/_variables.scss +6 -0
  253. package/src/scss/utilities/container/_defaults.scss +40 -0
  254. package/src/scss/utilities/container/_index.scss +174 -0
  255. package/src/scss/utilities/container/_variables.scss +6 -0
  256. package/src/scss/utilities/display/_defaults.scss +47 -0
  257. package/src/scss/utilities/display/_index.scss +184 -0
  258. package/src/scss/utilities/display/_variables.scss +6 -0
  259. package/src/scss/utilities/flex/_defaults.scss +99 -0
  260. package/src/scss/utilities/flex/_index.scss +486 -0
  261. package/src/scss/utilities/flex/_variables.scss +6 -0
  262. package/src/scss/utilities/gradient/_defaults.scss +70 -0
  263. package/src/scss/utilities/gradient/_index.scss +696 -0
  264. package/src/scss/utilities/gradient/_variables.scss +29 -0
  265. package/src/scss/utilities/height/_defaults.scss +54 -0
  266. package/src/scss/utilities/height/_index.scss +525 -0
  267. package/src/scss/utilities/height/_variables.scss +6 -0
  268. package/src/scss/utilities/inset/_defaults.scss +55 -0
  269. package/src/scss/utilities/inset/_index.scss +258 -0
  270. package/src/scss/utilities/inset/_variables.scss +6 -0
  271. package/src/scss/utilities/justification/_defaults.scss +73 -0
  272. package/src/scss/utilities/justification/_index.scss +333 -0
  273. package/src/scss/utilities/justification/_variables.scss +6 -0
  274. package/src/scss/utilities/list/_defaults.scss +53 -0
  275. package/src/scss/utilities/list/_index.scss +253 -0
  276. package/src/scss/utilities/list/_variables.scss +6 -0
  277. package/src/scss/utilities/order/_defaults.scss +36 -0
  278. package/src/scss/utilities/order/_index.scss +246 -0
  279. package/src/scss/utilities/order/_variables.scss +6 -0
  280. package/src/scss/utilities/position/_defaults.scss +41 -0
  281. package/src/scss/utilities/position/_index.scss +178 -0
  282. package/src/scss/utilities/position/_variables.scss +6 -0
  283. package/src/scss/utilities/ratio/_defaults.scss +42 -0
  284. package/src/scss/utilities/ratio/_index.scss +188 -0
  285. package/src/scss/utilities/ratio/_variables.scss +9 -0
  286. package/src/scss/utilities/spacing/_defaults.scss +64 -0
  287. package/src/scss/utilities/spacing/_index.scss +970 -0
  288. package/src/scss/utilities/spacing/_variables.scss +6 -0
  289. package/src/scss/utilities/typography/_defaults.scss +58 -0
  290. package/src/scss/utilities/typography/_index.scss +1089 -0
  291. package/src/scss/utilities/typography/_variables.scss +6 -0
  292. package/src/scss/utilities/visibility/_defaults.scss +39 -0
  293. package/src/scss/utilities/visibility/_index.scss +173 -0
  294. package/src/scss/utilities/visibility/_variables.scss +6 -0
  295. package/src/scss/utilities/visually-hidden/_defaults.scss +29 -0
  296. package/src/scss/utilities/visually-hidden/_index.scss +189 -0
  297. package/src/scss/utilities/visually-hidden/_variables.scss +6 -0
  298. package/src/scss/utilities/width/_defaults.scss +54 -0
  299. package/src/scss/utilities/width/_index.scss +525 -0
  300. package/src/scss/utilities/width/_variables.scss +6 -0
  301. package/src/scss/utilities/z-index/_defaults.scss +40 -0
  302. package/src/scss/utilities/z-index/_index.scss +173 -0
  303. package/src/scss/utilities/z-index/_variables.scss +6 -0
@@ -0,0 +1,114 @@
1
+ // @graupl/core container layout variables.
2
+ //
3
+ // These values are to be used to directly style components and provide a
4
+ // cleaner way to reference custom properties.
5
+
6
+ @use "defaults";
7
+ @use "../../variables" as root-variables;
8
+ @use "../../defaults" as root-defaults;
9
+ @use "sass:map";
10
+
11
+ $container-gap: var(
12
+ --#{root-defaults.$prefix}container-gap,
13
+ #{map.get(root-variables.$spacers, 5)}
14
+ );
15
+ $container-content-max-width: var(
16
+ --#{root-defaults.$prefix}container-content-max-width,
17
+ #{root-variables.$content-max-width}
18
+ );
19
+ $container-sidebar-width: var(
20
+ --#{root-defaults.$prefix}container-sidebar-width,
21
+ #{defaults.$container-sidebar-width}
22
+ );
23
+ $container-breakout-max-width: var(
24
+ --#{root-defaults.$prefix}container-breakout-max-width,
25
+ calc(#{$container-content-max-width} + #{defaults.$container-breakout-width})
26
+ );
27
+ $container-feature-max-width: var(
28
+ --#{root-defaults.$prefix}container-feature-max-width,
29
+ calc(#{$container-breakout-max-width} + #{defaults.$container-feature-width})
30
+ );
31
+ $container-full-width-section-min-width: var(
32
+ --#{root-defaults.$prefix}container-full-width-section-min-width,
33
+ #{$container-gap}
34
+ );
35
+ $container-full-width-section-max-width: var(
36
+ --#{root-defaults.$prefix}container-full-width-section-max-width,
37
+ 1fr
38
+ );
39
+ $container-feature-section-min-width: var(
40
+ --#{root-defaults.$prefix}container-feature-section-min-width,
41
+ 0rem
42
+ );
43
+ $container-feature-section-max-width: var(
44
+ --#{root-defaults.$prefix}container-feature-section-max-width,
45
+ calc((#{$container-feature-max-width} - #{$container-breakout-max-width}) / 2)
46
+ );
47
+ $container-breakout-section-min-width: var(
48
+ --#{root-defaults.$prefix}container-breakout-section-min-width,
49
+ 0rem
50
+ );
51
+ $container-breakout-section-max-width: var(
52
+ --#{root-defaults.$prefix}container-breakout-section-max-width,
53
+ calc((#{$container-breakout-max-width} - #{$container-content-max-width}) / 2)
54
+ );
55
+ /* stylelint-disable scss/operator-no-newline-after -- Prettier wants to format it this way. */
56
+ $container-content-section-min-width: var(
57
+ --#{root-defaults.$prefix}container-content-section-min-width,
58
+ calc(
59
+ 100% - (#{$container-full-width-section-min-width} * 2) -
60
+ (#{$container-feature-section-min-width} * 2) -
61
+ (#{$container-breakout-section-min-width} * 2)
62
+ )
63
+ );
64
+ /* stylelint-enable scss/operator-no-newline-after */
65
+ $container-content-section-max-width: var(
66
+ --#{root-defaults.$prefix}container-content-section-max-width,
67
+ #{$container-content-max-width}
68
+ );
69
+ $container-full-width-section-width: var(
70
+ --#{root-defaults.$prefix}container-full-width-section-width,
71
+ minmax(
72
+ #{$container-full-width-section-min-width},
73
+ #{$container-full-width-section-max-width}
74
+ )
75
+ );
76
+ $container-feature-section-width: var(
77
+ --#{root-defaults.$prefix}container-feature-section-width,
78
+ minmax(
79
+ #{$container-feature-section-min-width},
80
+ #{$container-feature-section-max-width}
81
+ )
82
+ );
83
+ $container-breakout-section-width: var(
84
+ --#{root-defaults.$prefix}container-breakout-section-width,
85
+ minmax(
86
+ #{$container-breakout-section-min-width},
87
+ #{$container-breakout-section-max-width}
88
+ )
89
+ );
90
+ $container-content-section-width: var(
91
+ --#{root-defaults.$prefix}container-content-section-width,
92
+ min(
93
+ #{$container-content-section-min-width},
94
+ #{$container-content-section-max-width}
95
+ )
96
+ );
97
+ $container-sidebar-left-section-width: var(
98
+ --#{root-defaults.$prefix}container-sidebar-left-section-width,
99
+ $container-sidebar-width
100
+ );
101
+ $container-sidebar-right-section-width: var(
102
+ --#{root-defaults.$prefix}container-sidebar-right-section-width,
103
+ $container-sidebar-width
104
+ );
105
+ /* stylelint-disable scss/operator-no-newline-after -- Prettier wants to format it this way. */
106
+ $container-inner-content-section-width: var(
107
+ --#{root-defaults.$prefix}container-inner-content-section-width,
108
+ calc(
109
+ #{$container-content-section-width} -
110
+ #{$container-sidebar-left-section-width} -
111
+ #{$container-sidebar-right-section-width}
112
+ )
113
+ );
114
+ /* stylelint-enable scss/operator-no-newline-after */
@@ -0,0 +1,28 @@
1
+ // @graupl/core flex columns layout 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
+ @use "../../defaults" as root-defaults;
10
+
11
+ // Flex columns selectors.
12
+ $flex-columns-selector-base: root-defaults.$component-selector-base !default;
13
+ $flex-columns-selector: "flex-columns" !default;
14
+ $flex-columns-column-selector-base: $flex-columns-selector-base !default;
15
+ $flex-columns-column-selector: "col-" !default;
16
+ $flex-columns-fill-selector-base: $flex-columns-selector-base !default;
17
+ $flex-columns-fill-selector: "fill" !default;
18
+ $flex-columns-screen-aware-separator: root-defaults.$screen-aware-selector-separator !default;
19
+ $flex-columns-container-aware-separator: root-defaults.$container-aware-selector-separator !default;
20
+ $flex-columns-screen-aware-selector-prefix: root-defaults.$screen-aware-selector-prefix !default;
21
+ $flex-columns-container-aware-selector-prefix: root-defaults.$container-aware-selector-prefix !default;
22
+
23
+ // Flex columns properties.
24
+ $flex-columns-min-count: 1 !default;
25
+ $flex-columns-max-count: 12 !default;
26
+ $flex-columns-size: auto !default;
27
+ $flex-columns-max-width: unset !default;
28
+ $flex-columns-container-type: "inline-size" !default;
@@ -0,0 +1,184 @@
1
+ // @graupl/core flex columns layout styles.
2
+ //
3
+ // This module provides the layout styles for the flex columns component.
4
+ //
5
+ // The flex columns component is a flex container that provides a responsive grid layout for content.
6
+ // The flex columns will adjust their sizes accordingly based on the classes applied to them.
7
+ //
8
+ // These are effectively bootstrap columns, but leaning more on the way flex natively works in the browser.
9
+ // This means that columns will size themselves taking the gap between them into account.
10
+ //
11
+ // The following classes are generated by default:
12
+ // - `.flex-columns`: The main flex columns component.
13
+ // - `.col-1`: Sets the size of a column in the flex columns component to 1.
14
+ // - `.col-2`: Sets the size of a column in the flex columns component to 2.
15
+ // - `.col-3`: Sets the size of a column in the flex columns component to 3.
16
+ // - `.col-4`: Sets the size of a column in the flex columns component to 4.
17
+ // - `.col-5`: Sets the size of a column in the flex columns component to 5.
18
+ // - `.col-6`: Sets the size of a column in the flex columns component to 6.
19
+ // - `.col-7`: Sets the size of a column in the flex columns component to 7.
20
+ // - `.col-8`: Sets the size of a column in the flex columns component to 8.
21
+ // - `.col-9`: Sets the size of a column in the flex columns component to 9.
22
+ // - `.col-10`: Sets the size of a column in the flex columns component to 10.
23
+ // - `.col-11`: Sets the size of a column in the flex columns component to 11.
24
+ // - `.col-12`: Sets the size of a column in the flex columns component to 12.
25
+ // - `.fill`: A class to set a column to fill the remaining space.
26
+ // - `.[screen-name]:col-#`: A class to set the size of a column at a specific screen size.
27
+ // - `.[container-name]:col-#`: A class to set the size of a column at a specific container size.
28
+ //
29
+ // The following custom properties control the generated classes:
30
+ // - `--graupl-flex-columns-row-gap`: The gap between the rows of the flex columns.
31
+ // - `--graupl-flex-columns-column-gap`: The gap between the columns of the flex columns.
32
+ // - `--graupl-flex-columns-size`: The size of a column.
33
+ // - `--graupl-flex-columns-max-width`: The maximum width of a column.
34
+ //
35
+ // The following variables control the generated classes:
36
+ // - `$flex-columns-selector-base`: The base selector for the flex columns component.
37
+ // - `$flex-columns-selector`: The selector for the flex columns component.
38
+ // - `$flex-columns-column-selector-base`: The base selector for the column class.
39
+ // - `$flex-columns-column-selector`: The selector for the column class.
40
+ // - `$flex-columns-fill-selector-base`: The base selector for the fill class.
41
+ // - `$flex-columns-fill-selector`: The selector for the fill class.
42
+ // - `$flex-columns-screen-aware-separator`: The separator for the screen-aware column class.
43
+ // - `$flex-columns-container-aware-separator`: The separator for the container-aware column class.
44
+ // - `$flex-columns-screen-aware-selector-prefix`: The prefix for the screen-aware column class.
45
+ // - `$flex-columns-container-aware-selector-prefix`: The prefix for the container-aware column class.
46
+ // - `$flex-columns-min-count`: The minimum number of columns used to generate `.col-#` classes.
47
+ // - `$flex-columns-max-count`: The maximum number of columns used to generate `.col-#` classes.
48
+ // - `$flex-columns-size`: The default size of a column.
49
+ // - `$flex-columns-max-width`: The default maximum width of a column.
50
+ //
51
+ // @example
52
+ // <div class="flex-columns">
53
+ // <div class="col-3">Column 1</div>
54
+ // <div class="col-6">Column 2</div>
55
+ // <div class="col-3">Column 3</div>
56
+ // </div>
57
+ //
58
+ // @example
59
+ // <div class="flex-columns">
60
+ // <div class="col-3">Column 1</div>
61
+ // <div class="col-3 fill">Column 2</div>
62
+ // <div class="col-3">Column 3</div>
63
+ // </div>
64
+ //
65
+ // @example
66
+ // <div class="flex-columns">
67
+ // <div class="col-3 md:col-2">Column 1</div>
68
+ // <div class="col-6 md:col-8">Column 2</div>
69
+ // <div class="col-3 md:col-2">Column 3</div>
70
+ // </div>
71
+
72
+ @use "../../defaults" as root-defaults;
73
+ @use "../../mixins/layer" as *;
74
+ @use "../../mixins/screen";
75
+ @use "../../mixins/container";
76
+ @use "../../mixins/utility";
77
+ @use "defaults";
78
+ @use "sass:map";
79
+ @use "variables" as *;
80
+
81
+ @include layer(layout) {
82
+ // `.flex-columns`
83
+ #{defaults.$flex-columns-selector-base}#{defaults.$flex-columns-selector} {
84
+ display: flex;
85
+ flex-wrap: wrap;
86
+ gap: $flex-columns-row-gap $flex-columns-column-gap;
87
+ container-type: $flex-columns-container-type;
88
+
89
+ > * {
90
+ flex: 1 1 $flex-columns-size;
91
+ max-width: $flex-columns-max-width;
92
+ }
93
+
94
+ // `.fill`
95
+ #{defaults.$flex-columns-fill-selector-base}#{defaults.$flex-columns-fill-selector} {
96
+ --#{root-defaults.$prefix}flex-columns-max-width: unset;
97
+ }
98
+ }
99
+
100
+ @for $i
101
+ from defaults.$flex-columns-min-count
102
+ through defaults.$flex-columns-max-count
103
+ {
104
+ // e.g. `.col-1` or `.col-12`
105
+ #{defaults.$flex-columns-column-selector-base}#{defaults.$flex-columns-column-selector}#{$i} {
106
+ /* stylelint-disable scss/operator-no-newline-after -- Prettier wants to format it this way. */
107
+ --#{root-defaults.$prefix}flex-columns-size: calc(
108
+ (100% / #{defaults.$flex-columns-max-count} * #{$i}) -
109
+ #{$flex-columns-column-gap}
110
+ );
111
+ --#{root-defaults.$prefix}flex-columns-max-width: calc(
112
+ 100% / #{defaults.$flex-columns-max-count} * #{$i}
113
+ );
114
+ /* stylelint-enable scss/operator-no-newline-after */
115
+ container-type: $flex-columns-container-type;
116
+ }
117
+
118
+ @include container.trigger(force-single-column) {
119
+ // e.g. `.col-1` or `.col-12`
120
+ #{defaults.$flex-columns-column-selector-base}#{defaults.$flex-columns-column-selector}#{$i} {
121
+ --#{root-defaults.$prefix}flex-columns-size: 100%;
122
+ --#{root-defaults.$prefix}flex-columns-max-width: auto;
123
+ }
124
+ }
125
+ }
126
+
127
+ @each $screen-name in map.keys(root-defaults.$screen-sizes) {
128
+ @for $i
129
+ from defaults.$flex-columns-min-count
130
+ through defaults.$flex-columns-max-count
131
+ {
132
+ /* stylelint-disable scss/operator-no-newline-after -- Prettier wants to format it this way. */
133
+ @include utility.create-mapped(
134
+ // e.g. `.md:col-1` or `.xl:col-12`
135
+ #{defaults.$flex-columns-column-selector-base}#{defaults.$flex-columns-screen-aware-selector-prefix}#{$screen-name}#{defaults.$flex-columns-screen-aware-separator}#{defaults.$flex-columns-column-selector}#{$i},
136
+ (
137
+ --#{root-defaults.$prefix}flex-columns-size: calc(
138
+ (100% / #{defaults.$flex-columns-max-count} * #{$i}) -
139
+ #{$flex-columns-column-gap}
140
+ ),
141
+ --#{root-defaults.$prefix}flex-columns-max-width: calc(
142
+ 100% / #{defaults.$flex-columns-max-count} * #{$i}
143
+ )
144
+ ),
145
+ $screen: $screen-name
146
+ ) {
147
+ // `&.fill`
148
+ &#{defaults.$flex-columns-fill-selector-base}#{defaults.$flex-columns-fill-selector} {
149
+ --#{root-defaults.$prefix}flex-columns-max-width: unset;
150
+ }
151
+ }
152
+ /* stylelint-enable scss/operator-no-newline-after */
153
+ }
154
+ }
155
+
156
+ @each $container-name in map.keys(root-defaults.$container-sizes) {
157
+ @for $i
158
+ from defaults.$flex-columns-min-count
159
+ through defaults.$flex-columns-max-count
160
+ {
161
+ /* stylelint-disable scss/operator-no-newline-after -- Prettier wants to format it this way. */
162
+ @include utility.create-mapped(
163
+ // e.g. `.cq:md:col-1` or `.cq:xl:col-12`
164
+ #{defaults.$flex-columns-column-selector-base}#{defaults.$flex-columns-container-aware-selector-prefix}#{$container-name}#{defaults.$flex-columns-container-aware-separator}#{defaults.$flex-columns-column-selector}#{$i},
165
+ (
166
+ --#{root-defaults.$prefix}flex-columns-size: calc(
167
+ (100% / #{defaults.$flex-columns-max-count} * #{$i}) -
168
+ #{$flex-columns-column-gap}
169
+ ),
170
+ --#{root-defaults.$prefix}flex-columns-max-width: calc(
171
+ 100% / #{defaults.$flex-columns-max-count} * #{$i}
172
+ )
173
+ ),
174
+ $container: $container-name
175
+ ) {
176
+ // `&.fill`
177
+ &#{defaults.$flex-columns-fill-selector-base}#{defaults.$flex-columns-fill-selector} {
178
+ --#{root-defaults.$prefix}flex-columns-max-width: unset;
179
+ }
180
+ }
181
+ /* stylelint-enable scss/operator-no-newline-after */
182
+ }
183
+ }
184
+ }
@@ -0,0 +1,30 @@
1
+ // @graupl/core flex columns layout variables.
2
+ //
3
+ // These values are to be used to directly style components and provide a
4
+ // cleaner way to reference custom properties.
5
+
6
+ @use "defaults";
7
+ @use "../../defaults" as root-defaults;
8
+ @use "../columns/variables" as columns-variables;
9
+
10
+ // Flex columns properties.
11
+ $flex-columns-row-gap: var(
12
+ --#{root-defaults.$prefix}flex-columns-row-gap,
13
+ #{columns-variables.$columns-row-gap}
14
+ );
15
+ $flex-columns-column-gap: var(
16
+ --#{root-defaults.$prefix}flex-columns-column-gap,
17
+ #{columns-variables.$columns-column-gap}
18
+ );
19
+ $flex-columns-size: var(
20
+ --#{root-defaults.$prefix}flex-columns-size,
21
+ #{defaults.$flex-columns-size}
22
+ );
23
+ $flex-columns-max-width: var(
24
+ --#{root-defaults.$prefix}flex-columns-max-width,
25
+ #{defaults.$flex-columns-max-width}
26
+ );
27
+ $flex-columns-container-type: var(
28
+ --#{root-defaults.$prefix}flex-columns-container-type,
29
+ #{defaults.$flex-columns-container-type}
30
+ );
@@ -0,0 +1,15 @@
1
+ // @graupl/core animation media query mixins.
2
+
3
+ // A media query for targeting users who have not requested reduced motion.
4
+ @mixin on {
5
+ @media (prefers-reduced-motion: no-preference) {
6
+ @content;
7
+ }
8
+ }
9
+
10
+ // A media query for targeting users who have requested reduced motion.
11
+ @mixin off {
12
+ @media (prefers-reduced-motion: reduce) {
13
+ @content;
14
+ }
15
+ }
@@ -0,0 +1,80 @@
1
+ // @graupl/core container mixins.
2
+ //
3
+ // A series of mixins to generate breakpoints.
4
+
5
+ // @use "../defaults" as root-defaults;
6
+ @use "../functions/container";
7
+ @use "../defaults" as root-defaults;
8
+ @use "sass:map";
9
+ @use "sass:meta";
10
+
11
+ // A mixin to generate a minimum container width media query.
12
+ @mixin up($size) {
13
+ $container-size: container.min($size);
14
+
15
+ @container (#{$container-size} <= width) {
16
+ @content;
17
+ }
18
+ }
19
+
20
+ // A mixin to generate a maximum container width media query.
21
+ @mixin down($size) {
22
+ $container-size: container.max($size);
23
+
24
+ @container (width <= #{$container-size}) {
25
+ @content;
26
+ }
27
+ }
28
+
29
+ // A mixin to generate a range of container widths media query.
30
+ @mixin between($min, $max) {
31
+ $container-size: container.range($min, $max);
32
+ $min: map.get($container-size, "min");
33
+ $max: map.get($container-size, "max");
34
+
35
+ @container (#{$min} <= width <= #{$max}) {
36
+ @content;
37
+ }
38
+ }
39
+
40
+ @mixin only($size) {
41
+ @include between($size, $size) {
42
+ @content;
43
+ }
44
+ }
45
+
46
+ @mixin trigger($trigger) {
47
+ @if not map.has-key(root-defaults.$container-size-triggers, $trigger) {
48
+ @error "The container size trigger \"#{$trigger}\" does not exist.";
49
+ }
50
+
51
+ $container-size-trigger: map.get(
52
+ root-defaults.$container-size-triggers,
53
+ $trigger
54
+ );
55
+
56
+ @if not map.has-key($container-size-trigger, "mixin") {
57
+ @error "The container size trigger \"#{$trigger}\" does not have a mixin key.";
58
+ }
59
+
60
+ @if not map.has-key($container-size-trigger, "args") {
61
+ @error "The container size trigger \"#{$trigger}\" does not have an args key.";
62
+ }
63
+
64
+ $mixin-name: map.get($container-size-trigger, "mixin");
65
+ $mixin-args: map.get($container-size-trigger, "args");
66
+
67
+ @if not meta.mixin-exists($mixin-name) {
68
+ @error "The mixin \"#{$mixin-name}\" does not exist.";
69
+ }
70
+
71
+ $mixin: meta.get-mixin($mixin-name);
72
+
73
+ @if meta.accepts-content($mixin) {
74
+ @include meta.apply($mixin, $mixin-args...) {
75
+ @content;
76
+ }
77
+ } @else {
78
+ @warn "The mixin \"#{$mixin-name}\" does not accept content.";
79
+ }
80
+ }
@@ -0,0 +1,16 @@
1
+ // @graupl/core layer mixins.
2
+ //
3
+ // These should be used to define the layers of your components to ensure that
4
+ // they are output in the correct order in the final compiled CSS.
5
+
6
+ @use "../defaults" as root-defaults;
7
+
8
+ @mixin layer($layer) {
9
+ @if root-defaults.$use-layers {
10
+ @layer #{root-defaults.$id}.#{$layer} {
11
+ @content;
12
+ }
13
+ } @else {
14
+ @content;
15
+ }
16
+ }
@@ -0,0 +1,77 @@
1
+ // @graupl/core screen mixins.
2
+ //
3
+ // A series of mixins to generate breakpoints.
4
+
5
+ // @use "../defaults" as root-defaults;
6
+ @use "../functions/screen";
7
+ @use "../defaults" as root-defaults;
8
+ @use "sass:map";
9
+ @use "sass:meta";
10
+
11
+ // A mixin to generate a minimum screen width media query.
12
+ @mixin up($size) {
13
+ $screen-size: screen.min($size);
14
+
15
+ @media screen and (#{$screen-size} <= width) {
16
+ @content;
17
+ }
18
+ }
19
+
20
+ // A mixin to generate a maximum screen width media query.
21
+ @mixin down($size) {
22
+ $screen-size: screen.max($size);
23
+
24
+ @media screen and (width <= #{$screen-size}) {
25
+ @content;
26
+ }
27
+ }
28
+
29
+ // A mixin to generate a range of screen widths media query.
30
+ @mixin between($min, $max) {
31
+ $screen-size: screen.range($min, $max);
32
+ $min: map.get($screen-size, "min");
33
+ $max: map.get($screen-size, "max");
34
+
35
+ @media screen and (#{$min} <= width <= #{$max}) {
36
+ @content;
37
+ }
38
+ }
39
+
40
+ @mixin only($size) {
41
+ @include between($size, $size) {
42
+ @content;
43
+ }
44
+ }
45
+
46
+ @mixin trigger($trigger) {
47
+ @if not map.has-key(root-defaults.$screen-size-triggers, $trigger) {
48
+ @error "The screen size trigger \"#{$trigger}\" does not exist.";
49
+ }
50
+
51
+ $screen-size-trigger: map.get(root-defaults.$screen-size-triggers, $trigger);
52
+
53
+ @if not map.has-key($screen-size-trigger, "mixin") {
54
+ @error "The screen size trigger \"#{$trigger}\" does not have a mixin key.";
55
+ }
56
+
57
+ @if not map.has-key($screen-size-trigger, "args") {
58
+ @error "The screen size trigger \"#{$trigger}\" does not have an args key.";
59
+ }
60
+
61
+ $mixin-name: map.get($screen-size-trigger, "mixin");
62
+ $mixin-args: map.get($screen-size-trigger, "args");
63
+
64
+ @if not meta.mixin-exists($mixin-name) {
65
+ @error "The mixin \"#{$mixin-name}\" does not exist.";
66
+ }
67
+
68
+ $mixin: meta.get-mixin($mixin-name);
69
+
70
+ @if meta.accepts-content($mixin) {
71
+ @include meta.apply($mixin, $mixin-args...) {
72
+ @content;
73
+ }
74
+ } @else {
75
+ @warn "The mixin \"#{$mixin-name}\" does not accept content.";
76
+ }
77
+ }
@@ -0,0 +1,18 @@
1
+ // @graupl/core state mixins.
2
+ //
3
+ // A series of mixins to tie styles to a state.
4
+
5
+ @use "../defaults" as root-defaults;
6
+ @use "sass:map";
7
+
8
+ /// Applies styles to a specific state.
9
+ ///
10
+ /// @param {string} $state
11
+ /// The name of the state to apply the styles to.
12
+ @mixin state($state) {
13
+ @each $selector in map.get(root-defaults.$state-selectors, $state) {
14
+ &#{$selector} {
15
+ @content;
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,15 @@
1
+ // @graupl/core theme mixins.
2
+ //
3
+ // A series of mixins to tie styles to a theme-mode.
4
+
5
+ @use "../theme/color/defaults" as color-defaults;
6
+
7
+ /// Applies styles to a specific theme mode.
8
+ ///
9
+ /// @param {string} $theme-name
10
+ /// The name of the theme mode to apply the styles to.
11
+ @mixin theme($theme-name) {
12
+ #{color-defaults.$theme-selector-prefix}#{$theme-name}#{color-defaults.$theme-selector-suffix} {
13
+ @content;
14
+ }
15
+ }