@ulu/frontend 0.1.0-beta.9 → 0.1.0-beta.90

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 (316) hide show
  1. package/CHANGELOG.md +606 -0
  2. package/README.dev.md +3 -3
  3. package/README.md +14 -4
  4. package/dist/ulu-frontend.min.css +1 -1
  5. package/dist/ulu-frontend.min.js +36 -29
  6. package/docs-dev/.nojekyll +1 -0
  7. package/docs-dev/assets/main.js +8290 -635
  8. package/docs-dev/assets/placeholder/icon-calendar.svg +1 -0
  9. package/docs-dev/assets/placeholder/icon-check.svg +1 -0
  10. package/docs-dev/assets/style.css +789 -338
  11. package/docs-dev/changelog/index.html +6985 -0
  12. package/docs-dev/demos/accordion/index.html +1126 -334
  13. package/docs-dev/demos/badge/index.html +5535 -0
  14. package/docs-dev/demos/basic-hero/index.html +111 -0
  15. package/docs-dev/demos/breakpoints-manager/index.html +5546 -0
  16. package/docs-dev/demos/button/index.html +1172 -338
  17. package/docs-dev/demos/button-group/index.html +5532 -0
  18. package/docs-dev/demos/button-verbose/index.html +5538 -0
  19. package/docs-dev/demos/callout/index.html +1177 -344
  20. package/docs-dev/demos/captioned-figure/index.html +1120 -327
  21. package/docs-dev/demos/card/index.html +1186 -754
  22. package/docs-dev/demos/card-grid/index.html +5657 -0
  23. package/docs-dev/demos/counter-list/index.html +5540 -0
  24. package/docs-dev/demos/css-icons/index.html +1148 -332
  25. package/docs-dev/demos/data-grid/index.html +1120 -327
  26. package/docs-dev/demos/data-table/index.html +1298 -372
  27. package/docs-dev/demos/details-group/index.html +5567 -0
  28. package/docs-dev/demos/file-save/index.html +1120 -327
  29. package/docs-dev/demos/flipcard/index.html +1120 -327
  30. package/docs-dev/demos/form-theme/index.html +1144 -364
  31. package/docs-dev/demos/headline-label/index.html +5502 -0
  32. package/docs-dev/demos/hero/index.html +12 -4
  33. package/docs-dev/demos/image-grid/index.html +12 -4
  34. package/docs-dev/demos/index.html +1121 -328
  35. package/docs-dev/demos/list-inline/index.html +1120 -327
  36. package/docs-dev/demos/list-lines/index.html +1120 -327
  37. package/docs-dev/demos/menu-stack/index.html +1159 -351
  38. package/docs-dev/demos/modals/index.html +1259 -343
  39. package/docs-dev/demos/nav-strip/index.html +1120 -327
  40. package/docs-dev/demos/overlay-section/index.html +1205 -342
  41. package/docs-dev/demos/panel/index.html +5562 -0
  42. package/docs-dev/demos/popovers/index.html +1368 -333
  43. package/docs-dev/demos/print/index.html +1120 -327
  44. package/docs-dev/demos/pull-quote/index.html +1120 -327
  45. package/docs-dev/demos/rail/index.html +5598 -0
  46. package/docs-dev/demos/rule/index.html +1137 -332
  47. package/docs-dev/demos/scroll-slider/index.html +72 -106
  48. package/docs-dev/demos/scrollpoints/index.html +1121 -328
  49. package/docs-dev/demos/slider/index.html +12 -4
  50. package/docs-dev/demos/spoke-spinner/index.html +1120 -327
  51. package/docs-dev/demos/{list-inline.1 → sticky-list}/index.html +1159 -363
  52. package/docs-dev/demos/tabs/index.html +1156 -327
  53. package/docs-dev/demos/tag/index.html +1120 -327
  54. package/docs-dev/demos/theme-toggle/index.html +5579 -0
  55. package/docs-dev/demos/tile-grid-overlay/index.html +12 -4
  56. package/docs-dev/demos/tiles/index.html +1120 -327
  57. package/docs-dev/demos/tooltip/index.html +1120 -327
  58. package/docs-dev/demos/wysiwyg/index.html +5552 -0
  59. package/docs-dev/guide/building-stylesheet/index.html +1120 -327
  60. package/docs-dev/guide/developing-ulu-scss-module/index.html +1120 -327
  61. package/docs-dev/guide/index.html +1120 -327
  62. package/docs-dev/index.html +1120 -327
  63. package/docs-dev/javascript/events/index.html +1158 -327
  64. package/docs-dev/javascript/index.html +1120 -327
  65. package/docs-dev/javascript/settings/index.html +5705 -0
  66. package/docs-dev/javascript/ui-breakpoints/index.html +1134 -343
  67. package/docs-dev/javascript/ui-collapsible/index.html +1119 -328
  68. package/docs-dev/javascript/ui-details-group/index.html +5622 -0
  69. package/docs-dev/javascript/ui-dialog/index.html +1151 -345
  70. package/docs-dev/javascript/ui-flipcard/index.html +1180 -333
  71. package/docs-dev/javascript/ui-grid/index.html +1130 -365
  72. package/docs-dev/javascript/ui-modal-builder/index.html +1303 -372
  73. package/docs-dev/javascript/ui-overflow-scroller/index.html +1119 -328
  74. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +1119 -328
  75. package/docs-dev/javascript/ui-page/index.html +1119 -328
  76. package/docs-dev/javascript/ui-popover/index.html +1129 -342
  77. package/docs-dev/javascript/ui-print/index.html +1117 -334
  78. package/docs-dev/javascript/ui-print-details/index.html +1119 -328
  79. package/docs-dev/javascript/ui-programmatic-modal/index.html +1119 -328
  80. package/docs-dev/javascript/ui-proxy-click/index.html +1208 -332
  81. package/docs-dev/javascript/ui-resizer/index.html +1400 -344
  82. package/docs-dev/javascript/ui-scroll-slider/index.html +1159 -336
  83. package/docs-dev/javascript/ui-scrollpoint/index.html +1129 -345
  84. package/docs-dev/javascript/ui-slider/index.html +1317 -335
  85. package/docs-dev/javascript/ui-tabs/index.html +1138 -384
  86. package/docs-dev/javascript/ui-theme-toggle/index.html +5710 -0
  87. package/docs-dev/javascript/ui-tooltip/index.html +1136 -349
  88. package/docs-dev/javascript/utils-class-logger/index.html +1120 -329
  89. package/docs-dev/javascript/utils-css/index.html +5524 -0
  90. package/docs-dev/javascript/utils-dom/index.html +1153 -442
  91. package/docs-dev/javascript/utils-file-save/index.html +1119 -328
  92. package/docs-dev/javascript/utils-floating-ui/index.html +1119 -328
  93. package/docs-dev/javascript/utils-id/index.html +1119 -328
  94. package/docs-dev/javascript/utils-pause-youtube-video/index.html +1119 -328
  95. package/docs-dev/javascript/utils-system/index.html +5827 -0
  96. package/docs-dev/sass/base/color/index.html +1119 -328
  97. package/docs-dev/sass/base/elements/index.html +1127 -336
  98. package/docs-dev/sass/base/index/index.html +1119 -328
  99. package/docs-dev/sass/base/index.html +1120 -327
  100. package/docs-dev/sass/base/keyframes/index.html +1120 -329
  101. package/docs-dev/sass/base/layout/index.html +1119 -328
  102. package/docs-dev/sass/base/normalize/index.html +1119 -328
  103. package/docs-dev/sass/base/print/index.html +1119 -328
  104. package/docs-dev/sass/base/root/index.html +1119 -328
  105. package/docs-dev/sass/base/typography/index.html +1119 -328
  106. package/docs-dev/sass/components/accordion/index.html +1142 -344
  107. package/docs-dev/sass/components/adaptive-spacing/index.html +1119 -328
  108. package/docs-dev/sass/components/badge/index.html +1145 -343
  109. package/docs-dev/sass/components/basic-hero/index.html +5685 -0
  110. package/docs-dev/sass/components/button/index.html +1119 -328
  111. package/docs-dev/sass/components/button-group/index.html +5683 -0
  112. package/docs-dev/sass/components/button-verbose/index.html +1205 -339
  113. package/docs-dev/sass/components/callout/index.html +1224 -414
  114. package/docs-dev/sass/components/captioned-figure/index.html +1243 -337
  115. package/docs-dev/sass/components/card/index.html +1215 -352
  116. package/docs-dev/sass/components/card-grid/index.html +1119 -328
  117. package/docs-dev/sass/components/counter-list/index.html +5767 -0
  118. package/docs-dev/sass/components/css-icon/index.html +1140 -342
  119. package/docs-dev/sass/components/data-grid/index.html +1139 -341
  120. package/docs-dev/sass/components/data-table/index.html +1327 -346
  121. package/docs-dev/sass/components/fill-context/index.html +1119 -328
  122. package/docs-dev/sass/components/flipcard/index.html +1161 -339
  123. package/docs-dev/sass/components/flipcard-grid/index.html +1119 -328
  124. package/docs-dev/sass/components/form-theme/index.html +1334 -447
  125. package/docs-dev/sass/components/headline-label/index.html +5713 -0
  126. package/docs-dev/sass/components/hero/index.html +1179 -340
  127. package/docs-dev/sass/components/horizontal-rule/index.html +1119 -328
  128. package/docs-dev/sass/components/image-grid/index.html +1119 -328
  129. package/docs-dev/sass/components/index/index.html +1136 -338
  130. package/docs-dev/sass/components/index.html +1120 -327
  131. package/docs-dev/sass/components/links/index.html +1119 -328
  132. package/docs-dev/sass/components/list-inline/index.html +1119 -328
  133. package/docs-dev/sass/components/list-lines/index.html +1119 -328
  134. package/docs-dev/sass/components/list-ordered/index.html +1119 -328
  135. package/docs-dev/sass/components/list-unordered/index.html +1119 -328
  136. package/docs-dev/sass/components/menu-stack/index.html +1156 -352
  137. package/docs-dev/sass/components/modal/index.html +1173 -347
  138. package/docs-dev/sass/components/nav-strip/index.html +1127 -336
  139. package/docs-dev/sass/components/overlay-section/index.html +1127 -336
  140. package/docs-dev/sass/components/pager/index.html +1119 -328
  141. package/docs-dev/sass/components/panel/index.html +5913 -0
  142. package/docs-dev/sass/components/placeholder-block/index.html +1119 -328
  143. package/docs-dev/sass/components/popover/index.html +1179 -352
  144. package/docs-dev/sass/components/pull-quote/index.html +1131 -340
  145. package/docs-dev/sass/components/rail/index.html +5700 -0
  146. package/docs-dev/sass/components/ratio-box/index.html +1127 -336
  147. package/docs-dev/sass/components/rule/index.html +1120 -329
  148. package/docs-dev/sass/components/scroll-slider/index.html +1129 -350
  149. package/docs-dev/sass/components/skip-link/index.html +1119 -328
  150. package/docs-dev/sass/components/slider/index.html +1173 -394
  151. package/docs-dev/sass/components/spoke-spinner/index.html +1121 -330
  152. package/docs-dev/sass/components/sticky-list/index.html +5903 -0
  153. package/docs-dev/sass/components/table-sticky/index.html +5677 -0
  154. package/docs-dev/sass/components/tabs/index.html +1154 -348
  155. package/docs-dev/sass/components/tag/index.html +1121 -330
  156. package/docs-dev/sass/components/tile-button/index.html +1119 -328
  157. package/docs-dev/sass/components/tile-grid/index.html +1119 -328
  158. package/docs-dev/sass/components/tile-grid-overlay/index.html +1119 -328
  159. package/docs-dev/sass/components/vignette/index.html +1131 -334
  160. package/docs-dev/sass/components/wysiwyg/index.html +1159 -350
  161. package/docs-dev/sass/core/breakpoint/index.html +1212 -369
  162. package/docs-dev/sass/core/button/index.html +1151 -358
  163. package/docs-dev/sass/core/color/index.html +1291 -368
  164. package/docs-dev/sass/core/cssvar/index.html +1119 -328
  165. package/docs-dev/sass/core/element/index.html +1440 -367
  166. package/docs-dev/sass/core/index.html +1119 -328
  167. package/docs-dev/sass/core/layout/index.html +1173 -363
  168. package/docs-dev/sass/core/path/index.html +1119 -328
  169. package/docs-dev/sass/core/selector/index.html +1119 -328
  170. package/docs-dev/sass/core/typography/index.html +1119 -328
  171. package/docs-dev/sass/core/units/index.html +1127 -330
  172. package/docs-dev/sass/core/utils/index.html +2389 -449
  173. package/docs-dev/sass/helpers/color/index.html +1119 -328
  174. package/docs-dev/sass/helpers/display/index.html +1120 -329
  175. package/docs-dev/sass/helpers/index/index.html +1119 -328
  176. package/docs-dev/sass/helpers/index.html +1120 -327
  177. package/docs-dev/sass/helpers/print/index.html +759 -298
  178. package/docs-dev/sass/helpers/typography/index.html +1119 -328
  179. package/docs-dev/sass/helpers/units/index.html +1119 -328
  180. package/docs-dev/sass/helpers/utilities/index.html +1121 -330
  181. package/docs-dev/sass/index.html +1120 -327
  182. package/js/events/index.js +17 -5
  183. package/js/index.js +1 -0
  184. package/js/settings.js +97 -0
  185. package/js/ui/breakpoints.js +19 -16
  186. package/js/ui/collapsible.js +8 -1
  187. package/js/ui/details-group.js +112 -0
  188. package/js/ui/dialog.js +103 -44
  189. package/js/ui/dialog.todo +2 -36
  190. package/js/ui/flipcard.js +37 -57
  191. package/js/ui/grid.js +15 -13
  192. package/js/ui/index.js +1 -0
  193. package/js/ui/modal-builder.js +127 -70
  194. package/js/ui/overflow-scroller.js +6 -4
  195. package/js/ui/page.js +2 -2
  196. package/js/ui/popover.js +38 -38
  197. package/js/ui/print.js +16 -25
  198. package/js/ui/programmatic-modal.js +9 -3
  199. package/js/ui/proxy-click.js +50 -36
  200. package/js/ui/resizer.js +408 -39
  201. package/js/ui/scroll-slider.js +24 -30
  202. package/js/ui/scrollpoint.js +29 -64
  203. package/js/ui/slider.js +108 -63
  204. package/js/ui/tabs.js +23 -36
  205. package/js/ui/theme-toggle.js +332 -94
  206. package/js/ui/tooltip.js +27 -32
  207. package/js/utils/class-logger.js +3 -3
  208. package/js/utils/css.js +13 -0
  209. package/js/utils/dom.js +23 -64
  210. package/js/utils/font-awesome.js +19 -0
  211. package/js/utils/index.js +2 -1
  212. package/js/utils/system.js +155 -0
  213. package/package.json +23 -8
  214. package/scss/README.md +4 -0
  215. package/scss/_breakpoint.scss +39 -5
  216. package/scss/_button.scss +7 -5
  217. package/scss/_color.scss +40 -9
  218. package/scss/_element.scss +124 -2
  219. package/scss/_layout.scss +7 -8
  220. package/scss/_units.scss +3 -2
  221. package/scss/_utils.scss +387 -16
  222. package/scss/base/_elements.scss +0 -1
  223. package/scss/base/_keyframes.scss +10 -0
  224. package/scss/base/_layout.scss +1 -0
  225. package/scss/base/_print.scss +2 -0
  226. package/scss/base/_root.scss +2 -0
  227. package/scss/components/README.todos +14 -0
  228. package/scss/components/_accordion.scss +33 -19
  229. package/scss/components/_badge.scss +23 -4
  230. package/scss/components/_basic-hero.scss +112 -0
  231. package/scss/components/_button-group.scss +90 -0
  232. package/scss/components/_button-verbose.scss +100 -18
  233. package/scss/components/_callout.scss +125 -78
  234. package/scss/components/_captioned-figure.scss +17 -0
  235. package/scss/components/_card-grid.scss +1 -1
  236. package/scss/components/_card.scss +228 -66
  237. package/scss/components/_counter-list.scss +151 -0
  238. package/scss/components/_css-icon.scss +35 -21
  239. package/scss/components/_data-grid.scss +55 -12
  240. package/scss/components/_data-table.scss +39 -3
  241. package/scss/components/_flipcard.scss +8 -3
  242. package/scss/components/_form-theme.scss +119 -108
  243. package/scss/components/_headline-label.scss +83 -0
  244. package/scss/components/_hero.scss +12 -10
  245. package/scss/components/_index.scss +42 -0
  246. package/scss/components/_menu-stack.scss +42 -26
  247. package/scss/components/_modal.scss +58 -29
  248. package/scss/components/_nav-strip.scss +2 -0
  249. package/scss/components/_overlay-section.scss +2 -5
  250. package/scss/components/_panel.scss +246 -0
  251. package/scss/components/_popover.scss +165 -64
  252. package/scss/components/_pull-quote.scss +13 -13
  253. package/scss/components/_rail.scss +120 -0
  254. package/scss/components/_ratio-box.scss +2 -5
  255. package/scss/components/_rule.scss +1 -0
  256. package/scss/components/_scroll-slider.scss +1 -5
  257. package/scss/components/_slider.scss +49 -72
  258. package/scss/components/_spoke-spinner.scss +2 -2
  259. package/scss/components/_sticky-list.scss +206 -0
  260. package/scss/components/_tabs.scss +22 -4
  261. package/scss/components/_vignette.scss +3 -5
  262. package/scss/components/_wysiwyg.scss +21 -13
  263. package/scss/helpers/_display.scss +15 -18
  264. package/scss/helpers/_print.scss +12 -7
  265. package/scss/helpers/_utilities.scss +42 -32
  266. package/types/events/index.d.ts +10 -1
  267. package/types/events/index.d.ts.map +1 -1
  268. package/types/index.d.ts +1 -0
  269. package/types/settings.d.ts +70 -0
  270. package/types/settings.d.ts.map +1 -0
  271. package/types/ui/breakpoints.d.ts +14 -14
  272. package/types/ui/breakpoints.d.ts.map +1 -1
  273. package/types/ui/collapsible.d.ts.map +1 -1
  274. package/types/ui/details-group.d.ts +38 -0
  275. package/types/ui/details-group.d.ts.map +1 -0
  276. package/types/ui/dialog.d.ts +20 -14
  277. package/types/ui/dialog.d.ts.map +1 -1
  278. package/types/ui/flipcard.d.ts +16 -10
  279. package/types/ui/flipcard.d.ts.map +1 -1
  280. package/types/ui/grid.d.ts +4 -6
  281. package/types/ui/grid.d.ts.map +1 -1
  282. package/types/ui/index.d.ts +2 -1
  283. package/types/ui/modal-builder.d.ts +116 -11
  284. package/types/ui/modal-builder.d.ts.map +1 -1
  285. package/types/ui/overflow-scroller.d.ts +2 -2
  286. package/types/ui/overflow-scroller.d.ts.map +1 -1
  287. package/types/ui/popover.d.ts +6 -7
  288. package/types/ui/popover.d.ts.map +1 -1
  289. package/types/ui/print.d.ts +0 -4
  290. package/types/ui/print.d.ts.map +1 -1
  291. package/types/ui/programmatic-modal.d.ts.map +1 -1
  292. package/types/ui/proxy-click.d.ts +19 -3
  293. package/types/ui/proxy-click.d.ts.map +1 -1
  294. package/types/ui/resizer.d.ts +116 -16
  295. package/types/ui/resizer.d.ts.map +1 -1
  296. package/types/ui/scroll-slider.d.ts +5 -7
  297. package/types/ui/scroll-slider.d.ts.map +1 -1
  298. package/types/ui/scrollpoint.d.ts +3 -8
  299. package/types/ui/scrollpoint.d.ts.map +1 -1
  300. package/types/ui/slider.d.ts +33 -14
  301. package/types/ui/slider.d.ts.map +1 -1
  302. package/types/ui/tabs.d.ts +6 -8
  303. package/types/ui/tabs.d.ts.map +1 -1
  304. package/types/ui/theme-toggle.d.ts +51 -7
  305. package/types/ui/theme-toggle.d.ts.map +1 -1
  306. package/types/ui/tooltip.d.ts +3 -5
  307. package/types/ui/tooltip.d.ts.map +1 -1
  308. package/types/utils/css.d.ts +11 -0
  309. package/types/utils/css.d.ts.map +1 -0
  310. package/types/utils/dom.d.ts +12 -32
  311. package/types/utils/dom.d.ts.map +1 -1
  312. package/types/utils/font-awesome.d.ts +5 -0
  313. package/types/utils/font-awesome.d.ts.map +1 -0
  314. package/types/utils/index.d.ts +2 -1
  315. package/types/utils/system.d.ts +113 -0
  316. package/types/utils/system.d.ts.map +1 -0
