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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/CHANGELOG.md +669 -0
  2. package/GEMINI.md +9 -0
  3. package/README.dev.md +3 -3
  4. package/README.md +14 -4
  5. package/dist/ulu-frontend.min.css +1 -1
  6. package/dist/ulu-frontend.min.js +36 -29
  7. package/docs-dev/.nojekyll +1 -0
  8. package/docs-dev/assets/main.js +832 -421
  9. package/docs-dev/assets/placeholder/icon-calendar.svg +1 -0
  10. package/docs-dev/assets/placeholder/icon-check.svg +1 -0
  11. package/docs-dev/assets/style.css +629 -233
  12. package/docs-dev/changelog/index.html +7445 -0
  13. package/docs-dev/changelog/updates-and-changes/index.html +5109 -0
  14. package/docs-dev/demos/accordion/index.html +1442 -364
  15. package/docs-dev/demos/badge/index.html +5835 -0
  16. package/docs-dev/demos/badge-stack/index.html +5816 -0
  17. package/docs-dev/demos/basic-hero/index.html +111 -0
  18. package/docs-dev/demos/breadcrumb/index.html +5870 -0
  19. package/docs-dev/demos/breakpoints-manager/index.html +5846 -0
  20. package/docs-dev/demos/button/index.html +1490 -356
  21. package/docs-dev/demos/button-group/index.html +5832 -0
  22. package/docs-dev/demos/button-verbose/index.html +5838 -0
  23. package/docs-dev/demos/callout/index.html +1469 -349
  24. package/docs-dev/demos/captioned-figure/index.html +1446 -353
  25. package/docs-dev/demos/card/index.html +1518 -786
  26. package/docs-dev/demos/card-grid/index.html +5957 -0
  27. package/docs-dev/demos/card-new/index.html +5088 -0
  28. package/docs-dev/demos/card-old/index.html +5223 -0
  29. package/docs-dev/demos/card.1/index.html +5223 -0
  30. package/docs-dev/demos/card.TRASH/index.html +5541 -0
  31. package/docs-dev/demos/counter-list/index.html +5840 -0
  32. package/docs-dev/demos/css-icons/index.html +1466 -350
  33. package/docs-dev/demos/data-grid/index.html +1446 -353
  34. package/docs-dev/demos/data-table/index.html +1621 -395
  35. package/docs-dev/demos/details-group/index.html +5867 -0
  36. package/docs-dev/demos/donut-chart/index.html +5874 -0
  37. package/docs-dev/demos/file-save/index.html +1446 -353
  38. package/docs-dev/demos/flipcard/index.html +1446 -353
  39. package/docs-dev/demos/form-theme/index.html +1453 -360
  40. package/docs-dev/demos/headline-label/index.html +5802 -0
  41. package/docs-dev/demos/hero/index.html +12 -4
  42. package/docs-dev/demos/image-grid/index.html +12 -4
  43. package/docs-dev/demos/index.html +1447 -354
  44. package/docs-dev/demos/list-inline/index.html +1446 -353
  45. package/docs-dev/demos/list-lines/index.html +1446 -353
  46. package/docs-dev/demos/menu-stack/index.html +1550 -389
  47. package/docs-dev/demos/modals/index.html +1616 -400
  48. package/docs-dev/demos/nav-strip/index.html +1446 -353
  49. package/docs-dev/demos/overlay-section/index.html +1532 -369
  50. package/docs-dev/demos/panel/index.html +5862 -0
  51. package/docs-dev/demos/popovers/index.html +1710 -375
  52. package/docs-dev/demos/print/index.html +1446 -353
  53. package/docs-dev/demos/progress-bar/index.html +5964 -0
  54. package/docs-dev/demos/progress-circle/index.html +6137 -0
  55. package/docs-dev/demos/progress-donut/index.html +6107 -0
  56. package/docs-dev/demos/pull-quote/index.html +1446 -353
  57. package/docs-dev/demos/rail/index.html +5910 -0
  58. package/docs-dev/demos/rule/index.html +1455 -350
  59. package/docs-dev/demos/scroll-slider/index.html +72 -106
  60. package/docs-dev/demos/scrollpoints/index.html +1447 -354
  61. package/docs-dev/demos/skeleton/index.html +5858 -0
  62. package/docs-dev/demos/slider/index.html +12 -4
  63. package/docs-dev/demos/spoke-spinner/index.html +1446 -353
  64. package/docs-dev/demos/sticky-list/index.html +5823 -0
  65. package/docs-dev/demos/tabs/index.html +1474 -345
  66. package/docs-dev/demos/tag/index.html +1463 -358
  67. package/docs-dev/demos/theme-toggle/index.html +5879 -0
  68. package/docs-dev/demos/tile-grid-overlay/index.html +12 -4
  69. package/docs-dev/demos/tiles/index.html +1446 -353
  70. package/docs-dev/demos/tooltip/index.html +1446 -353
  71. package/docs-dev/demos/wysiwyg/index.html +5852 -0
  72. package/docs-dev/guide/building-stylesheet/index.html +1446 -353
  73. package/docs-dev/guide/developing-ulu-scss-module/index.html +1446 -353
  74. package/docs-dev/guide/index.html +1446 -353
  75. package/docs-dev/guide/updates-and-changes/index.html +5033 -0
  76. package/docs-dev/index.html +1446 -353
  77. package/docs-dev/javascript/events/index.html +1141 -940
  78. package/docs-dev/javascript/index.html +1446 -353
  79. package/docs-dev/javascript/settings/index.html +5629 -0
  80. package/docs-dev/javascript/ui-breakpoints/index.html +1270 -719
  81. package/docs-dev/javascript/ui-collapsible/index.html +1135 -824
  82. package/docs-dev/javascript/ui-details-group/index.html +5382 -0
  83. package/docs-dev/javascript/ui-dialog/index.html +1167 -841
  84. package/docs-dev/javascript/ui-flipcard/index.html +833 -2058
  85. package/docs-dev/javascript/ui-grid/index.html +835 -1962
  86. package/docs-dev/javascript/ui-modal-builder/index.html +988 -1919
  87. package/docs-dev/javascript/ui-overflow-scroller/index.html +811 -1912
  88. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +1643 -928
  89. package/docs-dev/javascript/ui-page/index.html +1643 -928
  90. package/docs-dev/javascript/ui-popover/index.html +1484 -773
  91. package/docs-dev/javascript/ui-print/index.html +1637 -930
  92. package/docs-dev/javascript/ui-print-details/index.html +1643 -928
  93. package/docs-dev/javascript/ui-programmatic-modal/index.html +1643 -928
  94. package/docs-dev/javascript/ui-proxy-click/index.html +1395 -595
  95. package/docs-dev/javascript/ui-resizer/index.html +1986 -1006
  96. package/docs-dev/javascript/ui-scroll-slider/index.html +1514 -767
  97. package/docs-dev/javascript/ui-scrollpoint/index.html +1649 -941
  98. package/docs-dev/javascript/ui-slider/index.html +1723 -817
  99. package/docs-dev/javascript/ui-tabs/index.html +1537 -859
  100. package/docs-dev/javascript/ui-theme-toggle/index.html +5634 -0
  101. package/docs-dev/javascript/ui-tooltip/index.html +1649 -938
  102. package/docs-dev/javascript/utils-class-logger/index.html +1644 -929
  103. package/docs-dev/javascript/utils-css/index.html +5448 -0
  104. package/docs-dev/javascript/utils-dom/index.html +1320 -685
  105. package/docs-dev/javascript/utils-file-save/index.html +1643 -928
  106. package/docs-dev/javascript/utils-floating-ui/index.html +1643 -928
  107. package/docs-dev/javascript/utils-id/index.html +1643 -928
  108. package/docs-dev/javascript/utils-pause-youtube-video/index.html +1643 -928
  109. package/docs-dev/javascript/utils-system/index.html +5751 -0
  110. package/docs-dev/sass/base/color/index.html +1451 -360
  111. package/docs-dev/sass/base/elements/index.html +1645 -930
  112. package/docs-dev/sass/base/index/index.html +1452 -361
  113. package/docs-dev/sass/base/index.html +1446 -353
  114. package/docs-dev/sass/base/keyframes/index.html +1452 -361
  115. package/docs-dev/sass/base/layout/index.html +1452 -361
  116. package/docs-dev/sass/base/normalize/index.html +1644 -929
  117. package/docs-dev/sass/base/print/index.html +1452 -361
  118. package/docs-dev/sass/base/root/index.html +1455 -364
  119. package/docs-dev/sass/base/typography/index.html +1451 -360
  120. package/docs-dev/sass/components/accordion/index.html +1538 -406
  121. package/docs-dev/sass/components/adaptive-spacing/index.html +1451 -360
  122. package/docs-dev/sass/components/badge/index.html +1468 -359
  123. package/docs-dev/sass/components/badge-stack/index.html +5991 -0
  124. package/docs-dev/sass/components/basic-hero/index.html +5985 -0
  125. package/docs-dev/sass/components/breadcrumb/index.html +6032 -0
  126. package/docs-dev/sass/components/button/index.html +1451 -360
  127. package/docs-dev/sass/components/button-group/index.html +5983 -0
  128. package/docs-dev/sass/components/button-verbose/index.html +1523 -357
  129. package/docs-dev/sass/components/callout/index.html +1572 -422
  130. package/docs-dev/sass/components/captioned-figure/index.html +1591 -385
  131. package/docs-dev/sass/components/card/index.html +1511 -363
  132. package/docs-dev/sass/components/card-grid/index.html +1451 -360
  133. package/docs-dev/sass/components/counter-list/index.html +6067 -0
  134. package/docs-dev/sass/components/css-icon/index.html +1452 -361
  135. package/docs-dev/sass/components/data-grid/index.html +1465 -367
  136. package/docs-dev/sass/components/data-table/index.html +1648 -369
  137. package/docs-dev/sass/components/fill-context/index.html +1451 -360
  138. package/docs-dev/sass/components/flipcard/index.html +1479 -357
  139. package/docs-dev/sass/components/flipcard-grid/index.html +1451 -360
  140. package/docs-dev/sass/components/form-theme/index.html +1652 -566
  141. package/docs-dev/sass/components/headline-label/index.html +6013 -0
  142. package/docs-dev/sass/components/hero/index.html +1497 -358
  143. package/docs-dev/sass/components/horizontal-rule/index.html +1451 -360
  144. package/docs-dev/sass/components/image-grid/index.html +1451 -360
  145. package/docs-dev/sass/components/index/index.html +1466 -362
  146. package/docs-dev/sass/components/index.html +1446 -353
  147. package/docs-dev/sass/components/links/index.html +1451 -360
  148. package/docs-dev/sass/components/list-inline/index.html +1451 -360
  149. package/docs-dev/sass/components/list-lines/index.html +1451 -360
  150. package/docs-dev/sass/components/list-ordered/index.html +1451 -360
  151. package/docs-dev/sass/components/list-unordered/index.html +1451 -360
  152. package/docs-dev/sass/components/menu-stack/index.html +1476 -371
  153. package/docs-dev/sass/components/modal/index.html +1486 -360
  154. package/docs-dev/sass/components/nav-strip/index.html +1459 -368
  155. package/docs-dev/sass/components/overlay-section/index.html +1459 -368
  156. package/docs-dev/sass/components/pager/index.html +1451 -360
  157. package/docs-dev/sass/components/panel/index.html +6213 -0
  158. package/docs-dev/sass/components/placeholder-block/index.html +1451 -360
  159. package/docs-dev/sass/components/popover/index.html +1497 -370
  160. package/docs-dev/sass/components/progress-bar/index.html +6192 -0
  161. package/docs-dev/sass/components/progress-circle/index.html +6084 -0
  162. package/docs-dev/sass/components/pull-quote/index.html +1463 -372
  163. package/docs-dev/sass/components/rail/index.html +6003 -0
  164. package/docs-dev/sass/components/ratio-box/index.html +1459 -368
  165. package/docs-dev/sass/components/rule/index.html +1452 -361
  166. package/docs-dev/sass/components/scroll-slider/index.html +1447 -368
  167. package/docs-dev/sass/components/skeleton/index.html +6041 -0
  168. package/docs-dev/sass/components/skip-link/index.html +1451 -360
  169. package/docs-dev/sass/components/slider/index.html +1491 -412
  170. package/docs-dev/sass/components/spoke-spinner/index.html +1453 -362
  171. package/docs-dev/sass/components/sticky-list/index.html +6203 -0
  172. package/docs-dev/sass/components/table-sticky/index.html +5707 -0
  173. package/docs-dev/sass/components/tabs/index.html +1472 -366
  174. package/docs-dev/sass/components/tag/index.html +1563 -378
  175. package/docs-dev/sass/components/tile-button/index.html +1451 -360
  176. package/docs-dev/sass/components/tile-grid/index.html +1451 -360
  177. package/docs-dev/sass/components/tile-grid-overlay/index.html +1451 -360
  178. package/docs-dev/sass/components/vignette/index.html +1457 -360
  179. package/docs-dev/sass/components/wysiwyg/index.html +1477 -368
  180. package/docs-dev/sass/core/breakpoint/index.html +1530 -387
  181. package/docs-dev/sass/core/button/index.html +1483 -390
  182. package/docs-dev/sass/core/color/index.html +1666 -443
  183. package/docs-dev/sass/core/cssvar/index.html +1451 -360
  184. package/docs-dev/sass/core/element/index.html +1790 -417
  185. package/docs-dev/sass/core/index.html +1451 -360
  186. package/docs-dev/sass/core/layout/index.html +1491 -381
  187. package/docs-dev/sass/core/path/index.html +1451 -360
  188. package/docs-dev/sass/core/selector/index.html +1451 -360
  189. package/docs-dev/sass/core/typography/index.html +1591 -442
  190. package/docs-dev/sass/core/units/index.html +1453 -356
  191. package/docs-dev/sass/core/utils/index.html +2744 -504
  192. package/docs-dev/sass/helpers/color/index.html +1643 -928
  193. package/docs-dev/sass/helpers/display/index.html +1644 -929
  194. package/docs-dev/sass/helpers/index/index.html +1643 -928
  195. package/docs-dev/sass/helpers/index.html +1446 -353
  196. package/docs-dev/sass/helpers/print/index.html +759 -298
  197. package/docs-dev/sass/helpers/typography/index.html +1643 -928
  198. package/docs-dev/sass/helpers/units/index.html +1643 -928
  199. package/docs-dev/sass/helpers/utilities/index.html +1643 -924
  200. package/docs-dev/sass/index.html +1446 -353
  201. package/js/events/index.js +17 -5
  202. package/js/index.js +1 -0
  203. package/js/settings.js +97 -0
  204. package/js/ui/breakpoints.js +19 -16
  205. package/js/ui/collapsible.js +8 -1
  206. package/js/ui/details-group.js +112 -0
  207. package/js/ui/dialog.js +103 -44
  208. package/js/ui/dialog.todo +2 -36
  209. package/js/ui/flipcard.js +37 -57
  210. package/js/ui/grid.js +15 -13
  211. package/js/ui/index.js +1 -0
  212. package/js/ui/modal-builder.js +127 -70
  213. package/js/ui/overflow-scroller.js +6 -4
  214. package/js/ui/page.js +2 -2
  215. package/js/ui/popover.js +38 -38
  216. package/js/ui/print.js +16 -25
  217. package/js/ui/programmatic-modal.js +9 -3
  218. package/js/ui/proxy-click.js +50 -36
  219. package/js/ui/resizer.js +408 -39
  220. package/js/ui/scroll-slider.js +24 -30
  221. package/js/ui/scrollpoint.js +29 -64
  222. package/js/ui/slider.js +108 -63
  223. package/js/ui/tabs.js +23 -36
  224. package/js/ui/theme-toggle.js +332 -94
  225. package/js/ui/tooltip.js +27 -32
  226. package/js/utils/class-logger.js +3 -3
  227. package/js/utils/css.js +13 -0
  228. package/js/utils/dom.js +23 -64
  229. package/js/utils/font-awesome.js +19 -0
  230. package/js/utils/index.js +2 -1
  231. package/js/utils/system.js +155 -0
  232. package/package.json +23 -8
  233. package/scss/README.md +9 -0
  234. package/scss/_breakpoint.scss +39 -5
  235. package/scss/_button.scss +7 -5
  236. package/scss/_color.scss +71 -40
  237. package/scss/_element.scss +124 -2
  238. package/scss/_layout.scss +7 -8
  239. package/scss/_typography.scss +15 -0
  240. package/scss/_units.scss +3 -2
  241. package/scss/_utils.scss +387 -16
  242. package/scss/base/_elements.scss +0 -1
  243. package/scss/base/_index.scss +1 -1
  244. package/scss/base/_keyframes.scss +15 -0
  245. package/scss/base/_layout.scss +1 -0
  246. package/scss/base/_print.scss +2 -0
  247. package/scss/base/_root.scss +2 -0
  248. package/scss/components/README.todos +1 -0
  249. package/scss/components/_accordion.scss +154 -109
  250. package/scss/components/_badge-stack.scss +84 -0
  251. package/scss/components/_badge.scss +30 -7
  252. package/scss/components/_basic-hero.scss +112 -0
  253. package/scss/components/_breadcrumb.scss +110 -0
  254. package/scss/components/_button-group.scss +90 -0
  255. package/scss/components/_button-verbose.scss +100 -18
  256. package/scss/components/_callout.scss +112 -53
  257. package/scss/components/_captioned-figure.scss +17 -0
  258. package/scss/components/_card.scss +224 -66
  259. package/scss/components/_counter-list.scss +151 -0
  260. package/scss/components/_css-icon.scss +27 -17
  261. package/scss/components/_data-grid.scss +55 -12
  262. package/scss/components/_data-table.scss +31 -0
  263. package/scss/components/_flipcard.scss +8 -3
  264. package/scss/components/_form-theme.scss +106 -95
  265. package/scss/components/_headline-label.scss +83 -0
  266. package/scss/components/_hero.scss +12 -10
  267. package/scss/components/_index.scss +73 -0
  268. package/scss/components/_menu-stack.scss +69 -32
  269. package/scss/components/_modal.scss +51 -23
  270. package/scss/components/_nav-strip.scss +2 -0
  271. package/scss/components/_overlay-section.scss +2 -5
  272. package/scss/components/_panel.scss +246 -0
  273. package/scss/components/_popover.scss +165 -64
  274. package/scss/components/_progress-bar.scss +254 -0
  275. package/scss/components/_progress-circle.scss +175 -0
  276. package/scss/components/_pull-quote.scss +13 -13
  277. package/scss/components/_rail.scss +127 -0
  278. package/scss/components/_ratio-box.scss +2 -5
  279. package/scss/components/_rule.scss +1 -0
  280. package/scss/components/_scroll-slider.scss +1 -5
  281. package/scss/components/_skeleton.scss +126 -0
  282. package/scss/components/_slider.scss +49 -72
  283. package/scss/components/_spoke-spinner.scss +2 -2
  284. package/scss/components/_sticky-list.scss +206 -0
  285. package/scss/components/_tabs.scss +22 -4
  286. package/scss/components/_tag.scss +49 -7
  287. package/scss/components/_vignette.scss +3 -5
  288. package/scss/components/_wysiwyg.scss +21 -13
  289. package/scss/helpers/_display.scss +15 -18
  290. package/scss/helpers/_print.scss +12 -7
  291. package/scss/helpers/_utilities.scss +56 -34
  292. package/types/events/index.d.ts +10 -1
  293. package/types/events/index.d.ts.map +1 -1
  294. package/types/index.d.ts +1 -0
  295. package/types/settings.d.ts +70 -0
  296. package/types/settings.d.ts.map +1 -0
  297. package/types/ui/breakpoints.d.ts +14 -14
  298. package/types/ui/breakpoints.d.ts.map +1 -1
  299. package/types/ui/collapsible.d.ts.map +1 -1
  300. package/types/ui/details-group.d.ts +38 -0
  301. package/types/ui/details-group.d.ts.map +1 -0
  302. package/types/ui/dialog.d.ts +20 -14
  303. package/types/ui/dialog.d.ts.map +1 -1
  304. package/types/ui/flipcard.d.ts +16 -10
  305. package/types/ui/flipcard.d.ts.map +1 -1
  306. package/types/ui/grid.d.ts +4 -6
  307. package/types/ui/grid.d.ts.map +1 -1
  308. package/types/ui/index.d.ts +1 -0
  309. package/types/ui/modal-builder.d.ts +116 -11
  310. package/types/ui/modal-builder.d.ts.map +1 -1
  311. package/types/ui/overflow-scroller.d.ts +2 -2
  312. package/types/ui/overflow-scroller.d.ts.map +1 -1
  313. package/types/ui/popover.d.ts +6 -7
  314. package/types/ui/popover.d.ts.map +1 -1
  315. package/types/ui/print.d.ts +0 -4
  316. package/types/ui/print.d.ts.map +1 -1
  317. package/types/ui/programmatic-modal.d.ts.map +1 -1
  318. package/types/ui/proxy-click.d.ts +19 -3
  319. package/types/ui/proxy-click.d.ts.map +1 -1
  320. package/types/ui/resizer.d.ts +116 -16
  321. package/types/ui/resizer.d.ts.map +1 -1
  322. package/types/ui/scroll-slider.d.ts +5 -7
  323. package/types/ui/scroll-slider.d.ts.map +1 -1
  324. package/types/ui/scrollpoint.d.ts +3 -8
  325. package/types/ui/scrollpoint.d.ts.map +1 -1
  326. package/types/ui/slider.d.ts +33 -14
  327. package/types/ui/slider.d.ts.map +1 -1
  328. package/types/ui/tabs.d.ts +6 -8
  329. package/types/ui/tabs.d.ts.map +1 -1
  330. package/types/ui/theme-toggle.d.ts +51 -7
  331. package/types/ui/theme-toggle.d.ts.map +1 -1
  332. package/types/ui/tooltip.d.ts +3 -5
  333. package/types/ui/tooltip.d.ts.map +1 -1
  334. package/types/utils/css.d.ts +11 -0
  335. package/types/utils/css.d.ts.map +1 -0
  336. package/types/utils/dom.d.ts +12 -32
  337. package/types/utils/dom.d.ts.map +1 -1
  338. package/types/utils/font-awesome.d.ts +5 -0
  339. package/types/utils/font-awesome.d.ts.map +1 -0
  340. package/types/utils/index.d.ts +1 -0
  341. package/types/utils/system.d.ts +113 -0
  342. package/types/utils/system.d.ts.map +1 -0
