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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/CHANGELOG.md +680 -0
  2. package/GEMINI.md +9 -0
  3. package/README.dev.md +3 -3
  4. package/README.md +14 -4
  5. package/dist/ulu-frontend.min.css +1 -1
  6. package/dist/ulu-frontend.min.js +36 -29
  7. package/docs-dev/.nojekyll +1 -0
  8. package/docs-dev/assets/main.js +832 -421
  9. package/docs-dev/assets/placeholder/icon-calendar.svg +1 -0
  10. package/docs-dev/assets/placeholder/icon-check.svg +1 -0
  11. package/docs-dev/assets/style.css +629 -233
  12. package/docs-dev/changelog/index.html +7484 -0
  13. package/docs-dev/changelog/updates-and-changes/index.html +5109 -0
  14. package/docs-dev/demos/accordion/index.html +1442 -364
  15. package/docs-dev/demos/badge/index.html +5835 -0
  16. package/docs-dev/demos/badge-stack/index.html +5816 -0
  17. package/docs-dev/demos/basic-hero/index.html +111 -0
  18. package/docs-dev/demos/breadcrumb/index.html +5870 -0
  19. package/docs-dev/demos/breakpoints-manager/index.html +5846 -0
  20. package/docs-dev/demos/button/index.html +1490 -356
  21. package/docs-dev/demos/button-group/index.html +5832 -0
  22. package/docs-dev/demos/button-verbose/index.html +5838 -0
  23. package/docs-dev/demos/callout/index.html +1469 -349
  24. package/docs-dev/demos/captioned-figure/index.html +1446 -353
  25. package/docs-dev/demos/card/index.html +1518 -786
  26. package/docs-dev/demos/card-grid/index.html +5957 -0
  27. package/docs-dev/demos/card-new/index.html +5088 -0
  28. package/docs-dev/demos/card-old/index.html +5223 -0
  29. package/docs-dev/demos/card.1/index.html +5223 -0
  30. package/docs-dev/demos/card.TRASH/index.html +5541 -0
  31. package/docs-dev/demos/counter-list/index.html +5840 -0
  32. package/docs-dev/demos/css-icons/index.html +1466 -350
  33. package/docs-dev/demos/data-grid/index.html +1446 -353
  34. package/docs-dev/demos/data-table/index.html +1621 -395
  35. package/docs-dev/demos/details-group/index.html +5867 -0
  36. package/docs-dev/demos/donut-chart/index.html +5874 -0
  37. package/docs-dev/demos/file-save/index.html +1446 -353
  38. package/docs-dev/demos/flipcard/index.html +1446 -353
  39. package/docs-dev/demos/form-theme/index.html +1453 -360
  40. package/docs-dev/demos/headline-label/index.html +5802 -0
  41. package/docs-dev/demos/hero/index.html +12 -4
  42. package/docs-dev/demos/image-grid/index.html +12 -4
  43. package/docs-dev/demos/index.html +1447 -354
  44. package/docs-dev/demos/list-inline/index.html +1446 -353
  45. package/docs-dev/demos/list-lines/index.html +1446 -353
  46. package/docs-dev/demos/menu-stack/index.html +1550 -389
  47. package/docs-dev/demos/modals/index.html +1616 -400
  48. package/docs-dev/demos/nav-strip/index.html +1446 -353
  49. package/docs-dev/demos/overlay-section/index.html +1532 -369
  50. package/docs-dev/demos/panel/index.html +5862 -0
  51. package/docs-dev/demos/popovers/index.html +1710 -375
  52. package/docs-dev/demos/print/index.html +1446 -353
  53. package/docs-dev/demos/progress-bar/index.html +5964 -0
  54. package/docs-dev/demos/progress-circle/index.html +6137 -0
  55. package/docs-dev/demos/progress-donut/index.html +6107 -0
  56. package/docs-dev/demos/pull-quote/index.html +1446 -353
  57. package/docs-dev/demos/rail/index.html +5910 -0
  58. package/docs-dev/demos/rule/index.html +1455 -350
  59. package/docs-dev/demos/scroll-slider/index.html +72 -106
  60. package/docs-dev/demos/scrollpoints/index.html +1447 -354
  61. package/docs-dev/demos/skeleton/index.html +5858 -0
  62. package/docs-dev/demos/slider/index.html +12 -4
  63. package/docs-dev/demos/spoke-spinner/index.html +1446 -353
  64. package/docs-dev/demos/sticky-list/index.html +5823 -0
  65. package/docs-dev/demos/tabs/index.html +1474 -345
  66. package/docs-dev/demos/tag/index.html +1463 -358
  67. package/docs-dev/demos/theme-toggle/index.html +5879 -0
  68. package/docs-dev/demos/tile-grid-overlay/index.html +12 -4
  69. package/docs-dev/demos/tiles/index.html +1446 -353
  70. package/docs-dev/demos/tooltip/index.html +1446 -353
  71. package/docs-dev/demos/wysiwyg/index.html +5852 -0
  72. package/docs-dev/guide/building-stylesheet/index.html +1446 -353
  73. package/docs-dev/guide/developing-ulu-scss-module/index.html +1446 -353
  74. package/docs-dev/guide/index.html +1446 -353
  75. package/docs-dev/guide/updates-and-changes/index.html +5033 -0
  76. package/docs-dev/index.html +1446 -353
  77. package/docs-dev/javascript/events/index.html +1476 -345
  78. package/docs-dev/javascript/index.html +1446 -353
  79. package/docs-dev/javascript/settings/index.html +6005 -0
  80. package/docs-dev/javascript/ui-breakpoints/index.html +1466 -375
  81. package/docs-dev/javascript/ui-collapsible/index.html +1451 -360
  82. package/docs-dev/javascript/ui-details-group/index.html +5922 -0
  83. package/docs-dev/javascript/ui-dialog/index.html +1469 -363
  84. package/docs-dev/javascript/ui-flipcard/index.html +1498 -351
  85. package/docs-dev/javascript/ui-grid/index.html +1448 -383
  86. package/docs-dev/javascript/ui-modal-builder/index.html +1661 -430
  87. package/docs-dev/javascript/ui-overflow-scroller/index.html +1451 -360
  88. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +1451 -360
  89. package/docs-dev/javascript/ui-page/index.html +1451 -360
  90. package/docs-dev/javascript/ui-popover/index.html +1447 -360
  91. package/docs-dev/javascript/ui-print/index.html +1443 -360
  92. package/docs-dev/javascript/ui-print-details/index.html +1451 -360
  93. package/docs-dev/javascript/ui-programmatic-modal/index.html +1451 -360
  94. package/docs-dev/javascript/ui-proxy-click/index.html +1555 -379
  95. package/docs-dev/javascript/ui-resizer/index.html +1756 -400
  96. package/docs-dev/javascript/ui-scroll-slider/index.html +1477 -354
  97. package/docs-dev/javascript/ui-scrollpoint/index.html +1448 -364
  98. package/docs-dev/javascript/ui-slider/index.html +1681 -399
  99. package/docs-dev/javascript/ui-tabs/index.html +1495 -441
  100. package/docs-dev/javascript/ui-theme-toggle/index.html +6010 -0
  101. package/docs-dev/javascript/ui-tooltip/index.html +1454 -367
  102. package/docs-dev/javascript/utils-class-logger/index.html +1452 -361
  103. package/docs-dev/javascript/utils-css/index.html +5824 -0
  104. package/docs-dev/javascript/utils-dom/index.html +1484 -473
  105. package/docs-dev/javascript/utils-file-save/index.html +1451 -360
  106. package/docs-dev/javascript/utils-floating-ui/index.html +1451 -360
  107. package/docs-dev/javascript/utils-id/index.html +1451 -360
  108. package/docs-dev/javascript/utils-pause-youtube-video/index.html +1451 -360
  109. package/docs-dev/javascript/utils-system/index.html +6127 -0
  110. package/docs-dev/sass/base/color/index.html +1451 -360
  111. package/docs-dev/sass/base/elements/index.html +1452 -361
  112. package/docs-dev/sass/base/index/index.html +1452 -361
  113. package/docs-dev/sass/base/index.html +1446 -353
  114. package/docs-dev/sass/base/keyframes/index.html +1452 -361
  115. package/docs-dev/sass/base/layout/index.html +1452 -361
  116. package/docs-dev/sass/base/normalize/index.html +1451 -360
  117. package/docs-dev/sass/base/print/index.html +1452 -361
  118. package/docs-dev/sass/base/root/index.html +1455 -364
  119. package/docs-dev/sass/base/typography/index.html +1451 -360
  120. package/docs-dev/sass/components/accordion/index.html +1538 -406
  121. package/docs-dev/sass/components/adaptive-spacing/index.html +1451 -360
  122. package/docs-dev/sass/components/badge/index.html +1468 -359
  123. package/docs-dev/sass/components/badge-stack/index.html +5991 -0
  124. package/docs-dev/sass/components/basic-hero/index.html +5985 -0
  125. package/docs-dev/sass/components/breadcrumb/index.html +6032 -0
  126. package/docs-dev/sass/components/button/index.html +1451 -360
  127. package/docs-dev/sass/components/button-group/index.html +5983 -0
  128. package/docs-dev/sass/components/button-verbose/index.html +1523 -357
  129. package/docs-dev/sass/components/callout/index.html +1572 -422
  130. package/docs-dev/sass/components/captioned-figure/index.html +1591 -385
  131. package/docs-dev/sass/components/card/index.html +1511 -363
  132. package/docs-dev/sass/components/card-grid/index.html +1451 -360
  133. package/docs-dev/sass/components/counter-list/index.html +6067 -0
  134. package/docs-dev/sass/components/css-icon/index.html +1452 -361
  135. package/docs-dev/sass/components/data-grid/index.html +1465 -367
  136. package/docs-dev/sass/components/data-table/index.html +1648 -369
  137. package/docs-dev/sass/components/fill-context/index.html +1451 -360
  138. package/docs-dev/sass/components/flipcard/index.html +1479 -357
  139. package/docs-dev/sass/components/flipcard-grid/index.html +1451 -360
  140. package/docs-dev/sass/components/form-theme/index.html +1652 -566
  141. package/docs-dev/sass/components/headline-label/index.html +6013 -0
  142. package/docs-dev/sass/components/hero/index.html +1497 -358
  143. package/docs-dev/sass/components/horizontal-rule/index.html +1451 -360
  144. package/docs-dev/sass/components/image-grid/index.html +1451 -360
  145. package/docs-dev/sass/components/index/index.html +1466 -362
  146. package/docs-dev/sass/components/index.html +1446 -353
  147. package/docs-dev/sass/components/links/index.html +1451 -360
  148. package/docs-dev/sass/components/list-inline/index.html +1451 -360
  149. package/docs-dev/sass/components/list-lines/index.html +1451 -360
  150. package/docs-dev/sass/components/list-ordered/index.html +1451 -360
  151. package/docs-dev/sass/components/list-unordered/index.html +1451 -360
  152. package/docs-dev/sass/components/menu-stack/index.html +1476 -371
  153. package/docs-dev/sass/components/modal/index.html +1486 -360
  154. package/docs-dev/sass/components/nav-strip/index.html +1459 -368
  155. package/docs-dev/sass/components/overlay-section/index.html +1459 -368
  156. package/docs-dev/sass/components/pager/index.html +1451 -360
  157. package/docs-dev/sass/components/panel/index.html +6213 -0
  158. package/docs-dev/sass/components/placeholder-block/index.html +1451 -360
  159. package/docs-dev/sass/components/popover/index.html +1497 -370
  160. package/docs-dev/sass/components/progress-bar/index.html +6192 -0
  161. package/docs-dev/sass/components/progress-circle/index.html +6084 -0
  162. package/docs-dev/sass/components/pull-quote/index.html +1463 -372
  163. package/docs-dev/sass/components/rail/index.html +6003 -0
  164. package/docs-dev/sass/components/ratio-box/index.html +1459 -368
  165. package/docs-dev/sass/components/rule/index.html +1452 -361
  166. package/docs-dev/sass/components/scroll-slider/index.html +1447 -368
  167. package/docs-dev/sass/components/skeleton/index.html +6041 -0
  168. package/docs-dev/sass/components/skip-link/index.html +1451 -360
  169. package/docs-dev/sass/components/slider/index.html +1491 -412
  170. package/docs-dev/sass/components/spoke-spinner/index.html +1453 -362
  171. package/docs-dev/sass/components/sticky-list/index.html +6203 -0
  172. package/docs-dev/sass/components/table-sticky/index.html +5707 -0
  173. package/docs-dev/sass/components/tabs/index.html +1472 -366
  174. package/docs-dev/sass/components/tag/index.html +1563 -378
  175. package/docs-dev/sass/components/tile-button/index.html +1451 -360
  176. package/docs-dev/sass/components/tile-grid/index.html +1451 -360
  177. package/docs-dev/sass/components/tile-grid-overlay/index.html +1451 -360
  178. package/docs-dev/sass/components/vignette/index.html +1457 -360
  179. package/docs-dev/sass/components/wysiwyg/index.html +1477 -368
  180. package/docs-dev/sass/core/breakpoint/index.html +1530 -387
  181. package/docs-dev/sass/core/button/index.html +1483 -390
  182. package/docs-dev/sass/core/color/index.html +1666 -443
  183. package/docs-dev/sass/core/cssvar/index.html +1451 -360
  184. package/docs-dev/sass/core/element/index.html +1790 -417
  185. package/docs-dev/sass/core/index.html +1451 -360
  186. package/docs-dev/sass/core/layout/index.html +1491 -381
  187. package/docs-dev/sass/core/path/index.html +1451 -360
  188. package/docs-dev/sass/core/selector/index.html +1451 -360
  189. package/docs-dev/sass/core/typography/index.html +1591 -442
  190. package/docs-dev/sass/core/units/index.html +1453 -356
  191. package/docs-dev/sass/core/utils/index.html +2744 -504
  192. package/docs-dev/sass/helpers/color/index.html +1451 -360
  193. package/docs-dev/sass/helpers/display/index.html +1452 -361
  194. package/docs-dev/sass/helpers/index/index.html +1451 -360
  195. package/docs-dev/sass/helpers/index.html +1446 -353
  196. package/docs-dev/sass/helpers/print/index.html +759 -298
  197. package/docs-dev/sass/helpers/typography/index.html +1451 -360
  198. package/docs-dev/sass/helpers/units/index.html +1451 -360
  199. package/docs-dev/sass/helpers/utilities/index.html +1449 -354
  200. package/docs-dev/sass/index.html +1446 -353
  201. package/js/events/index.js +17 -5
  202. package/js/index.js +1 -0
  203. package/js/settings.js +97 -0
  204. package/js/ui/breakpoints.js +19 -16
  205. package/js/ui/collapsible.js +8 -1
  206. package/js/ui/details-group.js +112 -0
  207. package/js/ui/dialog.js +103 -44
  208. package/js/ui/dialog.todo +2 -36
  209. package/js/ui/flipcard.js +37 -57
  210. package/js/ui/grid.js +15 -13
  211. package/js/ui/index.js +1 -0
  212. package/js/ui/modal-builder.js +127 -70
  213. package/js/ui/overflow-scroller.js +6 -4
  214. package/js/ui/page.js +2 -2
  215. package/js/ui/popover.js +38 -38
  216. package/js/ui/print.js +16 -25
  217. package/js/ui/programmatic-modal.js +9 -3
  218. package/js/ui/proxy-click.js +50 -36
  219. package/js/ui/resizer.js +408 -39
  220. package/js/ui/scroll-slider.js +24 -30
  221. package/js/ui/scrollpoint.js +29 -64
  222. package/js/ui/slider.js +108 -63
  223. package/js/ui/tabs.js +23 -36
  224. package/js/ui/theme-toggle.js +332 -94
  225. package/js/ui/tooltip.js +27 -32
  226. package/js/utils/class-logger.js +3 -3
  227. package/js/utils/css.js +13 -0
  228. package/js/utils/dom.js +23 -64
  229. package/js/utils/font-awesome.js +19 -0
  230. package/js/utils/index.js +2 -1
  231. package/js/utils/system.js +155 -0
  232. package/package.json +23 -8
  233. package/scss/README.md +9 -0
  234. package/scss/_breakpoint.scss +39 -5
  235. package/scss/_button.scss +7 -5
  236. package/scss/_color.scss +71 -40
  237. package/scss/_element.scss +124 -2
  238. package/scss/_layout.scss +7 -8
  239. package/scss/_typography.scss +15 -0
  240. package/scss/_units.scss +3 -2
  241. package/scss/_utils.scss +387 -16
  242. package/scss/base/_elements.scss +0 -1
  243. package/scss/base/_index.scss +1 -1
  244. package/scss/base/_keyframes.scss +15 -0
  245. package/scss/base/_layout.scss +1 -0
  246. package/scss/base/_print.scss +2 -0
  247. package/scss/base/_root.scss +2 -0
  248. package/scss/components/README.todos +1 -0
  249. package/scss/components/_accordion.scss +166 -109
  250. package/scss/components/_badge-stack.scss +84 -0
  251. package/scss/components/_badge.scss +30 -7
  252. package/scss/components/_basic-hero.scss +112 -0
  253. package/scss/components/_breadcrumb.scss +110 -0
  254. package/scss/components/_button-group.scss +90 -0
  255. package/scss/components/_button-verbose.scss +100 -18
  256. package/scss/components/_callout.scss +112 -53
  257. package/scss/components/_captioned-figure.scss +17 -0
  258. package/scss/components/_card.scss +222 -66
  259. package/scss/components/_counter-list.scss +151 -0
  260. package/scss/components/_css-icon.scss +27 -17
  261. package/scss/components/_data-grid.scss +55 -12
  262. package/scss/components/_data-table.scss +31 -0
  263. package/scss/components/_flipcard.scss +8 -3
  264. package/scss/components/_form-theme.scss +106 -95
  265. package/scss/components/_headline-label.scss +83 -0
  266. package/scss/components/_hero.scss +12 -10
  267. package/scss/components/_index.scss +73 -0
  268. package/scss/components/_menu-stack.scss +69 -32
  269. package/scss/components/_modal.scss +51 -23
  270. package/scss/components/_nav-strip.scss +2 -0
  271. package/scss/components/_overlay-section.scss +2 -5
  272. package/scss/components/_panel.scss +246 -0
  273. package/scss/components/_popover.scss +165 -64
  274. package/scss/components/_progress-bar.scss +254 -0
  275. package/scss/components/_progress-circle.scss +175 -0
  276. package/scss/components/_pull-quote.scss +13 -13
  277. package/scss/components/_rail.scss +127 -0
  278. package/scss/components/_ratio-box.scss +2 -5
  279. package/scss/components/_rule.scss +1 -0
  280. package/scss/components/_scroll-slider.scss +1 -5
  281. package/scss/components/_skeleton.scss +126 -0
  282. package/scss/components/_slider.scss +49 -72
  283. package/scss/components/_spoke-spinner.scss +2 -2
  284. package/scss/components/_sticky-list.scss +206 -0
  285. package/scss/components/_tabs.scss +22 -4
  286. package/scss/components/_tag.scss +49 -7
  287. package/scss/components/_vignette.scss +3 -5
  288. package/scss/components/_wysiwyg.scss +21 -13
  289. package/scss/helpers/_display.scss +15 -18
  290. package/scss/helpers/_print.scss +12 -7
  291. package/scss/helpers/_utilities.scss +56 -34
  292. package/types/events/index.d.ts +10 -1
  293. package/types/events/index.d.ts.map +1 -1
  294. package/types/index.d.ts +1 -0
  295. package/types/settings.d.ts +70 -0
  296. package/types/settings.d.ts.map +1 -0
  297. package/types/ui/breakpoints.d.ts +14 -14
  298. package/types/ui/breakpoints.d.ts.map +1 -1
  299. package/types/ui/collapsible.d.ts.map +1 -1
  300. package/types/ui/details-group.d.ts +38 -0
  301. package/types/ui/details-group.d.ts.map +1 -0
  302. package/types/ui/dialog.d.ts +20 -14
  303. package/types/ui/dialog.d.ts.map +1 -1
  304. package/types/ui/flipcard.d.ts +16 -10
  305. package/types/ui/flipcard.d.ts.map +1 -1
  306. package/types/ui/grid.d.ts +4 -6
  307. package/types/ui/grid.d.ts.map +1 -1
  308. package/types/ui/index.d.ts +1 -0
  309. package/types/ui/modal-builder.d.ts +116 -11
  310. package/types/ui/modal-builder.d.ts.map +1 -1
  311. package/types/ui/overflow-scroller.d.ts +2 -2
  312. package/types/ui/overflow-scroller.d.ts.map +1 -1
  313. package/types/ui/popover.d.ts +6 -7
  314. package/types/ui/popover.d.ts.map +1 -1
  315. package/types/ui/print.d.ts +0 -4
  316. package/types/ui/print.d.ts.map +1 -1
  317. package/types/ui/programmatic-modal.d.ts.map +1 -1
  318. package/types/ui/proxy-click.d.ts +19 -3
  319. package/types/ui/proxy-click.d.ts.map +1 -1
  320. package/types/ui/resizer.d.ts +116 -16
  321. package/types/ui/resizer.d.ts.map +1 -1
  322. package/types/ui/scroll-slider.d.ts +5 -7
  323. package/types/ui/scroll-slider.d.ts.map +1 -1
  324. package/types/ui/scrollpoint.d.ts +3 -8
  325. package/types/ui/scrollpoint.d.ts.map +1 -1
  326. package/types/ui/slider.d.ts +33 -14
  327. package/types/ui/slider.d.ts.map +1 -1
  328. package/types/ui/tabs.d.ts +6 -8
  329. package/types/ui/tabs.d.ts.map +1 -1
  330. package/types/ui/theme-toggle.d.ts +51 -7
  331. package/types/ui/theme-toggle.d.ts.map +1 -1
  332. package/types/ui/tooltip.d.ts +3 -5
  333. package/types/ui/tooltip.d.ts.map +1 -1
  334. package/types/utils/css.d.ts +11 -0
  335. package/types/utils/css.d.ts.map +1 -0
  336. package/types/utils/dom.d.ts +12 -32
  337. package/types/utils/dom.d.ts.map +1 -1
  338. package/types/utils/font-awesome.d.ts +5 -0
  339. package/types/utils/font-awesome.d.ts.map +1 -0
  340. package/types/utils/index.d.ts +1 -0
  341. package/types/utils/system.d.ts +113 -0
  342. package/types/utils/system.d.ts.map +1 -0
