@ulu/frontend 0.1.0-beta.1 → 0.1.0-beta.100

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 (401) hide show
  1. package/CHANGELOG.md +681 -2
  2. package/README.dev.md +3 -3
  3. package/README.md +14 -4
  4. package/dist/ulu-frontend.min.css +1 -1
  5. package/dist/ulu-frontend.min.js +36 -29
  6. package/docs-dev/.nojekyll +1 -0
  7. package/docs-dev/assets/chunks/modulepreload-polyfill.DaKOjhqt.js +37 -0
  8. package/docs-dev/assets/favicons/android-chrome-192x192.png +0 -0
  9. package/docs-dev/assets/favicons/android-chrome-256x256.png +0 -0
  10. package/docs-dev/assets/favicons/apple-touch-icon.png +0 -0
  11. package/docs-dev/assets/favicons/browserconfig.xml +9 -0
  12. package/docs-dev/assets/favicons/favicon-16x16.png +0 -0
  13. package/docs-dev/assets/favicons/favicon-32x32.png +0 -0
  14. package/docs-dev/assets/favicons/favicon.ico +0 -0
  15. package/docs-dev/assets/favicons/mstile-150x150.png +0 -0
  16. package/docs-dev/assets/favicons/safari-pinned-tab.svg +1 -0
  17. package/docs-dev/assets/favicons/site.webmanifest +19 -0
  18. package/docs-dev/assets/fonts/fontawesome/fa-brands-400.ttf +0 -0
  19. package/docs-dev/assets/fonts/fontawesome/fa-brands-400.woff2 +0 -0
  20. package/docs-dev/assets/fonts/fontawesome/fa-regular-400.ttf +0 -0
  21. package/docs-dev/assets/fonts/fontawesome/fa-regular-400.woff2 +0 -0
  22. package/docs-dev/assets/fonts/fontawesome/fa-solid-900.ttf +0 -0
  23. package/docs-dev/assets/fonts/fontawesome/fa-solid-900.woff2 +0 -0
  24. package/docs-dev/assets/fonts/fontawesome/fa-v4compatibility.ttf +0 -0
  25. package/docs-dev/assets/fonts/fontawesome/fa-v4compatibility.woff2 +0 -0
  26. package/docs-dev/assets/fonts/inter/Inter-Black.woff2 +0 -0
  27. package/docs-dev/assets/fonts/inter/Inter-BlackItalic.woff2 +0 -0
  28. package/docs-dev/assets/fonts/inter/Inter-Bold.woff2 +0 -0
  29. package/docs-dev/assets/fonts/inter/Inter-BoldItalic.woff2 +0 -0
  30. package/docs-dev/assets/fonts/inter/Inter-ExtraBold.woff2 +0 -0
  31. package/docs-dev/assets/fonts/inter/Inter-ExtraBoldItalic.woff2 +0 -0
  32. package/docs-dev/assets/fonts/inter/Inter-ExtraLight.woff2 +0 -0
  33. package/docs-dev/assets/fonts/inter/Inter-ExtraLightItalic.woff2 +0 -0
  34. package/docs-dev/assets/fonts/inter/Inter-Italic.woff2 +0 -0
  35. package/docs-dev/assets/fonts/inter/Inter-Light.woff2 +0 -0
  36. package/docs-dev/assets/fonts/inter/Inter-LightItalic.woff2 +0 -0
  37. package/docs-dev/assets/fonts/inter/Inter-Medium.woff2 +0 -0
  38. package/docs-dev/assets/fonts/inter/Inter-MediumItalic.woff2 +0 -0
  39. package/docs-dev/assets/fonts/inter/Inter-Regular.woff2 +0 -0
  40. package/docs-dev/assets/fonts/inter/Inter-SemiBold.woff2 +0 -0
  41. package/docs-dev/assets/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
  42. package/docs-dev/assets/fonts/inter/Inter-Thin.woff2 +0 -0
  43. package/docs-dev/assets/fonts/inter/Inter-ThinItalic.woff2 +0 -0
  44. package/docs-dev/assets/fonts/inter/InterDisplay-Black.woff2 +0 -0
  45. package/docs-dev/assets/fonts/inter/InterDisplay-BlackItalic.woff2 +0 -0
  46. package/docs-dev/assets/fonts/inter/InterDisplay-Bold.woff2 +0 -0
  47. package/docs-dev/assets/fonts/inter/InterDisplay-BoldItalic.woff2 +0 -0
  48. package/docs-dev/assets/fonts/inter/InterDisplay-ExtraBold.woff2 +0 -0
  49. package/docs-dev/assets/fonts/inter/InterDisplay-ExtraBoldItalic.woff2 +0 -0
  50. package/docs-dev/assets/fonts/inter/InterDisplay-ExtraLight.woff2 +0 -0
  51. package/docs-dev/assets/fonts/inter/InterDisplay-ExtraLightItalic.woff2 +0 -0
  52. package/docs-dev/assets/fonts/inter/InterDisplay-Italic.woff2 +0 -0
  53. package/docs-dev/assets/fonts/inter/InterDisplay-Light.woff2 +0 -0
  54. package/docs-dev/assets/fonts/inter/InterDisplay-LightItalic.woff2 +0 -0
  55. package/docs-dev/assets/fonts/inter/InterDisplay-Medium.woff2 +0 -0
  56. package/docs-dev/assets/fonts/inter/InterDisplay-MediumItalic.woff2 +0 -0
  57. package/docs-dev/assets/fonts/inter/InterDisplay-Regular.woff2 +0 -0
  58. package/docs-dev/assets/fonts/inter/InterDisplay-SemiBold.woff2 +0 -0
  59. package/docs-dev/assets/fonts/inter/InterDisplay-SemiBoldItalic.woff2 +0 -0
  60. package/docs-dev/assets/fonts/inter/InterDisplay-Thin.woff2 +0 -0
  61. package/docs-dev/assets/fonts/inter/InterDisplay-ThinItalic.woff2 +0 -0
  62. package/docs-dev/assets/fonts/inter/InterVariable-Italic.woff2 +0 -0
  63. package/docs-dev/assets/fonts/inter/InterVariable.woff2 +0 -0
  64. package/docs-dev/assets/fonts/inter/LICENSE.txt +92 -0
  65. package/docs-dev/assets/fonts/inter/inter.css +37 -0
  66. package/docs-dev/assets/main.js +23312 -0
  67. package/docs-dev/assets/placeholder/4065947-uhd_4096_2160_25fps.credits.txt +2 -0
  68. package/docs-dev/assets/placeholder/4065947-uhd_4096_2160_25fps.mp4 +0 -0
  69. package/docs-dev/assets/placeholder/icon-calendar.svg +1 -0
  70. package/docs-dev/assets/placeholder/icon-check.svg +1 -0
  71. package/docs-dev/assets/placeholder/image-1-attribution.txt +7 -0
  72. package/docs-dev/assets/placeholder/image-1-darkened.jpg +0 -0
  73. package/docs-dev/assets/placeholder/image-1-lightened.jpg +0 -0
  74. package/docs-dev/assets/placeholder/image-1.jpg +0 -0
  75. package/docs-dev/assets/style.css +19153 -0
  76. package/docs-dev/changelog/index.html +7184 -0
  77. package/docs-dev/demos/accordion/index.html +5811 -0
  78. package/docs-dev/demos/badge/index.html +5655 -0
  79. package/docs-dev/demos/badge-stack/index.html +5636 -0
  80. package/docs-dev/demos/badge.1/index.html +5595 -0
  81. package/docs-dev/demos/basic-hero/index.html +111 -0
  82. package/docs-dev/demos/breakpoints-manager/index.html +5666 -0
  83. package/docs-dev/demos/button/index.html +5665 -0
  84. package/docs-dev/demos/button-group/index.html +5652 -0
  85. package/docs-dev/demos/button-verbose/index.html +5658 -0
  86. package/docs-dev/demos/callout/index.html +5704 -0
  87. package/docs-dev/demos/captioned-figure/index.html +5686 -0
  88. package/docs-dev/demos/card/index.html +5682 -0
  89. package/docs-dev/demos/card-grid/index.html +5777 -0
  90. package/docs-dev/demos/counter-list/index.html +5660 -0
  91. package/docs-dev/demos/css-icons/index.html +6298 -0
  92. package/docs-dev/demos/data-grid/index.html +6529 -0
  93. package/docs-dev/demos/data-table/index.html +5833 -0
  94. package/docs-dev/demos/details-group/index.html +5687 -0
  95. package/docs-dev/demos/file-save/index.html +5675 -0
  96. package/docs-dev/demos/flipcard/index.html +6224 -0
  97. package/docs-dev/demos/form-theme/index.html +5842 -0
  98. package/docs-dev/demos/headline-label/index.html +5622 -0
  99. package/docs-dev/demos/hero/index.html +309 -0
  100. package/docs-dev/demos/image-grid/index.html +165 -0
  101. package/docs-dev/demos/index.html +5613 -0
  102. package/docs-dev/demos/list-inline/index.html +5640 -0
  103. package/docs-dev/demos/list-lines/index.html +5630 -0
  104. package/docs-dev/demos/menu-stack/index.html +5769 -0
  105. package/docs-dev/demos/modals/index.html +5844 -0
  106. package/docs-dev/demos/nav-strip/index.html +5725 -0
  107. package/docs-dev/demos/overlay-section/index.html +5701 -0
  108. package/docs-dev/demos/panel/index.html +5682 -0
  109. package/docs-dev/demos/popovers/index.html +5873 -0
  110. package/docs-dev/demos/print/index.html +5633 -0
  111. package/docs-dev/demos/pull-quote/index.html +5632 -0
  112. package/docs-dev/demos/rail/index.html +5730 -0
  113. package/docs-dev/demos/rule/index.html +5694 -0
  114. package/docs-dev/demos/scroll-slider/index.html +170 -0
  115. package/docs-dev/demos/scrollpoints/index.html +5651 -0
  116. package/docs-dev/demos/skeleton/index.html +5678 -0
  117. package/docs-dev/demos/slider/index.html +172 -0
  118. package/docs-dev/demos/spoke-spinner/index.html +5628 -0
  119. package/docs-dev/demos/sticky-list/index.html +5643 -0
  120. package/docs-dev/demos/tabs/index.html +5753 -0
  121. package/docs-dev/demos/tag/index.html +5633 -0
  122. package/docs-dev/demos/theme-toggle/index.html +5699 -0
  123. package/docs-dev/demos/tile-grid-overlay/index.html +390 -0
  124. package/docs-dev/demos/tiles/index.html +5882 -0
  125. package/docs-dev/demos/tooltip/index.html +5661 -0
  126. package/docs-dev/demos/wysiwyg/index.html +5672 -0
  127. package/docs-dev/guide/building-stylesheet/index.html +5682 -0
  128. package/docs-dev/guide/developing-ulu-scss-module/index.html +5734 -0
  129. package/docs-dev/guide/index.html +5615 -0
  130. package/docs-dev/index.html +5662 -0
  131. package/docs-dev/javascript/events/index.html +5811 -0
  132. package/docs-dev/javascript/index.html +5628 -0
  133. package/docs-dev/javascript/settings/index.html +5825 -0
  134. package/docs-dev/javascript/ui-breakpoints/index.html +6071 -0
  135. package/docs-dev/javascript/ui-collapsible/index.html +5738 -0
  136. package/docs-dev/javascript/ui-details-group/index.html +5742 -0
  137. package/docs-dev/javascript/ui-dialog/index.html +5787 -0
  138. package/docs-dev/javascript/ui-flipcard/index.html +5678 -0
  139. package/docs-dev/javascript/ui-grid/index.html +5653 -0
  140. package/docs-dev/javascript/ui-modal-builder/index.html +5901 -0
  141. package/docs-dev/javascript/ui-overflow-scroller/index.html +5611 -0
  142. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +5629 -0
  143. package/docs-dev/javascript/ui-page/index.html +5626 -0
  144. package/docs-dev/javascript/ui-popover/index.html +5661 -0
  145. package/docs-dev/javascript/ui-print/index.html +5670 -0
  146. package/docs-dev/javascript/ui-print-details/index.html +5641 -0
  147. package/docs-dev/javascript/ui-programmatic-modal/index.html +5611 -0
  148. package/docs-dev/javascript/ui-proxy-click/index.html +5740 -0
  149. package/docs-dev/javascript/ui-resizer/index.html +5946 -0
  150. package/docs-dev/javascript/ui-scroll-slider/index.html +5672 -0
  151. package/docs-dev/javascript/ui-scrollpoint/index.html +5851 -0
  152. package/docs-dev/javascript/ui-slider/index.html +5813 -0
  153. package/docs-dev/javascript/ui-tabs/index.html +5706 -0
  154. package/docs-dev/javascript/ui-theme-toggle/index.html +5830 -0
  155. package/docs-dev/javascript/ui-tooltip/index.html +5754 -0
  156. package/docs-dev/javascript/utils-class-logger/index.html +5746 -0
  157. package/docs-dev/javascript/utils-css/index.html +5644 -0
  158. package/docs-dev/javascript/utils-dom/index.html +5711 -0
  159. package/docs-dev/javascript/utils-file-save/index.html +5783 -0
  160. package/docs-dev/javascript/utils-floating-ui/index.html +5643 -0
  161. package/docs-dev/javascript/utils-id/index.html +5653 -0
  162. package/docs-dev/javascript/utils-pause-youtube-video/index.html +5661 -0
  163. package/docs-dev/javascript/utils-system/index.html +5947 -0
  164. package/docs-dev/sass/base/color/index.html +5644 -0
  165. package/docs-dev/sass/base/elements/index.html +5815 -0
  166. package/docs-dev/sass/base/index/index.html +5814 -0
  167. package/docs-dev/sass/base/index.html +5622 -0
  168. package/docs-dev/sass/base/keyframes/index.html +5646 -0
  169. package/docs-dev/sass/base/layout/index.html +5806 -0
  170. package/docs-dev/sass/base/normalize/index.html +5654 -0
  171. package/docs-dev/sass/base/print/index.html +5650 -0
  172. package/docs-dev/sass/base/root/index.html +5670 -0
  173. package/docs-dev/sass/base/typography/index.html +5670 -0
  174. package/docs-dev/sass/components/accordion/index.html +5979 -0
  175. package/docs-dev/sass/components/adaptive-spacing/index.html +5915 -0
  176. package/docs-dev/sass/components/badge/index.html +5881 -0
  177. package/docs-dev/sass/components/badge-stack/index.html +5811 -0
  178. package/docs-dev/sass/components/basic-hero/index.html +5805 -0
  179. package/docs-dev/sass/components/button/index.html +5799 -0
  180. package/docs-dev/sass/components/button-group/index.html +5803 -0
  181. package/docs-dev/sass/components/button-verbose/index.html +5986 -0
  182. package/docs-dev/sass/components/callout/index.html +5961 -0
  183. package/docs-dev/sass/components/captioned-figure/index.html +5904 -0
  184. package/docs-dev/sass/components/card/index.html +6219 -0
  185. package/docs-dev/sass/components/card-grid/index.html +5813 -0
  186. package/docs-dev/sass/components/counter-list/index.html +5887 -0
  187. package/docs-dev/sass/components/css-icon/index.html +5917 -0
  188. package/docs-dev/sass/components/data-grid/index.html +6052 -0
  189. package/docs-dev/sass/components/data-table/index.html +5988 -0
  190. package/docs-dev/sass/components/fill-context/index.html +5679 -0
  191. package/docs-dev/sass/components/flipcard/index.html +5980 -0
  192. package/docs-dev/sass/components/flipcard-grid/index.html +5800 -0
  193. package/docs-dev/sass/components/form-theme/index.html +6525 -0
  194. package/docs-dev/sass/components/headline-label/index.html +5833 -0
  195. package/docs-dev/sass/components/hero/index.html +5849 -0
  196. package/docs-dev/sass/components/horizontal-rule/index.html +5798 -0
  197. package/docs-dev/sass/components/image-grid/index.html +5805 -0
  198. package/docs-dev/sass/components/index/index.html +5859 -0
  199. package/docs-dev/sass/components/index.html +5622 -0
  200. package/docs-dev/sass/components/links/index.html +5649 -0
  201. package/docs-dev/sass/components/list-inline/index.html +5819 -0
  202. package/docs-dev/sass/components/list-lines/index.html +5840 -0
  203. package/docs-dev/sass/components/list-ordered/index.html +5645 -0
  204. package/docs-dev/sass/components/list-unordered/index.html +5649 -0
  205. package/docs-dev/sass/components/menu-stack/index.html +5992 -0
  206. package/docs-dev/sass/components/modal/index.html +6068 -0
  207. package/docs-dev/sass/components/nav-strip/index.html +5899 -0
  208. package/docs-dev/sass/components/overlay-section/index.html +5843 -0
  209. package/docs-dev/sass/components/pager/index.html +5961 -0
  210. package/docs-dev/sass/components/panel/index.html +6033 -0
  211. package/docs-dev/sass/components/placeholder-block/index.html +5883 -0
  212. package/docs-dev/sass/components/popover/index.html +5994 -0
  213. package/docs-dev/sass/components/pull-quote/index.html +5857 -0
  214. package/docs-dev/sass/components/rail/index.html +5823 -0
  215. package/docs-dev/sass/components/ratio-box/index.html +5803 -0
  216. package/docs-dev/sass/components/rule/index.html +5805 -0
  217. package/docs-dev/sass/components/scroll-slider/index.html +5904 -0
  218. package/docs-dev/sass/components/skeleton/index.html +5861 -0
  219. package/docs-dev/sass/components/skip-link/index.html +5789 -0
  220. package/docs-dev/sass/components/slider/index.html +5913 -0
  221. package/docs-dev/sass/components/spoke-spinner/index.html +5863 -0
  222. package/docs-dev/sass/components/sticky-list/index.html +6023 -0
  223. package/docs-dev/sass/components/table-sticky/index.html +5677 -0
  224. package/docs-dev/sass/components/tabs/index.html +5954 -0
  225. package/docs-dev/sass/components/tag/index.html +5964 -0
  226. package/docs-dev/sass/components/tile-button/index.html +5844 -0
  227. package/docs-dev/sass/components/tile-grid/index.html +5979 -0
  228. package/docs-dev/sass/components/tile-grid-overlay/index.html +5780 -0
  229. package/docs-dev/sass/components/vignette/index.html +5799 -0
  230. package/docs-dev/sass/components/wysiwyg/index.html +5827 -0
  231. package/docs-dev/sass/core/breakpoint/index.html +6454 -0
  232. package/docs-dev/sass/core/button/index.html +6538 -0
  233. package/docs-dev/sass/core/color/index.html +6520 -0
  234. package/docs-dev/sass/core/cssvar/index.html +6411 -0
  235. package/docs-dev/sass/core/element/index.html +6816 -0
  236. package/docs-dev/sass/core/index.html +5609 -0
  237. package/docs-dev/sass/core/layout/index.html +6388 -0
  238. package/docs-dev/sass/core/path/index.html +5778 -0
  239. package/docs-dev/sass/core/selector/index.html +5857 -0
  240. package/docs-dev/sass/core/typography/index.html +6783 -0
  241. package/docs-dev/sass/core/units/index.html +5822 -0
  242. package/docs-dev/sass/core/utils/index.html +8406 -0
  243. package/docs-dev/sass/helpers/color/index.html +5644 -0
  244. package/docs-dev/sass/helpers/display/index.html +5649 -0
  245. package/docs-dev/sass/helpers/index/index.html +5811 -0
  246. package/docs-dev/sass/helpers/index.html +5622 -0
  247. package/docs-dev/sass/helpers/print/index.html +5199 -0
  248. package/docs-dev/sass/helpers/typography/index.html +5672 -0
  249. package/docs-dev/sass/helpers/units/index.html +5818 -0
  250. package/docs-dev/sass/helpers/utilities/index.html +5649 -0
  251. package/docs-dev/sass/index.html +5673 -0
  252. package/js/events/index.js +17 -5
  253. package/js/index.js +1 -0
  254. package/js/settings.js +97 -0
  255. package/js/ui/breakpoints.js +19 -16
  256. package/js/ui/collapsible.js +8 -1
  257. package/js/ui/details-group.js +112 -0
  258. package/js/ui/dialog.js +103 -44
  259. package/js/ui/dialog.todo +2 -36
  260. package/js/ui/flipcard.js +37 -57
  261. package/js/ui/grid.js +15 -13
  262. package/js/ui/index.js +1 -0
  263. package/js/ui/modal-builder.js +127 -70
  264. package/js/ui/overflow-scroller.js +6 -4
  265. package/js/ui/page.js +2 -2
  266. package/js/ui/popover.js +38 -38
  267. package/js/ui/print.js +16 -25
  268. package/js/ui/programmatic-modal.js +9 -3
  269. package/js/ui/proxy-click.js +50 -36
  270. package/js/ui/resizer.js +408 -39
  271. package/js/ui/scroll-slider.js +24 -30
  272. package/js/ui/scrollpoint.js +29 -64
  273. package/js/ui/slider.js +108 -63
  274. package/js/ui/tabs.js +46 -39
  275. package/js/ui/theme-toggle.js +332 -94
  276. package/js/ui/tooltip.js +27 -32
  277. package/js/utils/class-logger.js +3 -3
  278. package/js/utils/css.js +13 -0
  279. package/js/utils/dom.js +23 -64
  280. package/js/utils/font-awesome.js +19 -0
  281. package/js/utils/index.js +2 -1
  282. package/js/utils/system.js +155 -0
  283. package/package.json +25 -11
  284. package/scss/README.md +9 -0
  285. package/scss/_breakpoint.scss +39 -5
  286. package/scss/_button.scss +7 -5
  287. package/scss/_color.scss +42 -9
  288. package/scss/_element.scss +124 -2
  289. package/scss/_layout.scss +7 -8
  290. package/scss/_units.scss +3 -2
  291. package/scss/_utils.scss +387 -16
  292. package/scss/base/_elements.scss +0 -1
  293. package/scss/base/_index.scss +1 -1
  294. package/scss/base/_keyframes.scss +15 -0
  295. package/scss/base/_layout.scss +1 -0
  296. package/scss/base/_print.scss +2 -0
  297. package/scss/base/_root.scss +2 -0
  298. package/scss/base/_typography.scss +7 -7
  299. package/scss/components/README.todos +14 -0
  300. package/scss/components/_accordion.scss +46 -32
  301. package/scss/components/_adaptive-spacing.scss +3 -3
  302. package/scss/components/_badge-stack.scss +84 -0
  303. package/scss/components/_badge.scss +35 -11
  304. package/scss/components/_basic-hero.scss +112 -0
  305. package/scss/components/_button-group.scss +90 -0
  306. package/scss/components/_button-verbose.scss +122 -40
  307. package/scss/components/_button.scss +2 -0
  308. package/scss/components/_callout.scss +129 -81
  309. package/scss/components/_captioned-figure.scss +25 -8
  310. package/scss/components/_card-grid.scss +3 -3
  311. package/scss/components/_card.scss +267 -91
  312. package/scss/components/_counter-list.scss +151 -0
  313. package/scss/components/_css-icon.scss +45 -30
  314. package/scss/components/_data-grid.scss +57 -14
  315. package/scss/components/_data-table.scss +46 -6
  316. package/scss/components/_flipcard-grid.scss +2 -2
  317. package/scss/components/_flipcard.scss +23 -17
  318. package/scss/components/_form-theme.scss +148 -137
  319. package/scss/components/_headline-label.scss +83 -0
  320. package/scss/components/_hero.scss +14 -12
  321. package/scss/components/_image-grid.scss +2 -2
  322. package/scss/components/_index.scss +60 -0
  323. package/scss/components/_list-inline.scss +80 -0
  324. package/scss/components/_list-lines.scss +46 -35
  325. package/scss/components/_list-ordered.scss +0 -1
  326. package/scss/components/_menu-stack.scss +44 -28
  327. package/scss/components/_modal.scss +75 -56
  328. package/scss/components/_nav-strip.scss +28 -19
  329. package/scss/components/_overlay-section.scss +6 -9
  330. package/scss/components/_pager.scss +11 -11
  331. package/scss/components/_panel.scss +246 -0
  332. package/scss/components/_placeholder-block.scss +6 -6
  333. package/scss/components/_popover.scss +176 -75
  334. package/scss/components/_pull-quote.scss +15 -15
  335. package/scss/components/_rail.scss +127 -0
  336. package/scss/components/_ratio-box.scss +4 -7
  337. package/scss/components/_rule.scss +6 -6
  338. package/scss/components/_scroll-slider.scss +4 -8
  339. package/scss/components/_skeleton.scss +126 -0
  340. package/scss/components/_skip-link.scss +2 -1
  341. package/scss/components/_slider.scss +53 -112
  342. package/scss/components/_spoke-spinner.scss +2 -2
  343. package/scss/components/_sticky-list.scss +206 -0
  344. package/scss/components/_tabs.scss +135 -51
  345. package/scss/components/_tag.scss +3 -3
  346. package/scss/components/_vignette.scss +3 -5
  347. package/scss/components/_wysiwyg.scss +21 -13
  348. package/scss/helpers/_display.scss +15 -18
  349. package/scss/helpers/_print.scss +12 -7
  350. package/scss/helpers/_utilities.scss +41 -31
  351. package/types/events/index.d.ts +10 -1
  352. package/types/events/index.d.ts.map +1 -1
  353. package/types/index.d.ts +1 -0
  354. package/types/settings.d.ts +70 -0
  355. package/types/settings.d.ts.map +1 -0
  356. package/types/ui/breakpoints.d.ts +14 -14
  357. package/types/ui/breakpoints.d.ts.map +1 -1
  358. package/types/ui/collapsible.d.ts.map +1 -1
  359. package/types/ui/details-group.d.ts +38 -0
  360. package/types/ui/details-group.d.ts.map +1 -0
  361. package/types/ui/dialog.d.ts +20 -14
  362. package/types/ui/dialog.d.ts.map +1 -1
  363. package/types/ui/flipcard.d.ts +16 -10
  364. package/types/ui/flipcard.d.ts.map +1 -1
  365. package/types/ui/grid.d.ts +4 -6
  366. package/types/ui/grid.d.ts.map +1 -1
  367. package/types/ui/index.d.ts +2 -1
  368. package/types/ui/modal-builder.d.ts +116 -11
  369. package/types/ui/modal-builder.d.ts.map +1 -1
  370. package/types/ui/overflow-scroller.d.ts +2 -2
  371. package/types/ui/overflow-scroller.d.ts.map +1 -1
  372. package/types/ui/popover.d.ts +6 -7
  373. package/types/ui/popover.d.ts.map +1 -1
  374. package/types/ui/print.d.ts +0 -4
  375. package/types/ui/print.d.ts.map +1 -1
  376. package/types/ui/programmatic-modal.d.ts.map +1 -1
  377. package/types/ui/proxy-click.d.ts +19 -3
  378. package/types/ui/proxy-click.d.ts.map +1 -1
  379. package/types/ui/resizer.d.ts +116 -16
  380. package/types/ui/resizer.d.ts.map +1 -1
  381. package/types/ui/scroll-slider.d.ts +5 -7
  382. package/types/ui/scroll-slider.d.ts.map +1 -1
  383. package/types/ui/scrollpoint.d.ts +3 -8
  384. package/types/ui/scrollpoint.d.ts.map +1 -1
  385. package/types/ui/slider.d.ts +33 -14
  386. package/types/ui/slider.d.ts.map +1 -1
  387. package/types/ui/tabs.d.ts +6 -8
  388. package/types/ui/tabs.d.ts.map +1 -1
  389. package/types/ui/theme-toggle.d.ts +51 -7
  390. package/types/ui/theme-toggle.d.ts.map +1 -1
  391. package/types/ui/tooltip.d.ts +3 -5
  392. package/types/ui/tooltip.d.ts.map +1 -1
  393. package/types/utils/css.d.ts +11 -0
  394. package/types/utils/css.d.ts.map +1 -0
  395. package/types/utils/dom.d.ts +12 -32
  396. package/types/utils/dom.d.ts.map +1 -1
  397. package/types/utils/font-awesome.d.ts +5 -0
  398. package/types/utils/font-awesome.d.ts.map +1 -0
  399. package/types/utils/index.d.ts +2 -1
  400. package/types/utils/system.d.ts +113 -0
  401. package/types/utils/system.d.ts.map +1 -0