@@ -4,70 +4,92 @@
4
4
  ////
5
5
 
6
6
  @use "sass:map";
7
+ @use "sass:meta";
7
8
  @use "sass:math";
8
9
 
9
10
  @use "../selector";
10
11
  @use "../utils";
11
12
  @use "../color";
12
13
  @use "../typography";
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
+ );
13
24
 
14
25
  /// Module Settings
15
26
  /// @type Map
16
- /// @prop {Color} background-color [accordion-background] This is the background color of the accordion before it is expanded.
17
- /// @prop {Color} background-color-open [accordion-background-open] This is the background color of the accordion before it is expanded. This will change the background color of the accordion's summary as well as the details.
18
- /// @prop {String} border-color ["rule"]
19
- /// @prop {Number} border-radius [0] This applies a rounding of edges for the accordion. If there are multiple accordions in a stack, this will only apply to the top of the first accordion and the bottom of the last accordion.
20
- /// @prop {Dimension} border-width [1px] The width of the borders of the accordions
21
- /// @prop {CssValue} box-shadow [none] Adds a box shadow to accordion container
22
- /// @prop {Dimension} margin [3rem] text This is the margin above and below the accordion. Multiple Accordions will stack. See margin-between below.
27
+ /// @prop {Color} background-color [background] This is the background color of the accordion before it is expanded.
28
+ /// @prop {Color} background-color-open [white] This is the background color of the accordion when it is expanded. This will change the background color of the accordion's summary as well as the details.
29
+ /// @prop {String} border-color ["rule-light"] The color of the accordion border.
30
+ /// @prop {Boolean|Number} border-radius [true] This applies a rounding of edges for the accordion. If there are multiple accordions in a stack, this will only apply to the top of the first accordion and the bottom of the last accordion.
31
+ /// @prop {Dimension} border-width [1px] The width of the borders of the accordions.
32
+ /// @prop {CssValue} box-shadow [none] Adds a box shadow to accordion container.
33
+ /// @prop {Dimension} margin [(1.5em 0)] This is the margin above and below the accordion. Multiple Accordions will stack. See margin-between below.
23
34
  /// @prop {Dimension} margin-between [0] This adds a margin between adjacent accordions. By default, accordions do not have any net margin between each other.
