@ulu/frontend 0.1.0-beta.98 → 0.2.0-beta.1

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