@ulu/frontend 0.1.0-beta.12 → 0.1.0-beta.121

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 (344) hide show
  1. package/CHANGELOG.md +717 -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 +7613 -0
  13. package/docs-dev/changelog/updates-and-changes/index.html +5109 -0
  14. package/docs-dev/demos/accordion/index.html +1496 -358
  15. package/docs-dev/demos/badge/index.html +5895 -0
  16. package/docs-dev/demos/badge-stack/index.html +5876 -0
  17. package/docs-dev/demos/basic-hero/index.html +111 -0
  18. package/docs-dev/demos/breadcrumb/index.html +5930 -0
  19. package/docs-dev/demos/breakpoints-manager/index.html +5906 -0
  20. package/docs-dev/demos/button/index.html +1537 -343
  21. package/docs-dev/demos/button-group/index.html +5892 -0
  22. package/docs-dev/demos/button-verbose/index.html +5898 -0
  23. package/docs-dev/demos/callout/index.html +1559 -379
  24. package/docs-dev/demos/captioned-figure/index.html +1492 -339
  25. package/docs-dev/demos/card/index.html +1592 -800
  26. package/docs-dev/demos/card-grid/index.html +6017 -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 +5900 -0
  32. package/docs-dev/demos/css-icons/index.html +1556 -380
  33. package/docs-dev/demos/data-grid/index.html +1492 -339
  34. package/docs-dev/demos/data-table/index.html +1634 -348
  35. package/docs-dev/demos/definition-list/index.html +6011 -0
  36. package/docs-dev/demos/details-group/index.html +5927 -0
  37. package/docs-dev/demos/donut-chart/index.html +5874 -0
  38. package/docs-dev/demos/file-save/index.html +1492 -339
  39. package/docs-dev/demos/flipcard/index.html +1492 -339
  40. package/docs-dev/demos/form-theme/index.html +1500 -347
  41. package/docs-dev/demos/headline-label/index.html +5862 -0
  42. package/docs-dev/demos/hero/index.html +12 -4
  43. package/docs-dev/demos/image-grid/index.html +12 -4
  44. package/docs-dev/demos/index.html +1493 -340
  45. package/docs-dev/demos/list-inline/index.html +1492 -339
  46. package/docs-dev/demos/list-lines/index.html +1492 -339
  47. package/docs-dev/demos/menu-stack/index.html +1652 -378
  48. package/docs-dev/demos/modals/index.html +1642 -366
  49. package/docs-dev/demos/nav-strip/index.html +1492 -339
  50. package/docs-dev/demos/overlay-section/index.html +1611 -388
  51. package/docs-dev/demos/panel/index.html +5922 -0
  52. package/docs-dev/demos/popovers/index.html +1752 -357
  53. package/docs-dev/demos/print/index.html +1492 -339
  54. package/docs-dev/demos/progress-bar/index.html +6030 -0
  55. package/docs-dev/demos/progress-circle/index.html +6197 -0
  56. package/docs-dev/demos/progress-donut/index.html +6107 -0
  57. package/docs-dev/demos/pull-quote/index.html +1492 -339
  58. package/docs-dev/demos/rail/index.html +5970 -0
  59. package/docs-dev/demos/rule/index.html +1509 -344
  60. package/docs-dev/demos/scroll-slider/index.html +72 -106
  61. package/docs-dev/demos/scrollpoints/index.html +1493 -340
  62. package/docs-dev/demos/skeleton/index.html +5918 -0
  63. package/docs-dev/demos/slider/index.html +12 -4
  64. package/docs-dev/demos/spoke-spinner/index.html +1492 -339
  65. package/docs-dev/demos/sticky-list/index.html +5883 -0
  66. package/docs-dev/demos/tabs/index.html +1565 -376
  67. package/docs-dev/demos/tag/index.html +1510 -345
  68. package/docs-dev/demos/theme-toggle/index.html +5939 -0
  69. package/docs-dev/demos/tile-grid-overlay/index.html +12 -4
  70. package/docs-dev/demos/tiles/index.html +1492 -339
  71. package/docs-dev/demos/tooltip/index.html +1492 -339
  72. package/docs-dev/demos/wysiwyg/index.html +5912 -0
  73. package/docs-dev/guide/building-stylesheet/index.html +1492 -339
  74. package/docs-dev/guide/developing-ulu-scss-module/index.html +1492 -339
  75. package/docs-dev/guide/index.html +1492 -339
  76. package/docs-dev/guide/updates-and-changes/index.html +5033 -0
  77. package/docs-dev/index.html +1492 -339
  78. package/docs-dev/javascript/events/index.html +1567 -376
  79. package/docs-dev/javascript/index.html +1492 -339
  80. package/docs-dev/javascript/settings/index.html +6065 -0
  81. package/docs-dev/javascript/ui-breakpoints/index.html +1506 -355
  82. package/docs-dev/javascript/ui-collapsible/index.html +1491 -340
  83. package/docs-dev/javascript/ui-details-group/index.html +5982 -0
  84. package/docs-dev/javascript/ui-dialog/index.html +1523 -357
  85. package/docs-dev/javascript/ui-flipcard/index.html +1552 -345
  86. package/docs-dev/javascript/ui-grid/index.html +1538 -413
  87. package/docs-dev/javascript/ui-modal-builder/index.html +1761 -470
  88. package/docs-dev/javascript/ui-overflow-scroller/index.html +1491 -340
  89. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +1491 -340
  90. package/docs-dev/javascript/ui-page/index.html +1491 -340
  91. package/docs-dev/javascript/ui-popover/index.html +1501 -354
  92. package/docs-dev/javascript/ui-print/index.html +1489 -346
  93. package/docs-dev/javascript/ui-print-details/index.html +1491 -340
  94. package/docs-dev/javascript/ui-programmatic-modal/index.html +1491 -340
  95. package/docs-dev/javascript/ui-proxy-click/index.html +1591 -355
  96. package/docs-dev/javascript/ui-resizer/index.html +1850 -434
  97. package/docs-dev/javascript/ui-scroll-slider/index.html +1531 -348
  98. package/docs-dev/javascript/ui-scrollpoint/index.html +1501 -357
  99. package/docs-dev/javascript/ui-slider/index.html +1708 -366
  100. package/docs-dev/javascript/ui-tabs/index.html +1523 -409
  101. package/docs-dev/javascript/ui-theme-toggle/index.html +6070 -0
  102. package/docs-dev/javascript/ui-tooltip/index.html +1501 -354
  103. package/docs-dev/javascript/utils-class-logger/index.html +1492 -341
  104. package/docs-dev/javascript/utils-css/index.html +5884 -0
  105. package/docs-dev/javascript/utils-dom/index.html +1523 -452
  106. package/docs-dev/javascript/utils-file-save/index.html +1491 -340
  107. package/docs-dev/javascript/utils-floating-ui/index.html +1491 -340
  108. package/docs-dev/javascript/utils-id/index.html +1491 -340
  109. package/docs-dev/javascript/utils-pause-youtube-video/index.html +1491 -340
  110. package/docs-dev/javascript/utils-system/index.html +6187 -0
  111. package/docs-dev/sass/base/color/index.html +1491 -340
  112. package/docs-dev/sass/base/elements/index.html +1492 -341
  113. package/docs-dev/sass/base/index/index.html +1492 -341
  114. package/docs-dev/sass/base/index.html +1492 -339
  115. package/docs-dev/sass/base/keyframes/index.html +1492 -341
  116. package/docs-dev/sass/base/layout/index.html +1492 -341
  117. package/docs-dev/sass/base/normalize/index.html +1491 -340
  118. package/docs-dev/sass/base/print/index.html +1492 -341
  119. package/docs-dev/sass/base/root/index.html +1495 -344
  120. package/docs-dev/sass/base/typography/index.html +1491 -340
  121. package/docs-dev/sass/components/accordion/index.html +1628 -436
  122. package/docs-dev/sass/components/adaptive-spacing/index.html +1491 -340
  123. package/docs-dev/sass/components/badge/index.html +1522 -353
  124. package/docs-dev/sass/components/badge-stack/index.html +6051 -0
  125. package/docs-dev/sass/components/basic-hero/index.html +6045 -0
  126. package/docs-dev/sass/components/breadcrumb/index.html +6092 -0
  127. package/docs-dev/sass/components/button/index.html +1491 -340
  128. package/docs-dev/sass/components/button-group/index.html +6043 -0
  129. package/docs-dev/sass/components/button-verbose/index.html +1613 -387
  130. package/docs-dev/sass/components/callout/index.html +1598 -388
  131. package/docs-dev/sass/components/captioned-figure/index.html +1491 -340
  132. package/docs-dev/sass/components/card/index.html +1601 -393
  133. package/docs-dev/sass/components/card-grid/index.html +1491 -340
  134. package/docs-dev/sass/components/counter-list/index.html +6127 -0
  135. package/docs-dev/sass/components/css-icon/index.html +1492 -341
  136. package/docs-dev/sass/components/data-grid/index.html +1511 -353
  137. package/docs-dev/sass/components/data-table/index.html +1510 -352
  138. package/docs-dev/sass/components/definition-list/index.html +6107 -0
  139. package/docs-dev/sass/components/fill-context/index.html +1491 -340
  140. package/docs-dev/sass/components/flipcard/index.html +1569 -387
  141. package/docs-dev/sass/components/flipcard-grid/index.html +1491 -340
  142. package/docs-dev/sass/components/form-theme/index.html +1718 -572
  143. package/docs-dev/sass/components/headline-label/index.html +6073 -0
  144. package/docs-dev/sass/components/hero/index.html +1499 -348
  145. package/docs-dev/sass/components/horizontal-rule/index.html +1491 -340
  146. package/docs-dev/sass/components/image-grid/index.html +1491 -340
  147. package/docs-dev/sass/components/index/index.html +1514 -349
  148. package/docs-dev/sass/components/index.html +1492 -339
  149. package/docs-dev/sass/components/links/index.html +1491 -340
  150. package/docs-dev/sass/components/list-inline/index.html +1491 -340
  151. package/docs-dev/sass/components/list-lines/index.html +1491 -340
  152. package/docs-dev/sass/components/list-ordered/index.html +1491 -340
  153. package/docs-dev/sass/components/list-unordered/index.html +1491 -340
  154. package/docs-dev/sass/components/menu-stack/index.html +1578 -378
  155. package/docs-dev/sass/components/modal/index.html +1576 -390
  156. package/docs-dev/sass/components/nav-strip/index.html +1499 -348
  157. package/docs-dev/sass/components/overlay-section/index.html +1499 -348
  158. package/docs-dev/sass/components/pager/index.html +1491 -340
  159. package/docs-dev/sass/components/panel/index.html +6273 -0
  160. package/docs-dev/sass/components/placeholder-block/index.html +1491 -340
  161. package/docs-dev/sass/components/popover/index.html +1561 -404
  162. package/docs-dev/sass/components/progress-bar/index.html +6252 -0
  163. package/docs-dev/sass/components/progress-circle/index.html +6144 -0
  164. package/docs-dev/sass/components/pull-quote/index.html +1491 -340
  165. package/docs-dev/sass/components/rail/index.html +6063 -0
  166. package/docs-dev/sass/components/ratio-box/index.html +1499 -348
  167. package/docs-dev/sass/components/rule/index.html +1492 -341
  168. package/docs-dev/sass/components/scroll-slider/index.html +1501 -362
  169. package/docs-dev/sass/components/skeleton/index.html +6101 -0
  170. package/docs-dev/sass/components/skip-link/index.html +1491 -340
  171. package/docs-dev/sass/components/slider/index.html +1581 -442
  172. package/docs-dev/sass/components/spoke-spinner/index.html +1493 -342
  173. package/docs-dev/sass/components/sticky-list/index.html +6263 -0
  174. package/docs-dev/sass/components/table-sticky/index.html +5707 -0
  175. package/docs-dev/sass/components/tabs/index.html +1519 -353
  176. package/docs-dev/sass/components/tag/index.html +1648 -403
  177. package/docs-dev/sass/components/tile-button/index.html +1491 -340
  178. package/docs-dev/sass/components/tile-grid/index.html +1491 -340
  179. package/docs-dev/sass/components/tile-grid-overlay/index.html +1491 -340
  180. package/docs-dev/sass/components/vignette/index.html +1499 -348
  181. package/docs-dev/sass/components/wysiwyg/index.html +1524 -355
  182. package/docs-dev/sass/core/breakpoint/index.html +1577 -374
  183. package/docs-dev/sass/core/button/index.html +1523 -370
  184. package/docs-dev/sass/core/color/index.html +1768 -485
  185. package/docs-dev/sass/core/cssvar/index.html +1491 -340
  186. package/docs-dev/sass/core/element/index.html +1837 -404
  187. package/docs-dev/sass/core/index.html +1491 -340
  188. package/docs-dev/sass/core/layout/index.html +1582 -412
  189. package/docs-dev/sass/core/path/index.html +1491 -340
  190. package/docs-dev/sass/core/selector/index.html +1491 -340
  191. package/docs-dev/sass/core/typography/index.html +1657 -448
  192. package/docs-dev/sass/core/units/index.html +1499 -342
  193. package/docs-dev/sass/core/utils/index.html +2781 -481
  194. package/docs-dev/sass/helpers/color/index.html +1491 -340
  195. package/docs-dev/sass/helpers/display/index.html +1492 -341
  196. package/docs-dev/sass/helpers/index/index.html +1491 -340
  197. package/docs-dev/sass/helpers/index.html +1492 -339
  198. package/docs-dev/sass/helpers/print/index.html +759 -298
  199. package/docs-dev/sass/helpers/typography/index.html +1491 -340
  200. package/docs-dev/sass/helpers/units/index.html +1491 -340
  201. package/docs-dev/sass/helpers/utilities/index.html +1495 -340
  202. package/docs-dev/sass/index.html +1492 -339
  203. package/js/events/index.js +17 -5
  204. package/js/index.js +1 -0
  205. package/js/settings.js +97 -0
  206. package/js/ui/breakpoints.js +19 -16
  207. package/js/ui/collapsible.js +8 -1
  208. package/js/ui/details-group.js +112 -0
  209. package/js/ui/dialog.js +103 -44
  210. package/js/ui/dialog.todo +2 -36
  211. package/js/ui/flipcard.js +37 -57
  212. package/js/ui/grid.js +15 -13
  213. package/js/ui/index.js +1 -0
  214. package/js/ui/modal-builder.js +127 -70
  215. package/js/ui/overflow-scroller.js +6 -4
  216. package/js/ui/page.js +2 -2
  217. package/js/ui/popover.js +38 -38
  218. package/js/ui/print.js +16 -25
  219. package/js/ui/programmatic-modal.js +9 -3
  220. package/js/ui/proxy-click.js +50 -36
  221. package/js/ui/resizer.js +408 -39
  222. package/js/ui/scroll-slider.js +24 -30
  223. package/js/ui/scrollpoint.js +29 -64
  224. package/js/ui/slider.js +108 -63
  225. package/js/ui/tabs.js +23 -36
  226. package/js/ui/theme-toggle.js +332 -94
  227. package/js/ui/tooltip.js +27 -32
  228. package/js/utils/class-logger.js +3 -3
  229. package/js/utils/css.js +13 -0
  230. package/js/utils/dom.js +23 -64
  231. package/js/utils/font-awesome.js +19 -0
  232. package/js/utils/index.js +2 -1
  233. package/js/utils/system.js +155 -0
  234. package/package.json +24 -9
  235. package/scss/README.md +9 -0
  236. package/scss/_breakpoint.scss +39 -5
  237. package/scss/_button.scss +7 -5
  238. package/scss/_color.scss +71 -40
  239. package/scss/_element.scss +124 -2
  240. package/scss/_layout.scss +7 -8
  241. package/scss/_typography.scss +15 -0
  242. package/scss/_units.scss +3 -2
  243. package/scss/_utils.scss +387 -16
  244. package/scss/base/_elements.scss +0 -1
  245. package/scss/base/_index.scss +1 -1
  246. package/scss/base/_keyframes.scss +15 -0
  247. package/scss/base/_layout.scss +1 -0
  248. package/scss/base/_print.scss +2 -0
  249. package/scss/base/_root.scss +2 -0
  250. package/scss/components/_accordion.scss +167 -110
  251. package/scss/components/_badge-stack.scss +84 -0
  252. package/scss/components/_badge.scss +30 -7
  253. package/scss/components/_basic-hero.scss +112 -0
  254. package/scss/components/_breadcrumb.scss +110 -0
  255. package/scss/components/_button-group.scss +90 -0
  256. package/scss/components/_button-verbose.scss +100 -18
  257. package/scss/components/_callout.scss +112 -53
  258. package/scss/components/_card-grid.scss +5 -2
  259. package/scss/components/_card.scss +216 -87
  260. package/scss/components/_counter-list.scss +151 -0
  261. package/scss/components/_css-icon.scss +27 -17
  262. package/scss/components/_data-grid.scss +55 -12
  263. package/scss/components/_data-table.scss +3 -0
  264. package/scss/components/_definition-list.scss +178 -0
  265. package/scss/components/_flipcard.scss +8 -3
  266. package/scss/components/_form-theme.scss +106 -95
  267. package/scss/components/_headline-label.scss +83 -0
  268. package/scss/components/_hero.scss +3 -10
  269. package/scss/components/_index.scss +79 -0
  270. package/scss/components/_menu-stack.scss +87 -23
  271. package/scss/components/_modal.scss +51 -23
  272. package/scss/components/_nav-strip.scss +2 -0
  273. package/scss/components/_overlay-section.scss +2 -5
  274. package/scss/components/_panel.scss +246 -0
  275. package/scss/components/_popover.scss +139 -38
  276. package/scss/components/_progress-bar.scss +260 -0
  277. package/scss/components/_progress-circle.scss +175 -0
  278. package/scss/components/_pull-quote.scss +1 -1
  279. package/scss/components/_rail.scss +127 -0
  280. package/scss/components/_ratio-box.scss +2 -5
  281. package/scss/components/_rule.scss +1 -0
  282. package/scss/components/_scroll-slider.scss +1 -5
  283. package/scss/components/_skeleton.scss +126 -0
  284. package/scss/components/_slider.scss +49 -72
  285. package/scss/components/_spoke-spinner.scss +2 -2
  286. package/scss/components/_sticky-list.scss +206 -0
  287. package/scss/components/_tabs.scss +22 -4
  288. package/scss/components/_tag.scss +49 -7
  289. package/scss/components/_vignette.scss +2 -5
  290. package/scss/components/_wysiwyg.scss +21 -13
  291. package/scss/helpers/_display.scss +15 -18
  292. package/scss/helpers/_print.scss +12 -7
  293. package/scss/helpers/_utilities.scss +62 -34
  294. package/types/events/index.d.ts +10 -1
  295. package/types/events/index.d.ts.map +1 -1
  296. package/types/index.d.ts +1 -0
  297. package/types/settings.d.ts +70 -0
  298. package/types/settings.d.ts.map +1 -0
  299. package/types/ui/breakpoints.d.ts +14 -14
  300. package/types/ui/breakpoints.d.ts.map +1 -1
  301. package/types/ui/collapsible.d.ts.map +1 -1
  302. package/types/ui/details-group.d.ts +38 -0
  303. package/types/ui/details-group.d.ts.map +1 -0
  304. package/types/ui/dialog.d.ts +20 -14
  305. package/types/ui/dialog.d.ts.map +1 -1
  306. package/types/ui/flipcard.d.ts +16 -10
  307. package/types/ui/flipcard.d.ts.map +1 -1
  308. package/types/ui/grid.d.ts +4 -6
  309. package/types/ui/grid.d.ts.map +1 -1
  310. package/types/ui/index.d.ts +1 -0
  311. package/types/ui/modal-builder.d.ts +116 -11
  312. package/types/ui/modal-builder.d.ts.map +1 -1
  313. package/types/ui/overflow-scroller.d.ts +2 -2
  314. package/types/ui/overflow-scroller.d.ts.map +1 -1
  315. package/types/ui/popover.d.ts +6 -7
  316. package/types/ui/popover.d.ts.map +1 -1
  317. package/types/ui/print.d.ts +0 -4
  318. package/types/ui/print.d.ts.map +1 -1
  319. package/types/ui/programmatic-modal.d.ts.map +1 -1
  320. package/types/ui/proxy-click.d.ts +19 -3
  321. package/types/ui/proxy-click.d.ts.map +1 -1
  322. package/types/ui/resizer.d.ts +116 -16
  323. package/types/ui/resizer.d.ts.map +1 -1
  324. package/types/ui/scroll-slider.d.ts +5 -7
  325. package/types/ui/scroll-slider.d.ts.map +1 -1
  326. package/types/ui/scrollpoint.d.ts +3 -8
  327. package/types/ui/scrollpoint.d.ts.map +1 -1
  328. package/types/ui/slider.d.ts +33 -14
  329. package/types/ui/slider.d.ts.map +1 -1
  330. package/types/ui/tabs.d.ts +6 -8
  331. package/types/ui/tabs.d.ts.map +1 -1
  332. package/types/ui/theme-toggle.d.ts +51 -7
  333. package/types/ui/theme-toggle.d.ts.map +1 -1
  334. package/types/ui/tooltip.d.ts +3 -5
  335. package/types/ui/tooltip.d.ts.map +1 -1
  336. package/types/utils/css.d.ts +11 -0
  337. package/types/utils/css.d.ts.map +1 -0
  338. package/types/utils/dom.d.ts +12 -32
  339. package/types/utils/dom.d.ts.map +1 -1
  340. package/types/utils/font-awesome.d.ts +5 -0
  341. package/types/utils/font-awesome.d.ts.map +1 -0
  342. package/types/utils/index.d.ts +1 -0
  343. package/types/utils/system.d.ts +113 -0
  344. package/types/utils/system.d.ts.map +1 -0
