@ulu/frontend 0.1.0-beta.9 → 0.1.0-beta.90

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