@graupl/graupl 1.0.0-alpha.9 → 1.0.0-beta.1

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 (350) hide show
  1. package/.github/workflows/codeql-analysis.yml +3 -3
  2. package/.husky/commit-msg +0 -1
  3. package/.husky/pre-commit +0 -1
  4. package/CHANGELOG.md +160 -0
  5. package/build.js +7 -0
  6. package/dist/css/base/button.css +2 -0
  7. package/dist/css/base/button.css.map +1 -0
  8. package/dist/css/base/form.css +2 -0
  9. package/dist/css/base/form.css.map +1 -0
  10. package/dist/css/base/link.css +2 -0
  11. package/dist/css/base/link.css.map +1 -0
  12. package/dist/css/base/table.css +2 -0
  13. package/dist/css/base/table.css.map +1 -0
  14. package/dist/css/base.css +2 -0
  15. package/dist/css/base.css.map +1 -0
  16. package/dist/css/component/accordion.css +2 -0
  17. package/dist/css/component/accordion.css.map +1 -0
  18. package/dist/css/component/alert.css +2 -0
  19. package/dist/css/component/alert.css.map +1 -0
  20. package/dist/css/component/card.css +2 -0
  21. package/dist/css/component/card.css.map +1 -0
  22. package/dist/css/component/carousel.css +2 -0
  23. package/dist/css/component/carousel.css.map +1 -0
  24. package/dist/css/component/input-group.css +2 -0
  25. package/dist/css/component/input-group.css.map +1 -0
  26. package/dist/css/component/menu.css +2 -0
  27. package/dist/css/component/menu.css.map +1 -0
  28. package/dist/css/component/navigation.css +2 -0
  29. package/dist/css/component/navigation.css.map +1 -0
  30. package/dist/css/component.css +2 -0
  31. package/dist/css/component.css.map +1 -0
  32. package/dist/css/graupl.css +2 -0
  33. package/dist/css/graupl.css.map +1 -0
  34. package/dist/css/init.css +2 -0
  35. package/dist/css/init.css.map +1 -0
  36. package/dist/css/layout/columns.css +2 -0
  37. package/dist/css/layout/columns.css.map +1 -0
  38. package/dist/css/layout/container.css +2 -0
  39. package/dist/css/layout/container.css.map +1 -0
  40. package/dist/css/layout/flex-columns.css +2 -0
  41. package/dist/css/layout/flex-columns.css.map +1 -0
  42. package/dist/css/layout.css +2 -0
  43. package/dist/css/layout.css.map +1 -0
  44. package/dist/css/normalize.css +2 -0
  45. package/dist/css/normalize.css.map +1 -0
  46. package/dist/css/state/focus.css +2 -0
  47. package/dist/css/state/focus.css.map +1 -0
  48. package/dist/css/state.css +2 -0
  49. package/dist/css/state.css.map +1 -0
  50. package/dist/css/theme/color.css +2 -0
  51. package/dist/css/theme/color.css.map +1 -0
  52. package/dist/css/theme/typography.css +2 -0
  53. package/dist/css/theme/typography.css.map +1 -0
  54. package/dist/css/theme.css +2 -0
  55. package/dist/css/theme.css.map +1 -0
  56. package/dist/css/utilities/alignment.css +2 -0
  57. package/dist/css/utilities/alignment.css.map +1 -0
  58. package/dist/css/utilities/color.css +2 -0
  59. package/dist/css/utilities/color.css.map +1 -0
  60. package/dist/css/utilities/display.css +2 -0
  61. package/dist/css/utilities/display.css.map +1 -0
  62. package/dist/css/utilities/flex.css +2 -0
  63. package/dist/css/utilities/flex.css.map +1 -0
  64. package/dist/css/utilities/height.css +2 -0
  65. package/dist/css/utilities/height.css.map +1 -0
  66. package/dist/css/utilities/inset.css +2 -0
  67. package/dist/css/utilities/inset.css.map +1 -0
  68. package/dist/css/utilities/justification.css +2 -0
  69. package/dist/css/utilities/justification.css.map +1 -0
  70. package/dist/css/utilities/list.css +2 -0
  71. package/dist/css/utilities/list.css.map +1 -0
  72. package/dist/css/utilities/order.css +2 -0
  73. package/dist/css/utilities/order.css.map +1 -0
  74. package/dist/css/utilities/postion.css +2 -0
  75. package/dist/css/utilities/postion.css.map +1 -0
  76. package/dist/css/utilities/ratio.css +2 -0
  77. package/dist/css/utilities/ratio.css.map +1 -0
  78. package/dist/css/utilities/spacing.css +2 -0
  79. package/dist/css/utilities/spacing.css.map +1 -0
  80. package/dist/css/utilities/typography.css +2 -0
  81. package/dist/css/utilities/typography.css.map +1 -0
  82. package/dist/css/utilities/visibility.css +2 -0
  83. package/dist/css/utilities/visibility.css.map +1 -0
  84. package/dist/css/utilities/width.css +2 -0
  85. package/dist/css/utilities/width.css.map +1 -0
  86. package/dist/css/utilities.css +2 -0
  87. package/dist/css/utilities.css.map +1 -0
  88. package/dist/js/component/accordion.cjs.js +3 -0
  89. package/dist/js/component/accordion.esm.js +1289 -0
  90. package/dist/js/component/accordion.iife.js +3 -0
  91. package/dist/js/component/alert.cjs.js +3 -0
  92. package/dist/js/component/alert.esm.js +529 -0
  93. package/dist/js/component/alert.iife.js +3 -0
  94. package/dist/js/component/carousel.cjs.js +3 -0
  95. package/dist/js/component/carousel.esm.js +1110 -0
  96. package/dist/js/component/carousel.iife.js +3 -0
  97. package/dist/js/graupl.cjs.js +5 -0
  98. package/dist/js/graupl.esm.js +1462 -0
  99. package/dist/js/graupl.iife.js +5 -0
  100. package/docs/.vitepress/config.js +39 -12
  101. package/docs/components/alert.md +130 -0
  102. package/docs/components/button.md +84 -0
  103. package/docs/components/card.md +369 -0
  104. package/docs/components/index.md +1 -0
  105. package/docs/components/inputgroup.md +159 -0
  106. package/docs/components/menu.md +326 -0
  107. package/docs/components/navigation.md +158 -0
  108. package/docs/content.md +237 -0
  109. package/docs/defaults.md +121 -0
  110. package/docs/forms.md +79 -0
  111. package/docs/functions.md +9 -0
  112. package/docs/getting-started.md +1 -0
  113. package/docs/index.md +1 -7
  114. package/docs/introduction.md +22 -2
  115. package/docs/layout.md +200 -0
  116. package/docs/mixins.md +47 -0
  117. package/docs/state.md +67 -0
  118. package/docs/theme.md +258 -0
  119. package/docs/utilities.md +357 -0
  120. package/eslint.config.js +1 -0
  121. package/index.html +816 -327
  122. package/index.js +12 -0
  123. package/package.json +31 -10
  124. package/scss/base/button.scss +3 -0
  125. package/scss/base/form.scss +1 -1
  126. package/scss/base/link.scss +1 -1
  127. package/scss/base/table.scss +1 -1
  128. package/scss/base.scss +1 -1
  129. package/scss/component/accordion.scss +3 -0
  130. package/scss/component/alert.scss +3 -0
  131. package/scss/component/card.scss +3 -0
  132. package/scss/component/carousel.scss +3 -0
  133. package/scss/component/input-group.scss +1 -1
  134. package/scss/component/menu.scss +3 -0
  135. package/scss/component/navigation.scss +3 -0
  136. package/scss/component.scss +1 -1
  137. package/scss/graupl.scss +1 -3
  138. package/scss/init.scss +3 -0
  139. package/scss/layout/columns.scss +1 -1
  140. package/scss/layout/container.scss +1 -1
  141. package/scss/layout/flex-columns.scss +3 -0
  142. package/scss/layout.scss +1 -1
  143. package/scss/normalize.scss +3 -0
  144. package/scss/state/focus.scss +1 -1
  145. package/scss/state.scss +1 -1
  146. package/scss/theme/color.scss +1 -1
  147. package/scss/theme/typography.scss +1 -1
  148. package/scss/theme.scss +1 -1
  149. package/scss/utilities/alignment.scss +3 -0
  150. package/scss/utilities/color.scss +3 -0
  151. package/scss/utilities/display.scss +3 -0
  152. package/scss/utilities/flex.scss +3 -0
  153. package/scss/utilities/height.scss +3 -0
  154. package/scss/utilities/inset.scss +3 -0
  155. package/scss/utilities/justification.scss +3 -0
  156. package/scss/utilities/list.scss +3 -0
  157. package/scss/utilities/order.scss +3 -0
  158. package/scss/utilities/postion.scss +3 -0
  159. package/scss/utilities/ratio.scss +3 -0
  160. package/scss/utilities/spacing.scss +1 -1
  161. package/scss/utilities/typography.scss +1 -1
  162. package/scss/utilities/visibility.scss +3 -0
  163. package/scss/utilities/width.scss +3 -0
  164. package/scss/utilities.scss +1 -1
  165. package/src/js/accordion/Accordion.js +1163 -0
  166. package/src/js/accordion/AccordionItem.js +496 -0
  167. package/src/js/accordion/index.js +10 -0
  168. package/src/js/alert/Alert.js +581 -0
  169. package/src/js/alert/index.js +11 -0
  170. package/src/js/carousel/Carousel.js +1427 -0
  171. package/src/js/carousel/index.js +10 -0
  172. package/src/js/domHelpers.js +37 -0
  173. package/src/js/eventHandlers.js +39 -0
  174. package/src/js/navigation/index.js +36 -0
  175. package/src/js/storage.js +106 -0
  176. package/src/js/validate.js +225 -0
  177. package/src/scss/_defaults.scss +75 -6
  178. package/src/scss/_index.scss +4 -3
  179. package/src/scss/_init.scss +2 -2
  180. package/src/scss/_normalize.scss +197 -0
  181. package/src/scss/_variables.scss +17 -17
  182. package/src/scss/base/_index.scss +2 -1
  183. package/src/scss/base/button/_defaults.scss +60 -0
  184. package/src/scss/base/button/_index.scss +107 -0
  185. package/src/scss/base/button/_mixins.scss +166 -0
  186. package/src/scss/base/button/_variables.scss +176 -0
  187. package/src/scss/base/form/_defaults.scss +14 -4
  188. package/src/scss/base/form/_index.scss +23 -20
  189. package/src/scss/base/form/_variables.scss +46 -37
  190. package/src/scss/base/link/_defaults.scss +48 -5
  191. package/src/scss/base/link/_index.scss +111 -10
  192. package/src/scss/base/link/_variables.scss +239 -9
  193. package/src/scss/base/table/_defaults.scss +49 -4
  194. package/src/scss/base/table/_index.scss +102 -8
  195. package/src/scss/base/table/_variables.scss +87 -17
  196. package/src/scss/component/_index.scss +7 -3
  197. package/src/scss/component/accordion/_defaults.scss +40 -0
  198. package/src/scss/component/accordion/_index.scss +180 -0
  199. package/src/scss/component/accordion/_variables.scss +316 -0
  200. package/src/scss/component/alert/_defaults.scss +49 -0
  201. package/src/scss/component/alert/_index.scss +118 -0
  202. package/src/scss/component/alert/_variables.scss +170 -0
  203. package/src/scss/component/card/_defaults.scss +32 -0
  204. package/src/scss/component/card/_index.scss +178 -0
  205. package/src/scss/component/card/_variables.scss +186 -0
  206. package/src/scss/component/carousel/_defaults.scss +43 -0
  207. package/src/scss/component/carousel/_index.scss +188 -0
  208. package/src/scss/component/carousel/_variables.scss +104 -0
  209. package/src/scss/component/input-group/_defaults.scss +11 -4
  210. package/src/scss/component/input-group/_index.scss +13 -11
  211. package/src/scss/component/input-group/_variables.scss +16 -13
  212. package/src/scss/component/menu/_defaults.scss +66 -0
  213. package/src/scss/component/menu/_index.scss +305 -0
  214. package/src/scss/component/menu/_variables.scss +500 -0
  215. package/src/scss/component/navigation/_defaults.scss +29 -0
  216. package/src/scss/component/navigation/_index.scss +189 -0
  217. package/src/scss/component/navigation/_variables.scss +237 -0
  218. package/src/scss/functions/_important.scss +2 -0
  219. package/src/scss/functions/_screen.scss +30 -0
  220. package/src/scss/functions/_theme.scss +28 -7
  221. package/src/scss/layout/_index.scss +2 -1
  222. package/src/scss/layout/columns/_defaults.scss +12 -4
  223. package/src/scss/layout/columns/_index.scss +32 -10
  224. package/src/scss/layout/columns/_variables.scss +13 -9
  225. package/src/scss/layout/container/_defaults.scss +13 -4
  226. package/src/scss/layout/container/_index.scss +12 -7
  227. package/src/scss/layout/container/_variables.scss +14 -11
  228. package/src/scss/layout/flex-columns/_defaults.scss +18 -0
  229. package/src/scss/layout/flex-columns/_index.scss +80 -0
  230. package/src/scss/layout/flex-columns/_variables.scss +26 -0
  231. package/src/scss/mixins/_animation.scss +15 -0
  232. package/src/scss/mixins/_layer.scss +3 -5
  233. package/src/scss/mixins/_screen.scss +56 -0
  234. package/src/scss/mixins/_utility.scss +30 -0
  235. package/src/scss/mixins/_visually-hidden.scss +20 -0
  236. package/src/scss/state/_index.scss +1 -1
  237. package/src/scss/state/focus/_defaults.scss +6 -4
  238. package/src/scss/state/focus/_index.scss +7 -7
  239. package/src/scss/state/focus/_mixins.scss +15 -0
  240. package/src/scss/state/focus/_variables.scss +14 -10
  241. package/src/scss/theme/_index.scss +1 -1
  242. package/src/scss/theme/color/_defaults.scss +101 -19
  243. package/src/scss/theme/color/_index.scss +18 -18
  244. package/src/scss/theme/color/_variables.scss +73 -65
  245. package/src/scss/theme/typography/_defaults.scss +7 -5
  246. package/src/scss/theme/typography/_index.scss +1 -1
  247. package/src/scss/theme/typography/_variables.scss +62 -58
  248. package/src/scss/utilities/_index.scss +14 -2
  249. package/src/scss/utilities/alignment/_defaults.scss +62 -0
  250. package/src/scss/utilities/alignment/_index.scss +75 -0
  251. package/src/scss/utilities/alignment/_variables.scss +6 -0
  252. package/src/scss/utilities/color/_defaults.scss +35 -0
  253. package/src/scss/utilities/color/_index.scss +91 -0
  254. package/src/scss/utilities/color/_variables.scss +6 -0
  255. package/src/scss/utilities/display/_defaults.scss +32 -0
  256. package/src/scss/utilities/display/_index.scss +61 -0
  257. package/src/scss/utilities/display/_variables.scss +6 -0
  258. package/src/scss/utilities/flex/_defaults.scss +63 -0
  259. package/src/scss/utilities/flex/_index.scss +71 -0
  260. package/src/scss/utilities/flex/_variables.scss +6 -0
  261. package/src/scss/utilities/height/_defaults.scss +41 -0
  262. package/src/scss/utilities/height/_index.scss +98 -0
  263. package/src/scss/utilities/height/_variables.scss +6 -0
  264. package/src/scss/utilities/inset/_defaults.scss +41 -0
  265. package/src/scss/utilities/inset/_index.scss +37 -0
  266. package/src/scss/utilities/inset/_variables.scss +6 -0
  267. package/src/scss/utilities/justification/_defaults.scss +59 -0
  268. package/src/scss/utilities/justification/_index.scss +75 -0
  269. package/src/scss/utilities/justification/_variables.scss +6 -0
  270. package/src/scss/utilities/list/_defaults.scss +39 -0
  271. package/src/scss/utilities/list/_index.scss +56 -0
  272. package/src/scss/utilities/list/_variables.scss +6 -0
  273. package/src/scss/utilities/order/_defaults.scss +22 -0
  274. package/src/scss/utilities/order/_index.scss +63 -0
  275. package/src/scss/utilities/order/_variables.scss +6 -0
  276. package/src/scss/utilities/position/_defaults.scss +26 -0
  277. package/src/scss/utilities/position/_index.scss +37 -0
  278. package/src/scss/utilities/position/_variables.scss +6 -0
  279. package/src/scss/utilities/ratio/_defaults.scss +28 -0
  280. package/src/scss/utilities/ratio/_index.scss +52 -0
  281. package/src/scss/utilities/ratio/_variables.scss +9 -0
  282. package/src/scss/utilities/spacing/_defaults.scss +9 -4
  283. package/src/scss/utilities/spacing/_index.scss +138 -33
  284. package/src/scss/utilities/spacing/_variables.scss +5 -2
  285. package/src/scss/utilities/typography/_defaults.scss +29 -4
  286. package/src/scss/utilities/typography/_index.scss +155 -23
  287. package/src/scss/utilities/typography/_variables.scss +5 -2
  288. package/src/scss/utilities/visibility/_defaults.scss +25 -0
  289. package/src/scss/utilities/visibility/_index.scss +36 -0
  290. package/src/scss/utilities/visibility/_variables.scss +6 -0
  291. package/src/scss/utilities/width/_defaults.scss +41 -0
  292. package/src/scss/utilities/width/_index.scss +98 -0
  293. package/src/scss/utilities/width/_variables.scss +6 -0
  294. package/stylelint.config.js +5 -0
  295. package/vite.config.js +57 -0
  296. package/dist/base/form.css +0 -2
  297. package/dist/base/form.css.map +0 -1
  298. package/dist/base/link.css +0 -2
  299. package/dist/base/link.css.map +0 -1
  300. package/dist/base/table.css +0 -2
  301. package/dist/base/table.css.map +0 -1
  302. package/dist/base.css +0 -2
  303. package/dist/base.css.map +0 -1
  304. package/dist/component/button.css +0 -2
  305. package/dist/component/button.css.map +0 -1
  306. package/dist/component/input-group.css +0 -2
  307. package/dist/component/input-group.css.map +0 -1
  308. package/dist/component/table.css +0 -2
  309. package/dist/component/table.css.map +0 -1
  310. package/dist/component.css +0 -2
  311. package/dist/component.css.map +0 -1
  312. package/dist/graupl.css +0 -2
  313. package/dist/graupl.css.map +0 -1
  314. package/dist/layout/columns.css +0 -2
  315. package/dist/layout/columns.css.map +0 -1
  316. package/dist/layout/container.css +0 -2
  317. package/dist/layout/container.css.map +0 -1
  318. package/dist/layout.css +0 -2
  319. package/dist/layout.css.map +0 -1
  320. package/dist/state/focus.css +0 -2
  321. package/dist/state/focus.css.map +0 -1
  322. package/dist/state.css +0 -2
  323. package/dist/state.css.map +0 -1
  324. package/dist/theme/color.css +0 -2
  325. package/dist/theme/color.css.map +0 -1
  326. package/dist/theme/typography.css +0 -2
  327. package/dist/theme/typography.css.map +0 -1
  328. package/dist/theme.css +0 -2
  329. package/dist/theme.css.map +0 -1
  330. package/dist/utilities/colors.css +0 -2
  331. package/dist/utilities/colors.css.map +0 -1
  332. package/dist/utilities/spacing.css +0 -2
  333. package/dist/utilities/spacing.css.map +0 -1
  334. package/dist/utilities/typography.css +0 -2
  335. package/dist/utilities/typography.css.map +0 -1
  336. package/dist/utilities.css +0 -2
  337. package/dist/utilities.css.map +0 -1
  338. package/scss/component/button.scss +0 -3
  339. package/scss/component/table.scss +0 -3
  340. package/scss/utilities/colors.scss +0 -3
  341. package/src/scss/component/button/_defaults.scss +0 -39
  342. package/src/scss/component/button/_index.scss +0 -98
  343. package/src/scss/component/button/_variables.scss +0 -131
  344. package/src/scss/component/table/_defaults.scss +0 -30
  345. package/src/scss/component/table/_index.scss +0 -77
  346. package/src/scss/component/table/_variables.scss +0 -64
  347. package/src/scss/mixins/_media-queries.scss +0 -26
  348. package/src/scss/utilities/colors/_defaults.scss +0 -5
  349. package/src/scss/utilities/colors/_index.scss +0 -22
  350. package/src/scss/utilities/colors/_variables.scss +0 -3
