@ulu/frontend 0.1.0-beta.4 → 0.1.0-beta.41

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 (295) hide show
  1. package/CHANGELOG.md +337 -1
  2. package/dist/ulu-frontend.min.css +1 -1
  3. package/dist/ulu-frontend.min.js +28 -27
  4. package/docs-dev/assets/main.js +832 -421
  5. package/docs-dev/assets/placeholder/icon-calendar.svg +1 -0
  6. package/docs-dev/assets/placeholder/icon-check.svg +1 -0
  7. package/docs-dev/assets/style.css +629 -233
  8. package/docs-dev/changelog/index.html +6090 -0
  9. package/docs-dev/changelog/updates-and-changes/index.html +5109 -0
  10. package/docs-dev/demos/accordion/index.html +904 -321
  11. package/docs-dev/demos/basic-hero/index.html +111 -0
  12. package/docs-dev/demos/breakpoints-manager/index.html +5246 -0
  13. package/docs-dev/demos/button/index.html +916 -323
  14. package/docs-dev/demos/button-verbose/index.html +5238 -0
  15. package/docs-dev/demos/callout/index.html +951 -328
  16. package/docs-dev/demos/captioned-figure/index.html +904 -321
  17. package/docs-dev/demos/card/index.html +970 -748
  18. package/docs-dev/demos/card-grid/index.html +5357 -0
  19. package/docs-dev/demos/card-new/index.html +5088 -0
  20. package/docs-dev/demos/card-old/index.html +5223 -0
  21. package/docs-dev/demos/card.1/index.html +5223 -0
  22. package/docs-dev/demos/card.TRASH/index.html +5541 -0
  23. package/docs-dev/demos/counter-list/index.html +5224 -0
  24. package/docs-dev/demos/css-icons/index.html +904 -321
  25. package/docs-dev/demos/data-grid/index.html +1014 -511
  26. package/docs-dev/demos/data-table/index.html +1064 -348
  27. package/docs-dev/demos/details-group/index.html +5267 -0
  28. package/docs-dev/demos/file-save/index.html +904 -321
  29. package/docs-dev/demos/flipcard/index.html +904 -321
  30. package/docs-dev/demos/form-theme/index.html +922 -352
  31. package/docs-dev/demos/hero/index.html +12 -4
  32. package/docs-dev/demos/image-grid/index.html +12 -4
  33. package/docs-dev/demos/index.html +904 -321
  34. package/docs-dev/demos/list-inline/index.html +5220 -0
  35. package/docs-dev/demos/list-inline.1/index.html +4727 -0
  36. package/docs-dev/demos/list-lines/index.html +5210 -0
  37. package/docs-dev/demos/menu-stack/index.html +975 -377
  38. package/docs-dev/demos/modals/index.html +1010 -357
  39. package/docs-dev/demos/nav-strip/index.html +924 -377
  40. package/docs-dev/demos/overlay-section/index.html +979 -326
  41. package/docs-dev/demos/popovers/index.html +0 -4628
  42. package/docs-dev/demos/print/index.html +904 -321
  43. package/docs-dev/demos/pull-quote/index.html +904 -321
  44. package/docs-dev/demos/rule/index.html +952 -357
  45. package/docs-dev/demos/scroll-slider/index.html +72 -106
  46. package/docs-dev/demos/scrollpoints/index.html +905 -322
  47. package/docs-dev/demos/slider/index.html +12 -4
  48. package/docs-dev/demos/spoke-spinner/index.html +904 -321
  49. package/docs-dev/demos/sticky-list/index.html +5223 -0
  50. package/docs-dev/demos/tabs/index.html +944 -325
  51. package/docs-dev/demos/tag/index.html +904 -321
  52. package/docs-dev/demos/theme-toggle/index.html +5279 -0
  53. package/docs-dev/demos/tile-grid-overlay/index.html +12 -4
  54. package/docs-dev/demos/tiles/index.html +904 -321
  55. package/docs-dev/demos/tooltip/index.html +904 -321
  56. package/docs-dev/guide/building-stylesheet/index.html +904 -321
  57. package/docs-dev/guide/developing-ulu-scss-module/index.html +904 -321
  58. package/docs-dev/guide/index.html +904 -321
  59. package/docs-dev/guide/updates-and-changes/index.html +5033 -0
  60. package/docs-dev/index.html +904 -321
  61. package/docs-dev/javascript/events/index.html +901 -320
  62. package/docs-dev/javascript/index.html +904 -321
  63. package/docs-dev/javascript/settings/index.html +5400 -0
  64. package/docs-dev/javascript/ui-breakpoints/index.html +916 -335
  65. package/docs-dev/javascript/ui-collapsible/index.html +901 -320
  66. package/docs-dev/javascript/ui-details-group/index.html +5322 -0
  67. package/docs-dev/javascript/ui-dialog/index.html +967 -371
  68. package/docs-dev/javascript/ui-flipcard/index.html +964 -327
  69. package/docs-dev/javascript/ui-grid/index.html +913 -358
  70. package/docs-dev/javascript/ui-modal-builder/index.html +914 -354
  71. package/docs-dev/javascript/ui-overflow-scroller/index.html +901 -320
  72. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +901 -320
  73. package/docs-dev/javascript/ui-page/index.html +901 -320
  74. package/docs-dev/javascript/ui-popover/index.html +911 -334
  75. package/docs-dev/javascript/ui-print/index.html +901 -328
  76. package/docs-dev/javascript/ui-print-details/index.html +901 -320
  77. package/docs-dev/javascript/ui-programmatic-modal/index.html +901 -320
  78. package/docs-dev/javascript/ui-proxy-click/index.html +990 -324
  79. package/docs-dev/javascript/ui-resizer/index.html +901 -320
  80. package/docs-dev/javascript/ui-scroll-slider/index.html +941 -328
  81. package/docs-dev/javascript/ui-scrollpoint/index.html +907 -333
  82. package/docs-dev/javascript/ui-slider/index.html +1099 -327
  83. package/docs-dev/javascript/ui-tabs/index.html +914 -370
  84. package/docs-dev/javascript/ui-theme-toggle/index.html +5410 -0
  85. package/docs-dev/javascript/ui-tooltip/index.html +940 -363
  86. package/docs-dev/javascript/utils-class-logger/index.html +901 -320
  87. package/docs-dev/javascript/utils-css/index.html +5224 -0
  88. package/docs-dev/javascript/utils-dom/index.html +1054 -339
  89. package/docs-dev/javascript/utils-file-save/index.html +901 -320
  90. package/docs-dev/javascript/utils-floating-ui/index.html +901 -320
  91. package/docs-dev/javascript/utils-id/index.html +901 -320
  92. package/docs-dev/javascript/utils-pause-youtube-video/index.html +901 -320
  93. package/docs-dev/javascript/utils-system/index.html +5527 -0
  94. package/docs-dev/sass/base/color/index.html +901 -320
  95. package/docs-dev/sass/base/elements/index.html +973 -392
  96. package/docs-dev/sass/base/index/index.html +959 -378
  97. package/docs-dev/sass/base/index.html +904 -321
  98. package/docs-dev/sass/base/keyframes/index.html +901 -320
  99. package/docs-dev/sass/base/layout/index.html +966 -385
  100. package/docs-dev/sass/base/normalize/index.html +901 -320
  101. package/docs-dev/sass/base/print/index.html +901 -320
  102. package/docs-dev/sass/base/root/index.html +901 -320
  103. package/docs-dev/sass/base/typography/index.html +901 -320
  104. package/docs-dev/sass/components/accordion/index.html +1026 -445
  105. package/docs-dev/sass/components/adaptive-spacing/index.html +1027 -446
  106. package/docs-dev/sass/components/badge/index.html +1005 -424
  107. package/docs-dev/sass/components/basic-hero/index.html +5385 -0
  108. package/docs-dev/sass/components/button/index.html +952 -371
  109. package/docs-dev/sass/components/button-verbose/index.html +1089 -433
  110. package/docs-dev/sass/components/callout/index.html +1086 -482
  111. package/docs-dev/sass/components/captioned-figure/index.html +1070 -374
  112. package/docs-dev/sass/components/card/index.html +1121 -491
  113. package/docs-dev/sass/components/card-grid/index.html +973 -392
  114. package/docs-dev/sass/components/counter-list/index.html +5458 -0
  115. package/docs-dev/sass/components/css-icon/index.html +1052 -464
  116. package/docs-dev/sass/components/data-grid/index.html +1087 -499
  117. package/docs-dev/sass/components/data-table/index.html +1154 -381
  118. package/docs-dev/sass/components/fill-context/index.html +901 -320
  119. package/docs-dev/sass/components/flipcard/index.html +1071 -459
  120. package/docs-dev/sass/components/flipcard-grid/index.html +960 -379
  121. package/docs-dev/sass/components/form-theme/index.html +1349 -672
  122. package/docs-dev/sass/components/hero/index.html +1016 -387
  123. package/docs-dev/sass/components/horizontal-rule/index.html +959 -378
  124. package/docs-dev/sass/components/image-grid/index.html +966 -385
  125. package/docs-dev/sass/components/index/index.html +1004 -419
  126. package/docs-dev/sass/components/index.html +904 -321
  127. package/docs-dev/sass/components/links/index.html +901 -320
  128. package/docs-dev/sass/components/list-inline/index.html +5399 -0
  129. package/docs-dev/sass/components/list-lines/index.html +1009 -432
  130. package/docs-dev/sass/components/list-ordered/index.html +903 -322
  131. package/docs-dev/sass/components/list-unordered/index.html +901 -320
  132. package/docs-dev/sass/components/menu-stack/index.html +1050 -456
  133. package/docs-dev/sass/components/modal/index.html +1032 -444
  134. package/docs-dev/sass/components/nav-strip/index.html +1023 -442
  135. package/docs-dev/sass/components/overlay-section/index.html +1010 -429
  136. package/docs-dev/sass/components/pager/index.html +1017 -436
  137. package/docs-dev/sass/components/placeholder-block/index.html +1017 -436
  138. package/docs-dev/sass/components/popover/index.html +1068 -451
  139. package/docs-dev/sass/components/pull-quote/index.html +1017 -436
  140. package/docs-dev/sass/components/ratio-box/index.html +969 -388
  141. package/docs-dev/sass/components/rule/index.html +972 -391
  142. package/docs-dev/sass/components/scroll-slider/index.html +1019 -450
  143. package/docs-dev/sass/components/skip-link/index.html +961 -380
  144. package/docs-dev/sass/components/slider/index.html +1023 -442
  145. package/docs-dev/sass/components/spoke-spinner/index.html +961 -380
  146. package/docs-dev/sass/components/sticky-list/index.html +5603 -0
  147. package/docs-dev/sass/components/tabs/index.html +1020 -439
  148. package/docs-dev/sass/components/tag/index.html +1064 -483
  149. package/docs-dev/sass/components/tile-button/index.html +1004 -423
  150. package/docs-dev/sass/components/tile-grid/index.html +1045 -464
  151. package/docs-dev/sass/components/tile-grid-overlay/index.html +940 -359
  152. package/docs-dev/sass/components/vignette/index.html +965 -378
  153. package/docs-dev/sass/components/wysiwyg/index.html +968 -387
  154. package/docs-dev/sass/core/breakpoint/index.html +1045 -450
  155. package/docs-dev/sass/core/button/index.html +1438 -857
  156. package/docs-dev/sass/core/color/index.html +1084 -496
  157. package/docs-dev/sass/core/cssvar/index.html +950 -369
  158. package/docs-dev/sass/core/element/index.html +1504 -782
  159. package/docs-dev/sass/core/index.html +901 -320
  160. package/docs-dev/sass/core/layout/index.html +1062 -462
  161. package/docs-dev/sass/core/path/index.html +953 -372
  162. package/docs-dev/sass/core/selector/index.html +952 -371
  163. package/docs-dev/sass/core/typography/index.html +1171 -590
  164. package/docs-dev/sass/core/units/index.html +984 -403
  165. package/docs-dev/sass/core/utils/index.html +1941 -500
  166. package/docs-dev/sass/helpers/color/index.html +901 -320
  167. package/docs-dev/sass/helpers/display/index.html +902 -321
  168. package/docs-dev/sass/helpers/index/index.html +956 -375
  169. package/docs-dev/sass/helpers/index.html +904 -321
  170. package/docs-dev/sass/helpers/print/index.html +843 -292
  171. package/docs-dev/sass/helpers/typography/index.html +901 -320
  172. package/docs-dev/sass/helpers/units/index.html +950 -369
  173. package/docs-dev/sass/helpers/utilities/index.html +903 -322
  174. package/docs-dev/sass/index.html +904 -321
  175. package/js/index.js +1 -0
  176. package/js/settings.js +95 -0
  177. package/js/ui/breakpoints.js +19 -16
  178. package/js/ui/collapsible.js +8 -1
  179. package/js/ui/details-group.js +112 -0
  180. package/js/ui/dialog.js +90 -42
  181. package/js/ui/dialog.todo +2 -36
  182. package/js/ui/flipcard.js +37 -57
  183. package/js/ui/grid.js +15 -13
  184. package/js/ui/index.js +1 -0
  185. package/js/ui/modal-builder.js +45 -54
  186. package/js/ui/overflow-scroller.js +6 -4
  187. package/js/ui/popover.js +38 -38
  188. package/js/ui/print.js +16 -25
  189. package/js/ui/programmatic-modal.js +9 -3
  190. package/js/ui/proxy-click.js +50 -36
  191. package/js/ui/scroll-slider.js +24 -30
  192. package/js/ui/scrollpoint.js +28 -64
  193. package/js/ui/slider.js +61 -62
  194. package/js/ui/tabs.js +23 -36
  195. package/js/ui/theme-toggle.js +331 -94
  196. package/js/ui/tooltip.js +27 -32
  197. package/js/utils/css.js +13 -0
  198. package/js/utils/dom.js +85 -8
  199. package/js/utils/font-awesome.js +18 -0
  200. package/js/utils/index.js +2 -1
  201. package/js/utils/system.js +154 -0
  202. package/package.json +10 -7
  203. package/scss/_breakpoint.scss +16 -3
  204. package/scss/_color.scss +9 -2
  205. package/scss/_element.scss +91 -0
  206. package/scss/_layout.scss +7 -8
  207. package/scss/_utils.scss +248 -13
  208. package/scss/components/README.todos +14 -0
  209. package/scss/components/_accordion.scss +18 -20
  210. package/scss/components/_badge.scss +3 -2
  211. package/scss/components/_basic-hero.scss +112 -0
  212. package/scss/components/_button-verbose.scss +102 -20
  213. package/scss/components/_callout.scss +127 -79
  214. package/scss/components/_captioned-figure.scss +23 -5
  215. package/scss/components/_card-grid.scss +1 -1
  216. package/scss/components/_card.scss +242 -88
  217. package/scss/components/_counter-list.scss +133 -0
  218. package/scss/components/_css-icon.scss +33 -28
  219. package/scss/components/_data-grid.scss +38 -9
  220. package/scss/components/_data-table.scss +44 -4
  221. package/scss/components/_flipcard.scss +21 -15
  222. package/scss/components/_form-theme.scss +146 -135
  223. package/scss/components/_hero.scss +12 -10
  224. package/scss/components/_index.scss +24 -0
  225. package/scss/components/_list-inline.scss +80 -0
  226. package/scss/components/_list-lines.scss +44 -33
  227. package/scss/components/_list-ordered.scss +0 -1
  228. package/scss/components/_menu-stack.scss +42 -26
  229. package/scss/components/_modal.scss +29 -19
  230. package/scss/components/_nav-strip.scss +25 -16
  231. package/scss/components/_overlay-section.scss +4 -6
  232. package/scss/components/_pager.scss +6 -6
  233. package/scss/components/_placeholder-block.scss +4 -4
  234. package/scss/components/_popover.scss +174 -73
  235. package/scss/components/_pull-quote.scss +13 -13
  236. package/scss/components/_ratio-box.scss +2 -5
  237. package/scss/components/_rule.scss +1 -1
  238. package/scss/components/_scroll-slider.scss +2 -6
  239. package/scss/components/_skip-link.scss +2 -1
  240. package/scss/components/_slider.scss +17 -38
  241. package/scss/components/_spoke-spinner.scss +2 -2
  242. package/scss/components/_sticky-list.scss +206 -0
  243. package/scss/components/_tabs.scss +4 -2
  244. package/scss/components/_tag.scss +1 -1
  245. package/scss/components/_vignette.scss +3 -5
  246. package/scss/helpers/_display.scss +15 -18
  247. package/scss/helpers/_print.scss +12 -7
  248. package/scss/helpers/_utilities.scss +42 -32
  249. package/types/index.d.ts +1 -0
  250. package/types/settings.d.ts +66 -0
  251. package/types/settings.d.ts.map +1 -0
  252. package/types/ui/breakpoints.d.ts +14 -14
  253. package/types/ui/breakpoints.d.ts.map +1 -1
  254. package/types/ui/collapsible.d.ts.map +1 -1
  255. package/types/ui/details-group.d.ts +38 -0
  256. package/types/ui/details-group.d.ts.map +1 -0
  257. package/types/ui/dialog.d.ts +20 -14
  258. package/types/ui/dialog.d.ts.map +1 -1
  259. package/types/ui/flipcard.d.ts +16 -10
  260. package/types/ui/flipcard.d.ts.map +1 -1
  261. package/types/ui/grid.d.ts +4 -6
  262. package/types/ui/grid.d.ts.map +1 -1
  263. package/types/ui/index.d.ts +1 -0
  264. package/types/ui/modal-builder.d.ts +8 -11
  265. package/types/ui/modal-builder.d.ts.map +1 -1
  266. package/types/ui/overflow-scroller.d.ts +2 -2
  267. package/types/ui/overflow-scroller.d.ts.map +1 -1
  268. package/types/ui/popover.d.ts +6 -7
  269. package/types/ui/popover.d.ts.map +1 -1
  270. package/types/ui/print.d.ts +0 -4
  271. package/types/ui/print.d.ts.map +1 -1
  272. package/types/ui/programmatic-modal.d.ts.map +1 -1
  273. package/types/ui/proxy-click.d.ts +19 -3
  274. package/types/ui/proxy-click.d.ts.map +1 -1
  275. package/types/ui/scroll-slider.d.ts +5 -7
  276. package/types/ui/scroll-slider.d.ts.map +1 -1
  277. package/types/ui/scrollpoint.d.ts +3 -8
  278. package/types/ui/scrollpoint.d.ts.map +1 -1
  279. package/types/ui/slider.d.ts +24 -14
  280. package/types/ui/slider.d.ts.map +1 -1
  281. package/types/ui/tabs.d.ts +6 -8
  282. package/types/ui/tabs.d.ts.map +1 -1
  283. package/types/ui/theme-toggle.d.ts +51 -7
  284. package/types/ui/theme-toggle.d.ts.map +1 -1
  285. package/types/ui/tooltip.d.ts +3 -5
  286. package/types/ui/tooltip.d.ts.map +1 -1
  287. package/types/utils/css.d.ts +11 -0
  288. package/types/utils/css.d.ts.map +1 -0
  289. package/types/utils/dom.d.ts +45 -6
  290. package/types/utils/dom.d.ts.map +1 -1
  291. package/types/utils/font-awesome.d.ts +5 -0
  292. package/types/utils/font-awesome.d.ts.map +1 -0
  293. package/types/utils/index.d.ts +1 -0
  294. package/types/utils/system.d.ts +113 -0
  295. package/types/utils/system.d.ts.map +1 -0
