@ulu/frontend 0.1.0-beta.4 → 0.1.0-beta.41

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 (295) hide show
  1. package/CHANGELOG.md +337 -1
  2. package/dist/ulu-frontend.min.css +1 -1
  3. package/dist/ulu-frontend.min.js +28 -27
  4. package/docs-dev/assets/main.js +832 -421
  5. package/docs-dev/assets/placeholder/icon-calendar.svg +1 -0
  6. package/docs-dev/assets/placeholder/icon-check.svg +1 -0
  7. package/docs-dev/assets/style.css +629 -233
  8. package/docs-dev/changelog/index.html +6090 -0
  9. package/docs-dev/changelog/updates-and-changes/index.html +5109 -0
  10. package/docs-dev/demos/accordion/index.html +904 -321
  11. package/docs-dev/demos/basic-hero/index.html +111 -0
  12. package/docs-dev/demos/breakpoints-manager/index.html +5246 -0
  13. package/docs-dev/demos/button/index.html +916 -323
  14. package/docs-dev/demos/button-verbose/index.html +5238 -0
  15. package/docs-dev/demos/callout/index.html +951 -328
  16. package/docs-dev/demos/captioned-figure/index.html +904 -321
  17. package/docs-dev/demos/card/index.html +970 -748
  18. package/docs-dev/demos/card-grid/index.html +5357 -0
  19. package/docs-dev/demos/card-new/index.html +5088 -0
  20. package/docs-dev/demos/card-old/index.html +5223 -0
  21. package/docs-dev/demos/card.1/index.html +5223 -0
  22. package/docs-dev/demos/card.TRASH/index.html +5541 -0
  23. package/docs-dev/demos/counter-list/index.html +5224 -0
  24. package/docs-dev/demos/css-icons/index.html +904 -321
  25. package/docs-dev/demos/data-grid/index.html +1014 -511
  26. package/docs-dev/demos/data-table/index.html +1064 -348
  27. package/docs-dev/demos/details-group/index.html +5267 -0
  28. package/docs-dev/demos/file-save/index.html +904 -321
  29. package/docs-dev/demos/flipcard/index.html +904 -321
  30. package/docs-dev/demos/form-theme/index.html +922 -352
  31. package/docs-dev/demos/hero/index.html +12 -4
  32. package/docs-dev/demos/image-grid/index.html +12 -4
  33. package/docs-dev/demos/index.html +904 -321
  34. package/docs-dev/demos/list-inline/index.html +5220 -0
  35. package/docs-dev/demos/list-inline.1/index.html +4727 -0
  36. package/docs-dev/demos/list-lines/index.html +5210 -0
  37. package/docs-dev/demos/menu-stack/index.html +975 -377
  38. package/docs-dev/demos/modals/index.html +1010 -357
  39. package/docs-dev/demos/nav-strip/index.html +924 -377
  40. package/docs-dev/demos/overlay-section/index.html +979 -326
  41. package/docs-dev/demos/popovers/index.html +0 -4628
  42. package/docs-dev/demos/print/index.html +904 -321
  43. package/docs-dev/demos/pull-quote/index.html +904 -321
  44. package/docs-dev/demos/rule/index.html +952 -357
  45. package/docs-dev/demos/scroll-slider/index.html +72 -106
  46. package/docs-dev/demos/scrollpoints/index.html +905 -322
  47. package/docs-dev/demos/slider/index.html +12 -4
  48. package/docs-dev/demos/spoke-spinner/index.html +904 -321
  49. package/docs-dev/demos/sticky-list/index.html +5223 -0
  50. package/docs-dev/demos/tabs/index.html +944 -325
  51. package/docs-dev/demos/tag/index.html +904 -321
  52. package/docs-dev/demos/theme-toggle/index.html +5279 -0
  53. package/docs-dev/demos/tile-grid-overlay/index.html +12 -4
  54. package/docs-dev/demos/tiles/index.html +904 -321
  55. package/docs-dev/demos/tooltip/index.html +904 -321
  56. package/docs-dev/guide/building-stylesheet/index.html +904 -321
  57. package/docs-dev/guide/developing-ulu-scss-module/index.html +904 -321
  58. package/docs-dev/guide/index.html +904 -321
  59. package/docs-dev/guide/updates-and-changes/index.html +5033 -0
  60. package/docs-dev/index.html +904 -321
  61. package/docs-dev/javascript/events/index.html +901 -320
  62. package/docs-dev/javascript/index.html +904 -321
  63. package/docs-dev/javascript/settings/index.html +5400 -0
  64. package/docs-dev/javascript/ui-breakpoints/index.html +916 -335
  65. package/docs-dev/javascript/ui-collapsible/index.html +901 -320
  66. package/docs-dev/javascript/ui-details-group/index.html +5322 -0
  67. package/docs-dev/javascript/ui-dialog/index.html +967 -371
  68. package/docs-dev/javascript/ui-flipcard/index.html +964 -327
  69. package/docs-dev/javascript/ui-grid/index.html +913 -358
  70. package/docs-dev/javascript/ui-modal-builder/index.html +914 -354
  71. package/docs-dev/javascript/ui-overflow-scroller/index.html +901 -320
  72. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +901 -320
  73. package/docs-dev/javascript/ui-page/index.html +901 -320
  74. package/docs-dev/javascript/ui-popover/index.html +911 -334
  75. package/docs-dev/javascript/ui-print/index.html +901 -328
  76. package/docs-dev/javascript/ui-print-details/index.html +901 -320
  77. package/docs-dev/javascript/ui-programmatic-modal/index.html +901 -320
  78. package/docs-dev/javascript/ui-proxy-click/index.html +990 -324
  79. package/docs-dev/javascript/ui-resizer/index.html +901 -320
  80. package/docs-dev/javascript/ui-scroll-slider/index.html +941 -328
  81. package/docs-dev/javascript/ui-scrollpoint/index.html +907 -333
  82. package/docs-dev/javascript/ui-slider/index.html +1099 -327
  83. package/docs-dev/javascript/ui-tabs/index.html +914 -370
  84. package/docs-dev/javascript/ui-theme-toggle/index.html +5410 -0
  85. package/docs-dev/javascript/ui-tooltip/index.html +940 -363
  86. package/docs-dev/javascript/utils-class-logger/index.html +901 -320
  87. package/docs-dev/javascript/utils-css/index.html +5224 -0
  88. package/docs-dev/javascript/utils-dom/index.html +1054 -339
  89. package/docs-dev/javascript/utils-file-save/index.html +901 -320
  90. package/docs-dev/javascript/utils-floating-ui/index.html +901 -320
  91. package/docs-dev/javascript/utils-id/index.html +901 -320
  92. package/docs-dev/javascript/utils-pause-youtube-video/index.html +901 -320
  93. package/docs-dev/javascript/utils-system/index.html +5527 -0
  94. package/docs-dev/sass/base/color/index.html +901 -320
  95. package/docs-dev/sass/base/elements/index.html +973 -392
  96. package/docs-dev/sass/base/index/index.html +959 -378
  97. package/docs-dev/sass/base/index.html +904 -321
  98. package/docs-dev/sass/base/keyframes/index.html +901 -320
  99. package/docs-dev/sass/base/layout/index.html +966 -385
  100. package/docs-dev/sass/base/normalize/index.html +901 -320
  101. package/docs-dev/sass/base/print/index.html +901 -320
  102. package/docs-dev/sass/base/root/index.html +901 -320
  103. package/docs-dev/sass/base/typography/index.html +901 -320
  104. package/docs-dev/sass/components/accordion/index.html +1026 -445
  105. package/docs-dev/sass/components/adaptive-spacing/index.html +1027 -446
  106. package/docs-dev/sass/components/badge/index.html +1005 -424
  107. package/docs-dev/sass/components/basic-hero/index.html +5385 -0
  108. package/docs-dev/sass/components/button/index.html +952 -371
  109. package/docs-dev/sass/components/button-verbose/index.html +1089 -433
  110. package/docs-dev/sass/components/callout/index.html +1086 -482
  111. package/docs-dev/sass/components/captioned-figure/index.html +1070 -374
  112. package/docs-dev/sass/components/card/index.html +1121 -491
  113. package/docs-dev/sass/components/card-grid/index.html +973 -392
  114. package/docs-dev/sass/components/counter-list/index.html +5458 -0
  115. package/docs-dev/sass/components/css-icon/index.html +1052 -464
  116. package/docs-dev/sass/components/data-grid/index.html +1087 -499
  117. package/docs-dev/sass/components/data-table/index.html +1154 -381
  118. package/docs-dev/sass/components/fill-context/index.html +901 -320
  119. package/docs-dev/sass/components/flipcard/index.html +1071 -459
  120. package/docs-dev/sass/components/flipcard-grid/index.html +960 -379
  121. package/docs-dev/sass/components/form-theme/index.html +1349 -672
  122. package/docs-dev/sass/components/hero/index.html +1016 -387
  123. package/docs-dev/sass/components/horizontal-rule/index.html +959 -378
  124. package/docs-dev/sass/components/image-grid/index.html +966 -385
  125. package/docs-dev/sass/components/index/index.html +1004 -419
  126. package/docs-dev/sass/components/index.html +904 -321
  127. package/docs-dev/sass/components/links/index.html +901 -320
  128. package/docs-dev/sass/components/list-inline/index.html +5399 -0
  129. package/docs-dev/sass/components/list-lines/index.html +1009 -432
  130. package/docs-dev/sass/components/list-ordered/index.html +903 -322
  131. package/docs-dev/sass/components/list-unordered/index.html +901 -320
  132. package/docs-dev/sass/components/menu-stack/index.html +1050 -456
  133. package/docs-dev/sass/components/modal/index.html +1032 -444
  134. package/docs-dev/sass/components/nav-strip/index.html +1023 -442
  135. package/docs-dev/sass/components/overlay-section/index.html +1010 -429
  136. package/docs-dev/sass/components/pager/index.html +1017 -436
  137. package/docs-dev/sass/components/placeholder-block/index.html +1017 -436
  138. package/docs-dev/sass/components/popover/index.html +1068 -451
  139. package/docs-dev/sass/components/pull-quote/index.html +1017 -436
  140. package/docs-dev/sass/components/ratio-box/index.html +969 -388
  141. package/docs-dev/sass/components/rule/index.html +972 -391
  142. package/docs-dev/sass/components/scroll-slider/index.html +1019 -450
  143. package/docs-dev/sass/components/skip-link/index.html +961 -380
  144. package/docs-dev/sass/components/slider/index.html +1023 -442
  145. package/docs-dev/sass/components/spoke-spinner/index.html +961 -380
  146. package/docs-dev/sass/components/sticky-list/index.html +5603 -0
  147. package/docs-dev/sass/components/tabs/index.html +1020 -439
  148. package/docs-dev/sass/components/tag/index.html +1064 -483
  149. package/docs-dev/sass/components/tile-button/index.html +1004 -423
  150. package/docs-dev/sass/components/tile-grid/index.html +1045 -464
  151. package/docs-dev/sass/components/tile-grid-overlay/index.html +940 -359
  152. package/docs-dev/sass/components/vignette/index.html +965 -378
  153. package/docs-dev/sass/components/wysiwyg/index.html +968 -387
  154. package/docs-dev/sass/core/breakpoint/index.html +1045 -450
  155. package/docs-dev/sass/core/button/index.html +1438 -857
  156. package/docs-dev/sass/core/color/index.html +1084 -496
  157. package/docs-dev/sass/core/cssvar/index.html +950 -369
  158. package/docs-dev/sass/core/element/index.html +1504 -782
  159. package/docs-dev/sass/core/index.html +901 -320
  160. package/docs-dev/sass/core/layout/index.html +1062 -462
  161. package/docs-dev/sass/core/path/index.html +953 -372
  162. package/docs-dev/sass/core/selector/index.html +952 -371
  163. package/docs-dev/sass/core/typography/index.html +1171 -590
  164. package/docs-dev/sass/core/units/index.html +984 -403
  165. package/docs-dev/sass/core/utils/index.html +1941 -500
  166. package/docs-dev/sass/helpers/color/index.html +901 -320
  167. package/docs-dev/sass/helpers/display/index.html +902 -321
  168. package/docs-dev/sass/helpers/index/index.html +956 -375
  169. package/docs-dev/sass/helpers/index.html +904 -321
  170. package/docs-dev/sass/helpers/print/index.html +843 -292
  171. package/docs-dev/sass/helpers/typography/index.html +901 -320
  172. package/docs-dev/sass/helpers/units/index.html +950 -369
  173. package/docs-dev/sass/helpers/utilities/index.html +903 -322
  174. package/docs-dev/sass/index.html +904 -321
  175. package/js/index.js +1 -0
  176. package/js/settings.js +95 -0
  177. package/js/ui/breakpoints.js +19 -16
  178. package/js/ui/collapsible.js +8 -1
  179. package/js/ui/details-group.js +112 -0
  180. package/js/ui/dialog.js +90 -42
  181. package/js/ui/dialog.todo +2 -36
  182. package/js/ui/flipcard.js +37 -57
  183. package/js/ui/grid.js +15 -13
  184. package/js/ui/index.js +1 -0
  185. package/js/ui/modal-builder.js +45 -54
  186. package/js/ui/overflow-scroller.js +6 -4
  187. package/js/ui/popover.js +38 -38
  188. package/js/ui/print.js +16 -25
  189. package/js/ui/programmatic-modal.js +9 -3
  190. package/js/ui/proxy-click.js +50 -36
  191. package/js/ui/scroll-slider.js +24 -30
  192. package/js/ui/scrollpoint.js +28 -64
  193. package/js/ui/slider.js +61 -62
  194. package/js/ui/tabs.js +23 -36
  195. package/js/ui/theme-toggle.js +331 -94
  196. package/js/ui/tooltip.js +27 -32
  197. package/js/utils/css.js +13 -0
  198. package/js/utils/dom.js +85 -8
  199. package/js/utils/font-awesome.js +18 -0
  200. package/js/utils/index.js +2 -1
  201. package/js/utils/system.js +154 -0
  202. package/package.json +10 -7
  203. package/scss/_breakpoint.scss +16 -3
  204. package/scss/_color.scss +9 -2
  205. package/scss/_element.scss +91 -0
  206. package/scss/_layout.scss +7 -8
  207. package/scss/_utils.scss +248 -13
  208. package/scss/components/README.todos +14 -0
  209. package/scss/components/_accordion.scss +18 -20
  210. package/scss/components/_badge.scss +3 -2
  211. package/scss/components/_basic-hero.scss +112 -0
  212. package/scss/components/_button-verbose.scss +102 -20
  213. package/scss/components/_callout.scss +127 -79
  214. package/scss/components/_captioned-figure.scss +23 -5
  215. package/scss/components/_card-grid.scss +1 -1
  216. package/scss/components/_card.scss +242 -88
  217. package/scss/components/_counter-list.scss +133 -0
  218. package/scss/components/_css-icon.scss +33 -28
  219. package/scss/components/_data-grid.scss +38 -9
  220. package/scss/components/_data-table.scss +44 -4
  221. package/scss/components/_flipcard.scss +21 -15
  222. package/scss/components/_form-theme.scss +146 -135
  223. package/scss/components/_hero.scss +12 -10
  224. package/scss/components/_index.scss +24 -0
  225. package/scss/components/_list-inline.scss +80 -0
  226. package/scss/components/_list-lines.scss +44 -33
  227. package/scss/components/_list-ordered.scss +0 -1
  228. package/scss/components/_menu-stack.scss +42 -26
  229. package/scss/components/_modal.scss +29 -19
  230. package/scss/components/_nav-strip.scss +25 -16
  231. package/scss/components/_overlay-section.scss +4 -6
  232. package/scss/components/_pager.scss +6 -6
  233. package/scss/components/_placeholder-block.scss +4 -4
  234. package/scss/components/_popover.scss +174 -73
  235. package/scss/components/_pull-quote.scss +13 -13
  236. package/scss/components/_ratio-box.scss +2 -5
  237. package/scss/components/_rule.scss +1 -1
  238. package/scss/components/_scroll-slider.scss +2 -6
  239. package/scss/components/_skip-link.scss +2 -1
  240. package/scss/components/_slider.scss +17 -38
  241. package/scss/components/_spoke-spinner.scss +2 -2
  242. package/scss/components/_sticky-list.scss +206 -0
  243. package/scss/components/_tabs.scss +4 -2
  244. package/scss/components/_tag.scss +1 -1
  245. package/scss/components/_vignette.scss +3 -5
  246. package/scss/helpers/_display.scss +15 -18
  247. package/scss/helpers/_print.scss +12 -7
  248. package/scss/helpers/_utilities.scss +42 -32
  249. package/types/index.d.ts +1 -0
  250. package/types/settings.d.ts +66 -0
  251. package/types/settings.d.ts.map +1 -0
  252. package/types/ui/breakpoints.d.ts +14 -14
  253. package/types/ui/breakpoints.d.ts.map +1 -1
  254. package/types/ui/collapsible.d.ts.map +1 -1
  255. package/types/ui/details-group.d.ts +38 -0
  256. package/types/ui/details-group.d.ts.map +1 -0
  257. package/types/ui/dialog.d.ts +20 -14
  258. package/types/ui/dialog.d.ts.map +1 -1
  259. package/types/ui/flipcard.d.ts +16 -10
  260. package/types/ui/flipcard.d.ts.map +1 -1
  261. package/types/ui/grid.d.ts +4 -6
  262. package/types/ui/grid.d.ts.map +1 -1
  263. package/types/ui/index.d.ts +1 -0
  264. package/types/ui/modal-builder.d.ts +8 -11
  265. package/types/ui/modal-builder.d.ts.map +1 -1
  266. package/types/ui/overflow-scroller.d.ts +2 -2
  267. package/types/ui/overflow-scroller.d.ts.map +1 -1
  268. package/types/ui/popover.d.ts +6 -7
  269. package/types/ui/popover.d.ts.map +1 -1
  270. package/types/ui/print.d.ts +0 -4
  271. package/types/ui/print.d.ts.map +1 -1
  272. package/types/ui/programmatic-modal.d.ts.map +1 -1
  273. package/types/ui/proxy-click.d.ts +19 -3
  274. package/types/ui/proxy-click.d.ts.map +1 -1
  275. package/types/ui/scroll-slider.d.ts +5 -7
  276. package/types/ui/scroll-slider.d.ts.map +1 -1
  277. package/types/ui/scrollpoint.d.ts +3 -8
  278. package/types/ui/scrollpoint.d.ts.map +1 -1
  279. package/types/ui/slider.d.ts +24 -14
  280. package/types/ui/slider.d.ts.map +1 -1
  281. package/types/ui/tabs.d.ts +6 -8
  282. package/types/ui/tabs.d.ts.map +1 -1
  283. package/types/ui/theme-toggle.d.ts +51 -7
  284. package/types/ui/theme-toggle.d.ts.map +1 -1
  285. package/types/ui/tooltip.d.ts +3 -5
  286. package/types/ui/tooltip.d.ts.map +1 -1
  287. package/types/utils/css.d.ts +11 -0
  288. package/types/utils/css.d.ts.map +1 -0
  289. package/types/utils/dom.d.ts +45 -6
  290. package/types/utils/dom.d.ts.map +1 -1
  291. package/types/utils/font-awesome.d.ts +5 -0
  292. package/types/utils/font-awesome.d.ts.map +1 -0
  293. package/types/utils/index.d.ts +1 -0
  294. package/types/utils/system.d.ts +113 -0
  295. package/types/utils/system.d.ts.map +1 -0