@@ -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,88 @@ $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
+ position: relative; // For pushing to the top when in accordion groups
128
+ padding: 0;
129
+ margin: get("margin");
109
130
  border: $border;
110
131
  background-color: color.get(get("background-color"));
111
132
  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");
133
+ border-radius: get("border-radius");
134
+
135
+ // Sibling before sets the gap
136
+ & + #{ $prefix } {
137
+ margin-top: 0;
119
138
  }
120
- & + & {
121
- $gap: -(get("margin") - get("margin-between"));
122
- margin-top: $gap;
123
- margin-top: calc($gap - 1px);
139
+
140
+ // If no space get rid of border radiuses
141
+ @if (get("margin-between") == 0) {
142
+ &:has(+ #{ $prefix }) {
143
+ border-bottom-left-radius: 0;
144
+ border-bottom-right-radius: 0;
145
+ margin-bottom: 0;
146
+ }
147
+ & + #{ $prefix } {
148
+ border-top-left-radius: 0;
149
+ border-top-right-radius: 0;
150
+ margin-top: -(get("border-width")); // Pull border over top
151
+ }
152
+ } @else {
153
+ &:has(+ #{ $prefix }) {
154
+ margin-bottom: get("margin-between");
155
+ }
124
156
  }
157
+
125
158
  &[open],
