@ulu/frontend 0.1.0-beta.11 → 0.1.0-beta.111

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 (342) hide show
  1. package/CHANGELOG.md +680 -0
  2. package/GEMINI.md +9 -0
  3. package/README.dev.md +3 -3
  4. package/README.md +14 -4
  5. package/dist/ulu-frontend.min.css +1 -1
  6. package/dist/ulu-frontend.min.js +36 -29
  7. package/docs-dev/.nojekyll +1 -0
  8. package/docs-dev/assets/main.js +832 -421
  9. package/docs-dev/assets/placeholder/icon-calendar.svg +1 -0
  10. package/docs-dev/assets/placeholder/icon-check.svg +1 -0
  11. package/docs-dev/assets/style.css +629 -233
  12. package/docs-dev/changelog/index.html +7484 -0
  13. package/docs-dev/changelog/updates-and-changes/index.html +5109 -0
  14. package/docs-dev/demos/accordion/index.html +1442 -364
  15. package/docs-dev/demos/badge/index.html +5835 -0
  16. package/docs-dev/demos/badge-stack/index.html +5816 -0
  17. package/docs-dev/demos/basic-hero/index.html +111 -0
  18. package/docs-dev/demos/breadcrumb/index.html +5870 -0
  19. package/docs-dev/demos/breakpoints-manager/index.html +5846 -0
  20. package/docs-dev/demos/button/index.html +1490 -356
  21. package/docs-dev/demos/button-group/index.html +5832 -0
  22. package/docs-dev/demos/button-verbose/index.html +5838 -0
  23. package/docs-dev/demos/callout/index.html +1469 -349
  24. package/docs-dev/demos/captioned-figure/index.html +1446 -353
  25. package/docs-dev/demos/card/index.html +1518 -786
  26. package/docs-dev/demos/card-grid/index.html +5957 -0
  27. package/docs-dev/demos/card-new/index.html +5088 -0
  28. package/docs-dev/demos/card-old/index.html +5223 -0
  29. package/docs-dev/demos/card.1/index.html +5223 -0
  30. package/docs-dev/demos/card.TRASH/index.html +5541 -0
  31. package/docs-dev/demos/counter-list/index.html +5840 -0
  32. package/docs-dev/demos/css-icons/index.html +1466 -350
  33. package/docs-dev/demos/data-grid/index.html +1446 -353
  34. package/docs-dev/demos/data-table/index.html +1621 -395
  35. package/docs-dev/demos/details-group/index.html +5867 -0
  36. package/docs-dev/demos/donut-chart/index.html +5874 -0
  37. package/docs-dev/demos/file-save/index.html +1446 -353
  38. package/docs-dev/demos/flipcard/index.html +1446 -353
  39. package/docs-dev/demos/form-theme/index.html +1453 -360
  40. package/docs-dev/demos/headline-label/index.html +5802 -0
  41. package/docs-dev/demos/hero/index.html +12 -4
  42. package/docs-dev/demos/image-grid/index.html +12 -4
  43. package/docs-dev/demos/index.html +1447 -354
  44. package/docs-dev/demos/list-inline/index.html +1446 -353
  45. package/docs-dev/demos/list-lines/index.html +1446 -353
  46. package/docs-dev/demos/menu-stack/index.html +1550 -389
  47. package/docs-dev/demos/modals/index.html +1616 -400
  48. package/docs-dev/demos/nav-strip/index.html +1446 -353
  49. package/docs-dev/demos/overlay-section/index.html +1532 -369
  50. package/docs-dev/demos/panel/index.html +5862 -0
  51. package/docs-dev/demos/popovers/index.html +1710 -375
  52. package/docs-dev/demos/print/index.html +1446 -353
  53. package/docs-dev/demos/progress-bar/index.html +5964 -0
  54. package/docs-dev/demos/progress-circle/index.html +6137 -0
  55. package/docs-dev/demos/progress-donut/index.html +6107 -0
  56. package/docs-dev/demos/pull-quote/index.html +1446 -353
  57. package/docs-dev/demos/rail/index.html +5910 -0
  58. package/docs-dev/demos/rule/index.html +1455 -350
  59. package/docs-dev/demos/scroll-slider/index.html +72 -106
  60. package/docs-dev/demos/scrollpoints/index.html +1447 -354
  61. package/docs-dev/demos/skeleton/index.html +5858 -0
  62. package/docs-dev/demos/slider/index.html +12 -4
  63. package/docs-dev/demos/spoke-spinner/index.html +1446 -353
  64. package/docs-dev/demos/sticky-list/index.html +5823 -0
  65. package/docs-dev/demos/tabs/index.html +1474 -345
  66. package/docs-dev/demos/tag/index.html +1463 -358
  67. package/docs-dev/demos/theme-toggle/index.html +5879 -0
  68. package/docs-dev/demos/tile-grid-overlay/index.html +12 -4
  69. package/docs-dev/demos/tiles/index.html +1446 -353
  70. package/docs-dev/demos/tooltip/index.html +1446 -353
  71. package/docs-dev/demos/wysiwyg/index.html +5852 -0
  72. package/docs-dev/guide/building-stylesheet/index.html +1446 -353
  73. package/docs-dev/guide/developing-ulu-scss-module/index.html +1446 -353
  74. package/docs-dev/guide/index.html +1446 -353
  75. package/docs-dev/guide/updates-and-changes/index.html +5033 -0
  76. package/docs-dev/index.html +1446 -353
  77. package/docs-dev/javascript/events/index.html +1476 -345
  78. package/docs-dev/javascript/index.html +1446 -353
  79. package/docs-dev/javascript/settings/index.html +6005 -0
  80. package/docs-dev/javascript/ui-breakpoints/index.html +1466 -375
  81. package/docs-dev/javascript/ui-collapsible/index.html +1451 -360
  82. package/docs-dev/javascript/ui-details-group/index.html +5922 -0
  83. package/docs-dev/javascript/ui-dialog/index.html +1469 -363
  84. package/docs-dev/javascript/ui-flipcard/index.html +1498 -351
  85. package/docs-dev/javascript/ui-grid/index.html +1448 -383
  86. package/docs-dev/javascript/ui-modal-builder/index.html +1661 -430
  87. package/docs-dev/javascript/ui-overflow-scroller/index.html +1451 -360
  88. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +1451 -360
  89. package/docs-dev/javascript/ui-page/index.html +1451 -360
  90. package/docs-dev/javascript/ui-popover/index.html +1447 -360
  91. package/docs-dev/javascript/ui-print/index.html +1443 -360
  92. package/docs-dev/javascript/ui-print-details/index.html +1451 -360
  93. package/docs-dev/javascript/ui-programmatic-modal/index.html +1451 -360
  94. package/docs-dev/javascript/ui-proxy-click/index.html +1555 -379
  95. package/docs-dev/javascript/ui-resizer/index.html +1756 -400
  96. package/docs-dev/javascript/ui-scroll-slider/index.html +1477 -354
  97. package/docs-dev/javascript/ui-scrollpoint/index.html +1448 -364
  98. package/docs-dev/javascript/ui-slider/index.html +1681 -399
  99. package/docs-dev/javascript/ui-tabs/index.html +1495 -441
  100. package/docs-dev/javascript/ui-theme-toggle/index.html +6010 -0
  101. package/docs-dev/javascript/ui-tooltip/index.html +1454 -367
  102. package/docs-dev/javascript/utils-class-logger/index.html +1452 -361
  103. package/docs-dev/javascript/utils-css/index.html +5824 -0
  104. package/docs-dev/javascript/utils-dom/index.html +1484 -473
  105. package/docs-dev/javascript/utils-file-save/index.html +1451 -360
  106. package/docs-dev/javascript/utils-floating-ui/index.html +1451 -360
  107. package/docs-dev/javascript/utils-id/index.html +1451 -360
  108. package/docs-dev/javascript/utils-pause-youtube-video/index.html +1451 -360
  109. package/docs-dev/javascript/utils-system/index.html +6127 -0
  110. package/docs-dev/sass/base/color/index.html +1451 -360
  111. package/docs-dev/sass/base/elements/index.html +1452 -361
  112. package/docs-dev/sass/base/index/index.html +1452 -361
  113. package/docs-dev/sass/base/index.html +1446 -353
  114. package/docs-dev/sass/base/keyframes/index.html +1452 -361
  115. package/docs-dev/sass/base/layout/index.html +1452 -361
  116. package/docs-dev/sass/base/normalize/index.html +1451 -360
  117. package/docs-dev/sass/base/print/index.html +1452 -361
  118. package/docs-dev/sass/base/root/index.html +1455 -364
  119. package/docs-dev/sass/base/typography/index.html +1451 -360
  120. package/docs-dev/sass/components/accordion/index.html +1538 -406
  121. package/docs-dev/sass/components/adaptive-spacing/index.html +1451 -360
  122. package/docs-dev/sass/components/badge/index.html +1468 -359
  123. package/docs-dev/sass/components/badge-stack/index.html +5991 -0
  124. package/docs-dev/sass/components/basic-hero/index.html +5985 -0
  125. package/docs-dev/sass/components/breadcrumb/index.html +6032 -0
  126. package/docs-dev/sass/components/button/index.html +1451 -360
  127. package/docs-dev/sass/components/button-group/index.html +5983 -0
  128. package/docs-dev/sass/components/button-verbose/index.html +1523 -357
  129. package/docs-dev/sass/components/callout/index.html +1572 -422
  130. package/docs-dev/sass/components/captioned-figure/index.html +1591 -385
  131. package/docs-dev/sass/components/card/index.html +1511 -363
  132. package/docs-dev/sass/components/card-grid/index.html +1451 -360
  133. package/docs-dev/sass/components/counter-list/index.html +6067 -0
  134. package/docs-dev/sass/components/css-icon/index.html +1452 -361
  135. package/docs-dev/sass/components/data-grid/index.html +1465 -367
  136. package/docs-dev/sass/components/data-table/index.html +1648 -369
  137. package/docs-dev/sass/components/fill-context/index.html +1451 -360
  138. package/docs-dev/sass/components/flipcard/index.html +1479 -357
  139. package/docs-dev/sass/components/flipcard-grid/index.html +1451 -360
  140. package/docs-dev/sass/components/form-theme/index.html +1652 -566
  141. package/docs-dev/sass/components/headline-label/index.html +6013 -0
  142. package/docs-dev/sass/components/hero/index.html +1497 -358
  143. package/docs-dev/sass/components/horizontal-rule/index.html +1451 -360
  144. package/docs-dev/sass/components/image-grid/index.html +1451 -360
  145. package/docs-dev/sass/components/index/index.html +1466 -362
  146. package/docs-dev/sass/components/index.html +1446 -353
  147. package/docs-dev/sass/components/links/index.html +1451 -360
  148. package/docs-dev/sass/components/list-inline/index.html +1451 -360
  149. package/docs-dev/sass/components/list-lines/index.html +1451 -360
  150. package/docs-dev/sass/components/list-ordered/index.html +1451 -360
  151. package/docs-dev/sass/components/list-unordered/index.html +1451 -360
  152. package/docs-dev/sass/components/menu-stack/index.html +1476 -371
  153. package/docs-dev/sass/components/modal/index.html +1486 -360
  154. package/docs-dev/sass/components/nav-strip/index.html +1459 -368
  155. package/docs-dev/sass/components/overlay-section/index.html +1459 -368
  156. package/docs-dev/sass/components/pager/index.html +1451 -360
  157. package/docs-dev/sass/components/panel/index.html +6213 -0
  158. package/docs-dev/sass/components/placeholder-block/index.html +1451 -360
  159. package/docs-dev/sass/components/popover/index.html +1497 -370
  160. package/docs-dev/sass/components/progress-bar/index.html +6192 -0
  161. package/docs-dev/sass/components/progress-circle/index.html +6084 -0
  162. package/docs-dev/sass/components/pull-quote/index.html +1463 -372
  163. package/docs-dev/sass/components/rail/index.html +6003 -0
  164. package/docs-dev/sass/components/ratio-box/index.html +1459 -368
  165. package/docs-dev/sass/components/rule/index.html +1452 -361
  166. package/docs-dev/sass/components/scroll-slider/index.html +1447 -368
  167. package/docs-dev/sass/components/skeleton/index.html +6041 -0
  168. package/docs-dev/sass/components/skip-link/index.html +1451 -360
  169. package/docs-dev/sass/components/slider/index.html +1491 -412
  170. package/docs-dev/sass/components/spoke-spinner/index.html +1453 -362
  171. package/docs-dev/sass/components/sticky-list/index.html +6203 -0
  172. package/docs-dev/sass/components/table-sticky/index.html +5707 -0
  173. package/docs-dev/sass/components/tabs/index.html +1472 -366
  174. package/docs-dev/sass/components/tag/index.html +1563 -378
  175. package/docs-dev/sass/components/tile-button/index.html +1451 -360
  176. package/docs-dev/sass/components/tile-grid/index.html +1451 -360
  177. package/docs-dev/sass/components/tile-grid-overlay/index.html +1451 -360
  178. package/docs-dev/sass/components/vignette/index.html +1457 -360
  179. package/docs-dev/sass/components/wysiwyg/index.html +1477 -368
  180. package/docs-dev/sass/core/breakpoint/index.html +1530 -387
  181. package/docs-dev/sass/core/button/index.html +1483 -390
  182. package/docs-dev/sass/core/color/index.html +1666 -443
  183. package/docs-dev/sass/core/cssvar/index.html +1451 -360
  184. package/docs-dev/sass/core/element/index.html +1790 -417
  185. package/docs-dev/sass/core/index.html +1451 -360
  186. package/docs-dev/sass/core/layout/index.html +1491 -381
  187. package/docs-dev/sass/core/path/index.html +1451 -360
  188. package/docs-dev/sass/core/selector/index.html +1451 -360
  189. package/docs-dev/sass/core/typography/index.html +1591 -442
  190. package/docs-dev/sass/core/units/index.html +1453 -356
  191. package/docs-dev/sass/core/utils/index.html +2744 -504
  192. package/docs-dev/sass/helpers/color/index.html +1451 -360
  193. package/docs-dev/sass/helpers/display/index.html +1452 -361
  194. package/docs-dev/sass/helpers/index/index.html +1451 -360
  195. package/docs-dev/sass/helpers/index.html +1446 -353
  196. package/docs-dev/sass/helpers/print/index.html +759 -298
  197. package/docs-dev/sass/helpers/typography/index.html +1451 -360
  198. package/docs-dev/sass/helpers/units/index.html +1451 -360
  199. package/docs-dev/sass/helpers/utilities/index.html +1449 -354
  200. package/docs-dev/sass/index.html +1446 -353
  201. package/js/events/index.js +17 -5
  202. package/js/index.js +1 -0
  203. package/js/settings.js +97 -0
  204. package/js/ui/breakpoints.js +19 -16
  205. package/js/ui/collapsible.js +8 -1
  206. package/js/ui/details-group.js +112 -0
  207. package/js/ui/dialog.js +103 -44
  208. package/js/ui/dialog.todo +2 -36
  209. package/js/ui/flipcard.js +37 -57
  210. package/js/ui/grid.js +15 -13
  211. package/js/ui/index.js +1 -0
  212. package/js/ui/modal-builder.js +127 -70
  213. package/js/ui/overflow-scroller.js +6 -4
  214. package/js/ui/page.js +2 -2
  215. package/js/ui/popover.js +38 -38
  216. package/js/ui/print.js +16 -25
  217. package/js/ui/programmatic-modal.js +9 -3
  218. package/js/ui/proxy-click.js +50 -36
  219. package/js/ui/resizer.js +408 -39
  220. package/js/ui/scroll-slider.js +24 -30
  221. package/js/ui/scrollpoint.js +29 -64
  222. package/js/ui/slider.js +108 -63
  223. package/js/ui/tabs.js +23 -36
  224. package/js/ui/theme-toggle.js +332 -94
  225. package/js/ui/tooltip.js +27 -32
  226. package/js/utils/class-logger.js +3 -3
  227. package/js/utils/css.js +13 -0
  228. package/js/utils/dom.js +23 -64
  229. package/js/utils/font-awesome.js +19 -0
  230. package/js/utils/index.js +2 -1
  231. package/js/utils/system.js +155 -0
  232. package/package.json +23 -8
  233. package/scss/README.md +9 -0
  234. package/scss/_breakpoint.scss +39 -5
  235. package/scss/_button.scss +7 -5
  236. package/scss/_color.scss +71 -40
  237. package/scss/_element.scss +124 -2
  238. package/scss/_layout.scss +7 -8
  239. package/scss/_typography.scss +15 -0
  240. package/scss/_units.scss +3 -2
  241. package/scss/_utils.scss +387 -16
  242. package/scss/base/_elements.scss +0 -1
  243. package/scss/base/_index.scss +1 -1
  244. package/scss/base/_keyframes.scss +15 -0
  245. package/scss/base/_layout.scss +1 -0
  246. package/scss/base/_print.scss +2 -0
  247. package/scss/base/_root.scss +2 -0
  248. package/scss/components/README.todos +1 -0
  249. package/scss/components/_accordion.scss +166 -109
  250. package/scss/components/_badge-stack.scss +84 -0
  251. package/scss/components/_badge.scss +30 -7
  252. package/scss/components/_basic-hero.scss +112 -0
  253. package/scss/components/_breadcrumb.scss +110 -0
  254. package/scss/components/_button-group.scss +90 -0
  255. package/scss/components/_button-verbose.scss +100 -18
  256. package/scss/components/_callout.scss +112 -53
  257. package/scss/components/_captioned-figure.scss +17 -0
  258. package/scss/components/_card.scss +222 -66
  259. package/scss/components/_counter-list.scss +151 -0
  260. package/scss/components/_css-icon.scss +27 -17
  261. package/scss/components/_data-grid.scss +55 -12
  262. package/scss/components/_data-table.scss +31 -0
  263. package/scss/components/_flipcard.scss +8 -3
  264. package/scss/components/_form-theme.scss +106 -95
  265. package/scss/components/_headline-label.scss +83 -0
  266. package/scss/components/_hero.scss +12 -10
  267. package/scss/components/_index.scss +73 -0
  268. package/scss/components/_menu-stack.scss +69 -32
  269. package/scss/components/_modal.scss +51 -23
  270. package/scss/components/_nav-strip.scss +2 -0
  271. package/scss/components/_overlay-section.scss +2 -5
  272. package/scss/components/_panel.scss +246 -0
  273. package/scss/components/_popover.scss +165 -64
  274. package/scss/components/_progress-bar.scss +254 -0
  275. package/scss/components/_progress-circle.scss +175 -0
  276. package/scss/components/_pull-quote.scss +13 -13
  277. package/scss/components/_rail.scss +127 -0
  278. package/scss/components/_ratio-box.scss +2 -5
  279. package/scss/components/_rule.scss +1 -0
  280. package/scss/components/_scroll-slider.scss +1 -5
  281. package/scss/components/_skeleton.scss +126 -0
  282. package/scss/components/_slider.scss +49 -72
  283. package/scss/components/_spoke-spinner.scss +2 -2
  284. package/scss/components/_sticky-list.scss +206 -0
  285. package/scss/components/_tabs.scss +22 -4
  286. package/scss/components/_tag.scss +49 -7
  287. package/scss/components/_vignette.scss +3 -5
  288. package/scss/components/_wysiwyg.scss +21 -13
  289. package/scss/helpers/_display.scss +15 -18
  290. package/scss/helpers/_print.scss +12 -7
  291. package/scss/helpers/_utilities.scss +56 -34
  292. package/types/events/index.d.ts +10 -1
  293. package/types/events/index.d.ts.map +1 -1
  294. package/types/index.d.ts +1 -0
  295. package/types/settings.d.ts +70 -0
  296. package/types/settings.d.ts.map +1 -0
  297. package/types/ui/breakpoints.d.ts +14 -14
  298. package/types/ui/breakpoints.d.ts.map +1 -1
  299. package/types/ui/collapsible.d.ts.map +1 -1
  300. package/types/ui/details-group.d.ts +38 -0
  301. package/types/ui/details-group.d.ts.map +1 -0
  302. package/types/ui/dialog.d.ts +20 -14
  303. package/types/ui/dialog.d.ts.map +1 -1
  304. package/types/ui/flipcard.d.ts +16 -10
  305. package/types/ui/flipcard.d.ts.map +1 -1
  306. package/types/ui/grid.d.ts +4 -6
  307. package/types/ui/grid.d.ts.map +1 -1
  308. package/types/ui/index.d.ts +1 -0
  309. package/types/ui/modal-builder.d.ts +116 -11
  310. package/types/ui/modal-builder.d.ts.map +1 -1
  311. package/types/ui/overflow-scroller.d.ts +2 -2
  312. package/types/ui/overflow-scroller.d.ts.map +1 -1
  313. package/types/ui/popover.d.ts +6 -7
  314. package/types/ui/popover.d.ts.map +1 -1
  315. package/types/ui/print.d.ts +0 -4
  316. package/types/ui/print.d.ts.map +1 -1
  317. package/types/ui/programmatic-modal.d.ts.map +1 -1
  318. package/types/ui/proxy-click.d.ts +19 -3
  319. package/types/ui/proxy-click.d.ts.map +1 -1
  320. package/types/ui/resizer.d.ts +116 -16
  321. package/types/ui/resizer.d.ts.map +1 -1
  322. package/types/ui/scroll-slider.d.ts +5 -7
  323. package/types/ui/scroll-slider.d.ts.map +1 -1
  324. package/types/ui/scrollpoint.d.ts +3 -8
  325. package/types/ui/scrollpoint.d.ts.map +1 -1
  326. package/types/ui/slider.d.ts +33 -14
  327. package/types/ui/slider.d.ts.map +1 -1
  328. package/types/ui/tabs.d.ts +6 -8
  329. package/types/ui/tabs.d.ts.map +1 -1
  330. package/types/ui/theme-toggle.d.ts +51 -7
  331. package/types/ui/theme-toggle.d.ts.map +1 -1
  332. package/types/ui/tooltip.d.ts +3 -5
  333. package/types/ui/tooltip.d.ts.map +1 -1
  334. package/types/utils/css.d.ts +11 -0
  335. package/types/utils/css.d.ts.map +1 -0
  336. package/types/utils/dom.d.ts +12 -32
  337. package/types/utils/dom.d.ts.map +1 -1
  338. package/types/utils/font-awesome.d.ts +5 -0
  339. package/types/utils/font-awesome.d.ts.map +1 -0
  340. package/types/utils/index.d.ts +1 -0
  341. package/types/utils/system.d.ts +113 -0
  342. 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