@@ -0,0 +1,260 @@
1
+ ////
2
+ /// @group progress-bar
3
+ /// Groups a set of buttons
4
+ ////
5
+
6
+ @use "sass:map";
7
+ @use "sass:meta";
8
+ @use "sass:math";
9
+
10
+ @use "../selector";
11
+ @use "../utils";
12
+ @use "../color";
13
+ @use "../typography";
14
+
15
+
16
+ // Used for function fallback
17
+ $-fallbacks: (
18
+ "line-height" : (
19
+ "function" : meta.get-function("get", false, "typography"),
20
+ "property" : "line-height-dense"
21
+ ),
22
+ "value-font-weight" : (
23
+ "function" : meta.get-function("get", false, "typography"),
24
+ "property" : "font-weight-light"
25
+ )
26
+ );
27
+
28
+ /// Module Settings
29
+ /// @type Map
30
+ /// @prop {Dimension} header-gap [0.25em] Margin/gap for the icon/value
31
+ /// @prop {List} margin [(0 0 0.5em 0)] Margin for the progress bar.
32
+ /// @prop {Boolean} line-height [true] Line height for the progress bar. If true, falls back to typography's `line-height-dense`.
33
+ /// @prop {Color} value-color ["type-tertiary"] Color of the value text.
34
+ /// @prop {Dimension} value-margin [0.5em] Margin for the value text.
35
+ /// @prop {Boolean} value-font-weight [true] Font weight for the value text. If true, falls back to typography's `font-weight-light`.
36
+ /// @prop {Dimension} value-margin-deficit [0.3em] Margin for the deficit value text.
37
+ /// @prop {Color} value-color-deficit ["danger"] Color of the deficit value text.
38
+ /// @prop {Dimension} bar-height [12px] Height of the progress bar.
39
+ /// @prop {Color} bar-color [rgb(80, 80, 171)] Color of the progress bar.
40
+ /// @prop {Color} bar-color-deficit ["danger"] Color of the deficit portion of the progress bar.
41
+ /// @prop {Color} icon-color ["type-tertiary"] Color of the icon.
42
+ /// @prop {Color} icon-color-deficit ["danger"] Color of the icon in a deficit state.
43
+ /// @prop {Color} track-color [#ccc] Color of the progress bar track.
44
+ /// @prop {List} track-margin [(0.1em 0)] Margin for the progress bar track.
45
+ /// @prop {Time} animation-duration [200ms] Duration of the width transition animation.
46
+ /// @prop {CssValue} animation-timing [ease] Timing function for the width transition animation.
47
+ /// @prop {Time} animation-initial-duration [500ms] Duration of the initial fill animation.
48
+ /// @prop {CssValue} animation-initial-timing [ease-in] Timing function for the initial fill animation.
49
+ /// @prop {Time} animation-indeterminate-duration [2.5s] Duration of the indeterminate loading animation.
50
+
51
+ $config: (
52
+ "margin" : (0 0 0.5em 0),
53
+ "header-gap" : 0.25em,
54
+ "line-height" : true,
55
+ "value-color" : "type-tertiary",
56
+ "value-margin" : 0.5em,
57
+ "value-font-weight" : true,
58
+ "value-margin-deficit" : 0.3em,
59
+ "value-color-deficit" : "danger",
60
+ "bar-height" : 12px,
61
+ "bar-color" : "indicator",
62
+ "bar-color-deficit" : "danger",
63
+ "icon-color" : "type-tertiary",
64
+ "icon-color-deficit" : "danger",
65
+ "track-color" : "placeholder-background-alt",
66
+ "track-margin" : (0.1em 0),
67
+ "animation-duration" : 200ms,
68
+ "animation-timing" : ease,
69
+ "animation-initial-duration" : 500ms,
70
+ "animation-initial-timing" : ease-in,
71
+ "animation-indeterminate-duration" : 2.5s
72
+ ) !default;
73
+
74
+ /// @type Map
75
+ /// This is the map of styles (variations in progress bar types)
76
+ /// - Each style becomes the modifier and accepts ("bar-color", "bar-height", "track-color")
77
+ /// - Use this to match whatever progress system(s) your creating
78
+ $styles: (
79
+ "positive" : (
80
+ "bar-color" : "success",
81
+ "icon-color" : "success"
82
+ ),
83
+ "negative" : (
84
+ "bar-color" : "danger",
85
+ "icon-color" : "danger"
86
+ ),
87
+ "small" : (
88
+ "bar-height" : 8px
89
+ ),
90
+ "loader" : (
91
+ "bar-height" : 4px,
92
+ "track-color" : transparent
93
+ )
94
+ ) !default;
95
+
96
+ /// Change modules $config
97
+ /// @param {Map} $changes Map of changes
98
+ /// @example scss
99
+ /// @include ulu.component-progress-bar-set(( "property" : value ));
100
+
101
+ @mixin set($changes) {
102
+ $config: map.merge($config, $changes) !global;
103
+ }
104
+
105
+ /// Change modules $config
106
+ /// @param {Map} $changes Map of changes
107
+ /// @example scss
108
+ /// @include ulu.component-progress-bar-set-styles(( "small" : ( "bar-height" : 8px ) ));
109
+
110
+ @mixin set-styles($changes) {
111
+ $styles: map.merge($styles, $changes) !global;
112
+ }
113
+
114
+ /// Get a config option
115
+ /// @param {Map} $name Name of property
116
+ /// @example scss
117
+ /// @include ulu.component-progress-bar-get("property");
118
+
119
+ @function get($name) {
120
+ $value: utils.require-map-get($config, $name, "progress-bar [config]");
121
+ @return utils.function-fallback($name, $value, $-fallbacks);
122
+ }
123
+
124
+ /// Prints component styles
125
+ /// @demo progress-bar
126
+ /// @example scss
127
+ /// @include ulu.component-progress-bar-styles();
128
+
129
+ @mixin styles {
130
+ $prefix: selector.class("progress-bar");
131
+
132
+ #{ $prefix } {
133
+ line-height: get("line-height");
134
+ margin: get("margin");
135
+ }
136
+ #{ $prefix }__header {
137
+ display: flex;
138
+ align-items: flex-end;
139
+ }
140
+ #{ $prefix }__value {
141
+ font-weight: get("value-font-weight");
142
+ color: color.get(get("value-color"));
143
+ }
144
+ #{ $prefix }__icon {
145
+ color: color.get(get("icon-color"));
146
+ }
147
+ #{ $prefix }__icon,
148
+ #{ $prefix }__header #{ $prefix }__value {
149
+ margin-left: auto;
150
+ padding-left: get("header-gap");
151
+ }
152
+
153
+ #{ $prefix }__track {
154
+ position: relative; // For indeterminate animation
155
+ margin: get("track-margin");
156
+ display: flex;
157
+ width: 100%;
158
+ height: get("bar-height");
159
+ overflow: hidden;
160
+ background-color: color.get(get("track-color"));
161
+ }
162
+ #{ $prefix }__bar {
163
+ display: flex;
164
+ height: 100%;
165
+ // This is the animation when the component is living in the page
166
+ transition: width get("animation-duration") get("animation-timing");
167
+ // This is the initial animation of the bar within itself (ie. filling up)
168
+ &:before {
169
+ content: '';
170
+ display: block;
171
+ width: 100%;
172
+ background-color: color.get(get("bar-color"));
173
+ transform-origin: left center;
174
+ animation: ulu-progress-bar get("animation-initial-duration") forwards get("animation-initial-timing");
175
+ }
176
+ }
177
+ #{ $prefix }--deficit {
178
+ #{ $prefix }__icon {
179
+ color: color.get(get("icon-color-deficit"));
180
+ }
181
+ }
182
+ #{ $prefix }__bar--deficit {
183
+ align-items: flex-end;
184
+ margin-left: auto;
185
+ background-color: color.get(get("bar-color-deficit"));
186
+ }
187
+ #{ $prefix }__values {
188
+ display: flex;
189
+ }
190
+ #{ $prefix }__values #{ $prefix }__value:not(:last-child) {
191
+ margin-right: get("value-margin");
192
+ }
193
+ #{ $prefix }__value--deficit {
194
+ margin-left: auto;
195
+ margin-right: get("value-margin-deficit");
196
+ color: color.get(get("value-color-deficit"));
197
+ & + #{ $prefix }__value--total {
198
+ margin-left: 0;
199
+ }
200
+ }
201
+ #{ $prefix }__value--total {
202
+ margin-left: auto;
203
+ margin-right: 0;
204
+ }
205
+
206
+ @each $name, $props in $styles {
207
+ #{ $prefix }--#{ $name } {
208
+ #{ $prefix }__track {
209
+ height: map.get($props, "bar-height");
210
+ }
211
+ #{ $prefix }__bar:before {
212
+ background-color: color.get(map.get($props, "bar-color"));
213
+ }
214
+ #{ $prefix }__track {
215
+ background-color: color.get(map.get($props, "track-color"));
216
+ }
217
+ #{ $prefix }__icon {
218
+ color: color.get(map.get($props, "icon-color"));
219
+ }
220
+ }
221
+ }
222
+
223
+
224
+ // For Site Loading (Async Content, not charting/visualization)
225
+ #{ $prefix }--indeterminate {
226
+ #{ $prefix }__bar {
227
+ position: absolute;
228
+ top: 0;
229
+ left: 0;
230
+ width: 30%;
231
+ animation: ulu-progress-bar-indeterminate get("animation-indeterminate-duration") linear infinite;
232
+ }
233
+ // &#{ $prefix }--loaded {
234
+ // #{ $prefix }__bar {
235
+ // display: none;
236
+ // }
237
+ // }
238
+ }
239
+
240
+ @keyframes ulu-progress-bar {
241
+ from {
242
+ transform: scaleX(0);
243
+ }
244
+ to {
245
+ transform: scaleX(1);
246
+ }
247
+ }
248
+
249
+ @keyframes ulu-progress-bar-indeterminate {
250
+ 0% {
251
+ left: -100%;
252
+ }
253
+ 50% {
254
+ left: 100%;
255
+ }
256
+ 100% {
257
+ left: -100%;
258
+ }
259
+ }
260
+ }
@@ -0,0 +1,175 @@
1
+ ////
2
+ /// @group progress-circle
3
+ /// A circular progress indicator.
4
+ ////
5
+
6
+ @use "sass:map";
7
+ @use "sass:math";
8
+ @use "../selector";
9
+ @use "../utils";
10
+ @use "../color";
11
+
12
+ /// Module Settings
13
+ /// @type Map
14
+ /// @prop {Dimension} size [100px] The width and height of the chart.
15
+ /// @prop {Number} viewbox-size [32] The size of the SVG viewbox. Used to calculate mask radius.
16
+ /// @prop {Number} stroke-width [10] The width of the progress circle's stroke.
17
+ /// @prop {Color} color-track ["placeholder-background-alt"] The color of the inactive track. Can be a theme color name or a CSS variable.
18
+ /// @prop {Color} color-progress ["indicator"] The color of the progress stroke in a neutral state. Can be a theme color name or a CSS variable.
19
+ /// @prop {Color} color-mask [white] The color of the center mask that creates the donut hole. Can be a theme color name or a CSS variable.
20
+ /// @prop {Color} color-mask-pie [rgba(255, 255, 255, 0.5)] The mask color when using the pie style modifier.
21
+ /// @prop {Color} value-color ["type"] The theme color name for the percentage text inside the circle.
22
+ /// @prop {Color} value-color-outside ["type-tertiary"] The theme color name for the percentage text when displayed outside the circle.
23
+ /// @prop {Dimension | List} value-margin-outside [(0.1em 0.35em)] The margin for the outside value text.
24
+ /// @prop {Time} transition-duration [300ms] The duration for the stroke transition animation (when the component is updating already in the page)
25
+ /// @prop {Time} animation-duration [1s] The duration for the stroke animation (relies on template having a custom build animation per pie based on dash array). This is used for initial animations
26
+ /// @prop {Time} animation-delay [2s] The delay for the animation
27
+ /// @prop {Time} animation-timing [ease-in] Timing function for animation
28
+ /// @prop {Map} status-colors A map of status names to their corresponding colors (e.g., "low": "warning").
29
+ /// @prop {Map} sizes A map of size variations. Each key is a modifier name (e.g., "small") and the value is a map with `size` and `stroke-width` properties.
30
+
31
+ $config: (
32
+ "size": 100px,
33
+ "viewbox-size": 32,
34
+ "stroke-width": 10,
35
+ "color-track": "placeholder-background-alt",
36
+ "color-progress": "indicator",
37
+ "color-mask": white,
38
+ "color-mask-pie": rgba(255, 255, 255, 0.4),
39
+ "value-color": "type",
40
+ "value-color-outside": "type-tertiary",
41
+ "value-margin-outside" : (0.1em 0.35em),
42
+ "transition-duration" : 300ms,
43
+ "animation-duration" : 1s,
44
+ "animation-delay" : 2s,
45
+ "animation-timing" : ease-in,
46
+ "status-colors": (
47
+ "low": "danger",
48
+ "incomplete": "warning",
49
+ "complete": "success",
50
+ ),
51
+ "sizes": (
52
+ "small" : (
53
+ "size": 40px,
54
+ "stroke-width": 13,
55
+ )
56
+ )
57
+ ) !default;
58
+
59
+ /// Change modules $config
60
+ /// @param {Map} $changes Map of changes
61
+ @mixin set($changes) {
62
+ $config: map.merge($config, $changes) !global;
63
+ }
64
+
65
+ /// Get a config option
66
+ /// @param {String} $name Name of property
67
+ @function get($name) {
68
+ @return utils.require-map-get($config, $name, "progress-circle [config]");
69
+ }
70
+
71
+ /// Prints component styles
72
+ /// @demo progress-circle
73
+ @mixin styles {
74
+ $prefix: selector.class("progress-circle");
75
+
76
+ #{ $prefix } {
77
+ display: flex;
78
+ flex-direction: column;
79
+ align-items: center;
80
+ text-align: center;
81
+ --ulu-progress-circle-stroke-width: #{ get("stroke-width") };
82
+ }
83
+ #{ $prefix }__chart {
84
+ position: relative;
85
+ line-height: 1;
86
+ }
87
+ #{ $prefix }__chart-value {
88
+ position: absolute;
89
+ top: 50%;
90
+ left: 50%;
91
+ transform: translate(-50%, -50%);
92
+ color: color.get(get("value-color"));
93
+ text-shadow: none;
94
+ }
95
+ #{ $prefix }__chart-svg {
96
+ width: get("size");
97
+ height: get("size");
98
+ transform: rotate(-90deg);
99
+ border-radius: 50%;
100
+ }
101
+ #{ $prefix }__chart-track {
102
+ fill: transparent;
103
+ stroke: color.get(get("color-track"));
104
+ stroke-width: var(--ulu-progress-circle-stroke-width);
105
+ }
106
+ #{ $prefix }__chart-pie {
107
+ fill: transparent;
108
+ stroke: color.get(get("color-progress"));
109
+ stroke-width: var(--ulu-progress-circle-stroke-width);
110
+ stroke-dasharray: 0 100;
111
+ will-change: stroke-dasharray;
112
+ // If value is changing
113
+ transition: stroke get("transition-duration");
114
+ // For in template composed initial animation
115
+ animation-duration: get("animation-duration");
116
+ animation-delay: get("animation-delay");
117
+ animation-timing-function: get("animation-timing");
118
+ }
119
+ #{ $prefix }__chart-mask {
120
+ fill: color.get(get("color-mask"));
121
+ r: calc( (get("viewbox-size") / 2) - (var(--ulu-progress-circle-stroke-width) / 2) );
122
+ }
123
+ #{ $prefix }__value {
124
+ color: color.get(get("value-color-outside"));
125
+ margin: get("value-margin-outside");
126
+ font-weight: normal;
127
+ line-height: 1;
128
+ }
129
+
130
+ #{ $prefix }--outside {
131
+ flex-direction: row;
132
+ justify-content: center;
133
+ flex-wrap: wrap;
134
+ }
135
+ #{ $prefix }--outside-below {
136
+ display: block;
137
+ }
138
+ #{ $prefix }--pie {
139
+ // Note do not adjust the custom property for this since we want the mask to still be sized correctly
140
+ #{ $prefix }__chart-pie {
141
+ stroke-width: get("viewbox-size"); // As large as the svg (so it fills the circle)
142
+ }
143
+ #{ $prefix }__chart-track {
144
+ fill: color.get(get("color-track"));
145
+ }
146
+ #{ $prefix }__chart-mask {
147
+ fill: color.get(get("color-mask-pie"));
148
+ }
149
+ }
150
+ #{ $prefix }--no-mask {
151
+ #{ $prefix }__chart-mask {
152
+ display: none;
153
+ }
154
+ }
155
+
156
+
157
+ @each $name, $props in get("sizes") {
158
+ #{ $prefix }--#{ $name } {
159
+ --ulu-progress-circle-stroke-width: #{map.get($props, "stroke-width")};
160
+ #{ $prefix }__chart-svg {
161
+ width: map.get($props, "size");
162
+ height: map.get($props, "size");
163
+ }
164
+ }
165
+ }
166
+ @each $name, $color in get("status-colors") {
167
+ #{ $prefix }--#{ $name } {
168
+ #{ $prefix }__chart-pie {
169
+ stroke: color.get($color);
170
+ }
171
+ }
172
+ }
173
+
174
+
175
+ }
@@ -83,7 +83,7 @@ $config: (
83
83
  #{ $prefix }__body {
84
84
  line-height: get("body-line-height");
85
85
  @if (get("quote-mark-enabled")) {
86
- &:before {
86
+ &::before {
87
87
  display: block;
88
88
  position: relative;
89
89
  // content: open-quote;
@@ -0,0 +1,127 @@
1
+ ////
2
+ /// @group rail
3
+ ////
4
+ /// A horizontal, flexible container for arranging diverse inline elements.
5
+ /// It provides a consistent layout for icons, labels, buttons, or other
6
+ /// modular components, aligning content to either end or centering it.
7
+ /// Item spacing is controlled via margins, allowing for individual item gap adjustments.
8
+
9
+ @use "sass:map";
10
+ @use "sass:meta";
11
+ @use "sass:math";
12
+
13
+ @use "../utils";
14
+ @use "../color";
15
+ @use "../selector";
16
+ @use "../layout";
17
+ @use "../element";
18
+
19
+ // Used for function fallback
20
+ $-fallbacks: (
21
+ "separator" : (
22
+ "function" : meta.get-function("get-rule-style", false, "element"),
23
+ "arguments" : ("light",)
24
+ ),
25
+ );
26
+
27
+
28
+ /// Module Settings
29
+ /// @type Map
30
+ /// @prop {Dimension} gap [1em] The default space between items in the rail
31
+ /// @prop {Map} gap-modifiers [("small" : 0.5em, "large" : 2em )] Alternate gaps (use child modifiers .rail__item--gap-[name], these apply gap changes between the item and the item before it
32
+ /// @prop {Dimension} margin-bottom [1em] The default space after rail
33
+ /// @prop {CssValue} separator [true] Pass border property for separator, defaults to element rule style light
34
+
35
+ $config: (
36
+ "gap" : 1em,
37
+ "margin-bottom" : 1.5em,
38
+ "separator" : true,
39
+ "gap-modifiers": (
40
+ "small" : 0.5em,
41
+ "none" : 0,
42
+ "large" : 2em
43
+ ),
44
+ "rule-size" : 1px,
45
+ "rule-color" : "rule",
46
+ "rule-margin" : 1em
47
+ ) !default;
48
+
49
+ /// Change modules $config
50
+ /// @param {Map} $changes Map of changes
51
+ /// @example scss
52
+ /// @include ulu.component-rail-set(( "gap" : 1.5em ));
53
+
54
+ @mixin set($changes) {
55
+ $config: map.merge($config, $changes) !global;
56
+ }
57
+
58
+ /// Get a config option
59
+ /// @param {Map} $name Name of property
60
+ /// @example scss
61
+ /// @include ulu.component-rail-get("gap");
62
+
63
+ @function get($name) {
64
+ $value: utils.require-map-get($config, $name, "rail [config]");
65
+ @return utils.function-fallback($name, $value, $-fallbacks);
66
+ }
67
+
68
+ /// Prints component styles
69
+ /// @example scss
70
+ /// @include ulu.component-rail-styles();
71
+
72
+ @mixin styles {
73
+ $prefix: selector.class("rail");
74
+ $gap: get("gap");
75
+
76
+ #{ $prefix } {
77
+ display: flex;
78
+ align-items: center;
79
+ flex-wrap: wrap;
80
+ gap: $gap;
81
+ margin-bottom: get("margin-bottom");
82
+ max-width: 100%;
83
+ }
84
+ #{ $prefix }--rule {
85
+ border-bottom: get("rule-size") solid color.get(get("rule-color"));
86
+ padding-bottom: get("rule-margin");
87
+ }
88
+
89
+ // Modifiers
90
+ // - Note: Originally had mods for each type of flexbox layout
91
+ // simplified to just agnostic naming and only what is currently needed
92
+ // can update this in the future to add more alignment options if
93
+ // use cases come up
94
+
95
+ #{ $prefix }--justified {
96
+ justify-content: space-between;
97
+ }
98
+ #{ $prefix }--baseline {
99
+ align-items: baseline;
100
+ }
101
+ #{ $prefix }--nowrap {
102
+ flex-wrap: nowrap;
103
+ overflow-x: auto;
104
+ }
105
+
106
+ // Item level modifiers
107
+ #{ $prefix }__item--pull {
108
+ margin-inline-start: auto;
109
+ }
110
+ #{ $prefix }__item--separator {
111
+ border-inline-start: get("separator");
112
+ padding-inline-start: $gap;
113
+ }
114
+
115
+ @each $name, $value in get("gap-modifiers") {
116
+
117
+ $calc-gap: $value - $gap;
118
+
119
+ #{ $prefix }__item--gap-#{ $name } {
120
+ margin-inline-start: $calc-gap;
121
+
122
+ &#{ $prefix }__item--separator {
123
+ padding-inline-start: $value;
124
+ }
125
+ }
126
+ }
127
+ }
@@ -5,6 +5,7 @@
5
5
 