@@ -3,6 +3,8 @@
3
3
  /// Outputs accordion component stylesheet, which can be used with <details> or custom disclosure components
4
4
  ////
5
5
 
6
+ // Internal note: We don't require the content to be wrapped, this is so that this can be used on details elements outside of our control. So we use negative margins
7
+
6
8
  @use "sass:map";
7
9
  @use "sass:math";
8
10
 
@@ -39,11 +41,12 @@
39
41
  /// @prop {Dimension} summary-type-size [false] The size of the text in the accordion summary.
40
42
  /// @prop {Dimension} transparent-padding-y [1em] The upper and lower padding of the transparent summary.
41
43
  /// @prop {Dimension} transparent-padding-x [0] The upper and lower padding of the transparent summary.
44
+ /// @prop {Dimension} borderless-margin-between [0.5rem] Margin between accordions when using no-border modiifier
42
45
 
43
46
  $config: (
44
47
  "background-color": "background",
45
- "background-color-open": "background-gray",
46
- "border-color": "rule",
48
+ "background-color-open": white,
49
+ "border-color": "rule-light",
47
50
  "border-radius": 0,
48
51
  "border-width": 1px,
49
52
  "box-shadow": none,
@@ -59,7 +62,7 @@ $config: (
59
62
  "icon-font-size": 1.5rem,
60
63
  "icon-size": auto,
61
64
  "icon-stroke-width": 0.15em,
62
- "summary-background-color": "white",
65
+ "summary-background-color": #f6f6f6,
63
66
  "summary-color": null,
64
67
  "summary-background-color-hover": null,
65
68
  "summary-color-hover": null,
@@ -68,6 +71,7 @@ $config: (
68
71
  "summary-type-size": false,
69
72
  "transparent-padding-x": 0,
70
73
  "transparent-padding-y": 1em,
74
+ "borderless-margin-between" : 0.5rem
71
75
  ) !default;
72
76
 
73
77
  /// Change modules $config
@@ -95,15 +99,16 @@ $config: (
95
99
 
96
100
  @mixin styles {
97
101
  $prefix: selector.class("accordion");
98
-
102
+ $padding-x: get("padding-x");
103
+ $padding-x-double: get("padding-x") * 2;
99
104
  $border: get("border-width") solid color.get(get("border-color"));
100
105
 
101
106
  // When not one of our custom classed details components
102
107
  #{ $prefix } {
103
108
  position: relative; // For active border
104
109
  border-radius: 0;
105
- padding-left: get("padding-x");
106
- padding-right: get("padding-x");
110
+ padding-left: $padding-x;
111
+ padding-right: $padding-x;
107
112
  margin-top: get("margin");
108
113
  margin-bottom: get("margin");
109
114
  border: $border;
@@ -120,7 +125,7 @@ $config: (
120
125
  & + & {
121
126
  $gap: -(get("margin") - get("margin-between"));
122
127
  margin-top: $gap;
123
- margin-top: calc($gap - 1px);
128
+ margin-top: calc($gap - get("border-width"));
124
129
  }
125
130
  &[open],
126
131
  &.is-active {
@@ -138,17 +143,18 @@ $config: (
138
143
  #{ $prefix }__summary {
139
144
  background-color: color.get(get("summary-background-color"));
140
145
  color: color.get(get("summary-color"));
141
- margin-left: -(get("padding-x"));
142
- margin-right: -(get("padding-x"));
146
+ margin-left: -($padding-x);
147
+ margin-right: -($padding-x);
143
148
  line-height: get("summary-line-height");
144
- padding: get("summary-padding-y") get("padding-x");
149
+ padding: get("summary-padding-y") $padding-x;
145
150
  vertical-align: top;
146
151
  font-weight: bold;
147
152
  cursor: pointer;
153
+ align-items: center;
154
+ width: calc(100% + $padding-x-double); // To fix if using <button>
155
+
148
156
  &:has(#{ $prefix }__icon) {
149
- display: flex; // For icon
150
- align-items: center;
151
- justify-content: space-between;
157
+ display: flex;
152
158
  list-style: none; // Remove the default arrow (old safari?)
153
159
  &::-webkit-details-marker,
154
160
  &::marker {
@@ -172,8 +178,8 @@ $config: (
172
178
  #{ $prefix }__icon {
173
179
  flex: 0 0 get("icon-size");
174
180
  color: color.get(get("icon-color"));
175
- margin-left: 0.5em;
176
- order: 3;
181
+ margin-left: auto;
182
+ padding-left: 0.5em;
177
183
  background-color: color.get(get("icon-background-color"));
178
184
  border-radius: get("icon-border-radius");
179
185
  width: get("icon-size");
@@ -194,6 +200,7 @@ $config: (
194
200
  > #{ $prefix }__summary {
195
201
  margin-left: -(get("transparent-padding-x"));
196
202
  margin-right: -(get("transparent-padding-x"));
203
+ width: 100%;
197
204
  padding: get("transparent-padding-y") get("transparent-padding-x");
198
205
  background-color: transparent;
199
206
  border: none;
@@ -207,11 +214,18 @@ $config: (
207
214
  }
208
215
  }
209
216
  }
210
- #{ $prefix }--no-borders {
217
+ #{ $prefix }--borderless {
211
218
  border: none;
212
- margin-bottom: 4rem;
213
- &[open] > .accordion__summary {
214
- border-bottom: none;
219
+ & + & {
220
+ $gap: -(get("margin") - get("borderless-margin-between"));
221
+ margin-top: $gap;
222
+ margin-top: calc($gap - get("border-width"));
223
+ }
224
+ &[open],
225
+ &.is-active {
226
+ & > .accordion__summary {
227
+ border-bottom: none;
228
+ }
215
229
  }
216
230
  }
217
231
  }
@@ -3,11 +3,21 @@
3
3
  /// Outputs badge component stylesheet
4
4
  ////
5
5
 
6
+ @use "sass:meta";
6
7
  @use "sass:map";
7
8
  @use "../utils";
8
9
  @use "../selector";
10
+ @use "../typography";
9
11
  @use "../color";
10
12
 
13
+ // Used for function fallback
14
+ $-fallbacks: (
15
+ "font-family" : (
16
+ "function" : meta.get-function("get", false, "typography"),
17
+ "property" : "font-family-sans"
18
+ )
19
+ );
20
+
11
21
  /// Module Settings
12
22
  /// @type Map
13
23
  /// @prop {Number} background-color [gray] Background color (if no image)
@@ -15,6 +25,7 @@
15
25
  /// @prop {Number} color [black] Type color
16
26
  /// @prop {Number} font-size [1.3rem] Font size (basic ie. 1.3rem) for badge
17
27
  /// @prop {Number} font-weight [bold] Font weight
28
+ /// @prop {Number} font-family [true] Specify font family, defaults to typography font-family-sans
18
29
  /// @prop {List} sizes [Object] List of other sizes (large by default), each size is a map of (width, font-size)
19
30
  /// @prop {Number} width [10rem] Width of badge (default size)
20
31
 
@@ -22,13 +33,18 @@ $config: (
22
33
  "background-color": gray,
23
34
  "border-radius": 50%,
24
35
  "color": black,
25
- "font-size": 1.3rem,
36
+ "font-size": 1.5rem,
26
37
  "font-weight": bold,
27
- "width": 10rem,
38
+ "font-family": true,
39
+ "width": 7rem,
28
40
  "sizes" : (
41
+ "small" : (
42
+ "font-size" : 1.2rem,
43
+ "width" : 5rem
44
+ ),
29
45
  "large" : (
30
46
  "font-size" : 2.75rem,
31
- "width" : 6rem
47
+ "width" : 9rem
32
48
  )
33
49
  )
34
50
  ) !default;
@@ -48,7 +64,8 @@ $config: (
48
64
  /// @include ulu.component-badge-get("property");
49
65
 
50
66
  @function get($name) {
51
- @return utils.require-map-get($config, $name, "badge [config]");
67
+ $value: utils.require-map-get($config, $name, "badge [config]");
68
+ @return utils.function-fallback($name, $value, $-fallbacks);
52
69
  }
53
70
 
54
71
  /// Output badge component styles
@@ -77,6 +94,7 @@ $config: (
77
94
  flex: 0 0 get("width");
78
95
  font-size: get("font-size");
79
96
  font-weight: get("font-weight");
97
+ font-family: get("font-family");
80
98
  }
81
99
  #{ $prefix }__inner {
82
100
  display: block;
@@ -118,6 +136,7 @@ $config: (
118
136
  width: 100%;
119
137
  height: 100%;
120
138
  object-fit: cover;
139
+ margin: 0 !important;
121
140
  }
122
141
 
123
142
  @each $name, $props in get("sizes") {
@@ -0,0 +1,112 @@
1
+ ////
2
+ /// @group basic-hero
3
+ /// Basic styling for a hero
4
+ ////
5
+
6
+ @use "sass:map";
7
+ @use "sass:math";
8
+ @use "sass:meta";
9
+ @use "sass:list";
10
+
11
+ @use "../breakpoint";
12
+ @use "../selector";
13
+ @use "../utils";
14
+ @use "../typography";
15
+ @use "../color";
16
+
17
+ // Used for function fallback
18
+ $-fallbacks: (
19
+ "main-max-width" : (
20
+ "function" : meta.get-function("get", false, "typography"),
21
+ "property" : "max-width"
22
+ ),
23
+ "main-min-width" : (
24
+ "function" : meta.get-function("get", false, "typography"),
25
+ "property" : "max-width-small"
26
+ ),
27
+ );
28
+
29
+ /// Module Settings
30
+ /// @type Map
31
+ /// @prop {CssValue} text-align [center] Alignment of text within hero.
32
+ /// @prop {Color} background-color ["color-hero-background"] Background color of the hero
33
+
34
+ $config: (
35
+ "background-color" : "background-gray",
36
+ "padding-top": 3rem,
37
+ "padding-bottom" : 2rem,
38
+ "gap" : (4rem 2rem),
39
+ "main-max-width" : true,
40
+ "main-min-width" : true,
41
+ "media-max-width" : 20rem,
42
+ "media-vertical-align" : center
43
+ ) !default;
44
+
45
+ /// Change modules $config
46
+ /// @param {Map} $changes Map of changes
47
+ /// @example scss
48
+ /// @include ulu.component-basic-hero-set(( "property" : value ));
49
+
50
+ @mixin set($changes) {
51
+ $config: map.merge($config, $changes) !global;
52
+ }
53
+
54
+ /// Get a config option
55
+ /// @param {Map} $name Name of property
56
+ /// @example scss
57
+ /// @include ulu.component-basic-hero-get("property");
58
+
59
+ @function get($name) {
60
+ $value: utils.require-map-get($config, $name, "basic-hero [config]");
61
+ @return utils.function-fallback($name, $value, $-fallbacks);
62
+ }
63
+
64
+ /// Prints component styles
65
+ /// @example scss
66
+ /// @include ulu.component-basic-hero-styles();
67
+
68
+ @mixin styles {
69
+ $prefix: selector.class("basic-hero");
70
+
71
+ #{ $prefix } {
72
+ background-color: color.get(get("background-color"));
73
+ }
74
+ #{ $prefix }__content {
75
+ display: flex;
76
+ align-items: stretch;
77
+ flex-wrap: wrap;
78
+ justify-content: space-between;
79
+ gap: get("gap");
80
+ padding-top: get("padding-top");
81
+ padding-bottom: get("padding-bottom");
82
+ }
83
+ #{ $prefix }__content-main {
84
+ $min-width: if(get("main-min-width"), get("main-min-width"), get("main-max-width"));
85
+ // Using max/min-width so that we don't need to add selectors to change flex-basis
86
+ // when centered. Using flex-basis: 0 to allow flexbox to decide the items width
87
+ // allows it to expand/shrink within. min(100%... Never larger than parent
88
+ min-width: min(100%, $min-width);
89
+ max-width: get("main-max-width");
90
+ flex-shrink: 1;
91
+ flex-grow: 1;
92
+ flex-basis: 0;
93
+ }
94
+ #{ $prefix }__content-media {
95
+ display: flex;
96
+ align-items: center;
97
+ align-self: get("media-vertical-align");
98
+ justify-content: center;
99
+ flex: 0 0 auto;
100
+ width: min(100%, get("media-max-width"));
101
+ }
102
+
103
+ // Modifiers
104
+ #{ $prefix }--center {
105
+ #{ $prefix }__content {
106
+ flex-direction: column;
107
+ flex-wrap: nowrap;
108
+ text-align: center;
109
+ align-items: center;
110
+ }
111
+ }
112
+ }
@@ -0,0 +1,90 @@
1
+ ////
2
+ /// @group button-group
3
+ /// Groups a set of buttons
4
+ ////
5
+
6
+ @use "sass:map";
7
+ @use "sass:math";
8
+
9
+ @use "../selector";
10
+ @use "../utils";
11
+ @use "../color";
12
+ @use "../button";
13
+
14
+ /// Module Settings
15
+ /// @type Map
16
+ /// @prop {Dimension} gap [0.45em] Gap between buttons
17
+ /// @prop {Boolean} no-min-width [true] Buttons within the button group should have no min width
18
+
19
+ $config: (
20
+ "gap": 0.45em,
21
+ "no-min-width" : true
22
+ ) !default;
23
+
24
+ /// Change modules $config
25
+ /// @param {Map} $changes Map of changes
26
+ /// @example scss
27
+ /// @include ulu.component-button-group-set(( "property" : value ));
28
+
29
+ @mixin set($changes) {
30
+ $config: map.merge($config, $changes) !global;
31
+ }
32
+
33
+ /// Get a config option
34
+ /// @param {Map} $name Name of property
35
+ /// @example scss
36
+ /// @include ulu.component-button-group-get("property");
37
+
38
+ @function get($name) {
39
+ @return utils.require-map-get($config, $name, "button-group [config]");
40
+ }
41
+
42
+ /// Prints component styles
43
+ /// @demo button-group
44
+ /// @example scss
45
+ /// @include ulu.component-button-group-styles();
46
+
47
+ @mixin styles {
48
+ $prefix: selector.class("button-group");
49
+ $prefix-button: selector.class("button");
50
+
51
+ $button-radius: button.get("border-radius");
52
+
53
+ #{ $prefix } {
54
+ display: flex;
55
+ flex-wrap: wrap;
56
+ gap: get("gap");
57
+ #{ $prefix-button } {
58
+ margin: 0;
59
+ }
60
+ }
61
+ #{ $prefix }--joined {
62
+ flex-wrap: nowrap;
63
+ overflow-x: auto;
64
+ gap: 0;
65
+ // border-radius: button.get("border-radius");
66
+ #{ $prefix-button } {
67
+ position: relative; // To move to front when hover/active
68
+ border-radius: 0;
69
+ min-width: 0;
70
+ margin-left: -(button.get("border-width"));
71
+ &:first-child {
72
+ border-top-left-radius: $button-radius;
73
+ border-bottom-left-radius: $button-radius;
74
+ margin-left: 0;
75
+ }
76
+ &:last-child {
77
+ border-top-right-radius: $button-radius;
78
+ border-bottom-right-radius: $button-radius;
79
+ }
80
+ #{ button.get("active-selector") } {
81
+ z-index: 2;
82
+ }
83
+ &:hover,
84
+ &:focus {
85
+ z-index: 2;
86
+ }
87
+
88
+ }
89
+ }
90
+ }
@@ -9,6 +9,8 @@
9
9
  @use "../utils";