@@ -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,11 +58,18 @@
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.
60
- /// @prop {List} image-icon-max-width [30rem] Max width for image when using the modifier on the .card__image--icon
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
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
63
68
  /// @prop {Unit} horizontal-body-max-width [80rem] The max-width of body when horizontal
64
-
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
65
73
 
66
74
  $config: (
67
75
  "background-color" : white,
@@ -75,26 +83,31 @@ $config: (
75
83
  "clickable-card-enabled" : true,
76
84
  "clickable-card-selector" : "[data-ulu-proxy-click-init]",
77
85
  "clickable-card-interact-selector" : "&:hover, &:focus-within",
78
- "color" : null,
86
+ "color" : "type",
79
87
  "color-hover" : null,
80
88
  "footer-padding-y" : 0.25rem,
81
89
  "footer-min-height" : 2.5rem,
82
90
  "horizontal-breakpoint" : "small",
83
- "horizontal-image-width" : 33%,
84
- "horizontal-body-max-width" : 80rem,
91
+ "horizontal-image-width" : min(33%, 20rem),
92
+ "horizontal-min-height" : 20rem,
93
+ "horizontal-max-width" : 80rem,
94
+ "horizontal-main-max-width" : 40rem,
95
+ "horizontal-aside-width" : 40%,
85
96
  "header-margin" : 0.75em,
86
97
  "image-ratio" : 56.25%,
87
98
  "image-aspect-ratio": list.slash(5, 3),
88
- "image-background-color" : rgb(197, 197, 197),
99
+ "image-background-color" : rgb(238, 238, 238),
89
100
  "image-border" : null, // For when you have a margin
90
101
  "image-filter-hover" : null,
91
102
  "image-margin" : null,
92
- "image-icon-max-width" : 30rem,
103
+ "image-icon-max-width" : 8rem,
93
104
  "image-transform-hover" : null,
94
105
  "image-transition-duration" : 350ms,
95
106
  "image-transition-enabled" : true,
96
107
  "image-transition-properties" : (transform, filter),
97
108
  "image-transition-timing-function" : ease-in-out,
109
+ "image-fit-padding" : 1rem,
110
+ "image-fit-filter" : drop-shadow(0 0px 8px rgba(0, 0, 0, 0.3)),
98
111
  "margin-y" : 3rem,
99
112
  "max-width" : 28rem,
100
113
  "padding" : 2rem,
@@ -114,6 +127,10 @@ $config: (
114
127
  "overlay-background-color": rgba(0, 0, 0, 0.6),
115
128
  "overlay-shading": true,
116
129
  "overlay-body-padding-y": 1rem,
130
+ "aside-rule" : false,
131
+ "aside-rule-width" : 1px,
132
+ "aside-background-color" : transparent,
133
+ "aside-rule-color": "rule-light",
117
134
  ) !default;
118
135
 
119
136
  /// Change modules $config
@@ -142,19 +159,34 @@ $config: (
142
159
 
143
160
  @mixin when-clickable($hover: false) {
144
161
  $prefix: selector.class("card");
162
+ // When proxy click enabled
145
163
  @if (get("clickable-card-enabled") and get("clickable-card-selector")) {
146
- #{ $prefix } {
147
- &#{ get("clickable-card-selector") } {
148
- @if ($hover) {
149
- #{ get("clickable-card-interact-selector") } {
150
- @content;
151
- }
152
- } @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") } {
153
170
  @content;
154
171
  }
172
+ } @else {
173
+ @content;
155
174
  }
156
175
  }
157
- }
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
+ }
158
190
  }