@@ -0,0 +1,126 @@
1
+ ////
2
+ /// @group skeleton
3
+ /// Placeholder component for skeleton (ie. loading state
4
+ ////
5
+
6
+ @use "sass:map";
7
+ @use "sass:list";
8
+ @use "sass:math";
9
+ @use "sass:meta";
10
+
11
+ @use "../selector";
12
+ @use "../utils";
13
+ @use "../color";
14
+ @use "../element";
15
+
16
+
17
+ // Used for function fallback
18
+ $-fallbacks: (
19
+ "border-radius" : (
20
+ "function" : meta.get-function("get", false, "element"),
21
+ "property" : "border-radius"
22
+ )
23
+ );
24
+
25
+ /// Module Settings
26
+ /// @type Map
27
+ /// @prop {CssValue} animation [pulse 2s cubic-bezier(0.4,0,0.6,1) infinite] The animation applied to skeleton elements.
28
+ /// @prop {Color} color [type-disabled] The base color for skeleton elements.
29
+ /// @prop {Color} background-color [#cbcbcb] The primary background color for skeleton elements.
30
+ /// @prop {Color} background-color-alt [#aeaeae] An alternative background color for skeleton elements, used for variations.
31
+ /// @prop {Dimension} border-radius [true] The border-radius for skeleton blocks and text. If set to true, uses the element.scss property for "border-radius".
32
+ /// @prop {Dimension} inline-margin [0.35em] The margin between inline skeleton text elements.
33
+ /// @prop {Number} media-ratio [(4/3)] The aspect ratio for skeleton media blocks (width/height).
34
+ /// @prop {Dimension} text-border-radius [3em] The border-radius for skeleton text lines.
35
+ /// @prop {Map} widths [Map] A map defining various width percentages for skeleton text lines (or used to size blocks/etc)
36
+
37
+ $config: (
38
+ "animation" : UluPulse 2s cubic-bezier(0.4,0,0.6,1) infinite,
39
+ "color" : "type-disabled",
40
+ "background-color" : #e2e2e2,
41
+ "background-color-alt" : #bababa,
42
+ "border-radius": true,
43
+ "inline-margin" : 0.35em,
44
+ "media-ratio" : list.slash(4, 3),
45
+ "media-font-size" : 2rem,
46
+ "text-border-radius" : 3em,
47
+ "widths": (
48
+ "small-xxx" : 10%,
49
+ "small-xx" : 20%,
50
+ "small-x" : 30%,
51
+ "small" : 40%,
52
+ "large" : 70%,
53
+ "large-x" : 85%,
54
+ "large-xx" : 100%
55
+ ),
56
+ ) !default;
57
+
58
+ /// Change modules $config
59
+ /// @param {Map} $changes Map of changes
60
+ /// @example scss
61
+ /// @include ulu.component-skeleton-set(( "property" : value ));
62
+
63
+ @mixin set($changes) {
64
+ $config: map.merge($config, $changes) !global;
65
+ }
66
+
67
+ /// Get a config option
68
+ /// @param {Map} $name Name of property
69
+ /// @example scss
70
+ /// @include ulu.component-skeleton-get("property");
71
+
72
+ @function get($name) {
73
+ $value: utils.require-map-get($config, $name, "skeleton [config]");
74
+ @return utils.function-fallback($name, $value, $-fallbacks);
75
+ }
76
+
77
+ /// Prints component styles
78
+ /// @demo skeleton
79
+ /// @example scss
80
+ /// @include ulu.component-skeleton-styles();
81
+
82
+ @mixin styles {
83
+ $prefix: selector.class("skeleton");
84
+
85
+ #{ $prefix } {
86
+ animation: get("animation");
87
+ color: color.get(get("color"));
88
+ }
89
+ #{ $prefix }--background {
90
+ background-color: color.get(get("background-color")) !important;
91
+ }
92
+ #{ $prefix }--block,
93
+ #{ $prefix }--text,
94
+ #{ $prefix }--media {
95
+ animation: get("animation");
96
+ color: color.get(get("color"));
97
+ background-color: color.get(get("background-color")) !important;
98
+ border-radius: get("border-radius");
99
+ }
100
+ #{ $prefix }--media {
101
+ display: flex;
102
+ align-items: center;
103
+ justify-content: center;
104
+ aspect-ratio: get("media-ratio");
105
+ font-size: get("media-font-size");
106
+ }
107
+ #{ $prefix }--text {
108
+ height: 1em;
109
+ width: 60%;
110
+ border-radius: get("text-border-radius");
111
+ }
112
+ #{ $prefix }--inline {
113
+ display: inline-block;
114
+ }
115
+ #{ $prefix }--inline + #{ $prefix }--inline {
116
+ margin-left: get("inline-margin");
117
+ }
118
+ #{ $prefix }--background-alt {
119
+ background-color: color.get(get("background-color-alt")) !important;
120
+ }
121
+ @each $name, $value in get("widths") {
122
+ #{ $prefix }--width-#{ $name } {
123
+ width: $value;
124
+ }
125
+ }
126
+ }
@@ -7,6 +7,7 @@
7
7
  @use "sass:meta";