@@ -9,6 +9,8 @@
9
9
  @use "../breakpoint";
10
10
  @use "../utils";
11
11
  @use "../selector";
12
+ @use "../color";
13
+ @use "../layout";
12
14
 
13
15
  // todo
14
16
  // sass color adjust for smooth transition. Add a comment for this if we can’t get to this
@@ -18,7 +20,6 @@
18
20
  /// @prop {Dimension} padding [2rem] The padding for the image icon
19
21
  /// @prop {Dimension} margin-y [3rem] Top and bottom margin for the card.
20
22
  /// @prop {Dimension} border-radius [5rem] The border radius of the card.
21
- /// @prop {String} horizontal-breakpoint [small] The breakpoint used to change the card to vertical if using the card--horizontal styling. Uses ulu's breakpoint module.
22
23
  /// @prop {CssValue} box-shadow [null] The box-shadow for the card.
23
24
  /// @prop {CssValue} box-shadow-hover [null] The box-shadow for the card when hovered or focused.
24
25
  /// @prop {Color} color [null] The type color of the card.
@@ -29,7 +30,7 @@
29
30
  /// @prop {Color} background-color [white] The background color of the card.
30
31
  /// @prop {Color} background-color-hover [rgb(242, 244, 246)] The background color of the card when hovered or focused.
