@ulu/frontend 0.1.0-beta.99 → 0.2.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. package/dist/README.md +12 -0
  2. package/{types/utils/system.d.ts → dist/es/core/component.d.ts} +7 -16
  3. package/dist/es/core/component.d.ts.map +1 -0
  4. package/dist/es/core/component.js +134 -0
  5. package/dist/es/core/events.d.ts +27 -0
  6. package/dist/es/core/events.d.ts.map +1 -0
  7. package/dist/es/core/events.js +45 -0
  8. package/dist/es/core/index.d.ts +4 -0
  9. package/{types/utils → dist/es/core}/index.d.ts.map +1 -1
  10. package/{types → dist/es/core}/settings.d.ts +1 -1
  11. package/dist/es/core/settings.d.ts.map +1 -0
  12. package/dist/es/core/settings.js +44 -0
  13. package/dist/es/index.d.ts +4 -0
  14. package/{types → dist/es}/index.d.ts.map +1 -1
  15. package/dist/es/index.js +125 -0
  16. package/{types → dist/es}/ui/breakpoints.d.ts +9 -9
  17. package/dist/es/ui/breakpoints.d.ts.map +1 -0
  18. package/dist/es/ui/breakpoints.js +194 -0
  19. package/{types → dist/es}/ui/collapsible.d.ts +28 -7
  20. package/dist/es/ui/collapsible.d.ts.map +1 -0
  21. package/dist/es/ui/collapsible.js +140 -0
  22. package/{types → dist/es}/ui/details-group.d.ts +1 -1
  23. package/dist/es/ui/details-group.d.ts.map +1 -0
  24. package/dist/es/ui/details-group.js +49 -0
  25. package/{types → dist/es}/ui/dialog.d.ts +3 -3
  26. package/dist/es/ui/dialog.d.ts.map +1 -0
  27. package/dist/es/ui/dialog.js +112 -0
  28. package/{types → dist/es}/ui/flipcard.d.ts +1 -1
  29. package/dist/es/ui/flipcard.d.ts.map +1 -0
  30. package/dist/es/ui/flipcard.js +97 -0
  31. package/{types → dist/es}/ui/grid.d.ts +2 -2
  32. package/dist/es/ui/grid.d.ts.map +1 -0
  33. package/dist/es/ui/grid.js +18 -0
  34. package/dist/es/ui/index.d.ts +23 -0
  35. package/{types → dist/es}/ui/index.d.ts.map +1 -1
  36. package/{types → dist/es}/ui/modal-builder.d.ts +22 -17
  37. package/dist/es/ui/modal-builder.d.ts.map +1 -0
  38. package/dist/es/ui/modal-builder.js +136 -0
  39. package/dist/es/ui/overflow-scroller-pager.d.ts.map +1 -0
  40. package/dist/es/ui/overflow-scroller-pager.js +28 -0
  41. package/{types → dist/es}/ui/overflow-scroller.d.ts +3 -3
  42. package/dist/es/ui/overflow-scroller.d.ts.map +1 -0
  43. package/dist/es/ui/overflow-scroller.js +90 -0
  44. package/dist/es/ui/page.d.ts.map +1 -0
  45. package/dist/es/ui/page.js +7 -0
  46. package/{types → dist/es}/ui/popover.d.ts +4 -4
  47. package/dist/es/ui/popover.d.ts.map +1 -0
  48. package/dist/es/ui/popover.js +77 -0
  49. package/dist/es/ui/print-details.d.ts.map +1 -0
  50. package/dist/es/ui/print-details.js +22 -0
  51. package/dist/es/ui/print.d.ts.map +1 -0
  52. package/dist/es/ui/print.js +34 -0
  53. package/{types → dist/es}/ui/programmatic-modal.d.ts +2 -2
  54. package/dist/es/ui/programmatic-modal.d.ts.map +1 -0
  55. package/dist/es/ui/programmatic-modal.js +55 -0
  56. package/{types → dist/es}/ui/proxy-click.d.ts +4 -4
  57. package/dist/es/ui/proxy-click.d.ts.map +1 -0
  58. package/dist/es/ui/proxy-click.js +44 -0
  59. package/{types → dist/es}/ui/resizer.d.ts +17 -17
  60. package/dist/es/ui/resizer.d.ts.map +1 -0
  61. package/dist/es/ui/resizer.js +242 -0
  62. package/{types → dist/es}/ui/scroll-slider.d.ts +1 -1
  63. package/dist/es/ui/scroll-slider.d.ts.map +1 -0
  64. package/dist/es/ui/scroll-slider.js +29 -0
  65. package/{types → dist/es}/ui/scrollpoint.d.ts +80 -12
  66. package/dist/es/ui/scrollpoint.d.ts.map +1 -0
  67. package/dist/es/ui/scrollpoint.js +178 -0
  68. package/{types → dist/es}/ui/slider.d.ts +16 -13
  69. package/dist/es/ui/slider.d.ts.map +1 -0
  70. package/dist/es/ui/slider.js +290 -0
  71. package/{types → dist/es}/ui/tabs.d.ts +2 -2
  72. package/dist/es/ui/tabs.d.ts.map +1 -0
  73. package/dist/es/ui/tabs.js +64 -0
  74. package/{types → dist/es}/ui/theme-toggle.d.ts +4 -4
  75. package/dist/es/ui/theme-toggle.d.ts.map +1 -0
  76. package/dist/es/ui/theme-toggle.js +190 -0
  77. package/{types → dist/es}/ui/tooltip.d.ts +5 -5
  78. package/dist/es/ui/tooltip.d.ts.map +1 -0
  79. package/dist/es/ui/tooltip.js +184 -0
  80. package/{types → dist/es}/utils/class-logger.d.ts +4 -4
  81. package/dist/es/utils/class-logger.d.ts.map +1 -0
  82. package/dist/es/utils/class-logger.js +37 -0
  83. package/dist/es/utils/css.d.ts.map +1 -0
  84. package/dist/es/utils/css.js +6 -0
  85. package/{types → dist/es}/utils/dom.d.ts +1 -1
  86. package/dist/es/utils/dom.d.ts.map +1 -0
  87. package/dist/es/utils/dom.js +29 -0
  88. package/{types → dist/es}/utils/file-save.d.ts +4 -1
  89. package/dist/es/utils/file-save.d.ts.map +1 -0
  90. package/dist/es/utils/file-save.js +46 -0
  91. package/{types → dist/es}/utils/floating-ui.d.ts +1 -1
  92. package/dist/es/utils/floating-ui.d.ts.map +1 -0
  93. package/dist/es/utils/floating-ui.js +46 -0
  94. package/dist/es/utils/font-awesome.d.ts.map +1 -0
  95. package/dist/es/utils/font-awesome.js +13 -0
  96. package/dist/es/utils/id.d.ts.map +1 -0
  97. package/dist/es/utils/id.js +11 -0
  98. package/dist/es/utils/index.d.ts +8 -0
  99. package/dist/es/utils/index.d.ts.map +1 -0
  100. package/dist/es/utils/pause-youtube-video.d.ts.map +1 -0
  101. package/dist/es/utils/pause-youtube-video.js +27 -0
  102. package/dist/umd/style.css +1 -0
  103. package/dist/umd/ulu-frontend.umd.js +70 -0
  104. package/lib/index.js +5 -0
  105. package/{js/utils/system.js → lib/js/core/component.js} +13 -12
  106. package/lib/js/core/events.js +98 -0
  107. package/lib/js/core/index.js +34 -0
  108. package/{js → lib/js/core}/settings.js +3 -3
  109. package/lib/js/exports.md +126 -0
  110. package/lib/js/index.js +7 -0
  111. package/{js → lib/js}/ui/breakpoints.js +40 -35
  112. package/{js → lib/js}/ui/collapsible.js +2 -2
  113. package/{js → lib/js}/ui/details-group.js +2 -2
  114. package/{js → lib/js}/ui/dialog.js +6 -6
  115. package/{js → lib/js}/ui/flipcard.js +2 -2
  116. package/{js → lib/js}/ui/grid.js +2 -2
  117. package/lib/js/ui/index.js +165 -0
  118. package/{js → lib/js}/ui/modal-builder.js +11 -9
  119. package/{js → lib/js}/ui/overflow-scroller.js +2 -2
  120. package/{js → lib/js}/ui/popover.js +2 -2
  121. package/{js → lib/js}/ui/print-details.js +3 -3
  122. package/{js → lib/js}/ui/print.js +2 -2
  123. package/{js → lib/js}/ui/programmatic-modal.js +3 -3
  124. package/{js → lib/js}/ui/proxy-click.js +2 -2
  125. package/{js → lib/js}/ui/resizer.js +2 -2
  126. package/{js → lib/js}/ui/scroll-slider.js +2 -2
  127. package/{js → lib/js}/ui/scrollpoint.js +2 -2
  128. package/{js → lib/js}/ui/slider.js +25 -16
  129. package/{js → lib/js}/ui/tabs.js +2 -2
  130. package/{js → lib/js}/ui/theme-toggle.js +5 -5
  131. package/{js → lib/js}/ui/tooltip.js +4 -4
  132. package/{js → lib/js}/utils/css.js +1 -1
  133. package/{js → lib/js}/utils/font-awesome.js +2 -2
  134. package/lib/js/utils/index.js +63 -0
  135. package/{scss → lib/scss}/_breakpoint.scss +4 -4
  136. package/{scss → lib/scss}/_button.scss +1 -0
  137. package/{scss → lib/scss}/_color.scss +42 -38
  138. package/{scss → lib/scss}/_element.scss +13 -2
  139. package/{scss → lib/scss}/_typography.scss +15 -0
  140. package/lib/scss/components/_accordion.scss +268 -0
  141. package/{scss → lib/scss}/components/_basic-hero.scss +1 -1
  142. package/lib/scss/components/_breadcrumb.scss +110 -0
  143. package/{scss → lib/scss}/components/_button.scss +23 -4
  144. package/{scss → lib/scss}/components/_card-grid.scss +8 -2
  145. package/lib/scss/components/_card.scss +655 -0
  146. package/lib/scss/components/_definition-list.scss +178 -0
  147. package/{scss → lib/scss}/components/_form-theme.scss +3 -3
  148. package/{scss → lib/scss}/components/_index.scss +25 -0
  149. package/{scss → lib/scss}/components/_menu-stack.scss +170 -16
  150. package/{scss → lib/scss}/components/_modal.scss +23 -13
  151. package/lib/scss/components/_progress-bar.scss +260 -0
  152. package/lib/scss/components/_progress-circle.scss +175 -0
  153. package/{scss → lib/scss}/components/_skeleton.scss +24 -20
  154. package/{scss → lib/scss}/components/_tag.scss +49 -7
  155. package/{scss → lib/scss}/helpers/_utilities.scss +22 -3
  156. package/package.json +65 -43
  157. package/.browserslistrc +0 -2
  158. package/.eslintrc +0 -17
  159. package/.prettierrc +0 -10
  160. package/CHANGELOG.md +0 -750
  161. package/deprecated/js/doc-ready.js +0 -28
  162. package/deprecated/js/drupal-programmatic-modal.js +0 -91
  163. package/deprecated/js/jquery-prototypes.js +0 -309
  164. package/deprecated/js/micromodal-modals.js +0 -196
  165. package/deprecated/js/mini-collapsible-popper-positioning.js +0 -126
  166. package/deprecated/js/mini-collapsible.js +0 -607
  167. package/deprecated/js/node-data-manager.js +0 -78
  168. package/deprecated/js/script-loader.js +0 -60
  169. package/deprecated/js/waypoints/README.md +0 -3
  170. package/deprecated/js/waypoints/anchor-menu.js +0 -76
  171. package/deprecated/js/waypoints/element-waypoint.js +0 -75
  172. package/deprecated/js/waypoints/examples/page-link-menu.md +0 -106
  173. package/deprecated/js/waypoints/state-in-attribute.js +0 -32
  174. package/dist/ulu-frontend.min.css +0 -1
  175. package/dist/ulu-frontend.min.js +0 -77
  176. package/docs-dev/.nojekyll +0 -1
  177. package/docs-dev/assets/chunks/modulepreload-polyfill.DaKOjhqt.js +0 -37
  178. package/docs-dev/assets/favicons/android-chrome-192x192.png +0 -0
  179. package/docs-dev/assets/favicons/android-chrome-256x256.png +0 -0
  180. package/docs-dev/assets/favicons/apple-touch-icon.png +0 -0
  181. package/docs-dev/assets/favicons/browserconfig.xml +0 -9
  182. package/docs-dev/assets/favicons/favicon-16x16.png +0 -0
  183. package/docs-dev/assets/favicons/favicon-32x32.png +0 -0
  184. package/docs-dev/assets/favicons/favicon.ico +0 -0
  185. package/docs-dev/assets/favicons/mstile-150x150.png +0 -0
  186. package/docs-dev/assets/favicons/safari-pinned-tab.svg +0 -1
  187. package/docs-dev/assets/favicons/site.webmanifest +0 -19
  188. package/docs-dev/assets/fonts/fontawesome/fa-brands-400.ttf +0 -0
  189. package/docs-dev/assets/fonts/fontawesome/fa-brands-400.woff2 +0 -0
  190. package/docs-dev/assets/fonts/fontawesome/fa-regular-400.ttf +0 -0
  191. package/docs-dev/assets/fonts/fontawesome/fa-regular-400.woff2 +0 -0
  192. package/docs-dev/assets/fonts/fontawesome/fa-solid-900.ttf +0 -0
  193. package/docs-dev/assets/fonts/fontawesome/fa-solid-900.woff2 +0 -0
  194. package/docs-dev/assets/fonts/fontawesome/fa-v4compatibility.ttf +0 -0
  195. package/docs-dev/assets/fonts/fontawesome/fa-v4compatibility.woff2 +0 -0
  196. package/docs-dev/assets/fonts/inter/Inter-Black.woff2 +0 -0
  197. package/docs-dev/assets/fonts/inter/Inter-BlackItalic.woff2 +0 -0
  198. package/docs-dev/assets/fonts/inter/Inter-Bold.woff2 +0 -0
  199. package/docs-dev/assets/fonts/inter/Inter-BoldItalic.woff2 +0 -0
  200. package/docs-dev/assets/fonts/inter/Inter-ExtraBold.woff2 +0 -0
  201. package/docs-dev/assets/fonts/inter/Inter-ExtraBoldItalic.woff2 +0 -0
  202. package/docs-dev/assets/fonts/inter/Inter-ExtraLight.woff2 +0 -0
  203. package/docs-dev/assets/fonts/inter/Inter-ExtraLightItalic.woff2 +0 -0
  204. package/docs-dev/assets/fonts/inter/Inter-Italic.woff2 +0 -0
  205. package/docs-dev/assets/fonts/inter/Inter-Light.woff2 +0 -0
  206. package/docs-dev/assets/fonts/inter/Inter-LightItalic.woff2 +0 -0
  207. package/docs-dev/assets/fonts/inter/Inter-Medium.woff2 +0 -0
  208. package/docs-dev/assets/fonts/inter/Inter-MediumItalic.woff2 +0 -0
  209. package/docs-dev/assets/fonts/inter/Inter-Regular.woff2 +0 -0
  210. package/docs-dev/assets/fonts/inter/Inter-SemiBold.woff2 +0 -0
  211. package/docs-dev/assets/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
  212. package/docs-dev/assets/fonts/inter/Inter-Thin.woff2 +0 -0
  213. package/docs-dev/assets/fonts/inter/Inter-ThinItalic.woff2 +0 -0
  214. package/docs-dev/assets/fonts/inter/InterDisplay-Black.woff2 +0 -0
  215. package/docs-dev/assets/fonts/inter/InterDisplay-BlackItalic.woff2 +0 -0
  216. package/docs-dev/assets/fonts/inter/InterDisplay-Bold.woff2 +0 -0
  217. package/docs-dev/assets/fonts/inter/InterDisplay-BoldItalic.woff2 +0 -0
  218. package/docs-dev/assets/fonts/inter/InterDisplay-ExtraBold.woff2 +0 -0
  219. package/docs-dev/assets/fonts/inter/InterDisplay-ExtraBoldItalic.woff2 +0 -0
  220. package/docs-dev/assets/fonts/inter/InterDisplay-ExtraLight.woff2 +0 -0
  221. package/docs-dev/assets/fonts/inter/InterDisplay-ExtraLightItalic.woff2 +0 -0
  222. package/docs-dev/assets/fonts/inter/InterDisplay-Italic.woff2 +0 -0
  223. package/docs-dev/assets/fonts/inter/InterDisplay-Light.woff2 +0 -0
  224. package/docs-dev/assets/fonts/inter/InterDisplay-LightItalic.woff2 +0 -0
  225. package/docs-dev/assets/fonts/inter/InterDisplay-Medium.woff2 +0 -0
  226. package/docs-dev/assets/fonts/inter/InterDisplay-MediumItalic.woff2 +0 -0
  227. package/docs-dev/assets/fonts/inter/InterDisplay-Regular.woff2 +0 -0
  228. package/docs-dev/assets/fonts/inter/InterDisplay-SemiBold.woff2 +0 -0
  229. package/docs-dev/assets/fonts/inter/InterDisplay-SemiBoldItalic.woff2 +0 -0
  230. package/docs-dev/assets/fonts/inter/InterDisplay-Thin.woff2 +0 -0
  231. package/docs-dev/assets/fonts/inter/InterDisplay-ThinItalic.woff2 +0 -0
  232. package/docs-dev/assets/fonts/inter/InterVariable-Italic.woff2 +0 -0
  233. package/docs-dev/assets/fonts/inter/InterVariable.woff2 +0 -0
  234. package/docs-dev/assets/fonts/inter/LICENSE.txt +0 -92
  235. package/docs-dev/assets/fonts/inter/inter.css +0 -37
  236. package/docs-dev/assets/main.js +0 -23312
  237. package/docs-dev/assets/placeholder/4065947-uhd_4096_2160_25fps.credits.txt +0 -2
  238. package/docs-dev/assets/placeholder/4065947-uhd_4096_2160_25fps.mp4 +0 -0
  239. package/docs-dev/assets/placeholder/icon-calendar.svg +0 -1
  240. package/docs-dev/assets/placeholder/icon-check.svg +0 -1
  241. package/docs-dev/assets/placeholder/image-1-attribution.txt +0 -7
  242. package/docs-dev/assets/placeholder/image-1-darkened.jpg +0 -0
  243. package/docs-dev/assets/placeholder/image-1-lightened.jpg +0 -0
  244. package/docs-dev/assets/placeholder/image-1.jpg +0 -0
  245. package/docs-dev/assets/style.css +0 -19153
  246. package/docs-dev/changelog/index.html +0 -7184
  247. package/docs-dev/demos/accordion/index.html +0 -5811
  248. package/docs-dev/demos/badge/index.html +0 -5655
  249. package/docs-dev/demos/badge-stack/index.html +0 -5636
  250. package/docs-dev/demos/badge.1/index.html +0 -5595
  251. package/docs-dev/demos/basic-hero/index.html +0 -111
  252. package/docs-dev/demos/breakpoints-manager/index.html +0 -5666
  253. package/docs-dev/demos/button/index.html +0 -5665
  254. package/docs-dev/demos/button-group/index.html +0 -5652
  255. package/docs-dev/demos/button-verbose/index.html +0 -5658
  256. package/docs-dev/demos/callout/index.html +0 -5704
  257. package/docs-dev/demos/captioned-figure/index.html +0 -5686
  258. package/docs-dev/demos/card/index.html +0 -5682
  259. package/docs-dev/demos/card-grid/index.html +0 -5777
  260. package/docs-dev/demos/counter-list/index.html +0 -5660
  261. package/docs-dev/demos/css-icons/index.html +0 -6298
  262. package/docs-dev/demos/data-grid/index.html +0 -6529
  263. package/docs-dev/demos/data-table/index.html +0 -5833
  264. package/docs-dev/demos/details-group/index.html +0 -5687
  265. package/docs-dev/demos/file-save/index.html +0 -5675
  266. package/docs-dev/demos/flipcard/index.html +0 -6224
  267. package/docs-dev/demos/form-theme/index.html +0 -5842
  268. package/docs-dev/demos/headline-label/index.html +0 -5622
  269. package/docs-dev/demos/hero/index.html +0 -309
  270. package/docs-dev/demos/image-grid/index.html +0 -165
  271. package/docs-dev/demos/index.html +0 -5613
  272. package/docs-dev/demos/list-inline/index.html +0 -5640
  273. package/docs-dev/demos/list-lines/index.html +0 -5630
  274. package/docs-dev/demos/menu-stack/index.html +0 -5769
  275. package/docs-dev/demos/modals/index.html +0 -5844
  276. package/docs-dev/demos/nav-strip/index.html +0 -5725
  277. package/docs-dev/demos/overlay-section/index.html +0 -5701
  278. package/docs-dev/demos/panel/index.html +0 -5682
  279. package/docs-dev/demos/popovers/index.html +0 -0
  280. package/docs-dev/demos/print/index.html +0 -5633
  281. package/docs-dev/demos/pull-quote/index.html +0 -5632
  282. package/docs-dev/demos/rail/index.html +0 -5730
  283. package/docs-dev/demos/rule/index.html +0 -5694
  284. package/docs-dev/demos/scroll-slider/index.html +0 -170
  285. package/docs-dev/demos/scrollpoints/index.html +0 -5651
  286. package/docs-dev/demos/skeleton/index.html +0 -5676
  287. package/docs-dev/demos/slider/index.html +0 -172
  288. package/docs-dev/demos/spoke-spinner/index.html +0 -5628
  289. package/docs-dev/demos/sticky-list/index.html +0 -5643
  290. package/docs-dev/demos/tabs/index.html +0 -5753
  291. package/docs-dev/demos/tag/index.html +0 -5633
  292. package/docs-dev/demos/theme-toggle/index.html +0 -5699
  293. package/docs-dev/demos/tile-grid-overlay/index.html +0 -390
  294. package/docs-dev/demos/tiles/index.html +0 -5882
  295. package/docs-dev/demos/tooltip/index.html +0 -5661
  296. package/docs-dev/demos/wysiwyg/index.html +0 -5672
  297. package/docs-dev/guide/building-stylesheet/index.html +0 -5682
  298. package/docs-dev/guide/developing-ulu-scss-module/index.html +0 -5734
  299. package/docs-dev/guide/index.html +0 -5615
  300. package/docs-dev/index.html +0 -5662
  301. package/docs-dev/javascript/events/index.html +0 -5811
  302. package/docs-dev/javascript/index.html +0 -5628
  303. package/docs-dev/javascript/settings/index.html +0 -5825
  304. package/docs-dev/javascript/ui-breakpoints/index.html +0 -6071
  305. package/docs-dev/javascript/ui-collapsible/index.html +0 -5738
  306. package/docs-dev/javascript/ui-details-group/index.html +0 -5742
  307. package/docs-dev/javascript/ui-dialog/index.html +0 -5787
  308. package/docs-dev/javascript/ui-flipcard/index.html +0 -5678
  309. package/docs-dev/javascript/ui-grid/index.html +0 -5653
  310. package/docs-dev/javascript/ui-modal-builder/index.html +0 -5901
  311. package/docs-dev/javascript/ui-overflow-scroller/index.html +0 -5611
  312. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +0 -5629
  313. package/docs-dev/javascript/ui-page/index.html +0 -5626
  314. package/docs-dev/javascript/ui-popover/index.html +0 -5661
  315. package/docs-dev/javascript/ui-print/index.html +0 -5670
  316. package/docs-dev/javascript/ui-print-details/index.html +0 -5641
  317. package/docs-dev/javascript/ui-programmatic-modal/index.html +0 -5611
  318. package/docs-dev/javascript/ui-proxy-click/index.html +0 -5740
  319. package/docs-dev/javascript/ui-resizer/index.html +0 -5946
  320. package/docs-dev/javascript/ui-scroll-slider/index.html +0 -5672
  321. package/docs-dev/javascript/ui-scrollpoint/index.html +0 -5851
  322. package/docs-dev/javascript/ui-slider/index.html +0 -5813
  323. package/docs-dev/javascript/ui-tabs/index.html +0 -5706
  324. package/docs-dev/javascript/ui-theme-toggle/index.html +0 -5830
  325. package/docs-dev/javascript/ui-tooltip/index.html +0 -5754
  326. package/docs-dev/javascript/utils-class-logger/index.html +0 -5746
  327. package/docs-dev/javascript/utils-css/index.html +0 -5644
  328. package/docs-dev/javascript/utils-dom/index.html +0 -5711
  329. package/docs-dev/javascript/utils-file-save/index.html +0 -5783
  330. package/docs-dev/javascript/utils-floating-ui/index.html +0 -5643
  331. package/docs-dev/javascript/utils-id/index.html +0 -5653
  332. package/docs-dev/javascript/utils-pause-youtube-video/index.html +0 -5661
  333. package/docs-dev/javascript/utils-system/index.html +0 -5947
  334. package/docs-dev/sass/base/color/index.html +0 -5644
  335. package/docs-dev/sass/base/elements/index.html +0 -5815
  336. package/docs-dev/sass/base/index/index.html +0 -5814
  337. package/docs-dev/sass/base/index.html +0 -5622
  338. package/docs-dev/sass/base/keyframes/index.html +0 -5646
  339. package/docs-dev/sass/base/layout/index.html +0 -5806
  340. package/docs-dev/sass/base/normalize/index.html +0 -5654
  341. package/docs-dev/sass/base/print/index.html +0 -5650
  342. package/docs-dev/sass/base/root/index.html +0 -5670
  343. package/docs-dev/sass/base/typography/index.html +0 -5670
  344. package/docs-dev/sass/components/accordion/index.html +0 -5979
  345. package/docs-dev/sass/components/adaptive-spacing/index.html +0 -5915
  346. package/docs-dev/sass/components/badge/index.html +0 -5881
  347. package/docs-dev/sass/components/badge-stack/index.html +0 -5811
  348. package/docs-dev/sass/components/basic-hero/index.html +0 -5805
  349. package/docs-dev/sass/components/button/index.html +0 -5799
  350. package/docs-dev/sass/components/button-group/index.html +0 -5803
  351. package/docs-dev/sass/components/button-verbose/index.html +0 -5986
  352. package/docs-dev/sass/components/callout/index.html +0 -5961
  353. package/docs-dev/sass/components/captioned-figure/index.html +0 -5904
  354. package/docs-dev/sass/components/card/index.html +0 -6219
  355. package/docs-dev/sass/components/card-grid/index.html +0 -5813
  356. package/docs-dev/sass/components/counter-list/index.html +0 -5887
  357. package/docs-dev/sass/components/css-icon/index.html +0 -5917
  358. package/docs-dev/sass/components/data-grid/index.html +0 -6052
  359. package/docs-dev/sass/components/data-table/index.html +0 -5988
  360. package/docs-dev/sass/components/fill-context/index.html +0 -5679
  361. package/docs-dev/sass/components/flipcard/index.html +0 -5980
  362. package/docs-dev/sass/components/flipcard-grid/index.html +0 -5800
  363. package/docs-dev/sass/components/form-theme/index.html +0 -6525
  364. package/docs-dev/sass/components/headline-label/index.html +0 -5833
  365. package/docs-dev/sass/components/hero/index.html +0 -5849
  366. package/docs-dev/sass/components/horizontal-rule/index.html +0 -5798
  367. package/docs-dev/sass/components/image-grid/index.html +0 -5805
  368. package/docs-dev/sass/components/index/index.html +0 -5859
  369. package/docs-dev/sass/components/index.html +0 -5622
  370. package/docs-dev/sass/components/links/index.html +0 -5649
  371. package/docs-dev/sass/components/list-inline/index.html +0 -5819
  372. package/docs-dev/sass/components/list-lines/index.html +0 -5840
  373. package/docs-dev/sass/components/list-ordered/index.html +0 -5645
  374. package/docs-dev/sass/components/list-unordered/index.html +0 -5649
  375. package/docs-dev/sass/components/menu-stack/index.html +0 -5992
  376. package/docs-dev/sass/components/modal/index.html +0 -6068
  377. package/docs-dev/sass/components/nav-strip/index.html +0 -5899
  378. package/docs-dev/sass/components/overlay-section/index.html +0 -5843
  379. package/docs-dev/sass/components/pager/index.html +0 -5961
  380. package/docs-dev/sass/components/panel/index.html +0 -6033
  381. package/docs-dev/sass/components/placeholder-block/index.html +0 -5883
  382. package/docs-dev/sass/components/popover/index.html +0 -5994
  383. package/docs-dev/sass/components/pull-quote/index.html +0 -5857
  384. package/docs-dev/sass/components/rail/index.html +0 -5823
  385. package/docs-dev/sass/components/ratio-box/index.html +0 -5803
  386. package/docs-dev/sass/components/rule/index.html +0 -5805
  387. package/docs-dev/sass/components/scroll-slider/index.html +0 -5904
  388. package/docs-dev/sass/components/skeleton/index.html +0 -5860
  389. package/docs-dev/sass/components/skip-link/index.html +0 -5789
  390. package/docs-dev/sass/components/slider/index.html +0 -5913
  391. package/docs-dev/sass/components/spoke-spinner/index.html +0 -5863
  392. package/docs-dev/sass/components/sticky-list/index.html +0 -6023
  393. package/docs-dev/sass/components/table-sticky/index.html +0 -5677
  394. package/docs-dev/sass/components/tabs/index.html +0 -5954
  395. package/docs-dev/sass/components/tag/index.html +0 -5964
  396. package/docs-dev/sass/components/tile-button/index.html +0 -5844
  397. package/docs-dev/sass/components/tile-grid/index.html +0 -5979
  398. package/docs-dev/sass/components/tile-grid-overlay/index.html +0 -5780
  399. package/docs-dev/sass/components/vignette/index.html +0 -5799
  400. package/docs-dev/sass/components/wysiwyg/index.html +0 -5827
  401. package/docs-dev/sass/core/breakpoint/index.html +0 -6454
  402. package/docs-dev/sass/core/button/index.html +0 -6538
  403. package/docs-dev/sass/core/color/index.html +0 -6520
  404. package/docs-dev/sass/core/cssvar/index.html +0 -6411
  405. package/docs-dev/sass/core/element/index.html +0 -6816
  406. package/docs-dev/sass/core/index.html +0 -5609
  407. package/docs-dev/sass/core/layout/index.html +0 -6388
  408. package/docs-dev/sass/core/path/index.html +0 -5778
  409. package/docs-dev/sass/core/selector/index.html +0 -5857
  410. package/docs-dev/sass/core/typography/index.html +0 -6783
  411. package/docs-dev/sass/core/units/index.html +0 -5822
  412. package/docs-dev/sass/core/utils/index.html +0 -8406
  413. package/docs-dev/sass/helpers/color/index.html +0 -5644
  414. package/docs-dev/sass/helpers/display/index.html +0 -5649
  415. package/docs-dev/sass/helpers/index/index.html +0 -5811
  416. package/docs-dev/sass/helpers/index.html +0 -5622
  417. package/docs-dev/sass/helpers/print/index.html +0 -5199
  418. package/docs-dev/sass/helpers/typography/index.html +0 -5672
  419. package/docs-dev/sass/helpers/units/index.html +0 -5818
  420. package/docs-dev/sass/helpers/utilities/index.html +0 -5649
  421. package/docs-dev/sass/index.html +0 -5673
  422. package/index.js +0 -7
  423. package/js/events/index.js +0 -108
  424. package/js/index.js +0 -11
  425. package/js/ui/index.js +0 -22
  426. package/js/utils/index.js +0 -8
  427. package/resources/drupal/twig-macros/accordion.twig +0 -99
  428. package/resources/drupal/twig-macros/dropdown.twig +0 -44
  429. package/resources/drupal/twig-macros/flipcard.twig +0 -69
  430. package/resources/drupal/twig-macros/image.twig +0 -30
  431. package/resources/drupal/twig-macros/layout.twig +0 -338
  432. package/resources/drupal/twig-macros/slider.twig +0 -214
  433. package/resources/drupal/twig-macros/tabs.twig +0 -84
  434. package/scss/components/_accordion.scss +0 -231
  435. package/scss/components/_card.scss +0 -596
  436. package/types/events/index.d.ts +0 -26
  437. package/types/events/index.d.ts.map +0 -1
  438. package/types/index.d.ts +0 -5
  439. package/types/settings.d.ts.map +0 -1
  440. package/types/ui/breakpoints.d.ts.map +0 -1
  441. package/types/ui/collapsible.d.ts.map +0 -1
  442. package/types/ui/details-group.d.ts.map +0 -1
  443. package/types/ui/dialog.d.ts.map +0 -1
  444. package/types/ui/flipcard.d.ts.map +0 -1
  445. package/types/ui/grid.d.ts.map +0 -1
  446. package/types/ui/index.d.ts +0 -24
  447. package/types/ui/modal-builder.d.ts.map +0 -1
  448. package/types/ui/overflow-scroller-pager.d.ts.map +0 -1
  449. package/types/ui/overflow-scroller.d.ts.map +0 -1
  450. package/types/ui/page.d.ts.map +0 -1
  451. package/types/ui/popover.d.ts.map +0 -1
  452. package/types/ui/print-details.d.ts.map +0 -1
  453. package/types/ui/print.d.ts.map +0 -1
  454. package/types/ui/programmatic-modal.d.ts.map +0 -1
  455. package/types/ui/proxy-click.d.ts.map +0 -1
  456. package/types/ui/resizer.d.ts.map +0 -1
  457. package/types/ui/scroll-slider.d.ts.map +0 -1
  458. package/types/ui/scrollpoint.d.ts.map +0 -1
  459. package/types/ui/slider.d.ts.map +0 -1
  460. package/types/ui/tabs.d.ts.map +0 -1
  461. package/types/ui/theme-toggle.d.ts.map +0 -1
  462. package/types/ui/tooltip.d.ts.map +0 -1
  463. package/types/utils/class-logger.d.ts.map +0 -1
  464. package/types/utils/css.d.ts.map +0 -1
  465. package/types/utils/dom.d.ts.map +0 -1
  466. package/types/utils/file-save.d.ts.map +0 -1
  467. package/types/utils/floating-ui.d.ts.map +0 -1
  468. package/types/utils/font-awesome.d.ts.map +0 -1
  469. package/types/utils/id.d.ts.map +0 -1
  470. package/types/utils/index.d.ts +0 -10
  471. package/types/utils/pause-youtube-video.d.ts.map +0 -1
  472. package/types/utils/system.d.ts.map +0 -1
  473. /package/{types → dist/es}/ui/overflow-scroller-pager.d.ts +0 -0
  474. /package/{types → dist/es}/ui/page.d.ts +0 -0
  475. /package/{types → dist/es}/ui/print-details.d.ts +0 -0
  476. /package/{types → dist/es}/ui/print.d.ts +0 -0
  477. /package/{types → dist/es}/utils/css.d.ts +0 -0
  478. /package/{types → dist/es}/utils/font-awesome.d.ts +0 -0
  479. /package/{types → dist/es}/utils/id.d.ts +0 -0
  480. /package/{types → dist/es}/utils/pause-youtube-video.d.ts +0 -0
  481. /package/{js → lib/js}/ui/dialog.todo +0 -0
  482. /package/{js → lib/js}/ui/overflow-scroller-pager.js +0 -0
  483. /package/{js → lib/js}/ui/page.js +0 -0
  484. /package/{js → lib/js}/utils/class-logger.js +0 -0
  485. /package/{js → lib/js}/utils/dom.js +0 -0
  486. /package/{js → lib/js}/utils/file-save.js +0 -0
  487. /package/{js → lib/js}/utils/floating-ui.js +0 -0
  488. /package/{js → lib/js}/utils/id.js +0 -0
  489. /package/{js → lib/js}/utils/pause-youtube-video.js +0 -0
  490. /package/{scss → lib/scss}/README.md +0 -0
  491. /package/{scss → lib/scss}/_cssvar.scss +0 -0
  492. /package/{scss → lib/scss}/_index.scss +0 -0
  493. /package/{scss → lib/scss}/_layout.scss +0 -0
  494. /package/{scss → lib/scss}/_path.scss +0 -0
  495. /package/{scss → lib/scss}/_selector.scss +0 -0
  496. /package/{scss → lib/scss}/_units.scss +0 -0
  497. /package/{scss → lib/scss}/_utils.scss +0 -0
  498. /package/{scss → lib/scss}/base/_color.scss +0 -0
  499. /package/{scss → lib/scss}/base/_elements.scss +0 -0
  500. /package/{scss → lib/scss}/base/_index.scss +0 -0
  501. /package/{scss → lib/scss}/base/_keyframes.scss +0 -0
  502. /package/{scss → lib/scss}/base/_layout.scss +0 -0
  503. /package/{scss → lib/scss}/base/_normalize.scss +0 -0
  504. /package/{scss → lib/scss}/base/_print.scss +0 -0
  505. /package/{scss → lib/scss}/base/_root.scss +0 -0
  506. /package/{scss → lib/scss}/base/_typography.scss +0 -0
  507. /package/{scss → lib/scss}/components/README.md +0 -0
  508. /package/{scss → lib/scss}/components/README.todos +0 -0
  509. /package/{scss → lib/scss}/components/_adaptive-spacing.scss +0 -0
  510. /package/{scss → lib/scss}/components/_badge-stack.scss +0 -0
  511. /package/{scss → lib/scss}/components/_badge.scss +0 -0
  512. /package/{scss → lib/scss}/components/_button-group.scss +0 -0
  513. /package/{scss → lib/scss}/components/_button-verbose.scss +0 -0
  514. /package/{scss → lib/scss}/components/_callout.scss +0 -0
  515. /package/{scss → lib/scss}/components/_captioned-figure.scss +0 -0
  516. /package/{scss → lib/scss}/components/_counter-list.scss +0 -0
  517. /package/{scss → lib/scss}/components/_css-icon.scss +0 -0
  518. /package/{scss → lib/scss}/components/_data-grid.scss +0 -0
  519. /package/{scss → lib/scss}/components/_data-table.scss +0 -0
  520. /package/{scss → lib/scss}/components/_fill-context.scss +0 -0
  521. /package/{scss → lib/scss}/components/_flipcard-grid.scss +0 -0
  522. /package/{scss → lib/scss}/components/_flipcard.scss +0 -0
  523. /package/{scss → lib/scss}/components/_headline-label.scss +0 -0
  524. /package/{scss → lib/scss}/components/_hero.scss +0 -0
  525. /package/{scss → lib/scss}/components/_horizontal-rule.scss +0 -0
  526. /package/{scss → lib/scss}/components/_image-grid.scss +0 -0
  527. /package/{scss → lib/scss}/components/_links.scss +0 -0
  528. /package/{scss → lib/scss}/components/_list-inline.scss +0 -0
  529. /package/{scss → lib/scss}/components/_list-lines.scss +0 -0
  530. /package/{scss → lib/scss}/components/_list-ordered.scss +0 -0
  531. /package/{scss → lib/scss}/components/_list-unordered.scss +0 -0
  532. /package/{scss → lib/scss}/components/_nav-strip.scss +0 -0
  533. /package/{scss → lib/scss}/components/_overlay-section.scss +0 -0
  534. /package/{scss → lib/scss}/components/_pager.scss +0 -0
  535. /package/{scss → lib/scss}/components/_panel.scss +0 -0
  536. /package/{scss → lib/scss}/components/_placeholder-block.scss +0 -0
  537. /package/{scss → lib/scss}/components/_popover.scss +0 -0
  538. /package/{scss → lib/scss}/components/_pull-quote.scss +0 -0
  539. /package/{scss → lib/scss}/components/_rail.scss +0 -0
  540. /package/{scss → lib/scss}/components/_ratio-box.scss +0 -0
  541. /package/{scss → lib/scss}/components/_rule.scss +0 -0
  542. /package/{scss → lib/scss}/components/_scroll-slider.scss +0 -0
  543. /package/{scss → lib/scss}/components/_skip-link.scss +0 -0
  544. /package/{scss → lib/scss}/components/_slider.scss +0 -0
  545. /package/{scss → lib/scss}/components/_spoke-spinner.scss +0 -0
  546. /package/{scss → lib/scss}/components/_sticky-list.scss +0 -0
  547. /package/{scss → lib/scss}/components/_tabs.scss +0 -0
  548. /package/{scss → lib/scss}/components/_tile-button.scss +0 -0
  549. /package/{scss → lib/scss}/components/_tile-grid-overlay.scss +0 -0
  550. /package/{scss → lib/scss}/components/_tile-grid.scss +0 -0
  551. /package/{scss → lib/scss}/components/_vignette.scss +0 -0
  552. /package/{scss → lib/scss}/components/_wysiwyg.scss +0 -0
  553. /package/{scss → lib/scss}/helpers/_color.scss +0 -0
  554. /package/{scss → lib/scss}/helpers/_display.scss +0 -0
  555. /package/{scss → lib/scss}/helpers/_index.scss +0 -0
  556. /package/{scss → lib/scss}/helpers/_print.scss +0 -0
  557. /package/{scss → lib/scss}/helpers/_typography.scss +0 -0
  558. /package/{scss → lib/scss}/helpers/_units.scss +0 -0
  559. /package/{scss → lib/scss}/stylesheets/README.md +0 -0
  560. /package/{scss → lib/scss}/stylesheets/base-styles.scss +0 -0
  561. /package/{scss → lib/scss}/stylesheets/component-styles.scss +0 -0
  562. /package/{scss → lib/scss}/stylesheets/full.scss +0 -0
  563. /package/{scss → lib/scss}/stylesheets/helper-styles.scss +0 -0
