@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
@@ -69,6 +69,8 @@ $config: (
69
69
  "ul-list-style-type": disc,
70
70
  "ul-list-style-type-2": circle,
71
71
  "ul-list-style-type-3": square,
72
+ "cap-color" : "accent",
73
+ "cap-size" : 5px
72
74
  ) !default;
73
75
 
74
76
  /// Rule style map, redefine defaults or add to
@@ -114,18 +116,35 @@ $rule-margins: (
114
116
 
115
117
  /// Sets rule margins
116
118
  /// @param {Map} $changes Map of changes
119
+ /// @param {String} $merge-mode Merge mode see utils.map-merge() [null|"deep"|"overwrite"]
117
120
 
118
- @mixin set-rule-margins($changes) {
119
- $rule-margins: map.merge($rule-margins, $changes) !global;
121
+ @mixin set-rule-margins($changes, $merge-mode: null) {
122
+ $rule-margins: utils.map-merge($rule-margins, $changes, $merge-mode) !global;
120
123
  }
121
124
 
122
125
  /// Get a rule style
123
126
  /// @param {Map} $changes Map of changes
127
+ /// @return {CssValue} Rule style (css border value)
124
128
 
125
129
  @function get-rule-style($name: "default") {
126
130
  @return utils.require-map-get($rule-styles, $name, "element [rule style]");
127
131
  }
128
132
 
133
+ /// Get an optional rule style (which is a border)
134
+ /// - If the value is a string we return the rule style, else we return the value
135
+ /// - Used for things where configuration for say a border can be a user defined border or a string (they want an existing rule-style)
136
+ /// - Except when passing "none"/none this will return as-is (since it's a border property)
137
+ /// @param {*} $value The value to check
138
+ /// @return {*} Rule style if string, else value
139
+
140
+ @function get-optional-rule-style($value) {
141
+ @if (meta.type-of($value) == "string") {
142
+ @return get-rule-style($value);
143
+ } @else {
144
+ @return $value;
145
+ }
146
+ }
147
+
129
148
  /// Sets rule margin
130
149
  /// @param {Map} $changes Map of changes
131
150
 
@@ -290,4 +309,107 @@ $rule-margins: (
290
309
  white-space: normal;
291
310
  width: auto;
292
311
  }
312
+ }
313
+
314
+
315
+ /// Layout utility to add a colored bar (cap) to an element's edge, positioned over the element and its border
316
+ /// - You need to set position (relative, fixed) on parent
317
+ /// @param {String} $side The side to place the cap (top, bottom, left, right)
318
+ /// @param {Map} $options Options for the appearance of the cap
319
+ /// @param {Color} $options.color [$config.cap-color] The color for the end cap
320
+ /// @param {Number} $options.size [$config.cap-size] The width/height of the cap
321
+ /// @param {Number} $options.offset [0] A positive number of the amount the cap should extend outside the box (to account for border-width)
322
+ /// @param {Number} $options.border-radius [null] An optional border-radius to apply to the outward-facing edges of the cap (used to match parent)
323
+ /// @param {Boolean} $before [true] Whether or not to use the ::before element (if not uses :after)
324
+
325
+ @mixin cap(
326
+ $side,
327
+ $options: (),
328
+ $before: true,
329
+ ) {
330
+ $defaults: (
331
+ "color" : get("cap-color"),
332
+ "size" : get("cap-size"),
333
+ "offset" : 0,
334
+ "color-hover" : null,
335
+ "border-radius" : null,
336
+ "padding-adjust" : null,
337
+ );
338
+ $config: map.merge($defaults, $options);
339
+ $element: if($before, "::before", "::after");
340
+
341
+ &#{ $element } {
342
+ content: "";
343
+ position: absolute;
344
+ display: block;
345
+ }
346
+
347
+ @include cap-appearance($side, $config, $before);
348
+ }
349
+
350
+
351
+
352
+ /// Provides the appearance styles for a given cap
353
+ /// - If an option is not provided it won't be output
354
+ /// - This is used to update the caps styling (states, modifiers, etc)
355
+ /// @param {String} $side The side to place the cap (top, bottom, left, right)
356
+ /// @param {Map} $options Options for the appearance of the cap (see options from element.cap)
357
+ /// @param {Boolean} $before Whether or not to use the ::before element (if not uses :after)
358
+
359
+ @mixin cap-appearance(
360
+ $side,
361
+ $options: (),
362
+ $before: true
363
+ ) {
364
+ $element: if($before, "::before", "::after");
365
+ $size: map.get($options, "size");
366
+ $offset: map.get($options, "offset");
367
+ $border-radius: map.get($options, "border-radius");
368
+ $padding-adjust: map.get($options, "padding-adjust");
369
+
370
+ $end: $side == "top" or $side == "bottom";
371
+ $position: if($offset, 0 - $offset, null);
372
+
373
+ @if ($padding-adjust and $size) {
374
+ padding-#{ $side }: calc($padding-adjust + $size);
375
+ }
376
+
377
+ &#{ $element } {
378
+ background-color: color.get(map.get($options, "color"));
379
+ #{ $side }: $position;
380
+
381
+ @if $end {
382
+ left: $position;
383
+ right: $position;
384
+ height: $size;
385
+ } @else {
386
+ top: $position;
387
+ bottom: $position;
388
+ width: $size;
389
+ }
390
+
391
+ @if $border-radius {
392
+ @if $end {
393
+ border-#{ $side }-left-radius: $border-radius;
394
+ border-#{ $side }-right-radius: $border-radius;
395
+ } @else {
396
+ border-top-#{ $side }-radius: $border-radius;
397
+ border-bottom-#{ $side }-radius: $border-radius;
398
+ }
399
+ }
400
+ }
401
+ }
402
+
403
+ /// Add backdrop-filter blur
404
+ /// @param {CssUnit} $amount [get("backdrop-blur")] Amount to blur
405
+ ///
406
+ @mixin backdrop-filter-blur($amount: get("backdrop-blur")) {
407
+ backdrop-filter: blur($amount);
408
+ }
409
+
410
+ /// Accessibly hide focus ring while keeping it when it's required
411
+ @mixin focus-ring-required-only() {
412
+ &:focus:not(:focus-visible) {
413
+ outline: none;
414
+ }
293
415
  }
