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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/CHANGELOG.md +669 -0
  2. package/GEMINI.md +9 -0
  3. package/README.dev.md +3 -3
  4. package/README.md +14 -4
  5. package/dist/ulu-frontend.min.css +1 -1
  6. package/dist/ulu-frontend.min.js +36 -29
  7. package/docs-dev/.nojekyll +1 -0
  8. package/docs-dev/assets/main.js +832 -421
  9. package/docs-dev/assets/placeholder/icon-calendar.svg +1 -0
  10. package/docs-dev/assets/placeholder/icon-check.svg +1 -0
  11. package/docs-dev/assets/style.css +629 -233
  12. package/docs-dev/changelog/index.html +7445 -0
  13. package/docs-dev/changelog/updates-and-changes/index.html +5109 -0
  14. package/docs-dev/demos/accordion/index.html +1442 -364
  15. package/docs-dev/demos/badge/index.html +5835 -0
  16. package/docs-dev/demos/badge-stack/index.html +5816 -0
  17. package/docs-dev/demos/basic-hero/index.html +111 -0
  18. package/docs-dev/demos/breadcrumb/index.html +5870 -0
  19. package/docs-dev/demos/breakpoints-manager/index.html +5846 -0
  20. package/docs-dev/demos/button/index.html +1490 -356
  21. package/docs-dev/demos/button-group/index.html +5832 -0
  22. package/docs-dev/demos/button-verbose/index.html +5838 -0
  23. package/docs-dev/demos/callout/index.html +1469 -349
  24. package/docs-dev/demos/captioned-figure/index.html +1446 -353
  25. package/docs-dev/demos/card/index.html +1518 -786
  26. package/docs-dev/demos/card-grid/index.html +5957 -0
  27. package/docs-dev/demos/card-new/index.html +5088 -0
  28. package/docs-dev/demos/card-old/index.html +5223 -0
  29. package/docs-dev/demos/card.1/index.html +5223 -0
  30. package/docs-dev/demos/card.TRASH/index.html +5541 -0
  31. package/docs-dev/demos/counter-list/index.html +5840 -0
  32. package/docs-dev/demos/css-icons/index.html +1466 -350
  33. package/docs-dev/demos/data-grid/index.html +1446 -353
  34. package/docs-dev/demos/data-table/index.html +1621 -395
  35. package/docs-dev/demos/details-group/index.html +5867 -0
  36. package/docs-dev/demos/donut-chart/index.html +5874 -0
  37. package/docs-dev/demos/file-save/index.html +1446 -353
  38. package/docs-dev/demos/flipcard/index.html +1446 -353
  39. package/docs-dev/demos/form-theme/index.html +1453 -360
  40. package/docs-dev/demos/headline-label/index.html +5802 -0
  41. package/docs-dev/demos/hero/index.html +12 -4
  42. package/docs-dev/demos/image-grid/index.html +12 -4
  43. package/docs-dev/demos/index.html +1447 -354
  44. package/docs-dev/demos/list-inline/index.html +1446 -353
  45. package/docs-dev/demos/list-lines/index.html +1446 -353
  46. package/docs-dev/demos/menu-stack/index.html +1550 -389
  47. package/docs-dev/demos/modals/index.html +1616 -400
  48. package/docs-dev/demos/nav-strip/index.html +1446 -353
  49. package/docs-dev/demos/overlay-section/index.html +1532 -369
  50. package/docs-dev/demos/panel/index.html +5862 -0
  51. package/docs-dev/demos/popovers/index.html +1710 -375
  52. package/docs-dev/demos/print/index.html +1446 -353
  53. package/docs-dev/demos/progress-bar/index.html +5964 -0
  54. package/docs-dev/demos/progress-circle/index.html +6137 -0
  55. package/docs-dev/demos/progress-donut/index.html +6107 -0
  56. package/docs-dev/demos/pull-quote/index.html +1446 -353
  57. package/docs-dev/demos/rail/index.html +5910 -0
  58. package/docs-dev/demos/rule/index.html +1455 -350
  59. package/docs-dev/demos/scroll-slider/index.html +72 -106
  60. package/docs-dev/demos/scrollpoints/index.html +1447 -354
  61. package/docs-dev/demos/skeleton/index.html +5858 -0
  62. package/docs-dev/demos/slider/index.html +12 -4
  63. package/docs-dev/demos/spoke-spinner/index.html +1446 -353
  64. package/docs-dev/demos/sticky-list/index.html +5823 -0
  65. package/docs-dev/demos/tabs/index.html +1474 -345
  66. package/docs-dev/demos/tag/index.html +1463 -358
  67. package/docs-dev/demos/theme-toggle/index.html +5879 -0
  68. package/docs-dev/demos/tile-grid-overlay/index.html +12 -4
  69. package/docs-dev/demos/tiles/index.html +1446 -353
  70. package/docs-dev/demos/tooltip/index.html +1446 -353
  71. package/docs-dev/demos/wysiwyg/index.html +5852 -0
  72. package/docs-dev/guide/building-stylesheet/index.html +1446 -353
  73. package/docs-dev/guide/developing-ulu-scss-module/index.html +1446 -353
  74. package/docs-dev/guide/index.html +1446 -353
  75. package/docs-dev/guide/updates-and-changes/index.html +5033 -0
  76. package/docs-dev/index.html +1446 -353
  77. package/docs-dev/javascript/events/index.html +1141 -940
  78. package/docs-dev/javascript/index.html +1446 -353
  79. package/docs-dev/javascript/settings/index.html +5629 -0
  80. package/docs-dev/javascript/ui-breakpoints/index.html +1270 -719
  81. package/docs-dev/javascript/ui-collapsible/index.html +1135 -824
  82. package/docs-dev/javascript/ui-details-group/index.html +5382 -0
  83. package/docs-dev/javascript/ui-dialog/index.html +1167 -841
  84. package/docs-dev/javascript/ui-flipcard/index.html +833 -2058
  85. package/docs-dev/javascript/ui-grid/index.html +835 -1962
  86. package/docs-dev/javascript/ui-modal-builder/index.html +988 -1919
  87. package/docs-dev/javascript/ui-overflow-scroller/index.html +811 -1912
  88. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +1643 -928
  89. package/docs-dev/javascript/ui-page/index.html +1643 -928
  90. package/docs-dev/javascript/ui-popover/index.html +1484 -773
  91. package/docs-dev/javascript/ui-print/index.html +1637 -930
  92. package/docs-dev/javascript/ui-print-details/index.html +1643 -928
  93. package/docs-dev/javascript/ui-programmatic-modal/index.html +1643 -928
  94. package/docs-dev/javascript/ui-proxy-click/index.html +1395 -595
  95. package/docs-dev/javascript/ui-resizer/index.html +1986 -1006
  96. package/docs-dev/javascript/ui-scroll-slider/index.html +1514 -767
  97. package/docs-dev/javascript/ui-scrollpoint/index.html +1649 -941
  98. package/docs-dev/javascript/ui-slider/index.html +1723 -817
  99. package/docs-dev/javascript/ui-tabs/index.html +1537 -859
  100. package/docs-dev/javascript/ui-theme-toggle/index.html +5634 -0
  101. package/docs-dev/javascript/ui-tooltip/index.html +1649 -938
  102. package/docs-dev/javascript/utils-class-logger/index.html +1644 -929
  103. package/docs-dev/javascript/utils-css/index.html +5448 -0
  104. package/docs-dev/javascript/utils-dom/index.html +1320 -685
  105. package/docs-dev/javascript/utils-file-save/index.html +1643 -928
  106. package/docs-dev/javascript/utils-floating-ui/index.html +1643 -928
  107. package/docs-dev/javascript/utils-id/index.html +1643 -928
  108. package/docs-dev/javascript/utils-pause-youtube-video/index.html +1643 -928
  109. package/docs-dev/javascript/utils-system/index.html +5751 -0
  110. package/docs-dev/sass/base/color/index.html +1451 -360
  111. package/docs-dev/sass/base/elements/index.html +1645 -930
  112. package/docs-dev/sass/base/index/index.html +1452 -361
  113. package/docs-dev/sass/base/index.html +1446 -353
  114. package/docs-dev/sass/base/keyframes/index.html +1452 -361
  115. package/docs-dev/sass/base/layout/index.html +1452 -361
  116. package/docs-dev/sass/base/normalize/index.html +1644 -929
  117. package/docs-dev/sass/base/print/index.html +1452 -361
  118. package/docs-dev/sass/base/root/index.html +1455 -364
  119. package/docs-dev/sass/base/typography/index.html +1451 -360
  120. package/docs-dev/sass/components/accordion/index.html +1538 -406
  121. package/docs-dev/sass/components/adaptive-spacing/index.html +1451 -360
  122. package/docs-dev/sass/components/badge/index.html +1468 -359
  123. package/docs-dev/sass/components/badge-stack/index.html +5991 -0
  124. package/docs-dev/sass/components/basic-hero/index.html +5985 -0
  125. package/docs-dev/sass/components/breadcrumb/index.html +6032 -0
  126. package/docs-dev/sass/components/button/index.html +1451 -360
  127. package/docs-dev/sass/components/button-group/index.html +5983 -0
  128. package/docs-dev/sass/components/button-verbose/index.html +1523 -357
  129. package/docs-dev/sass/components/callout/index.html +1572 -422
  130. package/docs-dev/sass/components/captioned-figure/index.html +1591 -385
  131. package/docs-dev/sass/components/card/index.html +1511 -363
  132. package/docs-dev/sass/components/card-grid/index.html +1451 -360
  133. package/docs-dev/sass/components/counter-list/index.html +6067 -0
  134. package/docs-dev/sass/components/css-icon/index.html +1452 -361
  135. package/docs-dev/sass/components/data-grid/index.html +1465 -367
  136. package/docs-dev/sass/components/data-table/index.html +1648 -369
  137. package/docs-dev/sass/components/fill-context/index.html +1451 -360
  138. package/docs-dev/sass/components/flipcard/index.html +1479 -357
  139. package/docs-dev/sass/components/flipcard-grid/index.html +1451 -360
  140. package/docs-dev/sass/components/form-theme/index.html +1652 -566
  141. package/docs-dev/sass/components/headline-label/index.html +6013 -0
  142. package/docs-dev/sass/components/hero/index.html +1497 -358
  143. package/docs-dev/sass/components/horizontal-rule/index.html +1451 -360
  144. package/docs-dev/sass/components/image-grid/index.html +1451 -360
  145. package/docs-dev/sass/components/index/index.html +1466 -362
  146. package/docs-dev/sass/components/index.html +1446 -353
  147. package/docs-dev/sass/components/links/index.html +1451 -360
  148. package/docs-dev/sass/components/list-inline/index.html +1451 -360
  149. package/docs-dev/sass/components/list-lines/index.html +1451 -360
  150. package/docs-dev/sass/components/list-ordered/index.html +1451 -360
  151. package/docs-dev/sass/components/list-unordered/index.html +1451 -360
  152. package/docs-dev/sass/components/menu-stack/index.html +1476 -371
  153. package/docs-dev/sass/components/modal/index.html +1486 -360
  154. package/docs-dev/sass/components/nav-strip/index.html +1459 -368
  155. package/docs-dev/sass/components/overlay-section/index.html +1459 -368
  156. package/docs-dev/sass/components/pager/index.html +1451 -360
  157. package/docs-dev/sass/components/panel/index.html +6213 -0
  158. package/docs-dev/sass/components/placeholder-block/index.html +1451 -360
  159. package/docs-dev/sass/components/popover/index.html +1497 -370
  160. package/docs-dev/sass/components/progress-bar/index.html +6192 -0
  161. package/docs-dev/sass/components/progress-circle/index.html +6084 -0
  162. package/docs-dev/sass/components/pull-quote/index.html +1463 -372
  163. package/docs-dev/sass/components/rail/index.html +6003 -0
  164. package/docs-dev/sass/components/ratio-box/index.html +1459 -368
  165. package/docs-dev/sass/components/rule/index.html +1452 -361
  166. package/docs-dev/sass/components/scroll-slider/index.html +1447 -368
  167. package/docs-dev/sass/components/skeleton/index.html +6041 -0
  168. package/docs-dev/sass/components/skip-link/index.html +1451 -360
  169. package/docs-dev/sass/components/slider/index.html +1491 -412
  170. package/docs-dev/sass/components/spoke-spinner/index.html +1453 -362
  171. package/docs-dev/sass/components/sticky-list/index.html +6203 -0
  172. package/docs-dev/sass/components/table-sticky/index.html +5707 -0
  173. package/docs-dev/sass/components/tabs/index.html +1472 -366
  174. package/docs-dev/sass/components/tag/index.html +1563 -378
  175. package/docs-dev/sass/components/tile-button/index.html +1451 -360
  176. package/docs-dev/sass/components/tile-grid/index.html +1451 -360
  177. package/docs-dev/sass/components/tile-grid-overlay/index.html +1451 -360
  178. package/docs-dev/sass/components/vignette/index.html +1457 -360
  179. package/docs-dev/sass/components/wysiwyg/index.html +1477 -368
  180. package/docs-dev/sass/core/breakpoint/index.html +1530 -387
  181. package/docs-dev/sass/core/button/index.html +1483 -390
  182. package/docs-dev/sass/core/color/index.html +1666 -443
  183. package/docs-dev/sass/core/cssvar/index.html +1451 -360
  184. package/docs-dev/sass/core/element/index.html +1790 -417
  185. package/docs-dev/sass/core/index.html +1451 -360
  186. package/docs-dev/sass/core/layout/index.html +1491 -381
  187. package/docs-dev/sass/core/path/index.html +1451 -360
  188. package/docs-dev/sass/core/selector/index.html +1451 -360
  189. package/docs-dev/sass/core/typography/index.html +1591 -442
  190. package/docs-dev/sass/core/units/index.html +1453 -356
  191. package/docs-dev/sass/core/utils/index.html +2744 -504
  192. package/docs-dev/sass/helpers/color/index.html +1643 -928
  193. package/docs-dev/sass/helpers/display/index.html +1644 -929
  194. package/docs-dev/sass/helpers/index/index.html +1643 -928
  195. package/docs-dev/sass/helpers/index.html +1446 -353
  196. package/docs-dev/sass/helpers/print/index.html +759 -298
  197. package/docs-dev/sass/helpers/typography/index.html +1643 -928
  198. package/docs-dev/sass/helpers/units/index.html +1643 -928
  199. package/docs-dev/sass/helpers/utilities/index.html +1643 -924
  200. package/docs-dev/sass/index.html +1446 -353
  201. package/js/events/index.js +17 -5
  202. package/js/index.js +1 -0
  203. package/js/settings.js +97 -0
  204. package/js/ui/breakpoints.js +19 -16
  205. package/js/ui/collapsible.js +8 -1
  206. package/js/ui/details-group.js +112 -0
  207. package/js/ui/dialog.js +103 -44
  208. package/js/ui/dialog.todo +2 -36
  209. package/js/ui/flipcard.js +37 -57
  210. package/js/ui/grid.js +15 -13
  211. package/js/ui/index.js +1 -0
  212. package/js/ui/modal-builder.js +127 -70
  213. package/js/ui/overflow-scroller.js +6 -4
  214. package/js/ui/page.js +2 -2
  215. package/js/ui/popover.js +38 -38
  216. package/js/ui/print.js +16 -25
  217. package/js/ui/programmatic-modal.js +9 -3
  218. package/js/ui/proxy-click.js +50 -36
  219. package/js/ui/resizer.js +408 -39
  220. package/js/ui/scroll-slider.js +24 -30
  221. package/js/ui/scrollpoint.js +29 -64
  222. package/js/ui/slider.js +108 -63
  223. package/js/ui/tabs.js +23 -36
  224. package/js/ui/theme-toggle.js +332 -94
  225. package/js/ui/tooltip.js +27 -32
  226. package/js/utils/class-logger.js +3 -3
  227. package/js/utils/css.js +13 -0
  228. package/js/utils/dom.js +23 -64
  229. package/js/utils/font-awesome.js +19 -0
  230. package/js/utils/index.js +2 -1
  231. package/js/utils/system.js +155 -0
  232. package/package.json +23 -8
  233. package/scss/README.md +9 -0
  234. package/scss/_breakpoint.scss +39 -5
  235. package/scss/_button.scss +7 -5
  236. package/scss/_color.scss +71 -40
  237. package/scss/_element.scss +124 -2
  238. package/scss/_layout.scss +7 -8
  239. package/scss/_typography.scss +15 -0
  240. package/scss/_units.scss +3 -2
  241. package/scss/_utils.scss +387 -16
  242. package/scss/base/_elements.scss +0 -1
  243. package/scss/base/_index.scss +1 -1
  244. package/scss/base/_keyframes.scss +15 -0
  245. package/scss/base/_layout.scss +1 -0
  246. package/scss/base/_print.scss +2 -0
  247. package/scss/base/_root.scss +2 -0
  248. package/scss/components/README.todos +1 -0
  249. package/scss/components/_accordion.scss +154 -109
  250. package/scss/components/_badge-stack.scss +84 -0
  251. package/scss/components/_badge.scss +30 -7
  252. package/scss/components/_basic-hero.scss +112 -0
  253. package/scss/components/_breadcrumb.scss +110 -0
  254. package/scss/components/_button-group.scss +90 -0
  255. package/scss/components/_button-verbose.scss +100 -18
  256. package/scss/components/_callout.scss +112 -53
  257. package/scss/components/_captioned-figure.scss +17 -0
  258. package/scss/components/_card.scss +224 -66
  259. package/scss/components/_counter-list.scss +151 -0
  260. package/scss/components/_css-icon.scss +27 -17
  261. package/scss/components/_data-grid.scss +55 -12
  262. package/scss/components/_data-table.scss +31 -0
  263. package/scss/components/_flipcard.scss +8 -3
  264. package/scss/components/_form-theme.scss +106 -95
  265. package/scss/components/_headline-label.scss +83 -0
  266. package/scss/components/_hero.scss +12 -10
  267. package/scss/components/_index.scss +73 -0
  268. package/scss/components/_menu-stack.scss +69 -32
  269. package/scss/components/_modal.scss +51 -23
  270. package/scss/components/_nav-strip.scss +2 -0
  271. package/scss/components/_overlay-section.scss +2 -5
  272. package/scss/components/_panel.scss +246 -0
  273. package/scss/components/_popover.scss +165 -64
  274. package/scss/components/_progress-bar.scss +254 -0
  275. package/scss/components/_progress-circle.scss +175 -0
  276. package/scss/components/_pull-quote.scss +13 -13
  277. package/scss/components/_rail.scss +127 -0
  278. package/scss/components/_ratio-box.scss +2 -5
  279. package/scss/components/_rule.scss +1 -0
  280. package/scss/components/_scroll-slider.scss +1 -5
  281. package/scss/components/_skeleton.scss +126 -0
  282. package/scss/components/_slider.scss +49 -72
  283. package/scss/components/_spoke-spinner.scss +2 -2
  284. package/scss/components/_sticky-list.scss +206 -0
  285. package/scss/components/_tabs.scss +22 -4
  286. package/scss/components/_tag.scss +49 -7
  287. package/scss/components/_vignette.scss +3 -5
  288. package/scss/components/_wysiwyg.scss +21 -13
  289. package/scss/helpers/_display.scss +15 -18
  290. package/scss/helpers/_print.scss +12 -7
  291. package/scss/helpers/_utilities.scss +56 -34
  292. package/types/events/index.d.ts +10 -1
  293. package/types/events/index.d.ts.map +1 -1
  294. package/types/index.d.ts +1 -0
  295. package/types/settings.d.ts +70 -0
  296. package/types/settings.d.ts.map +1 -0
  297. package/types/ui/breakpoints.d.ts +14 -14
  298. package/types/ui/breakpoints.d.ts.map +1 -1
  299. package/types/ui/collapsible.d.ts.map +1 -1
  300. package/types/ui/details-group.d.ts +38 -0
  301. package/types/ui/details-group.d.ts.map +1 -0
  302. package/types/ui/dialog.d.ts +20 -14
  303. package/types/ui/dialog.d.ts.map +1 -1
  304. package/types/ui/flipcard.d.ts +16 -10
  305. package/types/ui/flipcard.d.ts.map +1 -1
  306. package/types/ui/grid.d.ts +4 -6
  307. package/types/ui/grid.d.ts.map +1 -1
  308. package/types/ui/index.d.ts +1 -0
  309. package/types/ui/modal-builder.d.ts +116 -11
  310. package/types/ui/modal-builder.d.ts.map +1 -1
  311. package/types/ui/overflow-scroller.d.ts +2 -2
  312. package/types/ui/overflow-scroller.d.ts.map +1 -1
  313. package/types/ui/popover.d.ts +6 -7
  314. package/types/ui/popover.d.ts.map +1 -1
  315. package/types/ui/print.d.ts +0 -4
  316. package/types/ui/print.d.ts.map +1 -1
  317. package/types/ui/programmatic-modal.d.ts.map +1 -1
  318. package/types/ui/proxy-click.d.ts +19 -3
  319. package/types/ui/proxy-click.d.ts.map +1 -1
  320. package/types/ui/resizer.d.ts +116 -16
  321. package/types/ui/resizer.d.ts.map +1 -1
  322. package/types/ui/scroll-slider.d.ts +5 -7
  323. package/types/ui/scroll-slider.d.ts.map +1 -1
  324. package/types/ui/scrollpoint.d.ts +3 -8
  325. package/types/ui/scrollpoint.d.ts.map +1 -1
  326. package/types/ui/slider.d.ts +33 -14
  327. package/types/ui/slider.d.ts.map +1 -1
  328. package/types/ui/tabs.d.ts +6 -8
  329. package/types/ui/tabs.d.ts.map +1 -1
  330. package/types/ui/theme-toggle.d.ts +51 -7
  331. package/types/ui/theme-toggle.d.ts.map +1 -1
  332. package/types/ui/tooltip.d.ts +3 -5
  333. package/types/ui/tooltip.d.ts.map +1 -1
  334. package/types/utils/css.d.ts +11 -0
  335. package/types/utils/css.d.ts.map +1 -0
  336. package/types/utils/dom.d.ts +12 -32
  337. package/types/utils/dom.d.ts.map +1 -1
  338. package/types/utils/font-awesome.d.ts +5 -0
  339. package/types/utils/font-awesome.d.ts.map +1 -0
  340. package/types/utils/index.d.ts +1 -0
  341. package/types/utils/system.d.ts +113 -0
  342. package/types/utils/system.d.ts.map +1 -0