@@ -1,63 +1,168 @@
1
- // Graupl spacing utilities.
1
+ // @graupl/graupl spacing utilities styles.
2
+ //
3
+ // Responsive class must be within their own loop to prevent specificity issues.
4
+ // This keeps responsive specificity tied to screen size before property order.
2
5
 
3
- @use "variables" as *;
4
- @use "defaults" as defaults;
5
- @use "../../mixins/layer" as *;
6
+ @use "../../defaults" as root-defaults;
6
7
  @use "../../functions/important";
8
+ @use "../../layout/columns/defaults" as columns-defaults;
9
+ @use "../../layout/flex-columns/defaults" as flex-columns-defaults;
10
+ @use "../../mixins/layer" as *;
11
+ @use "../../mixins/utility";
7
12
  @use "../../variables" as root-variables;
8
- @use "../../defaults" as root-defaults;
13
+ @use "defaults";
14
+ @use "sass:map";
15
+ @use "variables" as *;
9
16
 
10
17
  @include layer(utilities) {
11
18
  // For each spacing property, create a utility class.
12
19
  @each $name, $property in defaults.$spacing-properties {
13
20
  @each $key, $value in root-variables.$spacers {
14
- .#{$name}-#{$key} {
15
- // If we're dealing with gap, column-gap, or row-gap inside of .columns, we should update
16
- // the columns-column-gap property instead of the raw property.
17
- @if $name == "g" {
18
- &.columns {
19
- --#{root-defaults.$prefix}-columns-column-gap: #{important.insert(
21
+ $selector: ".#{$name}-#{$key}";
22
+
23
+ // If we're dealing with gap, column-gap, or row-gap inside of #{columns-defaults.$columns-selector}, we should update
24
+ // the columns-column-gap property instead of the raw property.
25
+ @if $name == "g" {
26
+ @include utility.create($selector, $property, $value) {
27
+ &#{columns-defaults.$columns-selector} {
28
+ --#{root-defaults.$prefix}columns-column-gap: #{important.insert(
20
29
  $value
21
30
  )};
22
- --#{root-defaults.$prefix}-columns-row-gap: #{important.insert(
31
+ --#{root-defaults.$prefix}columns-row-gap: #{important.insert(
23
32
  $value
24
33
  )};
25
34
  }
26
35
 
27
- &:not(.columns) {
28
- @each $prop in $property {
29
- #{$prop}: important.insert($value);
30
- }
36
+ &#{flex-columns-defaults.$flex-columns-selector} {
37
+ --#{root-defaults.$prefix}flex-columns-column-gap: #{important.insert(
38
+ $value
39
+ )};
40
+ --#{root-defaults.$prefix}flex-columns-row-gap: #{important.insert(
41
+ $value
42
+ )};
31
43
  }