24
- /// @prop {Dimension} padding-x [1.5em] Singular value for the left and right padding
25
- /// @prop {Dimension} padding-y [1.5em] Singular value for the top and bottom padding
35
+ /// @prop {Dimension} padding-x [1.5em] Singular value for the left and right padding.
36
+ /// @prop {Dimension} padding-y [1.5em] Singular value for the top and bottom padding.
26
37
  /// @prop {Color} icon-background-color [transparent] The background color of the icon.
27
38
  /// @prop {Color} icon-background-color-hover [transparent] The background color of the icon when hovered or focused.
28
39
  /// @prop {Number} icon-border-radius [50%] The border-radius of the icon.
29
40
  /// @prop {String} icon-color [link] Color of the icon. This uses color.scss, so the value of this option should be a color variable from color.scss.
30
41
  /// @prop {String} icon-color-hover [link-hover] Color of the icon when hovered or focused on. This uses color.scss, so the value of this options should be a color variable from color.scss.
31
- /// @prop {Dimension} icon-font-size [1.5rem] The font-size of the icon.
42
+ /// @prop {Dimension} icon-font-size [1em] The font-size of the icon.
43
+ /// @prop {Dimension} icon-margin [1em] The margin to the left of the icon.
32
44
  /// @prop {Dimension} icon-size [auto] The size of the icon. Used as the base in the flex property.