package/scss/_utils.scss CHANGED
@@ -20,7 +20,7 @@ $config: (
20
20
  "debug-maps": true,
21
21
  "file-header-comments": true,
22
22
  "responsive-change": 0.5vw,
23
- "pixel-em-base" : 16px
23
+ "pixel-em-base" : 16px,
24
24
  ) !default;
25
25
 
26
26
  /// Change modules $config
@@ -34,8 +34,11 @@ $config: (
34
34
 
35
35
  /// Get a config option
36
36
  /// @param {Map} $name Name of property
37
- /// @example scss - General example
38
- /// @include ulu.utils-get("property");
37
+ /// @example scss {compile} Example usage
38
+ /// .test-em-to-pixel {
39
+ /// width: ulu.utils-get("pixel-em-base");
40
+ /// }
41
+ /// @return {Dimension}
39
42
 
40
43
  @function get($name) {
41
44
  @return require-map-get($config, $name, 'utils');
@@ -46,6 +49,11 @@ $config: (
46
49
  /// @param {Map} $map The map to get the value from
47
50
  /// @param {String} $key The key in the map to get value from
48
51
  /// @param {String} $context The context of using this function for debugging help
52
+ /// @example scss {compile} Example usage
53
+ /// .test-require-map {
54
+ /// $test-map: ("test-font-size": 12px);
55
+ /// font-size: ulu.utils-require-map-get($test-map, "test-font-size");
56
+ /// }
49
57
  /// @return {*} The value from the map
50
58
 
51
59
  @function require-map-get($map, $key, $context: "unknown") {
@@ -93,6 +101,21 @@ $config: (
93
101
  /// Returns true if we should include something (map of booleans)
94
102
  /// @param {String} $name Name of item to see if it's included
95
103
  /// @param {Map} $includes Map of includes
104
+ /// @example scss {compile} Example usage
105
+ /// $include-styles : (
106
+ /// "h2" : true,
107
+ /// "h3" : false
108
+ /// );
109
+ /// @if(ulu.utils-included("h2", $include-styles)) {
110
+ /// h2 {
111
+ /// font-size: 24px;
112
+ /// }
113
+ /// }
114
+ /// @if(ulu.utils-included("h3", $include-styles)) {
115
+ /// h3 {
116
+ /// font-size: 18px;
117
+ /// }
118
+ /// }
96
119
 
97
120
  @function included($name, $includes) {
98
121
  $value: map.get($includes, $name);
@@ -113,10 +136,21 @@ $config: (
113
136
  }
114
137
  }
115
138
 
116
- // Provide a default when value type is not correct
139
+ /// Provide a default when value type is not correct
117
140
  /// @param {String} $type type of value it should be
118
141
  /// @param {String} $value the value to provide if it is that type
119
142
  /// @param {String} $fallback the fallback value
143
+ /// @example scss {compile} Example usage
144
+ /// $user-accent-color: #FE5F55;
145
+ /// $user-error-color: "##C6ECAE";
146
+ /// $default-color: #777DA7;
147
+ /// .accent-color {
148
+ /// background-color: ulu.utils-if-type("color", $user-accent-color, $default-color);
149
+ /// }
150
+ /// .error-color {
151
+ /// background-color: ulu.utils-if-type("color", $user-error-color, $default-color);
152
+ /// }
153
+ /// @return {CssValue} Returns the value or the fallback.
120
154
 
121
155
  @function if-type($type, $value, $fallback) {
122
156
  @if meta.type-of($value) == $type {
@@ -126,31 +160,112 @@ $config: (
126
160
  }
127
161
  }
128
162
 
129
- // Returns number unit info, and strips the unit
163
+ /// Returns number unit info, and strips the unit
130
164
  /// @param {String} $number Number to get meta info for
131
- /// @return {Map} With properties (unit, value)
165
+ /// @return {Map} With properties (unit, value, invalid [true/false if not number])
166
+ /// @example scss {compile} Example usage
167
+ /// $size-info: ulu.utils-number-info(24px);
168
+ /// $size-info-invalid: ulu.utils-number-info("Twenty Four Pixels");
169
+ /// .number-info-result {
170
+ /// content: meta.inspect($size-info);
171
+ /// }
172
+ /// .number-info-invalid-result {
173
+ /// content: meta.inspect($size-info-invalid);
174
+ /// }
175
+ ///
176
+
177
+ @function number-info($number, $errors: false) {
132
178
 
133
- @function number-info($number) {
134
- $is-number: meta.type-of($number) != 'number';
135
- $is-unitless: math.is-unitless($number);
136
- @if ($is-unitless or not $is-number) {
179
+ @if (meta.type-of($number) == 'number') {
180
+ $is-unitless: math.is-unitless($number);
137
181
  @return (
138
- "unit": null,
139
- "value": $number
182
+ "unit": if($is-unitless, null, math.unit($number)),
183
+ "value": if($is-unitless, $number, strip-unit($number)),
184
+ "invalid" : false
140
185
  );
186
+
141
187
  } @else {
188
+ @if ($errors) {
189
+ @error "Expected Number, got #{ meta.type-of($number) } for #{ $number }";
190
+ }
142
191
  @return (
143
- "unit" : math.unit($value),
144
- "value": math.div($number, ($number * 0 + 1))
192
+ "unit": null,
193
+ "value": $number,
194
+ "invalid" : true
145
195
  );
146
196
  }
147
197
  }
148
198
 
199
+ /// Adds unit to unitless number
200
+ /// @param {Number} $number The unitless number to add unit to
201
+ /// @param {String} $unit The unit to add to number
202
+ /// @return {String} Number with unit attached (can't be used in maths)
203
+ /// @example scss {compile} Example usage
204
+ /// $number: 12;
205
+ /// $unit: "px";
206
+ /// $number-with-unit: ulu.utils-add-unit($number, $unit);
207
+ /// .add-unit-result {
208
+ /// content: $number-with-unit;
209
+ /// }
210
+ ///
211
+
212
+ @function add-unit($number, $unit) {
213
+ @return $number + string.unquote($unit);
214
+ }
215
+
216
+ /// Checks if two numbers are the same unit
217
+ /// @param {Number} $number
218
+ /// @param {String} $other-number
219
+ /// @return {Boolean} Whether they have the same unit type
220
+ /// Could be made into multiple arguments in future if needed
221
+ /// @example scss {compile} Example usage
222
+ /// $number-1: 12px;
223
+ /// $number-2: 12px;
224
+ /// $number-3: 12rem;
225
+ /// .positive-result {
226
+ /// content: ulu.utils-units-match($number-1, $number-2);
227
+ /// }
228
+ /// .negative-result {
229
+ /// content: ulu.utils-units-match($number-1, $number-3);
230
+ /// }
231
+ ///
232
+
233
+ @function units-match($number, $other-number) {
234
+ @return math.unit($number) == math.unit($other-number);
235
+ }
236
+
149
237
  /// Reusable merge method
150
238
  /// @param {Map} $original Source map
151
239
  /// @param {Map} $changes Changes to merge into source map
152
240
  /// @param {String} $mode How to merge changes (merge [defualt], deep, or overwrite)
153
- /// @return {Map} New map with changes
241
+ /// @example scss {compile} Example usage
242
+ /// $map-1: (
243
+ /// "inner-map" : (
244
+ /// "color" : "green",
245
+ /// "secondary-color" : "green"
246
+ /// ),
247
+ /// "color" : "green",
248
+ /// "secondary-color" : "green"
249
+ /// );
250
+ /// $map-2: (
251
+ /// "inner-map" : (
252
+ /// "color" : "red"
253
+ /// ),
254
+ /// "color" : "red",
255
+ /// );
256
+ /// .result-default {
257
+ /// $merged-map: ulu.utils-map-merge($map-1, $map-2);
258
+ /// content: meta.inspect($merged-map);
259
+ /// }
260
+ /// .result-deep {
261
+ /// $merged-map-deep: ulu.utils-map-merge($map-1, $map-2, "deep");
262
+ /// content: meta.inspect($merged-map-deep);
263
+ /// }
264
+ /// .result-overwrite {
265
+ /// $merged-map-overwrite: ulu.utils-map-merge($map-1, $map-2, "overwrite");
266
+ /// content: meta.inspect($merged-map-overwrite);
267
+ /// }
268
+ ///
154
269
 
155
270
  @function map-merge($original, $changes, $mode: null) {
156
271
  @if ($mode == "deep") {
@@ -166,6 +281,20 @@ $config: (
166
281
  /// @param {Map} $map Source map
167
282
  /// @param {String} $key Property to check for
168
283
  /// @return {Boolean}
284
+ /// @example scss {compile} Example usage
285
+ /// $map-1 : (
286
+ /// "has-key" : true
287
+ /// );
288
+ /// $map-2 : (
289
+ /// "missing-key" : true
290
+ /// );
291
+ /// .map-1 {
292
+ /// content: ulu.utils-map-has($map-1, "has-key");
293
+ /// }
294
+ /// .map-2 {
295
+ /// content: ulu.utils-map-has($map-2, "has-key");
296
+ /// }
297
+ ///
169
298
 
170
299
  @function map-has($map, $key) {
171
300
  @if (meta.type-of($map) != "map") {
@@ -189,6 +318,17 @@ $config: (
189
318
 
190
319
  /// Utility for providing fallbacks, the first truthy value (non false or null) will be returned
191
320
  /// @return {*} The first truthy value
321
+ /// @example scss {compile} Example usage
322
+ /// $fallback-text: "No input received";
323
+ /// .user-name:after {
324
+ /// $user-name: "Johnny";
325
+ /// content: ulu.utils-fallback($user-name, $fallback-text);
326
+ /// }
327
+ /// .user-birthdate:after {
328
+ /// $user-birthdate: null;
329
+ /// content: ulu.utils-fallback($user-birthdate, $fallback-text);
330
+ /// }
331
+ ///
192
332
 
193
333
  @function fallback($args...) {
194
334
  @each $arg in $args {
@@ -200,6 +340,19 @@ $config: (
200
340
  }
201
341
 
202
342
  /// Provides fallback values from the same map
343
+ /// @return {*}
344
+ /// @example scss {compile} Example usage
345
+ /// $map: (
346
+ /// "name": doug,
347
+ /// "gpa": "3",
348
+ /// "grade": "B",
349
+ /// );
350
+ /// .fallback-map {
351
+ /// // iterates through properties until it finds one that is a key in the map.
352
+ /// content: ulu.utils-map-fallback($map, "gpa", "grade", "average");
353
+ /// }
354
+ ///
355
+
203
356
  @function map-fallback($map, $properties...) {
204
357
  @each $prop in $properties {
205
358
  $value: map.get($map, $prop);
@@ -216,6 +369,18 @@ $config: (
216
369
  /// @param {List} $keys The list of keys to check for
217
370
  /// @param {List} $options Options for how this behaves
218
371
  /// @param {List} $options.with-value Requires that at least one of the map entries from the list has a value other than null
372
+ /// @example scss {compile} Example usage
373
+ /// $map : (
374
+ /// "has-key" : true
375
+ /// );
376
+ /// $keys : (
377
+ /// "has-key",
378
+ /// "needs-key",
379
+ /// );
380
+ /// .map-contains-any-result {
381
+ /// content: ulu.utils-map-contains-any($map, $keys);
382
+ /// }
383
+ ///
219
384
  @function map-contains-any($map, $keys, $options: ()) {
220
385
  @if (meta.type-of($map) != "map") {
221
386
  @error "map-contains-any(): Incorrect type for $map (should be map)";
@@ -242,6 +407,8 @@ $config: (
242
407
  /// @param {*} $value The value that may need the fallback
243
408
  /// @param {Map} $lookup Map of properties to functions (use sass:meta > meta.get-function to populate)
244
409
  /// @return {*} The user's original value, or if the value is true get the default value from the provided function
410
+ /// @example scss {compile} Example usage
411
+ ///
245
412
 
246
413
  @function function-fallback($prop, $value, $lookup) {
247
414
  $arguments: null;
@@ -271,6 +438,13 @@ $config: (
271
438
  @return $value;
272
439
  }
273
440
 
441
+ /// If the value passed is equal to true use the default, else return the value
442
+ /// @param {*} $value The value to check
443
+ /// @param {*} $default The value to return when true
444
+ @function default($value, $default) {
445
+ @return if($value == true, $default, $value);
446
+ }
447
+
274
448
  /// Replaces all or one occurrence of a string within a string
275
449
  /// @param {String} $string String to operate on
276
450
  /// @param {String} $find String to find within string
@@ -448,9 +622,21 @@ $config: (
448
622
  /// Strips the unit from the number
449
623
  /// - Normally this shouldn't be needed
450
624
  /// @link https://stackoverflow.com/questions/12328259/how-do-you-strip-the-unit-from-any-number-in-sass/12335841#12335841 Original source (Miriam Suzanne)
625
+ /// @example scss {compile} Example usage
626
+ /// .test {
627
+ /// line-height: ulu.utils-strip-unit(4rem);
628
+ /// }
451
629
 
452
630
  @function strip-unit($value) {
453
- @return math.div($value, ($value * 0 + 1));
631
+ @if (is-number($value)) {
632
+ @if (math.is-unitless($value)) {
633
+ @return $value;
634
+ } @else {
635
+ @return math.div($value, ($value * 0 + 1));
636
+ }
637
+ } @else {
638
+ @error "Expected number, got #{ $value }";
639
+ }
454
640
  }
455
641
 
456
642
  /// Calculate the size of something at a given scale (percentage/exponential)
@@ -485,4 +671,189 @@ $config: (
485
671
  ) {
486
672
  #{ $property } : $value;
487
673
  #{ $property } : calc(#{ $value } + #{ $responsive-change });
674
+ }
675
+
676
+ /// Calculates the hypotenuse of a triangle
677
+ /// - Can be used to get length between two corners of a rectangle
678
+ /// @param {Number} $width The width of the triangle
679
+ /// @param {Number} $height The height of the triangle
680
+ /// @return {Number} Hypotenuse of a triangle
681
+
682
+ @function hypotenuse($width, $height) {
683
+ @return math.sqrt(math.pow($width, 2) + math.pow($height, 2));
684
+ }
685
+
686
+ /// Get's the info about a box shadow
687
+ /// @param {List} $shadow The box shadow property (ie. 0 0 4px red)
688
+ /// @return {Map} Map with info about the shadow with the following keys (inset, offset-x, offset-y, blur, spread, color)
689
+ /// @throw When shadow is not type list
690
+
691
+ @function box-shadow-info($shadow) {
692
+ @if (meta.type-of($shadow) != "list") {
693
+ @error "Box shadow passed is not correct type (list)";
694
+ }
695
+ $result: (
696
+ "inset": false,
697
+ "offset-x": 0,
698
+ "offset-y": 0,
699
+ "blur": 0,
700
+ "spread": 0,
701
+ "color": null,
702
+ );
703
+
704
+ $number-keys: ("offset-x", "offset-y", "blur", "spread");
705
+ $number-index: 1;
706
+
707
+ @each $value in $shadow {
708
+ $type: meta.type-of($value);
709
+ @if $type == "color" {
710
+ $result: map.merge($result, ("color": $value));
711
+ } @else if $type == "string" and $value == inset {
712
+ $result: map.merge($result, ("inset": true));
713
+ } @else if $type == "number" and $number-index <= 4 {
714
+ // Add each back in by key in the order they appear
715
+ // if not found it's the default
716
+ $result: map.merge($result, (list.nth($number-keys, $number-index): $value));
717
+ $number-index: $number-index + 1;
718
+ }
719
+ }
720
+
721
+ @return $result;
722
+ }
723
+
724
+ /// Get's the extent (how far the shadow extends past the box's edge)
725
+ /// - This will only work on box-shadows that have matching units for the numbers
726
+ /// @param {List} $shadow The box shadow property (ie. 0 0 4px red)
727
+ /// @param {String} $side Optionally pass the side of box to get extend for, if not specified offsets are ignored and just the extent of the shadow is passed
728
+ /// @return {Number} The size the shadow extends past it's box
729
+
730
+ @function box-shadow-extent($shadow, $side: null) {
731
+ $info: box-shadow-info($shadow);
732
+ $extent: map.get($info, "spread") + map.get($info, "blur");
733
+ $offset-x: map.get($info, "offset-x");
734
+ $offset-y: map.get($info, "offset-y");
735
+ @if (not $side) {
736
+ @return $extent;
737
+ } @else {
738
+ @if ($side == "top") {
739
+ @return $extent - $offset-y;
740
+ } @else if ($side == "bottom") {
741
+ @return $extent + $offset-y;
742
+ } @else if ($side == "left") {
743
+ @return $extent - $offset-x;
744
+ } @else if ($side == "right") {
745
+ @return $extent + $offset-x;
746
+ }
747
+ }
748
+ }
749
+
750
+ /// Determines if value passed is a list
751
+ /// @param {*} $value Value to check
752
+ /// @return {Boolean} Whether the item was type list
753
+
754
+ @function is-list($value) {
755
+ @return meta.type-of($value) == "list";
756
+ }
757
+
758
+ /// Determines if value passed is a map
759
+ /// @param {*} $value Value to check
760
+ /// @return {Boolean} Whether the item was type map
761
+
762
+ @function is-map($value) {
763
+ @return meta.type-of($value) == "map";
764
+ }
765
+
766
+ /// Determines if value passed is a number
767
+ /// @param {*} $value Value to check
768
+ /// @return {Boolean} Whether the item was type number
769
+
770
+ @function is-number($value) {
771
+ @return meta.type-of($value) == "number";
772
+ }
773
+
774
+ /// Determines if value passed is a string
775
+ /// @param {*} $value Value to check
776
+ /// @return {Boolean} Whether the item was type string
777
+
778
+ @function is-string($value) {
779
+ @return meta.type-of($value) == "string";
780
+ }
781
+
782
+ /// Determines if value passed is a color
783
+ /// @param {*} $value Value to check
784
+ /// @return {Boolean} Whether the item was type color
785
+
786
+ @function is-color($value) {
787
+ @return meta.type-of($value) == "color";
788
+ }
789
+
790
+
791
+
792
+ // /// Determines if value passed is a bool
793
+ // /// @param {*} $value Value to check
794
+ // /// @return {Boolean} Whether the item was type bool
795
+
796
+ // @function is-bool($value) {
797
+ // @return meta.type-of($value) == "bool";
798
+ // }
799
+
800
+ // /// Determines if value passed is a null
801
+ // /// @param {*} $value Value to check
802
+ // /// @return {Boolean} Whether the item was type null
803
+
804
+ // @function is-null($value) {
805
+ // @return meta.type-of($value) == "null";
806
+ // }
807
+
808
+ /// Returns true if number passed is even
809
+ /// - Allows unit and unitless numbers
810
+ /// @param {Number} $number The number to check
811
+ /// @return {Boolean} Whether or not it is an even number
812
+
813
+ @function is-even($number) {
814
+ @if (is-number($number)) {
815
+ @return strip-unit($number) % 2 == 0;
816
+ } @else {
817
+ @error "Expected Number, got #{ $number }";
818
+ }
819
+ }
820
+
821
+ /// Returns true if number passed is odd
822
+ /// @param {Number} $number The number to check
823
+ /// @return {Boolean} Whether or not it is an odd number
824
+
825
+ @function is-odd($number) {
826
+ @return not is-even($number);
827
+ }
828
+
829
+ /// Always returns a map
830
+ /// @param {*} $value The value to check if is map
831
+ /// @return {Map} The $value if it was a map, else empty map
832
+
833
+ @function ensure-map($value) {
834
+ @return if(is-map($value), $value, ());
835
+ }
836
+
837
+ /// Returns true if edge passed is an end (top/bottom)
838
+ /// @param {String} $edge The edge string to test
839
+ /// @return {Boolean} Whether the edge was an end (versus side/x-axis)
840
+ /// @throw If $edge is not a valid value (not top/bottom/left/right)
841
+
842
+ @function is-end($edge) {
843
+ @if ($edge == "top" or $edge == "bottom") {
844
+ @return true;
845
+ } @else if ($edge == "left" or $edge == "right") {
846
+ @return false;
847
+ } @else {
848
+ @error "Expected side to be top/bottom/left/right, got #{ $edge }";
849
+ }
850
+ }
851
+
852
+ /// Returns true if edge passed is an side (left/right)
853
+ /// @param {String} $edge The edge string to test
854
+ /// @return {Boolean} Whether the edge was an side (versus end/y-axis)
855
+ /// @throw If $edge is not a valid value (not top/bottom/left/right)
856
+
857
+ @function is-side($edge) {
858
+ @return not is-end($edge);
488
859
  }
@@ -65,7 +65,6 @@ $config: (
65
65
  }
66
66
  body {
67
67
  @include styles-body();
68
- @include breakpoint.embed-for-scripts();
69
68
  }
70
69
  h1,
71
70
  h2,
@@ -29,7 +29,7 @@
29
29
 
30
30
  $all-includes: (
31
31
  "normalize",
32
- "root"
32
+ "root",
33
33
  "elements,"
34
34
  "print",
35
35
  "elements",
@@ -174,4 +174,19 @@
174
174
  transform: scale(1);
175
175
  }
176
176
  }
177
+ @keyframes UluWiggle {
178
+ 0% { transform: rotate(0deg); }
179
+ 84% { transform: rotate(0deg); }
180
+ 88% { transform: rotate(2deg); }
181
+ 90% { transform: rotate(-2deg); }
182
+ 92% { transform: rotate(0deg); }
183
+ 94% { transform: rotate(2deg); }
184
+ 96% { transform: rotate(-2deg); }
185
+ 100% { transform: rotate(0deg); }
186
+ }
187
+ @keyframes UluPulse {
188
+ 50% {
189
+ opacity: 0.5;
190
+ }
191
+ }
177
192
  }
@@ -41,6 +41,7 @@ $config: (
41
41
  /// Output Layout Styles
42
42
 
43
43
  @mixin styles {
44
+ @include utils.file-header('base', 'layout');
44
45
 
45
46
  @if (get("containers")) {
46
47
  @each $name, $values in layout.$containers {
@@ -10,6 +10,8 @@
10
10
  /// @include ulu.base-print-styles();
11
11
 
12
12
  @mixin styles {
13
+ @include utils.file-header('base', 'print');
14
+
13
15
  @media (print) {
14
16
  * {
15
17
  background: transparent !important;
@@ -6,6 +6,7 @@
6
6
  @use "sass:map";
7
7
 
8
8
  @use "../utils";
9
+ @use "../cssvar";
9
10
 
10
11
  /// Output custom properties in :root for base stylesheet
11
12
  /// @example scss
@@ -16,6 +17,7 @@
16
17
  // Core/default css-vars
17
18
  :root {
18
19
  @include custom-properties();
20
+ @include cssvar.declare-breakpoint();
19
21
  }
20
22
  }
21
23
 
@@ -26,3 +26,4 @@ Daniel Todos:
26
26
  ☐ Setup search results page
27
27
  ☐ General Node/Page Setup
28
28
  ☐ Setup View
29
+