6
6
  @use "sass:map";
7
7
  @use "../utils";
8
+ @use "../layout";
8
9
 
9
10
  /// Module Settings
10
11
  /// @type Map
@@ -49,11 +50,7 @@ $config: (
49
50
  padding: get("size") 0 0 0;
50
51
  }
51
52
  .ratio-box__content {
52
- position: absolute;
53
- top: 0;
54
- left: 0;
55
- width: 100%;
56
- height: 100%;
53
+ @include layout.absolute-fill(true);
57
54
  border: 0;
58
55
  }
59
56
  @each $name, $size in get("sizes") {
@@ -82,6 +82,7 @@ $config: (
82
82
  width: $short-width;
83
83
  max-width: 100%;
84
84
  border-bottom-width: get("short-border-width");
85
+ display: inline-block;
85
86
  }
86
87
  @if get("short-modifiers") {
87
88
  @each $mod, $opts in get("short-modifiers") {
@@ -22,8 +22,6 @@
22
22
  /// @prop {Dimension} padding-bottom [0]
23
23
  /// @prop {Dimension} padding-top [0]
24
24
  /// @prop {String} prefix ["scroll-slide"]
25
- /// @prop {Color} button-background-color [white]
26
- /// @prop {Color} button-background-color-hover [white]
27
25
  /// @prop {CssValue} button-border [2px solid white]
28
26
  /// @prop {Color} button-border-color-hover [white]
29
27
  /// @prop {Dimension} button-border-radius [50%]
@@ -46,8 +44,6 @@ $config: (
46
44
  "padding-bottom" : 0,
47
45
  "padding-top" : 0,
48
46
  "prefix": "scroll-slider",
49
- "button-background-color" : white,
50
- "button-background-color-hover" : white,
51
47
  "button-border" : 2px solid white,
52
48
  "button-border-color-hover" : white,
53
49
  "button-border-radius" : 50%,
@@ -124,7 +120,7 @@ $config: (
124
120
  @include layout.match-container-margin("scroll-padding-left", get("container"));
125
121
  // padding: 1rem;
126
122
  // Add space to end of list
127
- // &:after {
123
+ // &::after {
128
124
  // content: "\00a0";
129
125
  // display: block;
130
126
  // width: 1rem;