32
- } @else if $name == "cg" {
33
- &.columns {
34
- --#{root-defaults.$prefix}-columns-column-gap: #{important.insert(
44
+ }
45
+ } @else if $name == "cg" {
46
+ @include utility.create($selector, $property, $value) {
47
+ &#{columns-defaults.$columns-selector} {
48
+ --#{root-defaults.$prefix}columns-column-gap: #{important.insert(
35
49
  $value
36
50
  )};
37
51
  }
38
52
 
39
- &:not(.columns) {
40
- @each $prop in $property {
41
- #{$prop}: important.insert($value);
42
- }
53
+ &#{flex-columns-defaults.$flex-columns-selector} {
54
+ --#{root-defaults.$prefix}flex-columns-column-gap: #{important.insert(
55
+ $value
56
+ )};
57
+ }
58
+ }
59
+ } @else if $name == "rg" {
60
+ @include utility.create($selector, $property, $value) {
61
+ &#{columns-defaults.$columns-selector} {
62
+ --#{root-defaults.$prefix}columns-row-gap: #{important.insert(
63
+ $value
64
+ )};
43
65
  }
44
- } @else if $name == "rg" {
45
- &.columns {
46
- --#{root-defaults.$prefix}-columns-row-gap: #{important.insert(
66
+
67
+ &#{flex-columns-defaults.$flex-columns-selector} {
68
+ --#{root-defaults.$prefix}flex-columns-row-gap: #{important.insert(
47
69
  $value
48
70
  )};