126
- &.is-active {
159
+ &#{ $active-selector } {
127
160
  background-color: color.get(get("background-color-open"));
128
- padding-bottom: get("padding-y");
129
- z-index: 2; // Above child details
161
+ z-index: 2; // Above other details/accordions
130
162
  > #{ $prefix }__summary {
131
- margin-bottom: get("padding-y");
132
163
  border-bottom-left-radius: 0;
133
164
  border-bottom-right-radius: 0;
134
- border-bottom: $border;
165
+
166
+ @if (get("summary-border-enabled")) {
167
+ &::after {
168
+ content: "";
169
+ position: absolute;
170
+ top: 100%;
171
+ left: 0;
172
+ right: 0;
173
+ height: get("summary-border-width");
174
+ background-color: color.get(get("summary-border-color"));
175
+ }
176
+ }
135
177
  }
136
178
  }
137
179
  }
138
180
  #{ $prefix }__summary {
181
+ position: relative; // For pseudo border (done this way for animations)
182
+ display: flex;
183
+ list-style: none; // Remove the default arrow (old safari?)
184
+ width: 100%; // For <button>
139
185
  background-color: color.get(get("summary-background-color"));
140
186
  color: color.get(get("summary-color"));
141
- margin-left: -(get("padding-x"));
142
- margin-right: -(get("padding-x"));
143
187
  line-height: get("summary-line-height");