@@ -0,0 +1,655 @@
1
+ ////
2
+ /// @group card
3
+ /// A versatile container for displaying and summarizing individual items, entities, or resources in a visually appealing and concise format
4
+ ////
5
+
6
+ @use "sass:map";
7
+ @use 'sass:list';
8
+
9
+ @use "../breakpoint";
10
+ @use "../utils";
11
+ @use "../selector";
12
+ @use "../color";
13
+ @use "../layout";
14
+
15
+ /// Module Settings
16
+ /// @type Map
17
+ /// @prop {Dimension} padding [2rem] The common padding
18
+ /// @prop {Dimension} margin-y [3rem] Top and bottom margin for the card.
19
+ /// @prop {Dimension} max-width [28rem] The max-width of the card.
20
+ /// @prop {Dimension} body-min-height [10rem] the min-height of the card body.
21
+ /// @prop {Color} color ["type"] The type color of the card.
22
+ /// @prop {Color} color-hover [null] The type color of the card when hovered or focused.
23
+ /// @prop {Color} background-color [white] The background color of the card.
24
+ /// @prop {Color} background-color-hover [rgb(242, 244, 246)] The background color of the card when hovered or focused.
25
+ /// @prop {Dimension} border-radius [5px] The border radius of the card.
26
+ /// @prop {CssValue} border-width [1px] The card border width
27
+ /// @prop {Color} border-color [#ccc] The card border color
28
+ /// @prop {Dimension} border-hover-width [2px] The card border width when hovered or focused.
29
+ /// @prop {Color} border-hover-color [#278cca] The card border color when hovered or focused.
30
+ /// @prop {CssValue} box-shadow [null] The box-shadow for the card.
31
+ /// @prop {CssValue} box-shadow-hover [null] The box-shadow for the card when hovered or focused.
32
+ /// @prop {Boolean} transition-enabled [true] Enable or disable transition for card.
33
+ /// @prop {Time} transition-duration [200ms] The animation duration for the card animation.
34
+ /// @prop {CssValue} transition-timing-function [ease-in-out] The timing function for the card animation.
35
+ /// @prop {List} transition-properties [(border-color, background-color, color, box-shadow, transform, outline-color, outline-width)] The properties for the card animation.
36
+ /// @prop {String} clickable-card-selector [data-ulu-proxy-click-init] The selector for proxy-click.js to find the card and implement the clickable card script.
37
+ /// @prop {String} clickable-card-interact-selector [&:hover, &:focus-within] The selectors for the cards being interacted with.
38
+ /// @prop {Color} title-color [null] The type color of the title.
39
+ /// @prop {Color} title-color-hover [null] The type color of the title (if link/button) when hovered or focused
40
+ /// @prop {Dimension} title-margin [1rem] The margin for the title.
41
+ /// @prop {CssValue} title-font-weight [bold] The font weight for the title.
42
+ /// @prop {Boolean} image-within-border [true] If false, the image will bleed to the edges of the card, sitting under the border.
43
+ /// @prop {Number} image-aspect-ratio [5/3] The aspect ratio of the image.
44
+ /// @prop {Color} image-background-color [rgb(238, 238, 238)] The background color behind the image.
45
+ /// @prop {Dimension} image-margin [null] The margin for the image
46
+ /// @prop {Dimension} image-border [null] Optional border for the image.
47
+ /// @prop {CssValue} image-transform-hover [null] Animation for the image when hovered or focused.
48
+ /// @prop {CssValue} image-filter-hover [null] Filter for the image when hovered or focused.
49
+ /// @prop {Boolean} image-transition-enabled [true] Enable or disable the image transition.
50
+ /// @prop {Time} image-transition-duration [350ms] The duration of the image transition.
51
+ /// @prop {CssValue} image-transition-timing-function [ease-in-out] The timing function for the image transition.
52
+ /// @prop {List} image-transition-properties [(transform, filter, background-color)] The properties for the image transitions.
53
+ /// @prop {Dimension} image-fit-padding [1rem] Padding on inside of image when using image fit modifier
54
+ /// @prop {CssValue} image-fit-filter [drop-shadow(0 0px 8px rgba(0, 0, 0, 0.3))] Filter to use on image when using image fit modifier
55
+ /// @prop {Dimension} image-icon-max-width [8rem] Max width for image when using the modifier on the .card__image--icon
56
+ /// @prop {Dimension} footer-padding-y [0.25rem] The top and bottom padding for the footer.
57
+ /// @prop {Dimension} footer-min-height [2.5rem] The min height for the footer
58
+ /// @prop {CssValue} footer-justify [flex-end] Flex alignment of footer items (on end by default)
59
+ /// @prop {Dimension} footer-inline-padding [0.5rem] The padding for the footer when using the 'footer-inline' modifier.
60
+ /// @prop {Color} footer-background-color [null] The background color of the footer.
61
+ /// @prop {String} horizontal-enabled [false] Enable the output of horizontal related layout modifiers
62
+ /// @prop {String} horizontal-persist-enabled [false] Enable the output of horizontal-persist related layout modifiers
63
+ /// @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.
64
+ /// @prop {Dimension} horizontal-min-height [20rem] Minimum height when horizontal
65
+ /// @prop {Dimension} horizontal-max-width [80rem] Maximum width when horizontal
66
+ /// @prop {CssValue} horizontal-image-width [min(33%, 20rem)] The width of the image area when using the 'horizontal' modifier.
67
+ /// @prop {Dimension} horizontal-main-max-width [40rem] The max-width of the main content area when using the 'horizontal' modifier.
68
+ /// @prop {CssValue} horizontal-aside-width [40%] The width of the aside content area when using the 'horizontal' modifier.
69
+ /// @prop {Boolean} aside-rule [true] Whether or not to have a rule separating body and aside
70
+ /// @prop {Dimension} aside-rule-width [1px] Size of rule
71
+ /// @prop {String} aside-rule-color ["rule-light"] Color of rule
72
+ /// @prop {Color} aside-background-color [null] Color of aside background color
73
+ /// @prop {Color} overlay-enabled [false] Enable the output of overlay modifier styles
74
+ /// @prop {Number} overlay-aspect-ratio [4/3] The aspect ratio of the card when using the 'overlay' modifier.
75
+ /// @prop {Color} overlay-color [white] The type color of the card when using card--overlay.
76
+ /// @prop {Color} overlay-title-color [null] The color of the title when using the 'overlay' modifier.
77
+ /// @prop {Color} overlay-title-color-hover [rgb(79, 175, 230)] The type color of the card title when hovered or focused and when using card--overlay.
78
+ /// @prop {Color} overlay-background-color [rgba(0, 0, 0, 0.6)] The background color for the text box when using card--overlay.
79
+ /// @prop {Color} overlay-background-color-hover [red] The background color of the overlay when hovered or focused.
80
+ /// @prop {Color} overlay-footer-background-color [null] The background color of the footer when using the 'overlay' modifier. Defaults to 'overlay-background-color'.
81
+ /// @prop {Boolean} overlay-shading [true] Whether to apply a gradient shading to the overlay to improve text readability.
82
+ /// @prop {Dimension} overlay-shading-height [4rem] The height of the gradient shading on the overlay.
83
+ /// @prop {Dimension} overlay-body-padding-y [1rem] The top and bottom padding of the body content when using the 'overlay' modifier.
84
+
85
+ $config: (
86
+ // General
87
+ "padding": 2rem,
88
+ "margin-y": 3rem,
89
+ "max-width": 28rem,
90
+ "body-min-height": 10rem,
91
+ "color": "type",
92
+ "color-hover": null,
93
+ "background-color": white,
94
+ "background-color-hover": rgb(242, 244, 246),
95
+ "border-radius": 5px,
96
+ "border-width": 1px,
97
+ "border-color": #ccc,
98
+ "border-hover-width": 2px,
99
+ "border-hover-color": #278cca,
100
+ "box-shadow": null,
101
+ "box-shadow-hover": null,
102
+
103
+ // Transitions & Interactivity
104
+ "transition-enabled": true,
105
+ "transition-duration": 200ms,
106
+ "transition-timing-function": ease-in-out,
107
+ "transition-properties": (border-color, background-color, color, box-shadow, transform, outline-color, outline-width),
108
+ "clickable-card-selector": "[data-ulu-proxy-click-init]",
109
+ "clickable-card-interact-selector": "&:hover, &:focus-within",
110
+
111
+ // Title
112
+ "title-color": null,
113
+ "title-color-hover": null,
114
+ "title-margin": 1rem,
115
+ "title-font-weight": bold,
116
+
117
+ // Image
118
+ "image-within-border": true,
119
+ "image-aspect-ratio": list.slash(5, 3),
120
+ "image-background-color": rgb(238, 238, 238),
121
+ "image-margin": null,
122
+ "image-border": null, // For when you have a margin
123
+ "image-transform-hover": null,
124
+ "image-filter-hover": null,
125
+ "image-transition-enabled": true,
126
+ "image-transition-duration": 350ms,
127
+ "image-transition-timing-function": ease-in-out,
128
+ "image-transition-properties": (transform, filter, background-color),
129
+ "image-fit-padding": 1rem,
130
+ "image-fit-filter": drop-shadow(0 0px 8px rgba(0, 0, 0, 0.3)),
131
+ "image-icon-max-width": 8rem,
132
+
133
+ // Footer
134
+ "footer-padding-y": 0.5rem,
135
+ "footer-min-height": 2.5rem,
136
+ "footer-justify": flex-end,
137
+ "footer-inline-padding": 0.5rem,
138
+ "footer-background-color": null,
139
+
140
+ // Horizontal
141
+ "horizontal-enabled" : false,
142
+ "horizontal-persist-enabled" : false,
143
+ "horizontal-breakpoint": "small",
144
+ "horizontal-min-height": 20rem,
145
+ "horizontal-max-width": 80rem,
146
+ "horizontal-image-width": min(33%, 20rem),
147
+ "horizontal-main-max-width": 40rem,
148
+ "horizontal-aside-width": 40%,
149
+ "aside-rule": true,
150
+ "aside-rule-width": 1px,
151
+ "aside-rule-color": "rule-light",
152
+ "aside-background-color": null,
153
+
154
+ // Overlay
155
+ "overlay-enabled" : false,
156
+ "overlay-aspect-ratio": list.slash(4, 3),
157
+ "overlay-color": white,
158
+ "overlay-title-color": null,
159
+ "overlay-title-color-hover": rgb(79, 175, 230),
160
+ "overlay-background-color": rgba(0, 0, 0, 0.6),
161
+ "overlay-background-color-hover": rgba(0, 0, 0, 0.8),
162
+ "overlay-footer-background-color": null,
163
+ "overlay-shading": true,
164
+ "overlay-shading-height": 4rem,
165
+ "overlay-body-padding-y": 1rem
166
+ ) !default;
167
+
168
+ /// Change modules $config
169
+ /// @param {Map} $changes Map of changes
170
+ /// @example scss
171
+ /// @include ulu.component-card-set(( "property" : value ));
172
+
173
+ @mixin set($changes) {
174
+ $config: map.merge($config, $changes) !global;
175
+ }
176
+
177
+ /// Get a config option
178
+ /// @param {Map} $name Name of property
179
+ /// @example scss
180
+ /// @include ulu.component-card-get(( "property" : value ));
181
+
182
+ @function get($name) {
183
+ @return utils.require-map-get($config, $name, "card [config]");
184
+ }
185
+
186
+ /// Prints component styles
187
+ /// @demo card
188
+ /// @example scss
189
+ /// @include ulu.component-card-styles();
190
+
191
+ @mixin styles {
192
+ $prefix: selector.class("card");
193
+ $border-width-negative: -(get("border-width"));
194
+
195
+ #{ $prefix } {
196
+ display: grid;
197
+ grid-template-columns: 1fr;
198
+ grid-template-rows: auto 1fr auto;
199
+ max-width: get("max-width");
200
+ margin-top: get("margin-y");
201
+ margin-bottom: get("margin-y");
202
+ color: color.get(get("color"));
203
+ background-color: color.get(get("background-color"));
204
+ border-radius: get("border-radius");
205
+ border: get("border-width") solid color.get(get("border-color"));
206
+ box-shadow: get("box-shadow");
207
+ outline: get("border-hover-width") solid transparent;
208
+ outline-offset: $border-width-negative;
209
+ }
210
+
211
+ @if (get("transition-enabled")) {
212
+ #{ $prefix },
213
+ #{ $prefix }__title {
214
+ transition-duration: get("transition-duration");
215
+ transition-timing-function: get("transition-timing-function");
216
+ transition-property: get("transition-properties");
217
+ }
218
+ }
219
+
220
+ @include when-clickable($hover: true) {
221
+ background-color: color.get(get("background-color-hover"));
222
+ color: color.get(get("color-hover"));
223
+ box-shadow: get("box-shadow-hover");
224
+ outline: get("border-hover-width") solid color.get(get("border-hover-color"));
225
+ }
226
+
227
+ #{ $prefix }__footer,
228
+ #{ $prefix }__main,
229
+ #{ $prefix }__aside {
230
+ padding: get("padding");
231
+ }
232
+ #{ $prefix }__body {
233
+ grid-column: 1;
234
+ display: flex;
235
+ flex-direction: column;
236
+ min-height: get("body-min-height");
237
+ }
238
+ #{ $prefix }__main {
239
+ flex-grow: 1;
240
+ }
241
+ #{ $prefix }__footer {
242
+ grid-column: 1;
243
+ display: flex;
244
+ align-items: center;
245
+ padding-top: get("footer-padding-y");
246
+ padding-bottom: get("footer-padding-y");
247
+ min-height: get("footer-min-height");
248
+ justify-content: get("footer-justify");
249
+ background-color: color.get(get("footer-background-color"));
250
+ }
251
+ #{ $prefix }__aside {
252
+ background-color: color.get(get("aside-background-color"));
253
+
254
+ @if (get("aside-rule")) {
255
+ // Makes it look like border inside aside padding
256
+ // without relying on position relative and pseudo technique
257
+ // which affects popovers/etc or other absolute elements inside card
258
+ $aside-rule-color: color.get(get("aside-rule-color"));
259
+ $aside-padding-double: get("padding") * 2;
260
+
261
+ background-image: linear-gradient($aside-rule-color, $aside-rule-color);
262
+ background-size: calc(100% - $aside-padding-double) get("aside-rule-width");
263
+ background-position: center top;
264
+ background-repeat: no-repeat;
265
+ }
266
+ }
267
+
268
+ #{ $prefix }__image {
269
+ order: -1;
270
+ grid-column: 1 / -1;
271
+ overflow: hidden; // For image corners with border-radius
272
+
273
+ @if (not get("image-within-border")) {
274
+ margin: $border-width-negative $border-width-negative 0 $border-width-negative;
275
+ }
276
+
277
+ background-color: color.get(get("image-background-color"));
278
+ border: get("image-border");
279
+ aspect-ratio: get("image-aspect-ratio");
280
+ @if (get("image-margin")) {
281
+ margin: get("image-margin");
282
+ } @else {
283
+ border-top-right-radius: get("border-radius");
284
+ border-top-left-radius: get("border-radius");
285
+ }
286
+ }
287
+
288
+ // Inner Element Styles
289
+ #{ $prefix }__title {
290
+ display: block;
291
+ color: color.get(get("title-color"));
292
+ margin-bottom: get("title-margin");
293
+ font-weight: get("title-font-weight");
294
+ }
295
+ // Only the inner link gets hover state
296
+ #{ $prefix }__title-link {
297
+ all: unset;
298
+ cursor: pointer;
299
+ @if get("title-color-hover") {
300
+ &:hover,
301
+ &:focus {
302
+ color: color.get(get("title-color-hover"));
303
+ }
304
+ }
305
+ }
306
+ // Unless within a clickable card (below)
307
+ @if get("title-color-hover") {
308
+ @include when-clickable($hover: true) {
309
+ #{ $prefix }__title {
310
+ color: color.get(get("title-color-hover"));
311
+ }
312
+ }
313
+ }
314
+ #{ $prefix }__image img,
315
+ #{ $prefix}__image-media {
316
+ width: 100%;
317
+ height: 100%;
318
+ object-fit: cover;
319
+ @if (get("image-transition-enabled")) {
320
+ transition-duration: get("image-transition-duration");
321
+ transition-timing-function: get("image-transition-timing-function");
322
+ transition-property: get("image-transition-properties");
323
+ }
324
+ }
325
+ @if (get("image-transform-hover") or get("image-filter-hover")) {
326
+ @include when-clickable($hover: true) {
327
+ #{ $prefix }__image img,
328
+ #{ $prefix}__image-media {
329
+ transform: get("image-transform-hover");
330
+ filter: get("image-filter-hover");
331
+ }
332
+ }
333
+ }
334
+
335
+ // --- Modifiers ---
336
+
337
+ // Allows card to fill space (ie. in grid/etc)
338
+ #{ $prefix }--fill {
339
+ max-width: none;
340
+ height: 100%;
341
+ margin: 0;
342
+ }
343
+
344
+ #{ $prefix }--footer-inline {
345
+ #{ $prefix }__footer {
346
+
347
+ padding: get("footer-inline-padding");
348
+ flex-direction: column;
349
+ }
350
+ }
351
+ #{ $prefix }--footer-inline:not(#{ $prefix }--overlay) {
352
+ // The second column (footer) collapses if unused
353
+ grid-template-columns: 1fr auto;
354
+ #{ $prefix }__footer {
355
+ grid-column: 2;
356
+ }
357
+ }
358
+ #{ $prefix }--footer-start #{ $prefix }__footer {
359
+ justify-content: start;
360
+ }
361
+ #{ $prefix }--footer-center #{ $prefix }__footer {
362
+ justify-content: center;
363
+ }
364
+ #{ $prefix }--footer-end #{ $prefix }__footer {
365
+ justify-content: end;
366
+ }
367
+
368
+
369
+ // Makes image centered with max-width for displaying site icon images
370
+ #{ $prefix }__image--icon {
371
+ display: flex;
372
+ align-items: center;
373
+ justify-content: center;
374
+ img,
375
+ #{ $prefix}__image-media {
376
+ display: block;
377
+ max-width: get("image-icon-max-width");
378
+ height: auto;
379
+ }
380
+ }
381
+
382
+ // Makes image fit naturally instead of bleed/cover
383
+ #{ $prefix }--image-fit {
384
+ #{ $prefix }__image {
385
+ img,
386
+ #{ $prefix}__image-media {
387
+ object-fit: contain;
388
+ object-position: top center;
389
+ padding: get("image-fit-padding");
390
+ filter: get("image-fit-filter");
391
+ }
392
+ }
393
+ }
394
+
395
+ // In case this modifier is being used to hide the image
396
+ // not just to tell the component how to layout without image
397
+ // - Use case is hiding image when you can't control the output
398
+ // of the inside of the card (printed no matter what). We had
399
+ // this happen in HHRC, including this extra CSS for that
400
+ #{ $prefix }--no-image {
401
+ #{ $prefix }__image {
402
+ display: none;
403
+ }
404
+ }
405
+
406
+ // Horizontal layout
407
+ @if (get("horizontal-enabled")) {
408
+ @include breakpoint.min(get("horizontal-breakpoint")) {
409
+ #{ $prefix }--horizontal {
410
+ @include -horizontal-styles();
411
+ }
412
+ #{ $prefix }--horizontal-center {
413
+ @include -horizontal-center-styles();
414
+ }
415
+ #{ $prefix }--horizontal#{ $prefix }--footer-inline {
416
+ @include -horizontal-footer-inline-styles();
417
+ }
418
+ }
419
+ }
420
+
421
+ // Note: Relying on GZIP and identical code for the duplication below
422
+ // there's really no way to avoid duplication vs complexity for this
423
+ @if (get("horizontal-persist-enabled")) {
424
+ #{ $prefix }--horizontal-persist {
425
+ @include -horizontal-styles();
426
+ }
427
+ #{ $prefix }--horizontal-persist#{ $prefix }--horizontal-center {
428
+ @include -horizontal-center-styles();
429
+ }
430
+ #{ $prefix }--horizontal-persist#{ $prefix }--footer-inline {
431
+ @include -horizontal-footer-inline-styles();
432
+ }
433
+ }
434
+
435
+ // Overlay layout (image under content)
436
+ @if (get("overlay-enabled")) {
437
+ #{ $prefix }--overlay {
438
+ // Explanation of aspect-ratio combined with grid-template-rows:
439
+ // - Solves the box growing if needed
440
+ // - First use aspect ration (which grid is based on) but allow the first row
441
+ // - to grow to min-content if needed (which makes it so the card grows instead
442
+ // - of overflowing (ie. if you were using "auto auto" or "1fr auto"
443
+ grid-template-rows: minmax(min-content, 1fr) auto;
444
+ aspect-ratio: get("overlay-aspect-ratio");
445
+
446
+ #{ $prefix }__body {
447
+ grid-row: 1 / 2;
448
+ align-self: end;
449
+ min-height: 0;
450
+ color: color.get(get("overlay-color"));
451
+ background-color: color.get(get("overlay-background-color"));
452
+ padding-top: get("overlay-body-padding-y");
453
+ padding-bottom: get("overlay-body-padding-y");
454
+
455
+ @if (get("overlay-shading")) {
456
+ padding-top: calc(get("overlay-body-padding-y") + get("overlay-shading-height"));
457
+ @include -overlay-shading-gradient(
458
+ color.get(get("overlay-background-color"))
459
+ );
460
+ }
461
+ &:not(:has(~ #{ $prefix }__footer)) {
462
+ border-bottom-left-radius: get("border-radius");
463
+ border-bottom-right-radius: get("border-radius");
464
+ }
465
+ }
466
+ #{ $prefix }__aside {
467
+ background-color: transparent;
468
+ }
469
+ #{ $prefix }__footer {
470
+ grid-row: 2 / 3;
471
+ background-color: color.get(
472
+ utils.fallback(
473
+ color.get(get("overlay-footer-background-color")),
474
+ color.get(get("overlay-background-color"))
475
+ )
476
+ );
477
+ }
478
+ #{ $prefix }__body,
479
+ #{ $prefix }__footer {
480
+ color: color.get(get("overlay-color"));
481
+ &:last-child {
482
+ border-bottom-left-radius: get("border-radius");
483
+ border-bottom-right-radius: get("border-radius");
484
+ }
485
+ }
486
+ #{ $prefix }__title {
487
+ color: color.get(
488
+ utils.fallback(color.get(get("overlay-title-color")), color.get(get("overlay-color")))
489
+ );
490
+ }
491
+ @if (get("overlay-title-color-hover")) {
492
+ #{ $prefix }__title-link {
493
+ &:hover,
494
+ &:focus {
495
+ color: color.get(get("overlay-title-color-hover"));
496
+ }
497
+ }
498
+ }
499
+ #{ $prefix }__image {
500
+ grid-column: 1 / -1;
501
+ grid-row: 1 / -1;
502
+ border-radius: get("border-radius");
503
+ aspect-ratio: auto;
504
+ img,
505
+ #{ $prefix}__image-media {
506
+ height: 100%;
507
+ object-fit: cover;
508
+ border: 0;
509
+ }
510
+ }
511
+ }
512
+ @include when-clickable($hover: true, $extra-selector: "#{ $prefix }--overlay") {
513
+ #{ $prefix }__body,
514
+ #{ $prefix }__footer {
515
+ background-color: color.get(get("overlay-background-color-hover"));
516
+ }
517
+ @if (get("overlay-shading")) {
518
+ #{ $prefix }__body {
519
+ @include -overlay-shading-gradient(
520
+ color.get(get("overlay-background-color-hover"))
521
+ );
522
+ }
523
+ }
524
+ }
525
+ #{ $prefix }--overlay#{ $prefix }--footer-inline {
526
+ grid-template-columns: 1fr auto;
527
+ #{ $prefix }__footer {
528
+ grid-column: 2;
529
+ grid-row: 1 / -1;
530
+ border-radius: 0 get("border-radius") get("border-radius") 0;
531
+ }
532
+ }
533
+ }
534
+ }
535
+
536
+ @mixin -horizontal-styles() {
537
+ $prefix: selector.class("card");
538
+
539
+ grid-template-columns: get("horizontal-image-width") 1fr;
540
+ grid-template-rows: 1fr auto; // Footer is native height first row fills
541
+ min-height: get("horizontal-min-height");
542
+ max-width: get("horizontal-max-width");
543
+
544
+ // When no footer remove extra row
545
+ &:not(:has(> #{ $prefix }__footer)) {
546
+ grid-template-rows: auto;
547
+ }
548
+ #{ $prefix }__image {
549
+ grid-column: 1 / 2;
550
+ grid-row: 1 / -1;
551
+ aspect-ratio: auto;
552
+ border-top-right-radius: 0;
553
+ border-bottom-left-radius: get("border-radius");
554
+ }
555
+ #{ $prefix }__body,
556
+ #{ $prefix }__footer {
557
+ grid-column: 2 / 3;
558
+ }
559
+ #{ $prefix }__body {
560
+ flex-direction: row;
561
+ justify-content: space-between;
562
+ }
563
+ #{ $prefix }__main {
564
+ max-width: get("horizontal-main-max-width");
565
+ }
566
+ #{ $prefix }__aside {
567
+ flex: 0 0 get("horizontal-aside-width");
568
+ height: 100%;
569
+ @if (get("aside-rule")) {
570
+ $aside-padding-double: get("padding") * 2;
571
+ background-size: get("aside-rule-width") calc(100% - $aside-padding-double);
572
+ background-position: left center;
573
+ }
574
+ }
575
+
576
+ // For modern browsers
577
+ // Optionally use no-image modifier for older browser support
578
+ &:not(:has(#{ $prefix }__image)) {
579
+ @include -card-horizontal-no-image-styles();
580
+ }
581
+ &#{ $prefix }--no-image {
582
+ @include -card-horizontal-no-image-styles();
583
+ }
584
+
585
+ }
586
+
587
+ @mixin -horizontal-center-styles() {
588
+ $prefix: selector.class("card");
589
+
590
+ #{ $prefix }__body {
591
+ align-self: center;
592
+ }
593
+ }
594
+
595
+ @mixin -horizontal-footer-inline-styles() {
596
+ $prefix: selector.class("card");
597
+
598
+ grid-template-columns: get("horizontal-image-width") 1fr auto;
599
+ grid-template-rows: 1fr; // Footer is native height first row fills
600
+ #{ $prefix }__footer {
601
+ grid-column: 3;
602
+
603
+ }
604
+ }
605
+
606
+
607
+ /// Applies styles to cards that are designated as 'clickable'. This can be for the resting state or for interaction states like hover and focus.
608
+ /// @param {Boolean} $hover [false] Apply styles when the card is being hover/focused within, else applies styles to rest state of a clickable card (one who has a proxy click setup)
609
+ /// @param {String} $extra-selector Selector to be appended to the list
610
+ /// @example scss
611
+ /// @include ulu.component-card-when-clickable($hover: true) {
612
+ /// background-color: lightblue;
613
+ /// }
614
+
615
+ @mixin when-clickable($hover: false, $extra-selector: null) {
616
+ $prefix: selector.class("card");
617
+ $selectors: (
618
+ #{ $prefix }#{ get("clickable-card-selector") },
619
+ a#{ $prefix },
620
+ button#{ $prefix },
621
+ #{ $prefix }--clickable
622
+ );
623
+
624
+ @if $extra-selector {
625
+ $selectors: list.append($selectors, $extra-selector, $separator: comma);
626
+ }
627
+
628
+ #{$selectors} {
629
+ @if ($hover) {
630
+ #{ get("clickable-card-interact-selector") } {
631
+ @content;
632
+ }
633
+ } @else {
634
+ @content;
635
+ }
636
+ }
637
+ }
638
+
639
+ // Internal mixins
640
+ @mixin -card-horizontal-no-image-styles() {
641
+ $prefix: selector.class("card");
642
+ grid-template-columns: 1fr;
643
+ #{ $prefix }__body,
644
+ #{ $prefix }__footer {
645
+ grid-column: 1 / 2;
646
+ }
647
+ }
648
+ @mixin -overlay-shading-gradient($background-color) {
649
+ background: linear-gradient(
650
+ to bottom,
651
+ transparent 0%,
652
+ $background-color get("overlay-shading-height"),
653
+ $background-color 100%
654
+ );
655
+ }