159
191
 
160
192
 
@@ -183,14 +215,13 @@ $config: (
183
215
  flex-direction: column;
184
216
  justify-content: flex-end;
185
217
  max-width: get("max-width");
218
+ // Not absolutely necessary, incase we want to remove in future
219
+ overflow: hidden;
220
+
186
221
  // Border is on pseudo so that it's on top of image/etc
187
- &:after {
188
- position: absolute;
222
+ &::after {
223
+ @include layout.absolute-fill();
189
224
  content: if(get("border"), "", null);
190
- top: 0;
191
- bottom: 0;
192
- right: 0;
193
- left: 0;
194
225
  border: get("border");
195
226
  border-radius: get("border-radius");
196
227
  z-index: 4;
@@ -204,7 +235,7 @@ $config: (
204
235
  box-shadow: get("box-shadow-hover");
205
236
 
206
237
  @if (get("border-hover") or get("overlay-background-color-hover")) {
207
- &:after {
238
+ &::after {
208
239
  content: "";
209
240
  border: get("border-hover");
210
241
  background-color: color.get(get("overlay-background-color-hover"));
@@ -228,14 +259,15 @@ $config: (
228
259
  margin-bottom: get("title-margin");
229
260
  display: block;
230
261
  font-weight: get("title-font-weight");
231
- @if get("title-color-hover") {
232
- &:hover,
233
- &:focus {
234
- color: color.get(get("title-color-hover"));
235
- }
236
- }
237
262
  #{ $prefix }__title-link {
238
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
+ }
239
271
  }
240
272
  }
241
273
  @if get("title-color-hover") {
@@ -267,11 +299,7 @@ $config: (
267
299
  }
268
300
  #{ $prefix }__image img,
269
301
  #{ $prefix}__image-media {
270
- position: absolute;
271
- top: 0;
272
- left: 0;
273
- width: 100%;
274
- height: 100%;
302
+ @include layout.absolute-fill(true);
275
303
  border: 0;
276
304
  object-fit: cover;
277
305
  transform-origin: center center;
@@ -290,17 +318,24 @@ $config: (
290
318
  }
291
319
  }
292
320
  }
293
- #{ $prefix }__body,
294
- #{ $prefix }__footer,
295
- #{ $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;
296
330
  padding: get("padding");
297
331
  }
298
332
 
299
333
  #{ $prefix }__image--icon {
300
- background-color: transparent;
334
+ // background-color: transparent;
301
335
  display: flex;
302
336
  align-items: center;
303
337
  justify-content: center;
338
+ // padding: 2rem;
304
339
  img {
305
340
  position: static;
306
341
  display: block;
@@ -316,9 +351,25 @@ $config: (
316
351
  z-index: 2; // Above image
317
352
  }
318
353
  #{ $prefix }__body {
354
+ display: flex;
355
+ flex-direction: column;
319
356
  flex-grow: 1;
320
357
  min-height: get("body-min-height");
321
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
+ }
322
373
  // For actions/messages
323
374
  // - Layout as flex with min height to support buttons
324
375
  // and text without relying so much on padding
@@ -347,10 +398,12 @@ $config: (
347
398
  min-height: 0;
348
399
  padding-top: get("overlay-body-padding-y");
349
400
  padding-bottom: get("overlay-body-padding-y");
401
+
350
402
  &:not(:has(~ #{ $prefix }__footer)) {
351
403
  border-bottom-left-radius: get("border-radius");
352
404
  border-bottom-right-radius: get("border-radius");
353
405
  }
406
+
354
407
  @if (get("overlay-shading")) {
355
408
  margin-top: 4rem;
356
409
  &::before {
@@ -381,11 +434,7 @@ $config: (
381
434
  color: color.get(get("color-overlay"));
382
435
  }
383
436
  #{ $prefix }__image {
384
- position: absolute;
385
- top: 0;
386
- left: 0;
387
- bottom: 0;
388
- right: 0;
437
+ @include layout.absolute-fill();
389
438
  overflow: hidden;
390
439
  padding-top: 0;
391
440
  background-color: color.get(rgb(255, 255, 255));
@@ -399,40 +448,147 @@ $config: (
399
448
  border: 0;
400
449
  object-fit: cover;
401
450
  &::before {
402
- position: absolute;
451
+ @include layout.absolute-fill(true);
403
452
  display: block;
404
- top: 0;
405
- bottom: 0;
406
- left: 0;
407
- right: 0;
408
453
  background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(0, 0, 0, 0.9));
409
454
  }
410
455
  }
411
456
  }
412
457
  }
413
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
+
414
485
  @if (get("horizontal-breakpoint")) {
415
486
  @include breakpoint.min(get("horizontal-breakpoint")) {
416
- #{ $prefix }--horizontal {
417
- display: flex;
418
- justify-content: center;
419
- align-items: center;
420
- #{ $prefix }__image {
421
- width: get("horizontal-image-width");
422
- flex: 0 1 get("horizontal-image-width");
423
- // max-width: 30rem;
424
- min-height: 28rem;
425
- // padding-top: 0;
426
- }
427
- #{ $prefix }__body {
428
- display: flex;
429
- flex: 1;
430
- flex-direction: column;
431
- justify-content: center;
432
- max-width: get("horizontal-body-max-width");
433
- }
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
+ justify-content: space-between;
524
+ }
525
+ #{ $prefix }__main {
526
+ flex-grow: 1;
527
+ max-width: get("horizontal-main-max-width");
528
+ }
529
+ #{ $prefix }__aside {
530
+ flex: 0 0 get("horizontal-aside-width");
531
+ height: 100%;
532
+ }
533
+ @if(get("aside-rule")) {
534
+ #{ $prefix }__aside::after {
535
+ content: "";
536
+ position: absolute;
537
+ top: get("padding");
538
+ left: calc(0rem - get("aside-rule-width") / 2);
539
+ height: calc(100% - get("padding") - get("padding"));
540
+ width: get("aside-rule-width");
541
+ background-color: get("aside-rule-color");
434
542
  }
435
543
  }