31
32
  /// @prop {Dimension} max-width [28rem] The max-width of the card.
32
- /// @prop {Dimension} body-min-height [10rem] the min-height of the card body.
33
+ /// @prop {Dimension} body-min-height [8rem] the min-height of the card body.
33
34
  /// @prop {CssValue} border [1px solid #ccc] The card border.
34
35
  /// @prop {CssValue} border-hover [2px solid #278cca] The card border when hovered or focused.
35
36
  /// @prop {Dimension} header-margin [0.75em] The margin for the card header.
@@ -57,9 +58,14 @@
57
58
  /// @prop {Boolean} image-transition-enabled [true] Enable or disable the image transition.
58
59
  /// @prop {Time} image-transition-duration [350ms] The duration of the image transition.
59
60
  /// @prop {CssValue} image-transition-timing-function [ease-in-out] The timing function for the image transition.
61
+ /// @prop {Number} image-fit-padding [1rem] Padding on inside of image when using image fit modifier
62
+ /// @prop {CssValue} image-fit-filter [drop-shadow(0 0px 8px rgba(0, 0, 0, 0.2))] Filter to use on image when using image fit modifier
63
+ /// @prop {List} image-icon-max-width [10rem] Max width for image when using the modifier on the .card__image--icon
60
64
  /// @prop {List} image-transition-properties [(transform, filter)] The properties for the image transitions.