49
71
  }
72
+ }
73
+ } @else {
74
+ @include utility.create($selector, $property, $value);
75
+ }
76
+ }
77
+
78
+ // Create the "auto" utility class.
79
+ @include utility.create("#{$name}-auto", $property, auto);
80
+ }
50
81
 
51
- &:not(.columns) {
52
- @each $prop in $property {
53
- #{$prop}: important.insert($value);
82
+ // Generate responsive utilities.
83
+ @if defaults.$responsive and root-defaults.$responsive-utilities {
84
+ @each $screen-size in map.keys(root-defaults.$screen-sizes) {
85
+ @each $name, $property in defaults.$spacing-properties {
86
+ @each $key, $value in root-variables.$spacers {
87
+ $selector: ".#{$screen-size}#{root-defaults.$responsive-separator}#{$name}-#{$key}";
88
+
89
+ // If we're dealing with gap, column-gap, or row-gap inside of #{columns-defaults.$columns-selector}, we should update
90
+ // the columns-column-gap property instead of the raw property.
91
+ @if $name == "g" {
92
+ @include utility.create(
93
+ $selector,
94
+ $property,
95
+ $value,
96
+ $screen-size
97
+ ) {
98
+ &#{columns-defaults.$columns-selector} {
99
+ --#{root-defaults.$prefix}columns-column-gap: #{important.insert(
100
+ $value
101
+ )};
102
+ --#{root-defaults.$prefix}columns-row-gap: #{important.insert(
103
+ $value
104
+ )};
105
+ }
106
+
107
+ &#{flex-columns-defaults.$flex-columns-selector} {
108
+ --#{root-defaults.$prefix}flex-columns-column-gap: #{important.insert(
109
+ $value
110
+ )};
111
+ --#{root-defaults.$prefix}flex-columns-row-gap: #{important.insert(
112
+ $value
113
+ )};
114
+ }
54
115
  }