8
8
 
9
9
  @use "../element";
10
+ @use "../color";
10
11
  @use "../layout";
11
12
  @use "../selector";
12
13
  @use "../utils";
@@ -83,7 +84,7 @@ $config: (
83
84
  left: 50%;
84
85
  transform: translateX(-50%);
85
86
  padding: get("padding");
86
- background-color: get("background-color");
87
+ background-color: color.get(get("background-color"));
87
88
  font-weight: bold;
88
89
  box-shadow: get("box-shadow");
89
90
  border-bottom-left-radius: get("border-radius");
@@ -7,86 +7,55 @@
7
7
 
8
8
  @use "../color";
9
9
  @use "../utils";
10
- @use "../breakpoint";
11
10
  @use "../selector";
12
11
 
13
12
  /// Module Settings
14
13
  /// @type Map
15
14
  /// @prop {Color} background-color [transparent] Background color for the entire slider section.
16
- /// @prop {List} breakpoint ["small"] Currently commented out @joe-check
17
- /// @prop {Dimension} margin-bottom [3rem] Bottom margin color for the entire slider section.
18
- /// @prop {Dimension} margin-top [1rem] Top margin color for the entire slider section.
19
- /// @prop {Dimension} padding-bottom [0] Bottom padding for individual slides.
20
- /// @prop {Dimension} padding-bottom-small [0] Smaller option for bottom padding for individual slides. Currently commented out @joe-check
15
+ /// @prop {Dimension} margin [(1rem 0 3rem 0)] Margin for slider container
21
16
  /// @prop {Dimension} padding-top [0] Top padding for individual slides.
22
- /// @prop {Dimension} padding-top-small [0] Smaller option for top padding for individual slides. Currently commented out @joe-check
23
- /// @prop {Color} button-background-color [transparent] Currently unused @joe-check
24
- /// @prop {Color} button-background-color-hover [color.get("link-hover")] Currently unused @joe-check
25
- /// @prop {CssValue} button-border [2px solid color.get("link")] Currently unused @joe-check
26
- /// @prop {Color} button-border-color-hover [color.get("link-hover")] Currently unused @joe-check
27
- /// @prop {Dimension} button-border-radius [50%] Currently unused @joe-check
28
- /// @prop {Color} button-color [color.get("link")] Currently unused @joe-check
29
- /// @prop {Color} button-color-hover [white] Currently unused @joe-check
30
- /// @prop {Dimension} button-font-size [1.35rem] Currently unused @joe-check
31
- /// @prop {Dimension} button-font-size-small [false] Currently unused @joe-check
32
- /// @prop {Dimension} button-icon-offset-x [false] Offsets the control icons in from their respective sides. @joe-check
33
- /// @prop {Dimension} button-icon-offset-y [false] Offsets the control options down by adding a margin.
17
+ /// @prop {Dimension} button-offset-x [null] Offsets the control button in from their respective sides.
18
+ /// @prop {Dimension} button-offset-y [null] Offsets the control button y
34
19
  /// @prop {Dimension} button-margin [0.75rem] The margin between the controls and the slide content when using .slider__slide-gap-for-controls
35
- /// @prop {Dimension} button-margin-small [0.75rem] Currently commented out @joe-check
36
- /// @prop {Dimension} button-size [3rem] Size of the button. Likely antiquated and replaced with button-width and button-height
37
- /// @prop {Dimension} button-size-small [false] Currently commented out @joe-check
38
- /// @prop {Color} dot-background-color [transparent] The color of the dot when unselected.
39
- /// @prop {Color} dot-background-color-hover [color.get("link")] The color of the dot when hovered.
40
- /// @prop {Color} dot-background-color-selected [color.get("link")] The color of the dot when selected.
41
- /// @prop {Dimension} dot-border-radius [50%] The border-radius of the dot.
42
- /// @prop {Color} dot-border-color [color.get("link")] The border color of the dot.
43
- /// @prop {Color} dot-border-color-hover [color.get("link")] The border color of the dot when hovered.
44
- /// @prop {Color} dot-border-color-selected [color.get("link")] The border color of the dot when selected.
45
- /// @prop {Dimension} dot-border-width [2px] The border width of the dot.
46
- /// @prop {Dimension} dot-size [1rem] The height and width of the dot.
47
- /// @prop {Dimension} button-height [1rem] The height of the button.
20
+ /// @prop {Color} nav-margin [(0.5rem 0)] Margin for nav (dots)
21
+ /// @prop {Color} nav-background-color [transparent] The color of the dot when unselected.
22
+ /// @prop {Color} nav-background-color-hover [color.get("link")] The color of the dot when hovered.
23
+ /// @prop {Color} nav-background-color-selected [color.get("link")] The color of the dot when selected.
24
+ /// @prop {Dimension} nav-border-radius [50%] The border-radius of the dot.
25
+ /// @prop {Color} nav-border-color [color.get("link")] The border color of the dot.
26
+ /// @prop {Color} nav-border-color-hover [color.get("link")] The border color of the dot when hovered.
27
+ /// @prop {Color} nav-border-color-selected [color.get("link")] The border color of the dot when selected.
28
+ /// @prop {Dimension} nav-border-width [2px] The border width of the dot.
29
+ /// @prop {Dimension} nav-size [1rem] The height and width of the dot.
30
+ /// @prop {Dimension} nav-gap [0.2rem] Gap between nav items
48
31
  /// @prop {Dimension} button-width [1rem] The width of the button.
49
32
 
50
33
  $config: (
51
34
  "background-color" : transparent,
52
- "breakpoint" : "small",
53
- "margin-bottom" : 3rem,
54
- "margin-top" : 1rem,
55
- "button-background-color" : transparent,
56
- "button-border" : 2px solid color.get("link"),
57
- "button-border-color-hover" : color.get("link-hover"),
58
- "button-border-radius" : 50%,
59
- "button-color-hover" : white,
60
- "button-background-color-hover" : color.get("link-hover"),
61
- "button-color" : color.get("link"),
62
- "button-font-size" : 1.35rem,
63
- "button-icon-offset-x" : 2rem,
64
- "button-icon-offset-y" : false,
65
- "button-font-size-small" : false,
66
- "button-margin" : 2rem,
67
- "button-margin-small" : 0.75rem,
68
- "button-size" : 3rem,
69
- "button-size-small" : false,
70
- "button-height": 2.5rem,
71
- "button-width": 2.5rem,
72
- "dot-background-color" : transparent,
73
- "dot-background-color-hover" : color.get("link"),
74
- "dot-background-color-selected" : color.get("link"),
75
- "dot-border-color" : color.get("link"),
76
- "dot-border-color-hover" : color.get("link"),
77
- "dot-border-color-selected" : color.get("link"),
78
- "dot-border-radius" : 50%,
79
- "dot-border-width" : 2px,
80
- "dot-size" : 1rem,
35
+ "margin" : (1rem 0 3rem 0),
81
36
  "padding-bottom" : 0,
82
- "padding-bottom-small" : 0,
83
37
  "padding-top" : 0,
84
- "padding-top-small" : 0,
38
+ "button-offset-x" : null,
39
+ "button-offset-y" : null,
40
+ "button-margin" : 2rem,
41
+ "button-width": 2.5rem,
42
+ "nav-background-color" : transparent,
43
+ "nav-background-color-hover" : "link",
44
+ "nav-background-color-selected" : "link",
45
+ "nav-border-color" : "link",
46
+ "nav-border-color-hover" : "link",
47
+ "nav-border-color-selected" : "link",
48
+ "nav-border-radius" : 50%,
49
+ "nav-gap" : 0.2rem,
50
+ "nav-border-width" : 2px,
51
+ "nav-size" : 1rem,
52
+ "nav-margin" : (0.5rem 0),
53
+
85
54
  ) !default;
86
55
 
87
56
  /// Change modules $config
88
57
  /// @param {Map} $changes Map of changes
89
- /// @example scss - General example
58
+ /// @example scss
90
59
  /// @include ulu.component-slider-set(( "property" : value ));
91
60
 
92
61
  @mixin set($changes) {
@@ -95,7 +64,7 @@ $config: (
95
64
 
96
65
  /// Get a config option
97
66
  /// @param {Map} $name Name of property
98
- /// @example scss - General example
67
+ /// @example scss
99
68
  /// @include ulu.component-slider-get("property");
100
69
 
101
70
  @function get($name) {
@@ -112,8 +81,8 @@ $config: (
112
81
  $slide-padding-x: get("button-width") + get("button-margin");
113
82
  #{ $prefix } {
114
83
  position: relative; // for controls
115
- background-color: get("background-color");
116
- margin: get("margin-top") 0 get("margin-bottom") 0;
84
+ background-color: color.get(get("background-color"));
85
+ margin: get("margin");
117
86
  }
118
87
  #{ $prefix }__track,
119
88
  #{ $prefix-plugin }__controls,
@@ -126,34 +95,30 @@ $config: (
126
95
  top: 50%;
127
96
  transform: translateY(-50%);
128
97
  z-index: 10;
129
- }
130
- @if get("button-icon-offset-y") {
131
- #{ $prefix-plugin }__control-icon {
132
- margin-top: get("button-icon-offset-y");
133
- }
98
+ margin-top: get("button-offset-y");
134
99
  }
135
100
  #{ $prefix-plugin }__nav {
136
101
  display: flex;
137
102
  justify-content: center;
138
- li {
139
- margin: 0.5rem 0.15rem;
140
- }
103
+ margin: get("nav-margin");
104
+ gap: get("nav-gap");
141
105
  }
142
106
  #{ $prefix-plugin }__nav-button {
143
107
  display: block;
144
- width: get("dot-size");
145
- height: get("dot-size");
146
- background-color: get("dot-background-color");
147
- border: get("dot-border-width") solid get("dot-border-color");
148
- border-radius: get("dot-border-radius");
108
+ width: get("nav-size");
109
+ height: get("nav-size");
110
+ background-color: color.get(get("nav-background-color"));
111
+ border: get("nav-border-width") solid color.get(get("nav-border-color"));
112
+ border-radius: get("nav-border-radius");
149
113
  &:hover {
150
- background-color: get("dot-background-color-hover");
114
+ background-color: color.get(get("nav-background-color-hover"));
115
+ border-color: color.get(get("nav-border-color-hover"));
151
116
  }
152
117
  }
153
118
  #{ $prefix-plugin }__nav-button--active,
154
119
  #{ $prefix-plugin }__nav-button--active:hover {
155
- background-color: get("dot-background-color-selected");
156
- border-color: get("dot-border-color-selected");
120
+ background-color: color.get(get("nav-background-color-selected"));
121
+ border-color: color.get(get("nav-border-color-selected"));
157
122
  }