@@ -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
- background-color: get("background-color");
106
- padding: get("padding-y") get("padding-x");
107
- padding-right: (get("padding-x") * 2) + 1em;
156
+ background-color: color.get(get("background-color"));
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
- color: get("icon-color");
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
  }
@@ -10,13 +10,10 @@
10
10
  @use "../utils";
11
11
  @use "../selector";
12
12
  @use "../element";
13
+ @use "../color";
13
14
 
14
15
  // Used for function fallback
15
16
  $-fallbacks: (
16
- "border" : (
17
- "function" : meta.get-function("get-rule-style", false, "element"),
18
- "property" : "light"
19
- ),
20
17
  "border-radius" : (
21
18
  "function" : meta.get-function("get", false, "element"),
22
19
  "property" : "border-radius"
@@ -26,69 +23,56 @@ $-fallbacks: (
26
23
  /// Module Settings
27
24
  /// @type Map
28
25
  /// @prop {Color} background-color [rgb(240, 240, 240)] The background color of the Callout.
29
- /// @prop {Boolean} border [true] The border of the Callout.
26
+ /// @prop {Color} border-color ["rule-light"] The border color of the Callout.
30
27
  /// @prop {Boolean} border-radius [true] The border radius of the Callout.
28
+ /// @prop {Dimension} border-width [1px] The border width of the Callout.
31
29
  /// @prop {CssValue} box-shadow [none] The box-shadow of the Callout.
32
- /// @prop {Boolean} left-cap [false] Toggles the use of left caps in styled callouts.
33
- /// @prop {Color} left-cap-color [green] Color of the left cap.
34
- /// @prop {Dimension} left-cap-width [0.5rem] Width of the left cap.
30
+ /// @prop {Boolean} caps-disabled [false] If set will not output any cap styles for both base and styles
31
+ /// @prop {Boolean} cap [false] Toggles the use of caps on default callout
32
+ /// @prop {Boolean} cap-side ["left"] The side that gets the cap
33
+ /// @prop {Number} cap-match-radius [true] The cap should have be rounded to match the parent's border radius
34
+ /// @prop {Map} cap-options The options for cap (see element.cap for options)
35
35
  /// @prop {Dimension} margin [2rem] Bottom margin of the Callout.
36
36
  /// @prop {Dimension} padding [1.5rem] Padding of the Callout.
37
37
 
38
38
  $config: (
39
39
  "background-color" : rgb(240, 240, 240),
40
- "border" : true,
41
- "border-radius" : true,
40
+ "border-color" : "rule-light",
41
+ "border-radius" : 6px,
42
+ "border-width" : 1px,
42
43
  "box-shadow" : none,
43
- "left-cap" : false,
44
- "left-cap-color" : green,
45
- "left-cap-width" : 0.5rem,
44
+ "caps-disabled" : false,
45
+ "cap" : false,
46
+ "cap-side" : "left",
47
+ "cap-match-radius" : false,
48
+ "cap-options" : (
49
+ "color" : rgb(160, 160, 160),
50
+ "size" : 0.5rem,
51
+ ),
46
52
  "margin" : 2rem,
47
53
  "padding" : 1.5rem,
48
54
  ) !default;
49
55
 
56
+ /// Styles Map (for unique variations/modifiers)
57
+ /// - Adjust this with set-styles
58
+ /// @type Map
59
+
50
60
  $styles: (
51
- "background-dark" : (
52
- "background-color" : rgb(240, 240, 240)
53
- ),
54
61
  "outline" : (
55
62
  "background-color": transparent
56
63
  ),
57
- "light" : (
58
- "background-color" : white,
59
- "border-color" : gray
60
- ),
61
- "informative" : (
62
- "background-color" : #e7f6f8,
63
- "left-cap-color" : #00bde3,
64
- "left-cap" : true,
65
- "left-cap-width": 0.5rem
64
+ "info" : (
65
+ "background-color" : "info-background",
66
66
  ),
67
67
  "warning" : (
68
- "background-color" : #faf3d1,
69
- "left-cap-color" : #ffbe2e,
70
- "left-cap" : true,
71
- "left-cap-width": 0.5rem
68
+ "background-color" : "info-background",
72
69
  ),
73
70
  "success" : (
74
- "background-color" : #ecf3ec,
75
- "left-cap-color" : #00a91c,
76
- "left-cap" : true,
77
- "left-cap-width": 0.5rem
71
+ "background-color" : "success-background",
78
72
  ),
79
73
  "danger" : (
80
- "background-color" : #f4e3db,
81
- "left-cap-color" : #d54309,
82
- "left-cap" : true,
83
- "left-cap-width": 0.5rem
74
+ "background-color" : "danger-background",
84
75
  ),
85
- "emergency" : (
86
- "background-color" : #9c3d10,
87
- "left-cap-color" : #9c3d10,
88
- "left-cap" : true,
89
- "color" : white,
90
- "left-cap-width": 0.5rem
91
- )
92
76
  ) !default;
93
77
 
94
78
  /// Change modules $config
@@ -111,64 +95,128 @@ $styles: (
111
95
  }
112
96
 
113
97
  /// Set callout style variations
114
- /// @param {Map} $changes Map of changes (options for style include [background-color, color, border, border-radius, border-color, box-shadow, padding, left-cap, left-cap-width, left-cap-color]
98
+ /// - Styles that modify padding when using mix-match caps on/off should be included last
99
+ /// @param {Map} $changes Map of changes (options for style include [background-color, color, border-color, border-radius, border-width, box-shadow, padding, cap, cap-options]
115
100
  /// @param {String} $merge-mode Merge mode see utils.map-merge() [null|"deep"|"overwrite"]
116
101
 
117
102
  @mixin set-styles($changes, $merge-mode: null) {
118
103
  $styles: utils.map-merge($styles, $changes, $merge-mode) !global;
119
104
  }
120
105
 
121
- /// Output styling for a callout that adds a left cap
122
- /// @param {Dimension} $width The width of the left cap
123
- /// @param {Color} $color The left cap color
124
-
125
- @mixin left-cap($width: get("left-cap-width"), $color: get("left-cap-color")) {
126
- position: relative;
127
- border-top-left-radius: 0;
128
- border-bottom-left-radius: 0;
129
- &::before {
130
- position: absolute;
131
- content: "";
132
- left: 0;
133
- top: 0;
134
- bottom: 0;
135
- width: $width;
136
- background-color: $color;
137
- }
138
- }
139
-
140
106
  /// Output component stylesheet
141
107
  /// @example scss
142
108
  /// @include ulu.component-callout-styles();
143
109
 
144
110
  @mixin styles {
145
- $prefix: selector.class("callout");
111
+ $prefix: selector.class("callout");
112
+ $padding: get("padding");
113
+ $padding-info: utils.get-spacing($padding);
114
+ $cap-options: get("cap-options");
115
+ $cap-size: map.get($cap-options, "size");
116
+ $cap-side: get("cap-side");
146
117
 
147
118
  #{ $prefix } {
148
- background-color: get("background-color");
149
- padding: get("padding");
150
- border: get("border");
119
+ position: relative; // For cap
120
+ background-color: color.get(get("background-color"));
121
+ padding: $padding;
122
+ border: get("border-width") solid color.get(get("border-color"));
151
123
  margin-bottom: get("margin");
152
124
  box-shadow: get("box-shadow");
153
125
  border-radius: get("border-radius");
154
126
  & >:first-child {
155
127
  margin-top: 0;
156
128
  }
157
- @if get("left-cap") {
158
- @include left-cap();
129
+
130
+ // If we have left cap on default we reuse this for all
131
+ // Else we will print it out manually for each unique style
132
+ @if (not get("caps-disabled")) {
133
+ $cap-defaults: (
134
+ "offset" : get("border-width"),
135
+ "border-radius" : if(get("cap-match-radius"), get("border-radius"), null),
136
+ // "padding-adjust" : map.get($padding-info, $cap-side)
137
+ );
138
+ @include element.cap(
139
+ $side: $cap-side,
140
+ $options: map.merge($cap-defaults, $cap-options)
141
+ );
142
+ }
143
+
144
+ // If the left cap is disabled we still include it's CSS but we hide it
145
+ // so that other styles of callouts can use it
146
+ @if (not get("cap")) {
147
+ &::before {
148
+ content: none;
149
+ }
150
+ // Since this is hidden and reused we need to not use padding adjust unless it
151
+ // was visible
152
+ } @else if ($cap-size) {
153
+ padding-#{ $cap-side }: calc(map.get($padding-info, $cap-side) + $cap-size);
159
154
  }
160
155
  }
156
+
157
+ @include -output-style-modifiers();
158
+ }
159
+
160
+ // Output Each Style Modifier
161
+ // - Note if cap is not disabled this will just update appearance values of cap styling
162
+ @mixin -output-style-modifiers() {
163
+ $prefix: selector.class("callout");
164
+ $caps-enabled: not get("caps-disabled");
165
+ $cap-side: get("cap-side");
166
+
161
167
  @each $name, $style in $styles {
168
+ $cap: map.get($style, "cap");
169
+ $padding: map.get($style, "padding");
170
+ $border-radius: map.get($style, "border-radius");
171
+ $background-color: map.get($style, "background-color");
172
+ $color: map.get($style, "color");
173
+ $border-color: map.get($style, "border-color");
174
+ $border-width: map.get($style, "border-width");
175
+ $box-shadow: map.get($style, "box-shadow");
176
+ $cap-match-radius: map.get($style, "cap-match-radius");
177
+
162
178
  #{ $prefix }--#{ $name } {
163
- background-color: map.get($style, "background-color");
164
- color: map.get($style, "color");
165
- border: map.get($style, "border");
166
- border-radius: map.get($style, "border-radius");
167
- border-color: map.get($style, "border-color");
168
- box-shadow: map.get($style, "box-shadow");
169
- padding: map.get($style, "padding");
170
- @if map.get($style, "left-cap") {
171
- @include left-cap( map.get($style, "left-cap-width"), map.get($style, "left-cap-color"));
179
+ background-color: color.get($background-color);
180
+ color: color.get($color);
181
+ border-radius: $border-radius;
182
+ border-color: color.get($border-color);
183
+ border-width: $border-width;
184
+ box-shadow: $box-shadow;
185
+ padding: $padding;
186
+
187
+ @if ($cap and $caps-enabled) {
188
+ $match-radius: utils.if-type("bool", $cap-match-radius, get("cap-match-radius"));
189
+ // Padding adjust always has to be set (since size could change or padding)
190
+ $padding-info: utils.get-spacing(if($padding, $padding, get("padding")));
191
+ $cap-radius: utils.if-type("number", $border-radius, get("border-radius"));
192
+ $cap-options: utils.ensure-map(map.get($style, "cap-options"));
193
+ $cap-defaults: (
194
+ "size" : map.get(get("cap-options"), "size"),
195
+ "padding-adjust" : map.get($padding-info, $cap-side),
196
+ "offset" : $border-width,
197
+ "border-radius" : if($match-radius, $cap-radius, null)
198
+ );
199
+
200
+ @include element.cap-appearance(
201
+ $side: $cap-side,
202
+ $options: map.merge($cap-defaults, $cap-options),
203
+ $before: true
204
+ );
205
+
206
+ // Because the main callout's cap may not be visible
207
+ &::before {
208
+ content: "";
209
+ }
210
+ // If set to false remove the cap (if enabled) and reset default cap padding adjust
211
+ } @else if ($cap == false and $caps-enabled) {
212
+ // if this style doesn't set padding
213
+ @if (not $padding) {
214
+ $padding-info: utils.get-spacing(get("padding"));
215
+ padding-#{ $cap-side }: map.get($padding-info, $cap-side);
216
+ }
217
+ &::before {
218
+ content: none;
219
+ }
172
220
  }
173
221
  }
174
222
  }
@@ -10,6 +10,7 @@
10
10
  @use "../utils";
11
11
  @use "../element";
12
12
  @use "../typography";
13
+ @use "../color";
13
14
 
14
15
  // Used for function fallback
15
16
  $-fallbacks: (
@@ -29,6 +30,23 @@ $-fallbacks: (
29
30
 
30
31
  /// Module Settings
31
32
  /// @type Map
33
+ /// @prop {Boolean} text-alignment-matches [false] Toggles matching alignment.
34
+ /// @prop {Boolean} text-alignment-matches-center-only [true] Toggles matching alignment, but only if center.
35
+ /// @prop {Color} background-color [white] Background color of the component.
36
+ /// @prop {CssValue} box-shadow [true] Box shadow the captioned figure.
37
+ /// @prop {Dimension} margin-bottom [true] Bottom margin of the captioned figure.
38
+ /// @prop {Number} line-height [true] Line height of the captioned figure caption.
39
+ /// @prop {Dimension} caption-padding [0.5em] Padding of the captioned figure caption.
40
+ /// @prop {Color} color [null] Font color of the captioned figure caption.
41
+ /// @prop {String} type-size ["small"] Font size of the captioned figure caption.
42
+ /// @prop {Dimension} caption-max-width [min(100%, 15em)] Max width of the captioned figure caption.
43
+ /// @prop {Color} caption-background-color [rgba(255,255,255,0.7)] background color of the captioned figure caption.
44
+ /// @prop {CssValue} caption-backdrop-filter [blur(2px)] Filter of the backdrop of the captioned figure.
45
+ /// @prop {Color} traditional-caption-color [null] Traditional style for font color.
46
+ /// @prop {Color} traditional-caption-background-color [transparent] Traditional style for caption background color.
47
+ /// @prop {Dimension} traditional-caption-padding [0.5em] Traditional style for caption padding.
48
+ /// @prop {Dimension} traditional-caption-max-width [35em] Traditional style for caption max width.
49
+ /// @prop {CssValue} traditional-caption-text-align [right] Traditional style for caption text-align.
32
50
 
33
51
  $config: (
34
52
  "text-alignment-matches" : false,
@@ -82,7 +100,7 @@ $config: (
82
100
  display: block;
83
101
  position: relative;
84
102
  margin-bottom: get("margin-bottom");
85
- background-color: get("background-color");
103
+ background-color: color.get(get("background-color"));
86
104
  > img {
87
105
  width: 100%;
88
106
  height: auto;
@@ -101,20 +119,20 @@ $config: (
101
119
  }
102
120
  #{ $prefix }__caption {
103
121
  position: absolute;
104
- color: get("color");
122
+ color: color.get(get("color"));
105
123
  @include typography.size(get("type-size"), $only-font-size: true);
106
124
  line-height: get("line-height");
107
125
  max-width: get("caption-max-width");
108
- background-color: get("caption-background-color");
126
+ background-color: color.get(get("caption-background-color"));
109
127
  padding: get("caption-padding");
110
128
  backdrop-filter: get("caption-backdrop-filter");
111
129
  }
112
130
  #{ $prefix }--traditional {
113
131
  #{ $prefix }__caption {
114
132
  position: static;
115
- color: get("traditional-caption-color");
133
+ color: color.get(get("traditional-caption-color"));
116
134
  max-width: get("traditional-caption-max-width");
117
- background-color: get("traditional-caption-background-color");
135
+ background-color: color.get(get("traditional-caption-background-color"));
118
136
  padding: get("traditional-caption-padding");
119
137
  text-align: get("traditional-caption-text-align");
120
138
  @if (get("traditional-caption-text-align") == right) {
@@ -51,7 +51,7 @@ $config: (
51
51
 
52
52
  #{ $prefix } {
53
53
  display: grid;
54
- grid-template-columns: get("template-columns");
54
+ grid-template-columns: get("template-columns");
55
55
  grid-auto-rows: 1fr;
56
56
  gap: get("gap");
57
57
  margin: get("gap") 0;