55
- }
56
- } @else {
57
- @each $prop in $property {
58
- #{$prop}: important.insert($value);
116
+ } @else if $name == "cg" {
117
+ @include utility.create(
118
+ $selector,
119
+ $property,
120
+ $value,
121
+ $screen-size
122
+ ) {
123
+ &#{columns-defaults.$columns-selector} {
124
+ --#{root-defaults.$prefix}columns-column-gap: #{important.insert(
125
+ $value
126
+ )};
127
+ }
128
+
129
+ &#{flex-columns-defaults.$flex-columns-selector} {
130
+ --#{root-defaults.$prefix}flex-columns-column-gap: #{important.insert(
131
+ $value
132
+ )};
133
+ }
134
+ }
135
+ } @else if $name == "rg" {
136
+ @include utility.create(
137
+ $selector,
138
+ $property,
139
+ $value,
140
+ $screen-size
141
+ ) {
142
+ &#{columns-defaults.$columns-selector} {
143
+ --#{root-defaults.$prefix}columns-row-gap: #{important.insert(
144
+ $value
145
+ )};
146
+ }
147
+
148
+ &#{flex-columns-defaults.$flex-columns-selector} {
149
+ --#{root-defaults.$prefix}flex-columns-row-gap: #{important.insert(
150
+ $value
151
+ )};
152
+ }
153
+ }
154
+ } @else {
155
+ @include utility.create($selector, $property, $value, $screen-size);
59
156
  }