33
- /// @prop {Dimension} icon-stroke-width [0.15em]
34
- /// @prop {Color} summary-background-color [null] The background color for the summary (toggle button) of the accordion
45
+ /// @prop {Dimension} icon-stroke-width [0.15em] The stroke width of the icon.
46
+ /// @prop {Color} summary-background-color [#f6f6f6] The background color for the summary (toggle button) of the accordion.
47
+ /// @prop {Color} summary-background-color-hover [null] The background color for the summary (toggle button) of the accordion when hovered.
35
48
  /// @prop {Color} summary-color [null] The color of the text in the accordion summary.
36
49
  /// @prop {Color} summary-color-hover [null] The color of the text in the accordion summary when hovering or focusing on it.
37
50
  /// @prop {Dimension} summary-line-height [null] Adjusts the line height of the summary element.
38
- /// @prop {Dimension} summary-padding-y [1rem] The vertical padding of the summary.
39
- /// @prop {Dimension} summary-type-size [false] The size of the text in the accordion summary.
40
- /// @prop {Dimension} transparent-padding-y [1em] The upper and lower padding of the transparent summary.
41
- /// @prop {Dimension} transparent-padding-x [0] The upper and lower padding of the transparent summary.
51
+ /// @prop {Dimension} summary-padding-y [1em] The vertical padding of the summary.
52
+ /// @prop {String|Boolean} summary-type-size ["large"] The typography size of the text in the accordion summary. Can be a boolean to disable.
53
+ /// @prop {Boolean} summary-border-enabled [true] Whether the summary has a border when the accordion is open.
54
+ /// @prop {Color} summary-border-color [rule-light] The color of the summary border.
55
+ /// @prop {Dimension} summary-border-width [1px] The width of the summary border.
56
+ /// @prop {Dimension} transparent-content-padding [(0.25em 0)] The padding of the content area for transparent accordions.
57
+ /// @prop {Dimension} borderless-margin-between [0.5em] Margin between accordions when using no-border modifier.
58
+ /// @prop {String} active-selector ['.is-active'] The selector used for the active state of a non-<details> accordion.
42
59
 