61
-
62
-
65
+ /// @prop {String} horizontal-breakpoint [small] The breakpoint used to change the card to vertical if using the card--horizontal styling. Uses ulu's breakpoint module.
66
+ /// @prop {Unit} horizontal-min-height [10rem] Minimum height when horizontal
67
+ /// @prop {Unit} horizontal-max-width [40rem] Maximum width when horizontal
68
+ /// @prop {Unit} horizontal-body-max-width [80rem] The max-width of body when horizontal
63
69
 
64
70
  $config: (
65
71
  "background-color" : white,
@@ -78,18 +84,25 @@ $config: (
78
84
  "footer-padding-y" : 0.25rem,
79
85
  "footer-min-height" : 2.5rem,
80
86
  "horizontal-breakpoint" : "small",
87
+ "horizontal-image-width" : min(33%, 20rem),
88
+ "horizontal-body-max-width" : 80rem,
89
+ "horizontal-min-height" : 10rem,
90
+ "horizontal-max-width" : 40rem,
81
91
  "header-margin" : 0.75em,
82
92
  "image-ratio" : 56.25%,
83
93
  "image-aspect-ratio": list.slash(5, 3),
84
- "image-background-color" : rgb(197, 197, 197),
94
+ "image-background-color" : rgb(238, 238, 238),
85
95
  "image-border" : null, // For when you have a margin
86
96
  "image-filter-hover" : null,
87
97
  "image-margin" : null,
98
+ "image-icon-max-width" : 8rem,
88
99
  "image-transform-hover" : null,
89
100
  "image-transition-duration" : 350ms,
90
101
  "image-transition-enabled" : true,
91
102
  "image-transition-properties" : (transform, filter),
92
103
  "image-transition-timing-function" : ease-in-out,
104
+ "image-fit-padding" : 1rem,
105
+ "image-fit-filter" : drop-shadow(0 0px 8px rgba(0, 0, 0, 0.3)),
93
106
  "margin-y" : 3rem,
94
107
  "max-width" : 28rem,
95
108
  "padding" : 2rem,
@@ -109,7 +122,13 @@ $config: (
109
122
  "overlay-background-color": rgba(0, 0, 0, 0.6),
110
123
  "overlay-shading": true,
111
124
  "overlay-body-padding-y": 1rem,
112
- ) !default;
125
+ // new below
126
+ "toggle-aside-rule" : true,
127
+ "aside-rule-width" : 6px,
128
+ "aside-background-color" : rgb(197, 197, 197),
129
+ "aside-rule-color": green,
130
+
131
+ ) !default;
113
132
 
114
133
  /// Change modules $config
115
134
  /// @param {Map} $changes Map of changes
@@ -137,19 +156,34 @@ $config: (
137
156
 
138
157
  @mixin when-clickable($hover: false) {
139
158
  $prefix: selector.class("card");
159
+ // When proxy click enabled
140
160
  @if (get("clickable-card-enabled") and get("clickable-card-selector")) {
141
- #{ $prefix } {
142
- &#{ get("clickable-card-selector") } {
143
- @if ($hover) {
144
- #{ get("clickable-card-interact-selector") } {
145
- @content;
146
- }
147
- } @else {
161
+ #{ $prefix }#{ get("clickable-card-selector") },
162
+ a#{ $prefix },
163
+ button#{ $prefix },
164
+ #{ $prefix }--clickable {
165
+ @if ($hover) {
166
+ #{ get("clickable-card-interact-selector") } {
148
167
  @content;
149
168
  }
169
+ } @else {
170
+ @content;
150
171
  }
151
172
  }
152
- }
173
+ // Without proxy click (only if interactive)
174
+ } @else {
175
+ a#{ $prefix },
176
+ button#{ $prefix },
177
+ #{ $prefix }--clickable {
178
+ @if ($hover) {
179
+ #{ get("clickable-card-interact-selector") } {
180
+ @content;
181
+ }
182
+ } @else {
183
+ @content;
184
+ }
185
+ }
186
+ }
153
187
  }