60
157
  }
158
+
159
+ // Create the "auto" utility class.
160
+ @include utility.create(
161
+ ".#{$screen-size}#{root-defaults.$responsive-separator}#{$name}-auto",
162
+ $property,
163
+ auto,
164
+ $screen-size
165
+ );
61
166
  }
62
167
  }
63
168
  }
@@ -1,3 +1,6 @@
1
- // Variables referencing custom properties.
1
+ // @graupl/graupl spacing utilities variables.
2
+ //
3
+ // These values are to be used to directly style components and provide a
4
+ // cleaner way to reference custom properties.
2
5
 
3
- @forward "defaults";
6
+ @use "defaults";
@@ -1,5 +1,30 @@
1
- // Default values for Graupl.
1
+ // @graupl/graupl typography utilities default values.
2
2
  //
3
- // Generally, these should not be used directly when styling components.
4
- // They are mainly used to provide default fallbacks for custom properties
5
- // which can be found in the `variables.scss` file.
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 "sass:map";
10
+
11
+ // Text size properties.
12
+ $text-class-prefix: "text-" !default;
13
+
14
+ // Font weight properties.
15
+ $font-weight-class-prefix: "font-" !default;
16
+
17
+ // Font style properties.
18
+ $font-style-class-prefix: "font-" !default;
19
+ $base-font-style-properties: (
20
+ normal: normal,
21
+ italic: italic,
22
+ );
23
+ $custom-font-style-properties: () !default;
24
+ $font-style-properties: map.merge(
25
+ $base-font-style-properties,
26
+ $custom-font-style-properties
27
+ );
28
+
29
+ // Responsive utility flag.
30
+ $responsive: false !default;
@@ -1,32 +1,46 @@
1
- // Graupl typography utilities.
1
+ // @graupl/graupl typography utilities styles.
2
+ //
3
+ // Responsive class must be within their own loop to prevent specificity issues.
4
+ // This keeps responsive specificity tied to screen size before property order.
2
5
 
3
- @use "variables" as *;
4
- @use "../../mixins/layer" as *;
6
+ @use "../../defaults" as root-defaults;
5
7
  @use "../../functions/important";
8
+ @use "../../mixins/layer" as *;
9
+ @use "../../mixins/screen";
10
+ @use "../../mixins/utility";
6
11
  @use "../../theme/typography/variables" as typography;
12
+ @use "defaults";
13
+ @use "sass:map";
14
+ @use "variables" as *;
7
15
 
8
16
  @include layer(utilities) {
17
+ // For each font size property, create a utility class.
9
18
  @each $size, $value in typography.$font-sizes {
10
- .text-#{$size} {
11
- font-size: important.insert($value);
12
- }
19
+ @include utility.create(
20
+ ".#{defaults.$text-class-prefix}#{$size}",
21
+ font-size,
22
+ $value
23
+ );
13
24
  }
14
25
 
15
- .text-paragraph {
26
+ // Create utility classes for each type of text style in Graupl.
27
+ // These will apply not only the font size, but also the margin, font weight, and line height.
28
+ // This will allow for a more consistent and maintainable typography system.
29
+ .#{defaults.$text-class-prefix}paragraph {
16
30
  margin: important.insert(typography.$paragraph-margin);
17
31
  font-size: important.insert(typography.$paragraph-font-size);
18
32
  font-weight: important.insert(typography.$paragraph-font-weight);
19
33
  line-height: important.insert(typography.$paragraph-line-height);
20
34
  }
21
35
 
22
- .text-small {
36
+ .#{defaults.$text-class-prefix}small {
23
37
  margin: important.insert(typography.$small-margin);
24
38
  font-size: important.insert(typography.$small-font-size);
25
39
  font-weight: important.insert(typography.$small-font-weight);
26
40
  line-height: important.insert(typography.$small-line-height);
27
41
  }
28
42
 
29
- .text-h1 {
43
+ .#{defaults.$text-class-prefix}h1 {
30
44
  margin: important.insert(typography.$h1-margin);
31
45
  font-family: important.insert(typography.$h1-font-family);
32
46
  font-size: important.insert(typography.$h1-font-size);
@@ -34,7 +48,7 @@
34
48
  line-height: important.insert(typography.$h1-line-height);
35
49
  }
36
50
 
37
- .text-h2 {
51
+ .#{defaults.$text-class-prefix}h2 {
38
52
  margin: important.insert(typography.$h2-margin);
39
53
  font-family: important.insert(typography.$h2-font-family);
40
54
  font-size: important.insert(typography.$h2-font-size);
@@ -42,7 +56,7 @@
42
56
  line-height: important.insert(typography.$h2-line-height);
43
57
  }