144
- padding: get("summary-padding-y") get("padding-x");
145
- vertical-align: top;
188
+ padding: get("summary-padding-y") $padding-x;
189
+ border-radius: get("border-radius");
146
190
  font-weight: bold;
147
191
  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"));
192
+ align-items: center;
193
+
194
+ @include typography.optional-size(get("summary-type-size"), $only-font-size: true);
195
+
196
+ &::-webkit-details-marker,
197
+ &::marker {
198
+ display: none;
199
+ content: "";
162
200
  }
163
- &:hover {
201
+ &:hover,
202
+ &:focus {
164
203
  background-color: color.get(get("summary-background-color-hover"));
165
204
  color: color.get(get("summary-color-hover"));
166
205
  #{ $prefix }__icon {
@@ -170,48 +209,66 @@ $config: (
170
209
  }
171
210
  }
172
211
  #{ $prefix }__icon {
212
+ display: flex;
213
+ align-items: center;
214
+ justify-content: center;
173
215
  flex: 0 0 get("icon-size");
174
216
  color: color.get(get("icon-color"));
175
- margin-left: 0.5em;
176
- order: 3;
217
+ margin-left: auto;
218
+ padding-left: get("icon-margin");
177
219
  background-color: color.get(get("icon-background-color"));
178
220
  border-radius: get("icon-border-radius");
179
221
  width: get("icon-size");
180
222
  height: get("icon-size");
181
223
  font-size: get("icon-font-size");
182
224
  line-height: 1;
183
- display: flex;
184
- align-items: center;
185
- justify-content: center;
186
- text-align: center;
225
+ }
226
+ #{ $prefix }__content {
227
+ padding: get("padding-y") $padding-x;
228
+ border-bottom-left-radius: get("border-radius");
229
+ border-bottom-right-radius: get("border-radius");
187
230
  }