43
60
  $config: (
44
- "background-color": "background",
45
- "background-color-open": "background-gray",
46
- "border-color": "rule",
47
- "border-radius": 0,
48
- "border-width": 1px,
49
- "box-shadow": none,
50
- "margin": 3rem,
51
- "margin-between": 0,
52
- "padding-x": 1.5em,
53
- "padding-y": 1.5em,
54
- "icon-background-color": transparent,
55
- "icon-background-color-hover": transparent,
56
- "icon-border-radius": 50%,
57
- "icon-color": "link",
58
- "icon-color-hover": "link-hover",
59
- "icon-font-size": 1.5rem,
60
- "icon-size": auto,
61
- "icon-stroke-width": 0.15em,
62
- "summary-background-color": "white",
63
- "summary-color": null,
61
+ "background-color": "background",
62
+ "background-color-open": white,
63
+ "border-color": "rule-light",
64
+ "border-radius": true,
65
+ "border-width": 1px,
66
+ "box-shadow": none,
67
+ "margin": (1.5em 0),
68
+ "margin-between": 0,
69
+ "padding-x": 1.25em,
70
+ "padding-y": 1.25em,
71
+ "icon-background-color": transparent,
72
+ "icon-background-color-hover": transparent,
73
+ "icon-border-radius": 50%,
74
+ "icon-color": "link",
75
+ "icon-color-hover": "link-hover",
76
+ "icon-font-size": 1em,
77
+ "icon-margin": 1em,
78
+ "icon-size": auto,
79
+ "icon-stroke-width": 0.15em,
80
+ "summary-background-color": #f6f6f6,
81
+ "summary-color": null,
64
82
  "summary-background-color-hover": null,
65
- "summary-color-hover": null,
66
- "summary-line-height": null,
67
- "summary-padding-y": 1rem,
68
- "summary-type-size": false,
69
- "transparent-padding-x": 0,
70
- "transparent-padding-y": 1em,
83
+ "summary-color-hover": null,
84
+ "summary-line-height": null,
85
+ "summary-padding-y": 1em,
86
+ "summary-type-size": false,
87
+ "summary-border-enabled": true,
88
+ "summary-border-color": "rule-light",
89
+ "summary-border-width": 1px,
90
+ "transparent-content-padding": (0.25em 0),
91
+ "borderless-margin-between": 0.5em,
92
+ "active-selector": ".is-active"
71
93
  ) !default;