154
188
 
155
189
 
@@ -167,8 +201,8 @@ $config: (
167
201
  $prefix: selector.class("card");
168
202
 
169
203
  #{ $prefix } {
170
- color: get("color");
171
- background-color: get("background-color");
204
+ color: color.get(get("color"));
205
+ background-color: color.get(get("background-color"));
172
206
  border-radius: get("border-radius");
173
207
  box-shadow: get("box-shadow");
174
208
  margin-top: get("margin-y");
@@ -178,34 +212,30 @@ $config: (
178
212
  flex-direction: column;
179
213
  justify-content: flex-end;
180
214
  max-width: get("max-width");
181
- }
182
- @if (get("border") or get("border-hover") or get("overlay-background-color-hover")) {
183
- @include when-clickable($hover: false) {
184
- &:after {
185
- position: absolute;
186
- content: if(get("border"), "", false);
187
- top: 0;
188
- bottom: 0;
189
- right: 0;
190
- left: 0;
191
- border: get("border");
192
- border-radius: get("border-radius");
193
- z-index: 4;
194
- pointer-events: none;
195
- }
215
+ // Not absolutely necessary, incase we want to remove in future
216
+ overflow: hidden;
217
+
218
+ // Border is on pseudo so that it's on top of image/etc
219
+ &::after {
220
+ @include layout.absolute-fill();
221
+ content: if(get("border"), "", null);
222
+ border: get("border");
223
+ border-radius: get("border-radius");
224
+ z-index: 4;
225
+ pointer-events: none;
196
226
  }
197
227
  }
198
228
 
199
229
  @include when-clickable($hover: true) {
200
- background-color: get("background-color-hover");
201
- color: get("color-hover");
230
+ background-color: color.get(get("background-color-hover"));
231
+ color: color.get(get("color-hover"));
202
232
  box-shadow: get("box-shadow-hover");
203
233
 
204
234
  @if (get("border-hover") or get("overlay-background-color-hover")) {
205
- &:after {
235
+ &::after {
206
236
  content: "";
207
237
  border: get("border-hover");
208
- background-color: get("overlay-background-color-hover");
238
+ background-color: color.get(get("overlay-background-color-hover"));
209
239
  }
210
240
  }
211
241
  }
@@ -222,24 +252,25 @@ $config: (
222
252
  }
223
253
 
224
254
  #{ $prefix }__title {
225
- color: get("title-color");
255
+ color: color.get(get("title-color"));
226
256
  margin-bottom: get("title-margin");
227
257
  display: block;
228
258
  font-weight: get("title-font-weight");
229
- @if get("title-color-hover") {
230
- &:hover,
231
- &:focus {
232
- color: get("title-color-hover");
233
- }
234
- }
235
259
  #{ $prefix }__title-link {
236
260
  all: unset;
261
+ cursor: pointer;
262
+ @if get("title-color-hover") {
263
+ &:hover,
264
+ &:focus {
265
+ color: color.get(get("title-color-hover"));
266
+ }
267
+ }
237
268
  }
238
269
  }
239
270
  @if get("title-color-hover") {
240
271
  @include when-clickable($hover: true) {
241
272
  #{ $prefix }__title {
242
- color: get("title-color-hover");
273
+ color: color.get(get("title-color-hover"));
243
274
  }
244
275
  }
245
276
  }