158
123
  #{ $prefix-plugin }__control-button,
159
124
  #{ $prefix-plugin }__nav-button {
@@ -180,14 +145,7 @@ $config: (
180
145
  }
181
146
  #{ $prefix }__slide {
182
147
  margin: 0;
183
- // @if (get("button-size-small")) {
184
- // @include breakpoint.max(get("breakpoint")) {
185
- // $bp-slide-padding: get("button-size-small") + get("button-margin-small");
186
- // padding: get("padding-top-small") $bp-slide-padding get("padding-bottom-small") $bp-slide-padding;
187
- // }
188
- // }
189
- }
190
- // @joe-check should we remove this modifier for universal slide padding in favor of the individualized modifiers below?
148
+ }
191
149
  #{ $prefix }--slide-control-margins {
192
150
  #{ $prefix }__slide {
193
151
  padding: get("padding-top") $slide-padding-x get("padding-bottom") $slide-padding-x;
@@ -200,42 +158,25 @@ $config: (
200
158
  }
201
159
  #{ $prefix-plugin }__control-button--previous {
202
160
  left: 0;
203
- @if get("button-icon-offset-x") {
204
- #{ $prefix-plugin }__control-icon {
205
- margin-left: get("button-icon-offset-x");
206
- }
207
- }
161
+ margin-left: get("button-offset-x");
208
162
  }