72
94
 
73
95
  /// Change modules $config
@@ -85,7 +107,8 @@ $config: (
85
107
  /// @include ulu.component-accordion-get("property");
86
108
 
87
109
  @function get($name) {
88
- @return utils.require-map-get($config, $name, "accordion [config]");
110
+ $value: utils.require-map-get($config, $name, "accordion [config]");
111
+ @return utils.function-fallback($name, $value, $-fallbacks);
89
112
  }
90
113
 
91
114
  /// Prints component styles
@@ -95,72 +118,76 @@ $config: (
95
118
 
96
119
  @mixin styles {
97
120
  $prefix: selector.class("accordion");
98
-
121
+ $active-selector: get("active-selector");
122
+ $padding-x: get("padding-x");
99
123
  $border: get("border-width") solid color.get(get("border-color"));
100
124
 
101
125
  // When not one of our custom classed details components
102
126
  #{ $prefix } {
103
- position: relative; // For active border
104
- border-radius: 0;
105
- padding-left: get("padding-x");
106
- padding-right: get("padding-x");
107
- margin-top: get("margin");
108
- margin-bottom: get("margin");
127
+ padding: 0;
128
+ margin: get("margin");
109
129
  border: $border;
110
130
  background-color: color.get(get("background-color"));
111
131
  box-shadow: get("box-shadow");
112
- &:first-of-type {
113
- border-top-left-radius: get("border-radius");
114
- border-top-right-radius: get("border-radius");
115
- }
116
- &:last-of-type {
117
- border-bottom-left-radius: get("border-radius");
118
- border-bottom-right-radius: get("border-radius");
132
+ border-radius: get("border-radius");
133
+
134
+ // Sibling before sets the gap
135
+ & + #{ $prefix } {
136
+ margin-top: 0;
119
137
  }
120
- & + & {
121
- $gap: -(get("margin") - get("margin-between"));
122
- margin-top: $gap;
123
- margin-top: calc($gap - 1px);
138
+
139
+ // If no space get rid of border radiuses
140
+ @if (get("margin-between") == 0) {
141
+ &:has(+ #{ $prefix }) {
142
+ border-bottom-left-radius: 0;
143
+ border-bottom-right-radius: 0;
144
+ margin-bottom: 0;
145
+ }
146
+ & + #{ $prefix } {
147
+ border-top-left-radius: 0;
148
+ border-top-right-radius: 0;
149
+ margin-top: -(get("border-width")); // Pull border over top
150
+ }
151
+ } @else {
152
+ &:has(+ #{ $prefix }) {
153
+ margin-bottom: get("margin-between");
154
+ }
124
155
  }
156
+
125
157
  &[open],
126
- &.is-active {
158
+ &#{ $active-selector } {
127
159
  background-color: color.get(get("background-color-open"));
128
- padding-bottom: get("padding-y");
129
- z-index: 2; // Above child details
160
+ z-index: 2; // Above other details/accordions
130
161
  > #{ $prefix }__summary {
131
- margin-bottom: get("padding-y");
132
162
  border-bottom-left-radius: 0;
133
163
  border-bottom-right-radius: 0;
134
- border-bottom: $border;
164
+ @if (get("summary-border-enabled")) {
165
+ border-bottom: get("summary-border-width") solid color.get(get("summary-border-color"));
166
+ }
135
167
  }
136
168
  }
137
169
  }
138
170
  #{ $prefix }__summary {
171
+ display: flex;
172
+ list-style: none; // Remove the default arrow (old safari?)
139
173
  background-color: color.get(get("summary-background-color"));
140
174
  color: color.get(get("summary-color"));
141
- margin-left: -(get("padding-x"));
142
- margin-right: -(get("padding-x"));
143
175
  line-height: get("summary-line-height");
144
- padding: get("summary-padding-y") get("padding-x");
145
- vertical-align: top;
176
+ padding: get("summary-padding-y") $padding-x;
177
+ border-radius: get("border-radius");
146
178
  font-weight: bold;
147
179
  cursor: pointer;
148
- &:has(#{ $prefix }__icon) {
149
- display: flex; // For icon
150
- align-items: center;
151
- justify-content: space-between;
152
- list-style: none; // Remove the default arrow (old safari?)
153
- &::-webkit-details-marker,
154
- &::marker {
155
- display: none;
156
- content: "";
157
- }
158
- }
159
-
160
- @if (get("summary-type-size")) {
161
- @include typography.size(get("summary-type-size"));
180
+ align-items: center;
181
+
182
+ @include typography.optional-size(get("summary-type-size"), $only-font-size: true);
183
+
184
+ &::-webkit-details-marker,
185
+ &::marker {
186
+ display: none;
187
+ content: "";
162
188
  }
163
- &:hover {
189
+ &:hover,
190
+ &:focus {
164
191
  background-color: color.get(get("summary-background-color-hover"));
165
192
  color: color.get(get("summary-color-hover"));
166
193
  #{ $prefix }__icon {
@@ -170,48 +197,66 @@ $config: (
170
197
  }
171
198
  }
172
199
  #{ $prefix }__icon {
200
+ display: flex;
201
+ align-items: center;
202
+ justify-content: center;
173
203
  flex: 0 0 get("icon-size");
174
204
  color: color.get(get("icon-color"));
175
- margin-left: 0.5em;
176
- order: 3;
205
+ margin-left: auto;
206
+ padding-left: get("icon-margin");
177
207
  background-color: color.get(get("icon-background-color"));
178
208
  border-radius: get("icon-border-radius");
179
209
  width: get("icon-size");
180
210
  height: get("icon-size");
181
211
  font-size: get("icon-font-size");
182
212
  line-height: 1;
183
- display: flex;
184
- align-items: center;
185
- justify-content: center;
186
- text-align: center;
213
+ }
214
+ #{ $prefix }__content {
215
+ padding: get("padding-y") $padding-x;
216
+ border-bottom-left-radius: get("border-radius");
217
+ border-bottom-right-radius: get("border-radius");
187
218
  }
188
219
  #{ $prefix }--transparent {
189
220
  border-left: none;
190
221
  border-right: none;
191
222
  background-color: transparent;
192
- padding-left: get("transparent-padding-x");
193
- padding-right: get("transparent-padding-x");
194
- > #{ $prefix }__summary {
195
- margin-left: -(get("transparent-padding-x"));
196
- margin-right: -(get("transparent-padding-x"));
197
- padding: get("transparent-padding-y") get("transparent-padding-x");
198
- background-color: transparent;
199
- border: none;
200
- }
201
- &[open],
202
- &.is-active {
203
- background-color: transparent;
204
- > #{ $prefix }__summary{
205
- border-bottom: none;
223
+ border-radius: 0;
224
+
225
+ // Transparent always collapses space
226
+ @if (get("margin-between") != 0) {
227
+ &:has(+ #{ $prefix }) {
206
228
  margin-bottom: 0;
207
229
  }
230
+ & + #{ $prefix } {
231
+ margin-top: -(get("border-width")); // Pull border over top
232
+ }
233
+ }
234
+ > #{ $prefix }__summary,
235
+ > #{ $prefix }__content {
236
+ padding-left: 0;
237
+ padding-right: 0;
238
+ background-color: transparent;
239
+ border: none !important;
240
+ border-radius: 0 !important;
241
+ }
242
+ > #{ $prefix }__content {
243
+ padding: get("transparent-content-padding");
208
244
  }