@@ -257,7 +288,7 @@ $config: (
257
288
  // padding-top: get("image-ratio"); // 9:16
258
289
  margin: get("image-margin");
259
290
  border: get("image-border");
260
- background-color: get("image-background-color");
291
+ background-color: color.get(get("image-background-color"));
261
292
  border-top-right-radius: get("border-radius");
262
293
  border-top-left-radius: get("border-radius");
263
294
  aspect-ratio: get("image-aspect-ratio");
@@ -265,11 +296,7 @@ $config: (
265
296
  }
266
297
  #{ $prefix }__image img,
267
298
  #{ $prefix}__image-media {
268
- position: absolute;
269
- top: 0;
270
- left: 0;
271
- width: 100%;
272
- height: 100%;
299
+ @include layout.absolute-fill(true);
273
300
  border: 0;
274
301
  object-fit: cover;
275
302
  transform-origin: center center;
@@ -288,21 +315,28 @@ $config: (
288
315
  }
289
316
  }
290
317
  }
291
- #{ $prefix }__body,
292
- #{ $prefix }__footer,
293
- #{ $prefix }__image--icon {
318
+
319
+ #{ $prefix }__footer {
320
+ padding: get("padding");
321
+ }
322
+ #{ $prefix }__main {
323
+ padding: get("padding");
324
+ }
325
+ #{ $prefix }__aside {
326
+ position: relative;
294
327
  padding: get("padding");
295
328
  }
296
329
 
297
330
  #{ $prefix }__image--icon {
298
- background-color: transparent;
331
+ // background-color: transparent;
299
332
  display: flex;
300
333
  align-items: center;
301
334
  justify-content: center;
335
+ // padding: 2rem;
302
336
  img {
303
337
  position: static;
304
338
  display: block;
305
- max-width: 30rem;
339
+ max-width: get("image-icon-max-width");
306
340
  height: auto;
307
341
  top: auto;
308
342
  left: auto;
@@ -314,9 +348,25 @@ $config: (
314
348
  z-index: 2; // Above image
315
349
  }
316
350
  #{ $prefix }__body {
351
+ display: flex;
352
+ flex-direction: column;
317
353
  flex-grow: 1;
318
354
  min-height: get("body-min-height");
319
355
  }
356
+ @if(get("toggle-aside-rule")) {
357
+ #{ $prefix }__aside {
358
+ background-color: color.get(get("aside-background-color"));
359
+ }
360
+ #{ $prefix }__aside::after {
361
+ content: "";
362
+ position: absolute;
363
+ top: calc(0rem - get("aside-rule-width") / 2);
364
+ left: get("padding");
365
+ right: get("padding");
366
+ height: get("aside-rule-width");
367
+ background-color: color.get(get("aside-rule-color"));
368
+ }
369
+ }
320
370
  // For actions/messages
321
371
  // - Layout as flex with min height to support buttons
322
372
  // and text without relying so much on padding
@@ -340,11 +390,15 @@ $config: (
340
390
  position: relative;
341
391
  flex-grow: 0;
342
392
  z-index: 2;
343
- color: get("color-overlay");
344
- background-color: get("overlay-background-color");
393
+ color: color.get(get("color-overlay"));
394
+ background-color: color.get(get("overlay-background-color"));
345
395
  min-height: 0;
346
396
  padding-top: get("overlay-body-padding-y");
347
397
  padding-bottom: get("overlay-body-padding-y");
398
+ &:not(:has(~ #{ $prefix }__footer)) {
399
+ border-bottom-left-radius: get("border-radius");
400
+ border-bottom-right-radius: get("border-radius");
401
+ }
348
402
  @if (get("overlay-shading")) {
349
403
  margin-top: 4rem;
350
404
  &::before {
@@ -359,21 +413,26 @@ $config: (
359
413
  }
360
414
  }
361
415
  #{ $prefix }__footer {
362
- background-color: get("overlay-background-color");
363
- color: get("color-overlay");
416
+ background-color: color.get(get("overlay-background-color"));
417
+ color: color.get(get("color-overlay"));
418
+ border-bottom-left-radius: get("border-radius");
419
+ border-bottom-right-radius: get("border-radius");
420
+ }
421
+ #{ $prefix }__body,
422
+ #{ $prefix }__footer {
423
+ &:last-child {
424
+ border-bottom-left-radius: get("border-radius");
425
+ border-bottom-right-radius: get("border-radius");
426
+ }
364
427
  }
365
428
  #{ $prefix }__title {
366
- color: get("color-overlay");
429
+ color: color.get(get("color-overlay"));
367
430
  }
368
431
  #{ $prefix }__image {