44
58
 
45
- .text-h3 {
59
+ .#{defaults.$text-class-prefix}h3 {
46
60
  margin: important.insert(typography.$h3-margin);
47
61
  font-family: important.insert(typography.$h3-font-family);
48
62
  font-size: important.insert(typography.$h3-font-size);
@@ -50,7 +64,7 @@
50
64
  line-height: important.insert(typography.$h3-line-height);
51
65
  }
52
66
 
53
- .text-h4 {
67
+ .#{defaults.$text-class-prefix}h4 {
54
68
  margin: important.insert(typography.$h4-margin);
55
69
  font-family: important.insert(typography.$h4-font-family);
56
70
  font-size: important.insert(typography.$h4-font-size);
@@ -58,7 +72,7 @@
58
72
  line-height: important.insert(typography.$h4-line-height);
59
73
  }
60
74
 
61
- .text-h5 {
75
+ .#{defaults.$text-class-prefix}h5 {
62
76
  margin: important.insert(typography.$h5-margin);
63
77
  font-family: important.insert(typography.$h5-font-family);
64
78
  font-size: important.insert(typography.$h5-font-size);
@@ -66,7 +80,7 @@
66
80
  line-height: important.insert(typography.$h5-line-height);
67
81
  }
68
82
 
69
- .text-h6 {
83
+ .#{defaults.$text-class-prefix}h6 {
70
84
  margin: important.insert(typography.$h6-margin);
71
85
  font-family: important.insert(typography.$h6-font-family);
72
86
  font-size: important.insert(typography.$h6-font-size);
@@ -74,19 +88,137 @@
74
88
  line-height: important.insert(typography.$h6-line-height);
75
89
  }
76
90
 
77
- // Font weight utilities.
91
+ // For each font weight property, create a utility class.
78
92
  @each $size, $value in typography.$font-weights {
79
- .font-#{$size} {
80
- font-weight: important.insert($value);
81
- }
93
+ @include utility.create(
94
+ ".#{defaults.$font-weight-class-prefix}#{$size}",
95
+ font-weight,
96
+ $value
97
+ );
82
98
  }
83
99
 
84
- // Font style utilities.
85
- .font-italic {
86
- font-style: important.insert(italic);
100
+ // For each font style property, create a utility class.
101
+ @each $size, $value in defaults.$font-style-properties {
102
+ @include utility.create(
103
+ ".#{defaults.$font-style-class-prefix}#{$size}",
104
+ font-style,
105
+ $value
106
+ );
87
107
  }
88
108
 
89
- .font-not-italic {
90
- font-style: important.insert(normal);
109
+ // Generate responsive utilities.
110
+ @if defaults.$responsive and root-defaults.$responsive-utilities {
111
+ @each $screen-size in map.keys(root-defaults.$screen-sizes) {
112
+ // For each font size property, create a utility class.
113
+ @each $size, $value in typography.$font-sizes {
114
+ @include utility.create(
115
+ ".#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}#{$size}",
116
+ font-size,
117
+ $value,
118
+ $screen-size
119
+ );
120
+ }
121
+
122
+ // Create utility classes for each type of text style in Graupl.
123
+ // These will apply not only the font size, but also the margin, font weight, and line height.
124
+ // This will allow for a more consistent and maintainable typography system.
125
+ .#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}paragraph {
126
+ @include screen.up($screen-size) {
127
+ margin: important.insert(typography.$paragraph-margin);
128
+ font-size: important.insert(typography.$paragraph-font-size);
129
+ font-weight: important.insert(typography.$paragraph-font-weight);
130
+ line-height: important.insert(typography.$paragraph-line-height);
131
+ }
132
+ }
133
+
134
+ .#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}small {
135
+ @include screen.up($screen-size) {
136
+ margin: important.insert(typography.$small-margin);
137
+ font-size: important.insert(typography.$small-font-size);
138
+ font-weight: important.insert(typography.$small-font-weight);
139
+ line-height: important.insert(typography.$small-line-height);
140
+ }
141
+ }
142
+
143
+ .#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}h1 {
144
+ @include screen.up($screen-size) {
145
+ margin: important.insert(typography.$h1-margin);
146
+ font-family: important.insert(typography.$h1-font-family);
147
+ font-size: important.insert(typography.$h1-font-size);
148
+ font-weight: important.insert(typography.$h1-font-weight);
149
+ line-height: important.insert(typography.$h1-line-height);
150
+ }
151
+ }
152
+
153
+ .#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}h2 {
154
+ @include screen.up($screen-size) {
155
+ margin: important.insert(typography.$h2-margin);
156
+ font-family: important.insert(typography.$h2-font-family);
157
+ font-size: important.insert(typography.$h2-font-size);
158
+ font-weight: important.insert(typography.$h2-font-weight);
159
+ line-height: important.insert(typography.$h2-line-height);
160
+ }
161
+ }
162
+
163
+ .#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}h3 {
164
+ @include screen.up($screen-size) {
165
+ margin: important.insert(typography.$h3-margin);
166
+ font-family: important.insert(typography.$h3-font-family);
167
+ font-size: important.insert(typography.$h3-font-size);
168
+ font-weight: important.insert(typography.$h3-font-weight);
169
+ line-height: important.insert(typography.$h3-line-height);
170
+ }
171
+ }
172
+
173
+ .#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}h4 {
174
+ @include screen.up($screen-size) {
175
+ margin: important.insert(typography.$h4-margin);
176
+ font-family: important.insert(typography.$h4-font-family);
177
+ font-size: important.insert(typography.$h4-font-size);
178
+ font-weight: important.insert(typography.$h4-font-weight);
179
+ line-height: important.insert(typography.$h4-line-height);
180
+ }
181
+ }
182
+
183
+ .#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}h5 {
184
+ @include screen.up($screen-size) {
185
+ margin: important.insert(typography.$h5-margin);
186
+ font-family: important.insert(typography.$h5-font-family);
187
+ font-size: important.insert(typography.$h5-font-size);
188
+ font-weight: important.insert(typography.$h5-font-weight);
189
+ line-height: important.insert(typography.$h5-line-height);
190
+ }
191
+ }
192
+
193
+ .#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$text-class-prefix}h6 {
194
+ @include screen.up($screen-size) {
195
+ margin: important.insert(typography.$h6-margin);
196
+ font-family: important.insert(typography.$h6-font-family);
197
+ font-size: important.insert(typography.$h6-font-size);
198
+ font-weight: important.insert(typography.$h6-font-weight);
199
+ line-height: important.insert(typography.$h6-line-height);
200
+ }
201
+ }
202
+
203
+ // For each font weight property, create a utility class.
204
+ @each $size, $value in typography.$font-weights {
205
+ @include utility.create(
206
+ ".#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$font-weight-class-prefix}#{$size}",
207
+ font-weight,
208
+ $value,
209
+ $screen-size
210
+ );
211
+ }
212
+
213
+ // For each font style property, create a utility class.
214
+ @each $size, $value in defaults.$font-style-properties {
215
+ @include utility.create(
216
+ ".#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$font-style-class-prefix}#{$size}",
217
+ font-style,
218
+ $value,
219
+ $screen-size
220
+ );
221
+ }
222
+ }
91
223
  }