209
245
  }
210
- #{ $prefix }--no-borders {
246
+ #{ $prefix }--borderless {
211
247
  border: none;
212
- margin-bottom: 4rem;
213
- &[open] > .accordion__summary {
214
- border-bottom: none;
248
+ &:has(+ #{ $prefix }) {
249
+ margin-bottom: 0;
250
+ }
251
+ & + #{ $prefix }--borderless {
252
+ margin-top: calc(get("borderless-margin-between") - get("border-width"));
253
+ }
254
+ &[open],
255
+ &#{ $active-selector } {
256
+ & > #{ $prefix }__summary {
257
+ border-radius: get("border-radius");
258
+ border-bottom: none;
259
+ }
215
260
  }
216
261
  }
217
262
  }
@@ -0,0 +1,84 @@
1
+ ////
2
+ /// @group badge-stack
3
+ /// Stacks badges
4
+ ////
5
+
6
+ @use "sass:map";
7
+ @use "../utils";
8
+ @use "../selector";
9
+ @use "../color";
10
+ @use "badge";
11
+
12
+ /// Module Settings
13
+ /// @type Map
14
+ /// @prop {Dimension} width [10rem] Width of the badge stack
15
+ /// @prop {Dimension} overlap [-5px] Right margin for stacked items
16
+ /// @prop {Dimension} border-width [3px] Border width for stacked items
17
+
18
+ $config: (
19
+ "width": 10rem,
20
+ "overlap": -5px,
21
+ "border-width": 3px,
22
+ "border-color" : "accent"
23
+ ) !default;
24
+
25
+ /// Change modules $config
26
+ /// @param {Map} $changes Map of changes
27
+ /// @example scss
28
+ /// @include ulu.component-badge-stack-set(( "property" : value ));
29
+
30
+ @mixin set($changes) {
31
+ $config: map.merge($config, $changes) !global;
32
+ }
33
+
34
+ /// Get a config option
35
+ /// @param {Map} $name Name of property
36
+ /// @example scss
37
+ /// @include ulu.component-badge-stack-get("property");
38
+
39
+ @function get($name) {
40
+ @return utils.require-map-get($config, $name, "badge-stack [config]");
41
+ }
42
+
43
+ /// Prints component styles
44
+ /// @demo badge-stack
45
+ /// @example scss
46
+ /// @include ulu.component-badge-stack-styles();
47
+
48
+ @mixin styles {
49
+ $prefix: selector.class("badge-stack");
50
+ $prefix-badge: selector.class("badge");
51
+
52
+ #{ $prefix } {
53
+ width: get("width");
54
+ display: flex;
55
+ }
56
+ #{ $prefix }__item {
57
+ flex: 0 1 min-content;
58
+ margin-right: get("overlap");
59
+
60
+ #{ $prefix-badge }__inner {
61
+ // box-shadow: ulu.element-get("box-shadow");
62
+ position: relative;
63
+ &:before {
64
+ content: '';
65
+ display: block;
66
+ position: absolute;
67
+ top: -1px;
68
+ bottom: -1px;
69
+ left: -1px;
70
+ right: -1px;
71
+ border-radius: badge.get("border-radius");
72
+ border: get("border-width") solid color.get(get("border-color"));
73
+ }
74
+ }
75
+ #{ $prefix-badge } {
76
+ &:focus,
77
+ &:hover {
78
+ #{ $prefix-badge }__inner {
79
+ z-index: 2;
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
@@ -3,11 +3,21 @@
3
3
  /// Outputs badge component stylesheet
4
4
  ////
5
5
 
6
+ @use "sass:meta";
6
7
  @use "sass:map";
7
8
  @use "../utils";
8
9
  @use "../selector";
10
+ @use "../typography";
9
11
  @use "../color";
10
12
 
13
+ // Used for function fallback
14
+ $-fallbacks: (
15
+ "font-family" : (
16
+ "function" : meta.get-function("get", false, "typography"),
17
+ "property" : "font-family-sans"
18
+ )
19
+ );
20
+
11
21
  /// Module Settings
12
22
  /// @type Map
13
23
  /// @prop {Number} background-color [gray] Background color (if no image)
@@ -15,20 +25,28 @@
15
25
  /// @prop {Number} color [black] Type color
16
26
  /// @prop {Number} font-size [1.3rem] Font size (basic ie. 1.3rem) for badge
17
27
  /// @prop {Number} font-weight [bold] Font weight
18
- /// @prop {List} sizes [Object] List of other sizes (large by default), each size is a map of (width, font-size)
28
+ /// @prop {Number} font-family [true] Specify font family, defaults to typography font-family-sans
19
29
  /// @prop {Number} width [10rem] Width of badge (default size)
30
+ /// @prop {Number} hover-scale [1.2] Scale of badge (if clickable) on hover (enlarges badge)
31
+ /// @prop {List} sizes [Object] List of other sizes (large by default), each size is a map of (width, font-size)
20
32
 
21
33
  $config: (
22
34
  "background-color": gray,
23
35
  "border-radius": 50%,
24
36
  "color": black,
25
- "font-size": 1.3rem,
37
+ "font-size": 1.5rem,
26
38
  "font-weight": bold,
27
- "width": 10rem,
39
+ "font-family": true,
40
+ "width": 7rem,
41
+ "hover-scale": 1.2,
28
42
  "sizes" : (
43
+ "small" : (
44
+ "font-size" : 1.2rem,
45
+ "width" : 5rem
46
+ ),
29
47
  "large" : (
30
48
  "font-size" : 2.75rem,
31
- "width" : 6rem
49
+ "width" : 9rem
32
50
  )
33
51
  )
34
52
  ) !default;
@@ -48,7 +66,8 @@ $config: (
48
66
  /// @include ulu.component-badge-get("property");
49
67
 
50
68
  @function get($name) {
51
- @return utils.require-map-get($config, $name, "badge [config]");
69
+ $value: utils.require-map-get($config, $name, "badge [config]");
70
+ @return utils.function-fallback($name, $value, $-fallbacks);
52
71
  }
53
72
 
54
73
  /// Output badge component styles
@@ -77,6 +96,7 @@ $config: (
77
96
  flex: 0 0 get("width");
78
97
  font-size: get("font-size");
79
98
  font-weight: get("font-weight");
99
+ font-family: get("font-family");
80
100
  }
81
101
  #{ $prefix }__inner {
82
102
  display: block;
@@ -99,11 +119,13 @@ $config: (
99
119
  color: color.get(get("color"));
100
120
  }
101
121
  }
102
- #{ $prefix }--clickable {
122
+ #{ $prefix }--clickable,
123
+ button#{ $prefix },
124
+ a#{ $prefix } {
103
125
  &:hover,
104
126
  &:focus {
105
127
  #{ $prefix }__inner {
106
- transform: scale(1.2);
128
+ transform: scale(get("hover-scale"));
107
129
  }
108
130
  }