369
- position: absolute;
370
- top: 0;
371
- left: 0;
372
- bottom: 0;
373
- right: 0;
432
+ @include layout.absolute-fill();
374
433
  overflow: hidden;
375
434
  padding-top: 0;
376
- background-color: rgb(255, 255, 255);
435
+ background-color: color.get(rgb(255, 255, 255));
377
436
  border-radius: get("border-radius");
378
437
  aspect-ratio: auto;
379
438
  img {
@@ -384,40 +443,135 @@ $config: (
384
443
  border: 0;
385
444
  object-fit: cover;
386
445
  &::before {
387
- position: absolute;
446
+ @include layout.absolute-fill(true);
388
447
  display: block;
389
- top: 0;
390
- bottom: 0;
391
- left: 0;
392
- right: 0;
393
448
  background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(0, 0, 0, 0.9));
394
449
  }
395
450
  }
396
451
  }
397
452
  }
398
453
 
454
+ // Incase this modifier is being used to hide the image
455
+ // not just to tell the component how to layout without image
456
+ // - Use case is hiding image when you can't control the output
457
+ // of the inside of the card (printed no matter what). We had
458
+ // this happen in HHRC, including this extra CSS for that
459
+ #{ $prefix }--no-image {
460
+ #{ $prefix }__image {
461
+ display: none;
462
+ }
463
+ }
464
+ #{ $prefix }--image-fit {
465
+ #{ $prefix }__image {
466
+ img {
467
+ padding: get("image-fit-padding");
468
+ object-fit: contain;
469
+ object-position: top center;
470
+ filter: get("image-fit-filter");
471
+ }
472
+ }
473
+ }
474
+
399
475
  @if (get("horizontal-breakpoint")) {
400
476
  @include breakpoint.min(get("horizontal-breakpoint")) {
401
- #{ $prefix }--horizontal {
402
- display: flex;
403
- justify-content: center;
404
- align-items: center;
405
- #{ $prefix }__image {
406
- width: 33%;
407
- flex: 0 1 33%;
408
- // max-width: 30rem;
409
- min-height: 28rem;
410
- // padding-top: 0;
411
- }
412
- #{ $prefix }__body {
413
- display: flex;
414
- flex: 1;
415
- flex-direction: column;
416
- justify-content: center;
417
- max-width: 80rem;
418
- }
477
+ @include -horizontal-card-styles();
478
+ }
479
+ } @else {
480
+ @include -horizontal-card-styles();
481
+ }
482
+ }
483
+
484
+ @mixin -horizontal-card-styles() {
485
+ $prefix: selector.class("card");
486
+
487
+ #{ $prefix }--horizontal {
488
+ display: grid;
489
+ grid-template-columns: get("horizontal-image-width") 1fr;
490
+ // Creating the two rows (body and footer), if one is missing it's height will be 0
491
+ // Cannot use gap with the grid as it will create space when a row isn't needed
492
+ grid-template-rows: auto auto;
493
+ min-height: get("horizontal-min-height");
494
+ max-width: get("horizontal-max-width");
495
+ #{ $prefix }__image {
496
+ grid-column: 1 / 2;
497
+ grid-row: 1 / -1;
498
+ aspect-ratio: auto;
499
+ border-top-right-radius: 0;
500
+ border-bottom-left-radius: get("border-radius");
501
+ }
502
+ #{ $prefix }__body,
503
+ #{ $prefix }__footer {
504
+ grid-column: 2 / 3;
505
+ }
506
+ #{ $prefix }__body {
507
+ // display: flex;
508
+ flex-direction: row;
509
+ justify-content: center;
510
+ max-width: get("horizontal-body-max-width");
511
+ }
512
+ @if(get("toggle-aside-rule")) {
513
+ #{ $prefix }__main {
514
+ flex: 1 1 60%;
515
+ }
516
+ #{ $prefix }__aside {
517
+ flex: 1 1 40%;
518
+ height: 100%;
519
+ // flex-basis: 40%;
520
+ // min-width: 40%;
521
+ }
522
+ #{ $prefix }__aside::after {
523
+ content: "";
524
+ position: absolute;
525
+ top: get("padding");
526
+ left: calc(0rem - get("aside-rule-width") / 2);
527
+ height: calc(100% - get("padding") - get("padding"));
528
+ width: get("aside-rule-width");
529
+ background-color: get("aside-rule-color");
419
530
  }
420
531
  }
532
+
533
+ // For modern browsers
534
+ // Optionally use no-image modifier for older browser support
535
+ &:not(:has(#{ $prefix }__image)) {
536
+ @include -card-horizontal-no-image-styles();
537
+ }
538
+ &#{ $prefix }--no-image {
539
+ @include -card-horizontal-no-image-styles();
540
+ }
541
+ }
542
+ }
543
+
544
+ @mixin -card-horizontal-no-image-styles() {
545
+ $prefix: selector.class("card");
546
+ grid-template-columns: 1fr;
547
+ #{ $prefix }__body,
548
+ #{ $prefix }__footer {
549
+ grid-column: 1 / 2;
421
550
  }
422
551
  }
423
552
 