544
+
545
+ // For modern browsers
546
+ // Optionally use no-image modifier for older browser support
547
+ &:not(:has(#{ $prefix }__image)) {
548
+ @include -card-horizontal-no-image-styles();
549
+ }
550
+ &#{ $prefix }--no-image {
551
+ @include -card-horizontal-no-image-styles();
552
+ }
553
+ }
554
+ #{ $prefix }--horizontal-center {
555
+ #{ $prefix }__body {
556
+ align-self: center;
557
+ }
558
+ }
559
+ }
560
+
561
+ @mixin -card-horizontal-no-image-styles() {
562
+ $prefix: selector.class("card");
563
+ grid-template-columns: 1fr;
564
+ #{ $prefix }__body,
565
+ #{ $prefix }__footer {
566
+ grid-column: 1 / 2;
436
567
  }
437
568
  }
438
569
 
570
+ // OLD CSS FOR HORIZONTAL
571
+ // #{ $prefix }--horizontal {
572
+ // display: flex;
573
+ // flex-direction: row;
574
+ // justify-content: center;
575
+ // align-items: center;
576
+ // #{ $prefix }__image {
577
+ // align-self: stretch;
578
+ // border-top-right-radius: 0;
579
+ // border-bottom-left-radius: get("border-radius");
580
+ // width: get("horizontal-image-width");
581
+ // flex: 0 0 get("horizontal-image-width");
582
+ // // max-width: 30rem;
583
+ // // min-height: 28rem;
584
+ // // padding-top: 0;
585
+ // }
586
+ // #{ $prefix }__body {
587
+ // display: flex;
588
+ // flex: 1;
589
+ // flex-direction: column;
590
+ // justify-content: center;
591
+ // max-width: get("horizontal-body-max-width");
592
+ // }
593
+ // }
594
+
@@ -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
+ }