92
224
  }
@@ -1,3 +1,6 @@
1
- // Variables referencing custom properties.
1
+ // @graupl/graupl typography utilities variables.
2
+ //
3
+ // These values are to be used to directly style components and provide a
4
+ // cleaner way to reference custom properties.
2
5
 
3
- @forward "defaults";
6
+ @use "defaults";
@@ -0,0 +1,25 @@
1
+ // @graupl/graupl visibility utilities 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 "sass:map";
10
+
11
+ // Visibility properties.
12
+ $visibility-class-prefix: "visibility-" !default;
13
+ $base-visibility-properties: (
14
+ visible: visible,
15
+ hidden: hidden,
16
+ collapse: collapse,
17
+ );
18
+ $custom-visibility-properties: () !default;
19
+ $visibility-properties: map.merge(
20
+ $base-visibility-properties,
21
+ $custom-visibility-properties
22
+ );
23
+
24
+ // Responsive utility flag.
25
+ $responsive: true !default;
@@ -0,0 +1,36 @@
1
+ // @graupl/graupl visibility utilities styles.
2
+ //
3
+ // Responsive class must be within their own loop to prevent specificity issues.
4
+ // This keeps responsive specificity tied to screen size before property order.
5
+
6
+ @use "../../defaults" as root-defaults;
7
+ @use "../../mixins/layer" as *;
8
+ @use "../../mixins/utility";
9
+ @use "defaults";
10
+ @use "sass:map";
11
+ @use "variables" as *;
12
+
13
+ @include layer(utilities) {
14
+ // For each visibility property, create a utility class.
15
+ @each $name, $value in defaults.$visibility-properties {
16
+ @include utility.create(
17
+ ".#{defaults.$visibility-class-prefix}#{$name}",
18
+ visibility,
19
+ $value
20
+ );
21
+ }
22
+
23
+ // Generate responsive utilities.
24
+ @if defaults.$responsive {
25
+ @each $screen-size in map.keys(root-defaults.$screen-sizes) {
26
+ @each $name, $value in defaults.$visibility-properties {
27
+ @include utility.create(
28
+ ".#{$screen-size}#{root-defaults.$responsive-separator}#{defaults.$visibility-class-prefix}#{$name}",
29
+ visibility,
30
+ $value,
31
+ $screen-size
32
+ );
33
+ }
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,6 @@
1
+ // @graupl/graupl visibility utilities 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";
@@ -0,0 +1,41 @@
1
+ // @graupl/graupl width utilities 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 "sass:map";
10
+
11
+ // Width properties.
12
+ $width-class-prefix: "w-" !default;
13
+ $max-width-class-prefix: "max-w-" !default;
14
+ $min-width-class-prefix: "min-w-" !default;
15
+
16
+ // Width values.
17
+ $base-width-values: (
18
+ auto: auto,
19
+ fit-content: fit-content,
20
+ max-content: max-content,
21
+ min-content: min-content,
22
+ stretch: stretch,
23
+ 0: 0,
24
+ full: 100%,
25
+ quarter: 25%,
26
+ half: 50%,
27
+ three-quarters: 75%,
28
+ third: calc(100% / 3),
29
+ two-thirds: calc(100% / 1.5),
30
+ half-screen: 50vw,
31
+ third-screen: calc(100vw / 3),
32
+ two-thirds-screen: calc(100vw / 1.5),
33
+ quarter-screen: 25vw,
34
+ three-quarters-screen: 75vw,
35
+ full-screen: 100vw,
36
+ );
37
+ $custom-width-values: () !default;
38
+ $width-values: map.merge($base-width-values, $custom-width-values);
39
+
40
+ // Responsive utility flag.
41
+ $responsive: false !default;