553
+ // OLD CSS FOR HORIZONTAL
554
+ // #{ $prefix }--horizontal {
555
+ // display: flex;
556
+ // flex-direction: row;
557
+ // justify-content: center;
558
+ // align-items: center;
559
+ // #{ $prefix }__image {
560
+ // align-self: stretch;
561
+ // border-top-right-radius: 0;
562
+ // border-bottom-left-radius: get("border-radius");
563
+ // width: get("horizontal-image-width");
564
+ // flex: 0 0 get("horizontal-image-width");
565
+ // // max-width: 30rem;
566
+ // // min-height: 28rem;
567
+ // // padding-top: 0;
568
+ // }
569
+ // #{ $prefix }__body {
570
+ // display: flex;
571
+ // flex: 1;
572
+ // flex-direction: column;
573
+ // justify-content: center;
574
+ // max-width: get("horizontal-body-max-width");
575
+ // }
576
+ // }
577
+
@@ -0,0 +1,133 @@
1
+ ////
2
+ /// @group counter-list
3
+ /// Outputs a styled list with counters
4
+
5
+ @use "sass:map";
6
+ @use "../utils";
7
+ @use "../selector";
8
+ @use "../color";
9
+ @use "../breakpoint";
10
+
11
+ /// Module Settings
12
+ /// @type Map
13
+ /// @prop {List} margin [(2rem 0)] The top and bottom margin of the list.
14
+ /// @prop {List} item-margin [(0, 0, 1rem, 0)] The margin applied to each list item.
15
+ /// @prop {Keyword} align-items [baseline] How to align the counter (flexbox align-items values)
16
+ /// @prop {Length} counter-width [2.4em] The width and height (if height is falsy)
17
+ /// @prop {Length} counter-height [null] The height (optional)
18
+ /// @prop {Length} counter-gap [1em] The gap between the counter and the list item content.
19
+ /// @prop {String} counter-style [numeric] The list-style-type used for the counter.
20
+ /// @prop {Keyword|Percentage} counter-border-radius [50%] The border-radius of the counter element.
21
+ /// @prop {Length} counter-font-size [1.2em] The font-size of the counter text.
22
+ /// @prop {String} counter-color [white] The text color of the counter. Accepts color names or hex codes.
23
+ /// @prop {String} counter-background-color ["accent"] The background color of the counter. Refers to a color in the color module.
24
+
25
+ $config: (
26
+ "margin" : (2rem 0),
27
+ "item-margin" : (0, 0, 1rem, 0),
28
+ "align-items" : baseline,
29
+ "counter-width" : 2.4em,
30
+ "counter-height" : null,
31
+ "counter-gap" : 1em,
32
+ "counter-style" : numeric,
33
+ "counter-border-radius" : 50%,
34
+ "counter-font-size" : 1.2em,
35
+ "counter-color" : white,
36
+ "counter-background-color" : "accent",
37
+ ) !default;
38
+
39
+ /// Change modules $config
40
+ /// @param {Map} $changes Map of changes
41
+ /// @example scss
42
+ /// @include ulu.component-counter-list-set(( "property" : value ));
43
+
44
+ @mixin set($changes) {
45
+ $config: map.merge($config, $changes) !global;
46
+ }
47
+
48
+ /// Get a config option
49
+ /// @param {Map} $name Name of property
50
+ /// @example scss
51
+ /// @include ulu.component-counter-list-get("property");
52
+
53
+ @function get($name) {
54
+ @return utils.require-map-get($config, $name, "counter-list [config]");
55
+ }
56
+
57
+ /// Output counter-list component styles
58
+ /// @demo counter-list
59
+ /// @example html {preview}
60
+ /// <ol class="counter-list">
61
+ /// <li class="counter-list__item">This is a item that will get counted</li>
62
+ /// <li class="counter-list__item">Another item that has more content to show line wrapping. Lorem ipsum et depsi anu. Dolor et anu.</li>
63
+ /// <li class="counter-list__item">Small Amount of Text</li>
64
+ /// </ol>
65
+
66
+ @mixin styles {
67
+ $prefix: selector.class("counter-list");
68
+ $width: get("counter-width");
69
+ $height: utils.fallback(get("counter-height"), $width);
70
+
71
+ #{ $prefix } {
72
+ margin: get("margin");
73
+ counter-reset: ulu-counter-list;
74
+
75
+ & > li,
76
+ & > #{ $prefix }__item {
77
+ display: flex;
78
+ gap: get("counter-gap");
79
+ align-items: get("align-items");
80
+ margin: get("item-margin");
81
+ min-height: $height;
82
+ &::before {
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ width: $width;
87
+ height: $height;
88
+ flex: 0 0 $width;
89
+ counter-increment: ulu-counter-list;
90
+ content: counter(ulu-counter-list, get("counter-style"));
91
+ font-size: get("counter-font-size");
92
+ color: color.get(get("counter-color"));
93
+ background-color: color.get(get("counter-background-color"));
94
+ border-radius: get("counter-border-radius");
95
+ }
96
+
97
+ // Keeping this could be useful
98
+ // but we need to think about how its setup
99
+ // - Probably should be a modifier (choice)
100
+ // - May need either option for how align-items is set (flex-start vs center)
101
+ // - This could be useful when used in grid
102
+ // - May need to be pervasive and not linked to a breakpoint (alternate style)
103
+ // - It's also just useful to know you could override the layout like this
104
+ // to get useful variations (maybe we don't need to include it but users
105
+ // can do specific)
106
+ // @if ( get("counter-mobile-toggle") ) {
107
+ // @include breakpoint.max("small") {
108
+ // padding-left: 0;
109
+ // padding-top: calc(get("counter-width") + get("counter-gap-mobile"));
110
+ // flex-direction: column;
111
+ // align-items: center;
112
+ // }
113
+ // }
114
+ }
115
+ }
116
+
117
+ // Modifiers
118
+ #{ $prefix }--alphabetical {
119
+ & > li::before,
120
+ & > #{ $prefix }__item::before {
121
+ content: counter(ulu-counter-list, upper-alpha);
122
+ }
123
+ }
124
+ #{ $prefix }--numeric {
125
+ & > li::before,
126
+ & > #{ $prefix }__item::before {
127
+ content: counter(ulu-counter-list, numeric);
128
+ }
129
+ }
130
+ #{ $prefix }--no-reset {
131
+ counter-reset: none;
132
+ }
133
+ }