209
163
  #{ $prefix-plugin }__control-button--next {
210
164
  right: 0;
211
- @if get("button-icon-offset-x") {
212
- #{ $prefix-plugin }__control-icon {
213
- margin-right: get("button-icon-offset-x");
214
- }
215
- }
165
+ margin-right: get("button-offset-x");
216
166
  }
217
167
  #{ $prefix }--inset-controls {
218
168
  #{ $prefix }__slide-gap-for-controls {
219
- $padding: get("button-width") + get("button-margin") + get("button-icon-offset-x");
169
+ $padding: get("button-width") + get("button-margin") + get("button-offset-x");
220
170
  padding-left: $padding;
221
171
  padding-right: $padding;
222
172
  }
223
173
  #{ $prefix-plugin }__control-button--previous {
224
174
  left: 0;
225
- @if get("button-icon-offset-x") {
226
- &#{ $prefix-plugin }__control-icon {
227
- margin-left: get("button-icon-offset-x");
228
-
229
- }
230
- }
175
+ margin-left: get("button-offset-x");
231
176
  }
232
177
  #{ $prefix-plugin }__control-button--next {
233
178
  right: 0;
234
- @if get("button-icon-offset-x") {
235
- &#{ $prefix-plugin }__control-icon {
236
- margin-right: get("button-icon-offset-x");
237
- }
238
- }
179
+ margin-right: get("button-offset-x");
239
180
  }