109
131
  }
@@ -118,6 +140,7 @@ $config: (
118
140
  width: 100%;
119
141
  height: 100%;
120
142
  object-fit: cover;
143
+ margin: 0 !important;
121
144
  }
122
145
 
123
146
  @each $name, $props in get("sizes") {
@@ -0,0 +1,112 @@
1
+ ////
2
+ /// @group basic-hero
3
+ /// Basic styling for a hero
4
+ ////
5
+
6
+ @use "sass:map";
7
+ @use "sass:math";
8
+ @use "sass:meta";
9
+ @use "sass:list";
10
+
11
+ @use "../breakpoint";
12
+ @use "../selector";
13
+ @use "../utils";
14
+ @use "../typography";
15
+ @use "../color";
16
+
17
+ // Used for function fallback
18
+ $-fallbacks: (
19
+ "main-max-width" : (
20
+ "function" : meta.get-function("get", false, "typography"),
21
+ "property" : "max-width"
22
+ ),
23
+ "main-min-width" : (
24
+ "function" : meta.get-function("get", false, "typography"),
25
+ "property" : "max-width-small"
26
+ ),
27
+ );
28
+
29
+ /// Module Settings
30
+ /// @type Map
31
+ /// @prop {CssValue} text-align [center] Alignment of text within hero.
32
+ /// @prop {Color} background-color ["color-hero-background"] Background color of the hero
33
+
34
+ $config: (
35
+ "background-color" : "background-gray",
36
+ "padding-top": 3rem,
37
+ "padding-bottom" : 2rem,
38
+ "gap" : (4rem 2rem),
39
+ "main-max-width" : true,
40
+ "main-min-width" : true,
41
+ "media-max-width" : 20rem,
42
+ "media-vertical-align" : center
43
+ ) !default;
44
+
45
+ /// Change modules $config
46
+ /// @param {Map} $changes Map of changes
47
+ /// @example scss
48
+ /// @include ulu.component-basic-hero-set(( "property" : value ));
49
+
50
+ @mixin set($changes) {
51
+ $config: map.merge($config, $changes) !global;
52
+ }
53
+
54
+ /// Get a config option
55
+ /// @param {Map} $name Name of property
56
+ /// @example scss
57
+ /// @include ulu.component-basic-hero-get("property");
58
+
59
+ @function get($name) {
60
+ $value: utils.require-map-get($config, $name, "basic-hero [config]");
61
+ @return utils.function-fallback($name, $value, $-fallbacks);
62
+ }
63
+
64
+ /// Prints component styles
65
+ /// @example scss
66
+ /// @include ulu.component-basic-hero-styles();
67
+
68
+ @mixin styles {
69
+ $prefix: selector.class("basic-hero");
70
+
71
+ #{ $prefix } {
72
+ background-color: color.get(get("background-color"));
73
+ }
74
+ #{ $prefix }__content {
75
+ display: flex;
76
+ align-items: stretch;
77
+ flex-wrap: wrap;
78
+ justify-content: space-between;
79
+ gap: get("gap");
80
+ padding-top: get("padding-top");
81
+ padding-bottom: get("padding-bottom");
82
+ }
83
+ #{ $prefix }__content-main {
84
+ $min-width: if(get("main-min-width"), get("main-min-width"), get("main-max-width"));
85
+ // Using max/min-width so that we don't need to add selectors to change flex-basis
86
+ // when centered. Using flex-basis: 0 to allow flexbox to decide the items width
87
+ // allows it to expand/shrink within. min(100%... Never larger than parent
88
+ min-width: min(100%, $min-width);
89
+ max-width: get("main-max-width");
90
+ flex-shrink: 1;
91
+ flex-grow: 1;
92
+ flex-basis: 0;
93
+ }
94
+ #{ $prefix }__content-media {
95
+ display: flex;
96
+ align-items: center;
97
+ align-self: get("media-vertical-align");
98
+ justify-content: center;
99
+ flex: 0 0 auto;
100
+ width: min(100%, get("media-max-width"));
101
+ }
102
+
103
+ // Modifiers
104
+ #{ $prefix }--center {
105
+ #{ $prefix }__content {
106
+ flex-direction: column;
107
+ flex-wrap: nowrap;
108
+ text-align: center;
109
+ align-items: center;
110
+ }
111
+ }
112
+ }