10
10
  @use "../color";
11
11
  @use "../element";
12
+ @use "../selector";
13
+ @use "../button";
12
14
 
13
15
  // Used for function fallback
14
16
  $-fallbacks: (
@@ -23,6 +25,14 @@ $-fallbacks: (
23
25
  "box-shadow-hover" : (
24
26
  "function" : meta.get-function("get", false, "element"),
25
27
  "property" : "box-shadow-hover"
28
+ ),
29
+ "border-color" : (
30
+ "function" : meta.get-function("get", false, "button"),
31
+ "property" : "border-color"
32
+ ),
33
+ "border-width" : (
34
+ "function" : meta.get-function("get", false, "button"),
35
+ "property" : "border-width"
26
36
  )
27
37
  );
28
38
 
@@ -31,11 +41,14 @@ $-fallbacks: (
31
41
  /// @prop {Color} background-color [white] Background color for the button.
32
42
  /// @prop {Color} background-color-hover [link] Background color for the button when hovered or focused.
33
43
  /// @prop {String} border-radius [border-radius] Border radius of the button.
44
+ /// @prop {String} border-width [null] Border width (or set to true to inherit button border width default)
45
+ /// @prop {String} border-color [null] Border color (or set to true to inherit button border width default)
34
46
  /// @prop {CssValue} box-shadow [true] Box shadow for the button. If set to true, uses default box-shadow.
35
47
  /// @prop {CssValue} box-shadow-hover [true] Box shadow for the button when hovered or focused. If set to true, uses default box-shadow-hover.
36
48
  /// @prop {String} color [type] Text color for the button.
37
49
  /// @prop {String} color-hover [type] Text color for the button when hovered or focused.
38
50
  /// @prop {Color} icon-color [gray] Color for button icons.
51
+ /// @prop {Color} icon-color-hover [null] Optional color for icon when hovered
39
52
  /// @prop {Dimension} icon-font-size [1.25rem] Font size for the button.
40
53
  /// @prop {Number} line-height [1.2] Line height for button text.
41
54
  /// @prop {Dimension} margin [1em] Margin for the button.
@@ -46,26 +59,44 @@ $-fallbacks: (
46
59
  /// @prop {String} title-color [link] Color of the title of the button.
47
60
  /// @prop {String} title-color-hover [link-hover] Color of the title of the button when hovered or focused.
48
61
  /// @prop {Dimension} title-margin [0.5em] Margin for the button's title.
62
+ /// @prop {Boolean} cap [false] Enable left cap style
63
+ /// @prop {Color} cap-side ["left"] The side that gets the cap
64
+ /// @prop {Number} cap-match-radius [true] The cap should have be rounded to match the parent's border radius
65
+ /// @prop {Map} cap-options The options for cap (see element.cap for options)
66
+ /// @prop {Map} cap-options-hover The options for cap when hovered
49
67
 
50
68
  $config: (
51
69
  "background-color" : white,
52
- "background-color-hover" : "link",
53
- "border-radius" : "border-radius",
70
+ "background-color-hover" : #F7F8F7,
71
+ "border-radius" : true,
72
+ "border-color" : null,
73
+ "border-width" : null,
54
74
  "box-shadow" : true,
55
75
  "box-shadow-hover" : true,
56
76
  "color" : "type",
57
77
  "color-hover" : "type",
58
78
  "icon-color": gray,
79
+ "icon-color-hover": null,
59
80
  "icon-font-size" : 1.25rem,
60
81
  "line-height" : 1.2,
61
82
  "margin" : 1em,
62
83
  "margin-inline" : 0.75em,
63
84
  "min-width": 20rem,
64
- "padding-x": 0.65em,
85
+ "padding-x": 0.75em,
65
86
  "padding-y": 1em,
66
87
  "title-color": "link",
67
88
  "title-margin" : 0.5em,
68
89
  "title-color-hover" : "link-hover",
90
+ "cap" : false,
91
+ "cap-side" : "left",
92
+ "cap-match-radius" : true,
93
+ "cap-options" : (
94
+ "color" : "link",
95
+ "size" : 0.5rem,
96
+ ),
97
+ "cap-options-hover" : (
98
+ "color" : "link-hover"
99
+ ),
69
100
  ) !default;
70
101
 
71
102
  /// Change modules $config
@@ -89,50 +120,101 @@ $config: (
89
120
 
90
121
  /// Prints component styles
91
122
  /// @example scss
92
- /// @include ulu.component-button-verbose-styles();
123
+ /// @include ulu.component-button-verbose-styles();
124
+ /// @example html {preview} - Basic Example
125
+ /// <a href="#" class="button-verbose">
126
+ /// <strong class="button-verbose__title">Example Link</strong>
127
+ /// <span class="button-verbose__body">This is the body</span>
128
+ /// <span class="button-verbose__icon fas fa-arrow-right" aria-hidden="true"></span>
129
+ /// </a>
93
130
 
94
131
  @mixin styles {
95
- .button-verbose {
132
+ $prefix: selector.class("button-verbose");
133
+ $padding-x: get("padding-x");
134
+ $padding-y: get("padding-y");
135
+ $padding-right: ($padding-x * 2) + 1em;
136
+ $cap-side: get("cap-side");
137
+ $cap-defaults: (
138
+ "offset" : utils.if-type("number", get("border-width"), 0),
139
+ "border-radius" : if(get("cap-match-radius"), get("border-radius"), 0),
140
+ "padding-adjust" : if(utils.is-side($cap-side), $padding-x, $padding-y)
141
+ );
142
+
143
+ #{ $prefix } {
144
+ position: relative; // For cap and icon
145
+ display: block;
96
146
  text-decoration: none;
97
- border-radius: element.get(get("border-radius"));
147
+ border-radius: get("border-radius");
148
+ @if (get("border-width")) {
149
+ border: get("border-width") solid color.get(get("border-color"));
150
+ }
98
151
  box-shadow: get("box-shadow");
99
152
  line-height: get("line-height");
100
- position: relative;
101
- display: block;
102
153
  margin-bottom: get("margin");
103
154
  max-width: 100%;
104
155
  width: get("min-width");
105
156
  background-color: color.get(get("background-color"));
106
- padding: get("padding-y") get("padding-x");
107
- padding-right: (get("padding-x") * 2) + 1em;
157
+ padding: $padding-y $padding-right $padding-y $padding-x;
108
158
  color: color.get(get("color"));
159
+ text-align: left;
160
+
109
161
  &:hover {
110
162
  color: color.get(get("color-hover"));
111
163
  background-color: color.get(get("background-color-hover"));
112
164
  box-shadow: get("box-shadow-hover");
113
- .button-verbose__title {
114
- color: color.get(get("title-color-hover"));
165
+ @if get("title-color-hover") {
166
+ #{ $prefix }__title {
167
+ color: color.get(get("title-color-hover"));
168
+ }
169
+ }
170
+ @if get("icon-color-hover") {
171
+ #{ $prefix }__icon {
172
+ color: color.get(get("icon-color-hover"));
173
+ }
174
+ }
175
+ }
176
+ @if get("cap") {
177
+ @include element.cap(
178
+ $side: $cap-side,
179
+ $options: map.merge($cap-defaults, get("cap-options"))
180
+ );
181
+ @if get("cap-options-hover") {
182
+ &:hover,
183
+ &:focus {
184
+ @include element.cap-appearance(
185
+ $side: $cap-side,
186
+ $options: get("cap-options-hover")
187
+ );
188
+ }
115
189
  }
116
190
  }
117
191
  }
118
- .button-verbose__title {
192
+ #{ $prefix }__title,
193
+ #{ $prefix }__body {
119
194
  display: block;
120
- margin-bottom: get("title-margin");
195
+ &:first-child {
196
+ margin-bottom: get("title-margin");
197
+ }
198
+ }
199
+ #{ $prefix }__title {
121
200
  color: color.get(get("title-color"));
122
201
  }
123
- .button-verbose__icon {
202
+ #{ $prefix }__icon {
124
203
  position: absolute;
125
204
  top: 50%;
126
- right: get("padding-x");
205
+ right: $padding-x;
127
206
  transform: translateY(-50%);
128
207
  font-size: get("icon-font-size");
129
208
  color: color.get(get("icon-color"));
130
209
  }
131
- .button-verbose--inline {
210
+ #{ $prefix }--inline {
132
211
  display: inline-block;
133
212
  margin-right: get("margin-inline");
213
+ &:last-child {
214
+ margin-right: 0;
215
+ }
134
216
  }
135
- .button-verbose--full-width {
217
+ #{ $prefix }--full-width {
136
218
  width: 100%;
137
219
  }
138
220
  }