240
181
  }
241
182
  }
@@ -96,7 +96,7 @@ $styles: () !default;
96
96
  transform-origin: $sizeHalf $sizeHalf;
97
97
  animation: UluFadeOut get("duration") linear infinite;
98
98
  }
99
- #{ $prefix }__spinner div:after {
99
+ #{ $prefix }__spinner div::after {
100
100
  content: " ";
101
101
  display: block;
102
102
  position: absolute;
@@ -181,7 +181,7 @@ $styles: () !default;
181
181
  transform-origin: $sizeHalf $sizeHalf;
182
182
  animation-duration: map.get($merged, "duration");
183
183
  }
184
- #{ $prefix }__spinner div:after {
184
+ #{ $prefix }__spinner div::after {
185
185
  left: $sizeHalf - $spoke-widthHalf;
186
186
  width: $spoke-width;
187
187
  height: map.get($merged, "spoke-height");
@@ -0,0 +1,206 @@
1
+
2
+ ////
3
+ /// @group sticky-list
4
+ ////
5
+ /// Sticky first column, sticky elements inside adjacent columns to first. (Sticky list with header)
6
+
7
+ @use "sass:map";
8
+ @use "sass:meta";
9
+ @use "sass:color" as sassColor;
10
+
11
+ @use "../color";
12
+ @use "../element";
13
+ @use "../breakpoint";
14
+ @use "../typography";
15
+ @use "../utils";
16
+ @use "../selector";
17
+
18
+ // Used for function fallback
19
+ $-fallbacks: (
20
+ "margin" : (
21
+ "function" : meta.get-function("get", false, "element"),
22
+ "property" : "margin"
23
+ ),
24
+ );
25
+
26
+ /// Module Settings
27
+ /// @type Map
28
+ /// @prop {Color} background-color [transparent] Background color for the entire slider section.
29
+ /// @prop {Number} margin [true] Margin on ends of component (defaults to element margin)
30
+ /// @prop {Number} mask-offset-bottom [55vh] The offset for the mask (on bottom)
31
+ /// @prop {Number} mask-offset-top [5rem] The offset for the mask (on top)
32
+ /// @prop {Number} sticky-top [45vh] When to stick
33
+ /// @prop {String} breakpoint ["medium"] The upward breakpoint that this is allowed to be sticky
34
+ /// @prop {String} type-size ["medium"] The typography size to use for title
35
+ /// @prop {Number} title-width [40%] The width of the title when this is displayed in columns
36
+ /// @prop {Number} title-min-width [8em] The min width for title when displayed in columns
37
+ /// @prop {CssValue} title-text-align [right] Text alignment for title when displayed in columns
38
+ /// @prop {Number} item-padding-x [0] Optional padding on the left/right for items
39
+ /// @prop {Number} gap [2rem] The gap between title and items when displayed in columns
40
+ /// @prop {Color} background-color [white] The background color used for the mask
41
+ /// @prop {List} background-contexts Adjust the background mask color by contextual selectors. Pass List of Maps with ("selector" [parent/contextual selector], "background-color", "item-padding-x" [optional])
42
+
43
+ $config: (
44
+ "margin" : true,
45
+ "mask-offset-bottom" : 55vh,
46
+ "mask-offset-top" : 5rem,
47
+ "sticky-top" : 45vh,
48
+ "breakpoint" : "medium",
49
+ "type-size" : "large",
50
+ "title-width" : 40%,
51
+ "title-min-width" : 8em,
52
+ "title-text-align" : right,
53
+ "item-padding-x" : 0,
54
+ "gap" : 2rem,
55
+ "background-color" : white,
56
+ "background-contexts" : (
57
+ (
58
+ "selector" : ".background-dark",
59
+ "background-color" : black,
60
+ "item-padding-x" : 1em
61
+ ),
62
+ )
63
+ );
64
+
65
+ /// Change modules $config
66
+ /// @param {Map} $changes Map of changes
67
+ /// @example scss
68
+ /// @include ulu.component-sticky-list-set(( "property" : value ));
69
+
70
+ @mixin set($changes) {
71
+ $config: map.merge($config, $changes) !global;
72
+ }
73
+
74
+ /// Set sizes map
75
+ /// @param {Map} $changes Map of changes
76
+ /// @param {String} $merge-mode Merge mode see utils.map-merge() [null|"deep"|"overwrite"]
77
+
78
+ @mixin set-sizes($changes, $merge-mode: null) {
79
+ $sizes: utils.map-merge($sizes, $changes, $merge-mode) !global;
80
+ }
81
+
82
+ /// Get a config option
83
+ /// @param {Map} $name Name of property
84
+ /// @example scss
85
+ /// @include ulu.component-sticky-list-get("property");
86
+
87
+ @function get($name) {
88
+ $value: utils.require-map-get($config, $name, "sticky-list [config]");
89
+ @return utils.function-fallback($name, $value, $-fallbacks);
90
+ }
91
+
92
+ /// Prints component styles
93
+ /// @demo sticky-list
94
+ /// @example scss
95
+ /// @include ulu.component-sticky-list-styles();
96
+ /// @example html {preview}
97
+ /// <div class="sticky-list">
98
+ /// <strong class="sticky-list__title">Example:</strong>
99
+ /// <ul class="sticky-list__list">
100
+ /// <li class="sticky-list__item">
101
+ /// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nec nisl magna
102
+ /// </li>
103
+ /// <li class="sticky-list__item">
104
+ /// Aenean sollicitudin mauris lectus, blandit suscipit lectus fringilla sed
105
+ /// </li>
106
+ /// <li class="sticky-list__item">
107
+ /// Suspendisse sollicitudin, justo sed efficitur tempor, risus
108
+ /// </li>
109
+ /// <li class="sticky-list__item">
110
+ /// Suspendisse sollicitudin, justo sed efficitur tempor, risus
111
+ /// </li>
112
+ /// <li class="sticky-list__item">
113
+ /// Suspendisse sollicitudin, justo sed efficitur tempor, risus
114
+ /// </li>
115
+ /// </ul>
116
+ /// </div>
117
+
118
+ @mixin styles {
119
+ $prefix: selector.class("sticky-list");
120
+ $mask-offset-top: get("mask-offset-top");
121
+ $mask-offset-bottom: get("mask-offset-bottom");
122
+ $type-size: get("type-size");
123
+ $sticky-top: get("sticky-top");
124
+
125
+ #{ $prefix } {
126
+ padding: get("margin") 0;
127
+ }
128
+ @include breakpoint.min(get("breakpoint")) {
129
+ #{ $prefix } {
130
+ display: flex;
131
+ align-items: flex-start;
132
+ gap: get("gap");
133
+ position: relative;
134
+ @if ($type-size and typography.has-size($type-size)) {
135
+ @include typography.size($type-size, $only-font-size: true);
136
+ } @else if ($type-size) {
137
+ @warn "Unable to find '#{$type-size}' typography size for title";
138
+ }
139
+ }
140
+ #{ $prefix }__title,
141
+ #{ $prefix } > :not(ul) {
142
+ display: block;
143
+ position: sticky;
144
+ top: $sticky-top;
145
+ flex-basis: get("title-width");
146
+ min-width: get("title-min-width");
147
+ padding-top: $mask-offset-top;
148
+ padding-bottom: $mask-offset-bottom;
149
+ text-align: get("title-text-align");
150
+ }
151
+ #{ $prefix }__list,
152
+ #{ $prefix } > ul {
153
+ list-style: none;
154
+ margin: 0;
155
+ display: flex;
156
+ flex-direction: column;
157
+ justify-content: space-between;
158
+ align-self: stretch;
159
+ }
160
+ #{ $prefix }__item,
161
+ #{ $prefix } > ul > li {
162
+ display: block;
163
+ position: sticky;
164
+ top: $sticky-top;
165
+ margin: 0 !important; // If in editor (to complicated for :not())
166
+ padding: $mask-offset-top get("item-padding-x") $mask-offset-bottom get("item-padding-x");
167
+ @include set-background(get("background-color"));
168
+ }
169
+ #{ $prefix }__item:first-child,
170
+ #{ $prefix } > ul > li:first-child {
171
+ margin-top: 0;
172
+ }
173
+ #{ $prefix }__item:last-child,
174
+ #{ $prefix } > ul > li:last-child {
175
+ margin-bottom: 0;
176
+ }
177
+ }
178
+
179
+ // Print out any contextual background styles
180
+ @each $props in get("background-contexts") {
181
+ $selector: map.get($props, "selector");
182
+ $item-padding-x: map.get($props, "item-padding-x");
183
+ @include breakpoint.min(get("breakpoint")) {
184
+ #{ $selector } {
185
+ #{ $prefix }__item,
186
+ #{ $prefix } > ul > li {
187
+ @if ($item-padding-x) {
188
+ padding-left: $item-padding-x;
189
+ padding-right: $item-padding-x;
190
+ }
191
+ @include set-background(map.get($props, "background-color"));
192
+ }
193
+ }
194
+ }
195
+ }
196
+ }
197
+
198
+ /// Outputs background color mask CSS (gradient from transparent to original color)
199
+ /// @param {Color} $color The color to create the CSS for
200
+
201
+ @mixin set-background($color) {
202
+ $color: color.get($color);
203
+ $color-transparent: sassColor.change($color, $alpha: 0);
204
+ background-color: $color;
205
+ background: linear-gradient(180deg, $color-transparent 0%, $color get("mask-offset-top"));
206
+ }