package/scss/_layout.scss CHANGED
@@ -7,6 +7,7 @@
7
7
  @use "sass:meta";
8
8
  @use "utils";
9
9
  @use "breakpoint";
10
+ @use "color";
10
11
 
11
12
  /// Module Settings
12
13
  /// @type Map
@@ -215,10 +216,7 @@ $containers: (
215
216
  $breakpoints: map.get($container, "breakpoints");
216
217
 
217
218
  $width: map.get($container, "width");
218
- // @debug $specific-breakpoint;
219
- // @if $specific-breakpoint {
220
- // @debug $container;
221
- // }
219
+
222
220
  @if ($width == null) {
223
221
  $width: 100%;
224
222
  }
@@ -243,14 +241,14 @@ $containers: (
243
241
  /// Prints clearfix styles
244
242
 
245
243
  @mixin clearfix() {
246
- &:before,
247
- &:after {
244
+ &::before,
245
+ &::after {
248
246
  content: "";
249
247
  display: table;
250
248
  flex-basis: 0; // Flexbox, clear fix for pseudo elements in Safari
251
249
  order: 1;
252
250
  }
253
- &:after {
251
+ &::after {
254
252
  clear: both;
255
253
  }
256
254
  }
@@ -267,6 +265,7 @@ $containers: (
267
265
  /// Layout utility for absolute (zero on all sides)
268
266
  /// - Probably helpful for gzip if we use this when these exact styles are needed
269
267
  /// so they are identical for compression
268
+ /// @param {Boolean} $set-size [false] Whether or not to use sizes to fill the space (height/width 100%) versus setting bottom and right to 0)
270
269
  @mixin absolute-fill($set-size: false) {
271
270
  position: absolute;
272
271
  top: 0;
@@ -278,4 +277,4 @@ $containers: (
278
277
  width: 100%;
279
278
  height: 100%;
280
279
  }
281
- }
280
+ }
@@ -35,6 +35,7 @@
35
35
  /// @prop {Number} line-height-dense [1.3] Default dense line height
36
36
  /// @prop {Number} line-height-densest [1.1]
37
37
  /// @prop {Number} line-height-spaced [1.75]
38
+ /// @prop {CssUnit} space-size [0.38em] The size of a space for the site's typography (used when creating faux spaces, like for .flow-inline utility)
38
39
 
39
40
  $config: (
40
41
  "letter-spacing-uppercase": 0.04em,
@@ -61,6 +62,7 @@ $config: (
61
62
  "max-width": 60em,
62
63
  "max-width-large": 75em,
63
64
  "max-width-small": 45em,
65
+ "space-size": 0.38em
64
66
  ) !default;
65
67
 
66
68
  /// Change modules $config
@@ -304,6 +306,19 @@ $sizes: get-default-sizes() !default;
304
306
  font-size: calc(#{ $font-size } + #{ $amount });
305
307
  }
306
308
 
309
+
310
+ /// Output an optional typography size
311
+ /// - If $name is not a string (ie. null, etc) no size will be output
312
+ /// - If the size is not defined no size will be output
313
+ /// @param {*} $name Size name
314
+ /// @param {*} $args... All args are passed as-is to size() mixin
315
+
316
+ @mixin optional-size($name, $changes: false, $only-font-size: null) {
317
+ @if (meta.type-of($name) == "string" and has-size($name)) {
318
+ @include size($name, $changes, $only-font-size);
319
+ }
320
+ }
321
+
307
322
  /// Print a typography size (font-size, line-height)
308
323
  /// @param {String} $nameOrMap Name to retrieve from sizes map or a unique size map that follows the API
309
324
  /// @param {Map} $changes Modifications to be merged into size before output
package/scss/_units.scss CHANGED
@@ -27,13 +27,14 @@ $config: (
27
27
 
28
28
  /// Update the units config
29
29
  /// @param {Map} $changes A map to merge into the color palette
30
+ /// @param {String} $merge-mode Merge mode see utils.map-merge() [null|"deep"|"overwrite"]
30
31
  /// @example scss Setting the error and type color
31
32
  /// @include ulu.units-set((
32
33
  /// "default" : 1.5em
33
34
  /// ));
34
35
 
35
- @mixin set($changes) {
36
- $config: map.merge($config, $changes) !global;
36
+ @mixin set($changes, $merge-mode: null) {
37
+ $config: utils.map-merge($config, $changes, $merge-mode) !global;
37
38
  }
38
39
 
39
40
  /// Get a unit by name (preset) or number (multiplier of base)