188
231
  #{ $prefix }--transparent {
189
232
  border-left: none;
190
233
  border-right: none;
191
234
  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;
235
+ border-radius: 0;
236
+
237
+ // Transparent always collapses space
238
+ @if (get("margin-between") != 0) {
239
+ &:has(+ #{ $prefix }) {
206
240
  margin-bottom: 0;
207
241
  }
242
+ & + #{ $prefix } {
243
+ margin-top: -(get("border-width")); // Pull border over top
244
+ }
245
+ }
246
+ > #{ $prefix }__summary,
247
+ > #{ $prefix }__content {
248
+ padding-left: 0;
249
+ padding-right: 0;
250
+ background-color: transparent;
251
+ border: none !important;
252
+ border-radius: 0 !important;
253
+ }
254
+ > #{ $prefix }__content {
255
+ padding: get("transparent-content-padding");
208
256
  }
209
257
  }
210
- #{ $prefix }--no-borders {
258
+ #{ $prefix }--borderless {
211
259
  border: none;
212
- margin-bottom: 4rem;
213
- &[open] > .accordion__summary {
214
- border-bottom: none;
260
+ &:has(+ #{ $prefix }) {
261
+ margin-bottom: 0;
262
+ }
263
+ & + #{ $prefix }--borderless {
264
+ margin-top: calc(get("borderless-margin-between") - get("border-width"));
265
+ }
266
+ &[open],
267
+ &#{ $active-selector } {
268
+ & > #{ $prefix }__summary {
269
+ border-radius: get("border-radius");
270
+ border-bottom: none;
271
+ }
215
272
  }
216
273
  }
217
274
  }
@@ -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
+ }