@ulu/frontend 0.1.0-beta.2 → 0.1.0-beta.20

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 (225) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/dist/ulu-frontend.min.css +1 -1
  3. package/dist/ulu-frontend.min.js +18 -18
  4. package/docs-dev/changelog/index.html +5397 -0
  5. package/docs-dev/changelog/updates-and-changes/index.html +5109 -0
  6. package/docs-dev/demos/accordion/index.html +636 -293
  7. package/docs-dev/demos/basic-hero/index.html +111 -0
  8. package/docs-dev/demos/button/index.html +636 -293
  9. package/docs-dev/demos/callout/index.html +661 -305
  10. package/docs-dev/demos/captioned-figure/index.html +636 -293
  11. package/docs-dev/demos/card/index.html +636 -293
  12. package/docs-dev/demos/css-icons/index.html +636 -293
  13. package/docs-dev/demos/data-grid/index.html +744 -481
  14. package/docs-dev/demos/data-table/index.html +661 -318
  15. package/docs-dev/demos/details-group/index.html +4994 -0
  16. package/docs-dev/demos/file-save/index.html +636 -293
  17. package/docs-dev/demos/flipcard/index.html +636 -293
  18. package/docs-dev/demos/form-theme/index.html +654 -324
  19. package/docs-dev/demos/hero/index.html +12 -4
  20. package/docs-dev/demos/image-grid/index.html +12 -4
  21. package/docs-dev/demos/index.html +636 -293
  22. package/docs-dev/demos/list-inline/index.html +4980 -0
  23. package/docs-dev/demos/list-inline.1/index.html +4727 -0
  24. package/docs-dev/demos/list-lines/index.html +4970 -0
  25. package/docs-dev/demos/menu-stack/index.html +655 -312
  26. package/docs-dev/demos/modals/index.html +636 -293
  27. package/docs-dev/demos/nav-strip/index.html +656 -349
  28. package/docs-dev/demos/overlay-section/index.html +636 -293
  29. package/docs-dev/demos/popovers/index.html +636 -293
  30. package/docs-dev/demos/print/index.html +636 -293
  31. package/docs-dev/demos/pull-quote/index.html +636 -293
  32. package/docs-dev/demos/rule/index.html +636 -293
  33. package/docs-dev/demos/scroll-slider/index.html +12 -4
  34. package/docs-dev/demos/scrollpoints/index.html +636 -293
  35. package/docs-dev/demos/slider/index.html +12 -4
  36. package/docs-dev/demos/spoke-spinner/index.html +636 -293
  37. package/docs-dev/demos/tabs/index.html +648 -293
  38. package/docs-dev/demos/tag/index.html +636 -293
  39. package/docs-dev/demos/theme-toggle/index.html +5039 -0
  40. package/docs-dev/demos/tile-grid-overlay/index.html +12 -4
  41. package/docs-dev/demos/tiles/index.html +636 -293
  42. package/docs-dev/demos/tooltip/index.html +636 -293
  43. package/docs-dev/guide/building-stylesheet/index.html +636 -293
  44. package/docs-dev/guide/developing-ulu-scss-module/index.html +636 -293
  45. package/docs-dev/guide/index.html +637 -294
  46. package/docs-dev/guide/updates-and-changes/index.html +5033 -0
  47. package/docs-dev/index.html +641 -293
  48. package/docs-dev/javascript/events/index.html +633 -292
  49. package/docs-dev/javascript/index.html +636 -293
  50. package/docs-dev/javascript/settings/index.html +5094 -0
  51. package/docs-dev/javascript/ui-breakpoints/index.html +633 -292
  52. package/docs-dev/javascript/ui-collapsible/index.html +633 -292
  53. package/docs-dev/javascript/ui-details-group/index.html +5094 -0
  54. package/docs-dev/javascript/ui-dialog/index.html +633 -292
  55. package/docs-dev/javascript/ui-flipcard/index.html +633 -292
  56. package/docs-dev/javascript/ui-grid/index.html +633 -292
  57. package/docs-dev/javascript/ui-modal-builder/index.html +633 -292
  58. package/docs-dev/javascript/ui-overflow-scroller/index.html +633 -292
  59. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +633 -292
  60. package/docs-dev/javascript/ui-page/index.html +633 -292
  61. package/docs-dev/javascript/ui-popover/index.html +633 -292
  62. package/docs-dev/javascript/ui-print/index.html +633 -292
  63. package/docs-dev/javascript/ui-print-details/index.html +633 -292
  64. package/docs-dev/javascript/ui-programmatic-modal/index.html +633 -292
  65. package/docs-dev/javascript/ui-proxy-click/index.html +633 -292
  66. package/docs-dev/javascript/ui-resizer/index.html +633 -292
  67. package/docs-dev/javascript/ui-scroll-slider/index.html +633 -292
  68. package/docs-dev/javascript/ui-scrollpoint/index.html +633 -292
  69. package/docs-dev/javascript/ui-slider/index.html +633 -292
  70. package/docs-dev/javascript/ui-tabs/index.html +633 -292
  71. package/docs-dev/javascript/ui-theme-toggle/index.html +5178 -0
  72. package/docs-dev/javascript/ui-tooltip/index.html +633 -292
  73. package/docs-dev/javascript/utils-class-logger/index.html +633 -292
  74. package/docs-dev/javascript/utils-dom/index.html +697 -296
  75. package/docs-dev/javascript/utils-file-save/index.html +633 -292
  76. package/docs-dev/javascript/utils-floating-ui/index.html +633 -292
  77. package/docs-dev/javascript/utils-id/index.html +633 -292
  78. package/docs-dev/javascript/utils-pause-youtube-video/index.html +633 -292
  79. package/docs-dev/sass/base/color/index.html +633 -292
  80. package/docs-dev/sass/base/elements/index.html +633 -292
  81. package/docs-dev/sass/base/index/index.html +633 -292
  82. package/docs-dev/sass/base/index.html +636 -293
  83. package/docs-dev/sass/base/keyframes/index.html +633 -292
  84. package/docs-dev/sass/base/layout/index.html +633 -292
  85. package/docs-dev/sass/base/normalize/index.html +633 -292
  86. package/docs-dev/sass/base/print/index.html +633 -292
  87. package/docs-dev/sass/base/root/index.html +633 -292
  88. package/docs-dev/sass/base/typography/index.html +633 -292
  89. package/docs-dev/sass/components/accordion/index.html +638 -297
  90. package/docs-dev/sass/components/adaptive-spacing/index.html +633 -292
  91. package/docs-dev/sass/components/badge/index.html +641 -300
  92. package/docs-dev/sass/components/basic-hero/index.html +5145 -0
  93. package/docs-dev/sass/components/button/index.html +633 -292
  94. package/docs-dev/sass/components/button-verbose/index.html +634 -293
  95. package/docs-dev/sass/components/callout/index.html +658 -353
  96. package/docs-dev/sass/components/captioned-figure/index.html +756 -300
  97. package/docs-dev/sass/components/card/index.html +665 -309
  98. package/docs-dev/sass/components/card-grid/index.html +633 -292
  99. package/docs-dev/sass/components/css-icon/index.html +650 -302
  100. package/docs-dev/sass/components/data-grid/index.html +633 -292
  101. package/docs-dev/sass/components/data-table/index.html +829 -303
  102. package/docs-dev/sass/components/fill-context/index.html +633 -292
  103. package/docs-dev/sass/components/flipcard/index.html +641 -300
  104. package/docs-dev/sass/components/flipcard-grid/index.html +633 -292
  105. package/docs-dev/sass/components/form-theme/index.html +761 -319
  106. package/docs-dev/sass/components/hero/index.html +689 -300
  107. package/docs-dev/sass/components/horizontal-rule/index.html +633 -292
  108. package/docs-dev/sass/components/image-grid/index.html +633 -292
  109. package/docs-dev/sass/components/index/index.html +645 -302
  110. package/docs-dev/sass/components/index.html +636 -293
  111. package/docs-dev/sass/components/links/index.html +633 -292
  112. package/docs-dev/sass/components/list-inline/index.html +5159 -0
  113. package/docs-dev/sass/components/list-lines/index.html +665 -328
  114. package/docs-dev/sass/components/list-ordered/index.html +635 -294
  115. package/docs-dev/sass/components/list-unordered/index.html +633 -292
  116. package/docs-dev/sass/components/menu-stack/index.html +667 -313
  117. package/docs-dev/sass/components/modal/index.html +654 -306
  118. package/docs-dev/sass/components/nav-strip/index.html +645 -304
  119. package/docs-dev/sass/components/overlay-section/index.html +641 -300
  120. package/docs-dev/sass/components/pager/index.html +633 -292
  121. package/docs-dev/sass/components/placeholder-block/index.html +633 -292
  122. package/docs-dev/sass/components/popover/index.html +663 -292
  123. package/docs-dev/sass/components/pull-quote/index.html +645 -304
  124. package/docs-dev/sass/components/ratio-box/index.html +633 -292
  125. package/docs-dev/sass/components/rule/index.html +641 -300
  126. package/docs-dev/sass/components/scroll-slider/index.html +633 -292
  127. package/docs-dev/sass/components/skip-link/index.html +641 -300
  128. package/docs-dev/sass/components/slider/index.html +640 -299
  129. package/docs-dev/sass/components/spoke-spinner/index.html +633 -292
  130. package/docs-dev/sass/components/tabs/index.html +648 -300
  131. package/docs-dev/sass/components/tag/index.html +633 -292
  132. package/docs-dev/sass/components/tile-button/index.html +633 -292
  133. package/docs-dev/sass/components/tile-grid/index.html +633 -292
  134. package/docs-dev/sass/components/tile-grid-overlay/index.html +633 -292
  135. package/docs-dev/sass/components/vignette/index.html +647 -300
  136. package/docs-dev/sass/components/wysiwyg/index.html +633 -292
  137. package/docs-dev/sass/core/breakpoint/index.html +633 -292
  138. package/docs-dev/sass/core/button/index.html +633 -292
  139. package/docs-dev/sass/core/color/index.html +671 -323
  140. package/docs-dev/sass/core/cssvar/index.html +633 -292
  141. package/docs-dev/sass/core/element/index.html +633 -292
  142. package/docs-dev/sass/core/index.html +633 -292
  143. package/docs-dev/sass/core/layout/index.html +633 -292
  144. package/docs-dev/sass/core/path/index.html +633 -292
  145. package/docs-dev/sass/core/selector/index.html +633 -292
  146. package/docs-dev/sass/core/typography/index.html +633 -292
  147. package/docs-dev/sass/core/units/index.html +633 -292
  148. package/docs-dev/sass/core/utils/index.html +633 -292
  149. package/docs-dev/sass/helpers/color/index.html +633 -292
  150. package/docs-dev/sass/helpers/display/index.html +633 -292
  151. package/docs-dev/sass/helpers/index/index.html +633 -292
  152. package/docs-dev/sass/helpers/index.html +636 -293
  153. package/docs-dev/sass/helpers/print/index.html +633 -292
  154. package/docs-dev/sass/helpers/typography/index.html +633 -292
  155. package/docs-dev/sass/helpers/units/index.html +633 -292
  156. package/docs-dev/sass/helpers/utilities/index.html +633 -292
  157. package/docs-dev/sass/index.html +636 -293
  158. package/js/index.js +1 -0
  159. package/js/settings.js +78 -0
  160. package/js/ui/details-group.js +121 -0
  161. package/js/ui/index.js +1 -0
  162. package/js/ui/modal-builder.js +3 -2
  163. package/js/ui/overflow-scroller.js +5 -4
  164. package/js/ui/programmatic-modal.js +9 -3
  165. package/js/ui/slider.js +7 -6
  166. package/js/ui/theme-toggle.js +330 -89
  167. package/js/utils/dom.js +43 -1
  168. package/js/utils/font-awesome.js +18 -0
  169. package/js/utils/index.js +2 -1
  170. package/package.json +3 -2
  171. package/scss/_color.scss +9 -2
  172. package/scss/components/README.todos +14 -0
  173. package/scss/components/_accordion.scss +13 -13
  174. package/scss/components/_badge.scss +3 -2
  175. package/scss/components/_basic-hero.scss +112 -0
  176. package/scss/components/_button-verbose.scss +3 -2
  177. package/scss/components/_callout.scss +43 -54
  178. package/scss/components/_captioned-figure.scss +23 -5
  179. package/scss/components/_card-grid.scss +1 -1
  180. package/scss/components/_card.scss +52 -37
  181. package/scss/components/_css-icon.scss +16 -11
  182. package/scss/components/_data-table.scss +41 -4
  183. package/scss/components/_flipcard.scss +13 -12
  184. package/scss/components/_form-theme.scss +47 -47
  185. package/scss/components/_hero.scss +9 -0
  186. package/scss/components/_index.scss +12 -0
  187. package/scss/components/_list-inline.scss +80 -0
  188. package/scss/components/_list-lines.scss +44 -33
  189. package/scss/components/_list-ordered.scss +0 -1
  190. package/scss/components/_menu-stack.scss +42 -26
  191. package/scss/components/_modal.scss +23 -19
  192. package/scss/components/_nav-strip.scss +25 -16
  193. package/scss/components/_overlay-section.scss +2 -1
  194. package/scss/components/_pager.scss +6 -6
  195. package/scss/components/_placeholder-block.scss +4 -4
  196. package/scss/components/_popover.scss +38 -38
  197. package/scss/components/_pull-quote.scss +12 -12
  198. package/scss/components/_rule.scss +0 -1
  199. package/scss/components/_scroll-slider.scss +1 -1
  200. package/scss/components/_skip-link.scss +2 -1
  201. package/scss/components/_slider.scss +17 -38
  202. package/scss/components/_tabs.scss +42 -52
  203. package/scss/components/_tag.scss +1 -1
  204. package/scss/components/_vignette.scss +1 -0
  205. package/types/index.d.ts +1 -0
  206. package/types/settings.d.ts +38 -0
  207. package/types/settings.d.ts.map +1 -0
  208. package/types/ui/details-group.d.ts +43 -0
  209. package/types/ui/details-group.d.ts.map +1 -0
  210. package/types/ui/index.d.ts +1 -0
  211. package/types/ui/modal-builder.d.ts +2 -2
  212. package/types/ui/modal-builder.d.ts.map +1 -1
  213. package/types/ui/overflow-scroller.d.ts +2 -2
  214. package/types/ui/overflow-scroller.d.ts.map +1 -1
  215. package/types/ui/programmatic-modal.d.ts.map +1 -1
  216. package/types/ui/slider.d.ts +2 -2
  217. package/types/ui/slider.d.ts.map +1 -1
  218. package/types/ui/tabs.d.ts.map +1 -1
  219. package/types/ui/theme-toggle.d.ts +58 -7
  220. package/types/ui/theme-toggle.d.ts.map +1 -1
  221. package/types/utils/dom.d.ts +19 -1
  222. package/types/utils/dom.d.ts.map +1 -1
  223. package/types/utils/font-awesome.d.ts +5 -0
  224. package/types/utils/font-awesome.d.ts.map +1 -0
  225. package/types/utils/index.d.ts +1 -0
@@ -37,17 +37,17 @@ $config: (
37
37
  "margin-bottom" : 3rem,
38
38
  "margin-top" : 1rem,
39
39
  "button-icon-offset-x" : 2rem,
40
- "button-icon-offset-y" : false,
40
+ "button-icon-offset-y" : null,
41
41
  "button-margin" : 2rem,
42
42
  "button-size" : 3rem,
43
43
  "button-height": 2.5rem,
44
44
  "button-width": 2.5rem,
45
45
  "dot-background-color" : transparent,
46
- "dot-background-color-hover" : color.get("link"),
47
- "dot-background-color-selected" : color.get("link"),
48
- "dot-border-color" : color.get("link"),
49
- "dot-border-color-hover" : color.get("link"),
50
- "dot-border-color-selected" : color.get("link"),
46
+ "dot-background-color-hover" : "link",
47
+ "dot-background-color-selected" : "link",
48
+ "dot-border-color" : "link",
49
+ "dot-border-color-hover" : "link",
50
+ "dot-border-color-selected" : "link",
51
51
  "dot-border-radius" : 50%,
52
52
  "dot-border-width" : 2px,
53
53
  "dot-size" : 1rem,
@@ -83,7 +83,7 @@ $config: (
83
83
  $slide-padding-x: get("button-width") + get("button-margin");
84
84
  #{ $prefix } {
85
85
  position: relative; // for controls
86
- background-color: get("background-color");
86
+ background-color: color.get(get("background-color"));
87
87
  margin: get("margin-top") 0 get("margin-bottom") 0;
88
88
  }
89
89
  #{ $prefix }__track,
@@ -97,11 +97,7 @@ $config: (
97
97
  top: 50%;
98
98
  transform: translateY(-50%);
99
99
  z-index: 10;
100
- }
101
- @if get("button-icon-offset-y") {
102
- #{ $prefix-plugin }__control-icon {
103
- margin-top: get("button-icon-offset-y");
104
- }
100
+ margin-top: get("button-icon-offset-y");
105
101
  }
106
102
  #{ $prefix-plugin }__nav {
107
103
  display: flex;
@@ -114,17 +110,17 @@ $config: (
114
110
  display: block;
115
111
  width: get("dot-size");
116
112
  height: get("dot-size");
117
- background-color: get("dot-background-color");
118
- border: get("dot-border-width") solid get("dot-border-color");
113
+ background-color: color.get(get("dot-background-color"));
114
+ border: get("dot-border-width") solid color.get(get("dot-border-color"));
119
115
  border-radius: get("dot-border-radius");
120
116
  &:hover {
121
- background-color: get("dot-background-color-hover");
117
+ background-color: color.get(get("dot-background-color-hover"));
122
118
  }
123
119
  }
124
120
  #{ $prefix-plugin }__nav-button--active,
125
121
  #{ $prefix-plugin }__nav-button--active:hover {
126
- background-color: get("dot-background-color-selected");
127
- border-color: get("dot-border-color-selected");
122
+ background-color: color.get(get("dot-background-color-selected"));
123
+ border-color: color.get(get("dot-border-color-selected"));
128
124
  }
129
125
  #{ $prefix-plugin }__control-button,
130
126
  #{ $prefix-plugin }__nav-button {
@@ -164,19 +160,11 @@ $config: (
164
160
  }
165
161
  #{ $prefix-plugin }__control-button--previous {
166
162
  left: 0;
167
- @if get("button-icon-offset-x") {
168
- #{ $prefix-plugin }__control-icon {
169
- margin-left: get("button-icon-offset-x");
170
- }
171
- }
163
+ margin-left: get("button-icon-offset-x");
172
164
  }
173
165
  #{ $prefix-plugin }__control-button--next {
174
166
  right: 0;
175
- @if get("button-icon-offset-x") {
176
- #{ $prefix-plugin }__control-icon {
177
- margin-right: get("button-icon-offset-x");
178
- }
179
- }
167
+ margin-right: get("button-icon-offset-x");
180
168
  }
181
169
  #{ $prefix }--inset-controls {
182
170
  #{ $prefix }__slide-gap-for-controls {
@@ -186,20 +174,11 @@ $config: (
186
174
  }
187
175
  #{ $prefix-plugin }__control-button--previous {
188
176
  left: 0;
189
- @if get("button-icon-offset-x") {
190
- &#{ $prefix-plugin }__control-icon {
191
- margin-left: get("button-icon-offset-x");
192
-
193
- }
194
- }
177
+ margin-left: get("button-icon-offset-x");
195
178
  }
196
179
  #{ $prefix-plugin }__control-button--next {
197
180
  right: 0;
198
- @if get("button-icon-offset-x") {
199
- &#{ $prefix-plugin }__control-icon {
200
- margin-right: get("button-icon-offset-x");
201
- }
202
- }
181
+ margin-right: get("button-icon-offset-x");
203
182
  }
204
183
  }
205
184
  }
@@ -22,6 +22,10 @@ $-fallbacks: (
22
22
  "tab-font-weight" : (
23
23
  "function" : meta.get-function("get", false, "typography"),
24
24
  "property" : "font-weight-semibold"
25
+ ),
26
+ "vertical-breakpoint" : (
27
+ "function" : meta.get-function("get", false, "breakpoint"),
28
+ "property" : "default"
25
29
  )
26
30
  );
27
31
 
@@ -47,6 +51,7 @@ $-fallbacks: (
47
51
  /// @prop {Dimension} vertical-divider-width [0px] Divider between tabs and panels when vertical
48
52
  /// @prop {Dimension} vertical-tab-gap [0.75em] The gap between tabs when vertical
49
53
  /// @prop {Boolean} vertical-indicator-left [true] The indicator for selected tab should be on the left when vertical (false will be on right/inside)
54
+ /// @prop {Boolean} vertical-breakpoint [true] Set the breakpoint when the vertical tabs should switch to horizontal (defaults to breakpoint 'default')
50
55
  /// @prop {Boolean} horizontal-tab-wrap [false] Set to true to allow line wrapping when the tabs are in horizontal orientation, vertical is always allowed to wrap
51
56
 
52
57
  $config: (
@@ -70,6 +75,7 @@ $config: (
70
75
  "vertical-divider-width" : 0px,
71
76
  "vertical-tab-gap" : 0.75em,
72
77
  "vertical-indicator-left" : true,
78
+ "vertical-breakpoint" : true,
73
79
  "horizontal-tab-wrap" : false
74
80
  ) !default;
75
81
 
@@ -110,20 +116,30 @@ $config: (
110
116
  display: flex;
111
117
  gap: get("tab-gap");
112
118
  overflow-x: auto;
119
+ border-bottom: get("tablist-divider");
120
+ border-bottom-width: get("tablist-divider-width");
113
121
  }
114
122
  [role="tab"] {
115
123
  display: block;
116
124
  position: relative;
117
125
  cursor: pointer;
126
+ text-align: center;
118
127
  padding: get("tab-padding");
119
128
  color: color.get(get("tab-color"));
120
129
  font-weight: get("tab-font-weight");
130
+ @if (not get("horizontal-tab-wrap")) {
131
+ white-space: nowrap;
132
+ }
121
133
  // Indicator
122
134
  &::after {
123
135
  content: "";
124
136
  position: absolute;
125
137
  background-color: color.get(get("indicator-color"));
126
138
  opacity: 0;
139
+ bottom: 0;
140
+ left: 0;
141
+ right: 0;
142
+ height: get("indicator-size");
127
143
  }
128
144
  &:hover {
129
145
  color: color.get(get("tab-color-hover"));
@@ -131,41 +147,17 @@ $config: (
131
147
  &[aria-selected="true"] {
132
148
  color: color.get(get("tab-color-selected"));
133
149
  background-color: color.get(get("tab-background-color-selected"));
134
-
135
- }
136
- }
137
-
138
- // Styling for horizontal tabs
139
- &:not(#{ $prefix }--vertical) {
140
- [role="tablist"] {
141
- border-bottom: get("tablist-divider");
142
- border-bottom-width: get("tablist-divider-width");
143
- }
144
- [role="tab"] {
145
- text-align: center;
146
- @if (not get("horizontal-tab-wrap")) {
147
- white-space: nowrap;
148
- }
149
150
  &::after {
150
- bottom: 0;
151
- left: 0;
152
- right: 0;
153
- height: get("indicator-size");
154
- }
155
- &[aria-selected="true"] {
156
- &::after {
157
- opacity: 1;
158
- }
151
+ opacity: 1;
159
152
  }
160
153
  }
161
154
  }
162
-
163
155
  [role="tabpanel"] {
164
156
  position: relative;
165
157
  z-index: 1;
166
158
  padding: get("tabpanel-padding");
167
159
  overflow: hidden;
168
- background-color: get("tabpanel-background-color");
160
+ background-color: color.get(get("tabpanel-background-color"));
169
161
  }
170
162
  }
171
163
  // For images, etc that should fill tabpanel
@@ -182,36 +174,34 @@ $config: (
182
174
  }
183
175
  }
184
176
 
185
- #{ $prefix }--vertical {
186
- display: grid;
187
- grid-template-columns: get("vertical-tablist-width") auto;
188
- [role="tablist"] {
189
- flex-direction: column;
190
- gap: get("vertical-tab-gap");
191
- border-right: get("tablist-divider");
192
- border-right-width: get("vertical-divider-width");
193
- grid-column: 1;
194
- }
195
- [role="tab"] {
196
- padding: get("vertical-tab-padding");
197
- &::after {
198
- @if (get("vertical-indicator-left")) {
199
- left: 0;
200
- } @else {
201
- right: 0;
202
- }
203
- bottom: 0;
204
- top: 0;
205
- width: get("indicator-size");
177
+ @include breakpoint.min(get("vertical-breakpoint")) {
178
+ #{ $prefix }--vertical {
179
+ display: grid;
180
+ grid-template-columns: get("vertical-tablist-width") auto;
181
+ [role="tablist"] {
182
+ flex-direction: column;
183
+ gap: get("vertical-tab-gap");
184
+ border-right: get("tablist-divider");
185
+ border-right-width: get("vertical-divider-width");
186
+ border-bottom: none;
187
+ grid-column: 1;
206
188
  }
207
- &[aria-selected="true"] {
189
+ [role="tab"] {
190
+ padding: get("vertical-tab-padding");
191
+ white-space: normal;
192
+ text-align: left;
208
193
  &::after {
209
- opacity: 1;
194
+ left: if(get("vertical-indicator-left"), 0, auto);
195
+ right: if(not get("vertical-indicator-left"), 0, auto);;
196
+ bottom: 0;
197
+ top: 0;
198
+ width: get("indicator-size");
199
+ height: auto;
210
200
  }
211
201
  }
212
- }
213
- [role="tabpanel"] {
214
- grid-column: 2; // needed for equalHeights in vertical
202
+ [role="tabpanel"] {
203
+ grid-column: 2; // needed for equalHeights in vertical
204
+ }
215
205
  }
216
206
  }
217
207
 
@@ -144,7 +144,7 @@ $styles: (
144
144
  border: map.get($style, "border");
145
145
  border-radius: map.get($style, "border-radius");
146
146
  border-color: color.get(map.get($style, "border-color"));
147
- border-width: color.get(map.get($style, "border-width"));
147
+ border-width: map.get($style, "border-width");
148
148
  box-shadow: map.get($style, "box-shadow");
149
149
  padding: map.get($style, "padding");
150
150
  @if (typography.has-size($type-size)) {
@@ -12,6 +12,7 @@
12
12
  /// Module Settings
13
13
  /// @type Map
14
14
  /// @prop {Color} background-color [rgb(0,0,0)] Color used for the fade-in of the vignette. Must be actual color not color module palette name
15
+ /// @prop {CssValue} image-filter [saturate(85%)] Filter value placed over image.
15
16
 
16
17
  $config: (
17
18
  "background-color" : rgb(0,0,0),
package/types/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * as settings from "./settings.js";
1
2
  export * as events from "./events/index.js";
2
3
  export * as ui from "./ui/index.js";
3
4
  export * as utils from "./utils/index.js";
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Retrieves a copy of the default settings.
3
+ * @returns {object} A copy of the default settings object.
4
+ */
5
+ export function getDefaultSettings(): object;
6
+ /**
7
+ * Updates multiple configuration settings.
8
+ * @param {object} changes An object containing the settings to update.
9
+ */
10
+ export function updateSettings(changes: object): void;
11
+ /**
12
+ * Retrieves a copy of the current configuration settings.
13
+ * @returns {object} A copy of the current settings object.
14
+ */
15
+ export function getSettings(): object;
16
+ /**
17
+ * Retrieves a specific configuration setting by key.
18
+ * @param {string} key The key of the setting to retrieve.
19
+ * @returns {*} The value of the setting, or undefined if not found.
20
+ */
21
+ export function getSetting(key: string): any;
22
+ /**
23
+ * Updates a specific configuration setting.
24
+ * @param {string} key The key of the setting to update.
25
+ * @param {*} value The new value for the setting.
26
+ */
27
+ export function updateSetting(key: string, value: any): void;
28
+ /**
29
+ * Creates a wrapped string representation of a configuration setting.
30
+ * This function returns an object with a `toString()` method that, when called,
31
+ * retrieves the current value of the specified setting. This allows the setting
32
+ * to be used as a string literal, dynamically retrieving its value.
33
+ *
34
+ * @param {string} key The key of the setting to wrap.
35
+ * @returns {object} An object with a `toString()` method that returns the setting value.
36
+ */
37
+ export function wrapSettingString(key: string): object;
38
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../js/settings.js"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,sCAFa,MAAM,CAIlB;AAED;;;GAGG;AACH,wCAFW,MAAM,QAIhB;AAED;;;GAGG;AACH,+BAFa,MAAM,CAIlB;AAED;;;;GAIG;AACH,gCAHW,MAAM,OAShB;AAED;;;;GAIG;AACH,mCAHW,MAAM,oBAKhB;AAED;;;;;;;;GAQG;AACH,uCAHW,MAAM,GACJ,MAAM,CAQlB"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Initialize everything in document
3
+ * - This will only initialize elements once, it is safe to call on page changes
4
+ */
5
+ export function init(): void;
6
+ /**
7
+ * Setup all dialog groups within context
8
+ * @param {HTMLElement} context [document] Element to query within
9
+ * @returns {Array} Array matching the groups queried with their return objects from setupGroup() [used for destroy/etc]
10
+ */
11
+ export function setup(context?: HTMLElement): any[];
12
+ /**
13
+ * @typedef {Object} DetailsGroupInstance
14
+ * @property {Function} destroy A function to remove event listeners and attributes.
15
+ * @property {HTMLElement} element The parent element.
16
+ * @property {Function} setupChildren A function to initialize the child details elements.
17
+ */
18
+ /**
19
+ * Sets up a single group of details elements to manage their behavior.
20
+ * @param {HTMLElement} element - The parent element containing the details elements.
21
+ * @returns {DetailsGroupInstance}
22
+ */
23
+ export function setupGroup(element: HTMLElement): DetailsGroupInstance;
24
+ export namespace attrs {
25
+ let init: string;
26
+ let childInit: string;
27
+ let group: string;
28
+ }
29
+ export type DetailsGroupInstance = {
30
+ /**
31
+ * A function to remove event listeners and attributes.
32
+ */
33
+ destroy: Function;
34
+ /**
35
+ * The parent element.
36
+ */
37
+ element: HTMLElement;
38
+ /**
39
+ * A function to initialize the child details elements.
40
+ */
41
+ setupChildren: Function;
42
+ };
43
+ //# sourceMappingURL=details-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details-group.d.ts","sourceRoot":"","sources":["../../js/ui/details-group.js"],"names":[],"mappings":"AAuBA;;;GAGG;AACH,6BAGC;AAED;;;;GAIG;AACH,gCAHW,WAAW,SAYrB;AAED;;;;;GAKG;AAEH;;;;GAIG;AACH,oCAHW,WAAW,GACT,oBAAoB,CA8DhC;;;;;;;;;;;;;;aArEa,WAAW"}
@@ -19,5 +19,6 @@ export * as print from "./print.js";
19
19
  export * as printDetails from "./print-details.js";
20
20
  export * as scrollSlider from "./scroll-slider.js";
21
21
  export * as themeToggle from "./theme-toggle.js";
22
+ export * as detailsGroup from "./details-group.js";
22
23
  declare namespace ___Users_joescherben_Personal_Projects_ULU_frontend_js_ui_index_ { }
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -38,8 +38,8 @@ export namespace defaults {
38
38
  export let noMinHeight: boolean;
39
39
  let _class: string;
40
40
  export { _class as class };
41
- export let classCloseIcon: string;
42
- export let classResizerIcon: string;
41
+ export let classCloseIcon: any;
42
+ export let classResizerIcon: any;
43
43
  export let debug: boolean;
44
44
  export function templateCloseIcon(config: any): string;
45
45
  export function templateResizerIcon(config: any): string;
@@ -1 +1 @@
1
- {"version":3,"file":"modal-builder.d.ts","sourceRoot":"","sources":["../../js/ui/modal-builder.js"],"names":[],"mappings":"AA+FA;;GAEG;AACH,gDAEC;AAED;;;GAGG;AACH,6BAGC;AAED;;GAEG;AACH,8BAGC;AAED;;;GAGG;AACH,sCAFW,IAAI,QAMd;AAED;;;;GAIG;AACH,oCAHW,IAAI;;EAmDd;;;;;;;;;;;;;;;;;;IA5IC,uDAEC;IACD,yDAEC;IACD;;;;;OAKG;IACH,0DAmCC"}
1
+ {"version":3,"file":"modal-builder.d.ts","sourceRoot":"","sources":["../../js/ui/modal-builder.js"],"names":[],"mappings":"AAgGA;;GAEG;AACH,gDAEC;AAED;;;GAGG;AACH,6BAGC;AAED;;GAEG;AACH,8BAGC;AAED;;;GAGG;AACH,sCAFW,IAAI,QAMd;AAED;;;;GAIG;AACH,oCAHW,IAAI;;EAmDd;;;;;;;;;;;;;;;;;;IA5IC,uDAEC;IACD,yDAEC;IACD;;;;;OAKG;IACH,0DAmCC"}
@@ -8,8 +8,8 @@ export class OverflowScroller {
8
8
  offsetEnd: number;
9
9
  amount: string;
10
10
  buttonClasses: string[];
11
- iconClassesPrevious: string[];
12
- iconClassesNext: string[];
11
+ iconClassPrevious: any;
12
+ iconClassNext: any;
13
13
  };
14
14
  constructor(elements: any, config: any);
15
15
  options: any;
@@ -1 +1 @@
1
- {"version":3,"file":"overflow-scroller.d.ts","sourceRoot":"","sources":["../../js/ui/overflow-scroller.js"],"names":[],"mappings":"AAkBA;IACE,wBAAsB;IACtB;;;;;;;;;;MAUC;IACD,wCAeC;IAdC,aAAmE;IAInE,cAGC;IACD,qBAAuB;IACvB,yBAA2B;IAC3B,gCAA4C;IAK9C,sBAGC;IADC,qBAAwD;IAE1D;;;;;;MA2BC;IACD,oDAQC;IACD,uCAMC;IACD,2BAGC;IACD,2BAiBC;IACD,8CAeC;IACD,6BAaC;IACD,aAMC;IACD,iBAMC;IACD,6BAGC;CACF"}
1
+ {"version":3,"file":"overflow-scroller.d.ts","sourceRoot":"","sources":["../../js/ui/overflow-scroller.js"],"names":[],"mappings":"AAmBA;IACE,wBAAsB;IACtB;;;;;;;;;;MAUC;IACD,wCAeC;IAdC,aAAmE;IAInE,cAGC;IACD,qBAAuB;IACvB,yBAA2B;IAC3B,gCAA4C;IAK9C,sBAGC;IADC,qBAAwD;IAE1D;;;;;;MA2BC;IACD,oDAQC;IACD,uCAMC;IACD,2BAGC;IACD,2BAiBC;IACD,8CAeC;IACD,6BAaC;IACD,aAMC;IACD,iBAMC;IACD,6BAGC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"programmatic-modal.d.ts","sourceRoot":"","sources":["../../js/ui/programmatic-modal.js"],"names":[],"mappings":"AASA;IACE;;;MAGE;IACF,gCAeC;IAbC,aAAsB;IACtB,cAAoB;IACpB,mBAAyB;IAEzB,qCAGC;IACD,2BAEC;IAIH,sBAMC;IACD,gBAMC;IACD;;;;MA6CC;CACF"}
1
+ {"version":3,"file":"programmatic-modal.d.ts","sourceRoot":"","sources":["../../js/ui/programmatic-modal.js"],"names":[],"mappings":"AAUA;IACE;;;MAGE;IACF,gCAeC;IAbC,aAAsB;IACtB,cAAoB;IACpB,mBAAyB;IAEzB,qCAGC;IACD,2BAEC;IAIH,sBAMC;IACD,gBAMC;IACD;;;;MAkDC;CACF"}
@@ -20,8 +20,8 @@ export class Slider {
20
20
  transitionDurationExit: number;
21
21
  transitionTimingFunction: string;
22
22
  buttonClasses: string[];
23
- iconClassesPrevious: string[];
24
- iconClassesNext: string[];
23
+ iconClassPrevious: any;
24
+ iconClassNext: any;
25
25
  };
26
26
  constructor(elements: any, config: any, debug?: boolean);
27
27
  debug: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../js/ui/slider.js"],"names":[],"mappings":"AA8EA,6BAGC;AAED,8BAGC;AAED,kDAqBC;;;;;;;;AAED;IACE,wBAAsB;IACtB;;;;;;;;;;;;MAaC;IAED,yDAiCC;IA/BC,eAA+B;IAC/B,aAAsB;IACtB;;;;MAAiB;IACjB,WAAiB;IACjB,uBAA0B;IAQ1B;;;;QAME;IACF,cAIC;IAED;;;cACuF;IAMzF;;OAEG;IACH,qBAKC;IACD;;OAEG;IACH,2BAOC;IACD;;OAEG;IACH,uBAMC;IACD;;;;;;OAMG;IACH,8BAJW,MAAM,YACN,MAAM,kCAqChB;IACD;;OAEG;IACH,wCASC;IACD;;;OAGG;IACH,oDASC;IACD;;OAEG;IACH,yCAOC;IACD;;OAEG;IACH;;;;;;sBAoDC;IACD;;OAEG;IACH;;;sBAUC;IACD;;OAEG;IACH;;;YAOC;IACD,qDA0CC;IACD,cAYC;IACD,+BAKC;IACD,qCAOC;IACD,mBAQC;IACD,mBASC;IACD,yCASC;IACD,oDASC;IACD;;;;;;MAwBC;IACD;;;;MAmBC;IACD,2DAQC;IAED,uCAMC;IACD,mCAEC;IACD,iCAIC;CACF"}
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../js/ui/slider.js"],"names":[],"mappings":"AA+EA,6BAGC;AAED,8BAGC;AAED,kDAqBC;;;;;;;;AAED;IACE,wBAAsB;IACtB;;;;;;;;;;;;MAaC;IAED,yDAiCC;IA/BC,eAA+B;IAC/B,aAAsB;IACtB;;;;MAAiB;IACjB,WAAiB;IACjB,uBAA0B;IAQ1B;;;;QAME;IACF,cAIC;IAED;;;cACuF;IAMzF;;OAEG;IACH,qBAKC;IACD;;OAEG;IACH,2BAOC;IACD;;OAEG;IACH,uBAMC;IACD;;;;;;OAMG;IACH,8BAJW,MAAM,YACN,MAAM,kCAqChB;IACD;;OAEG;IACH,wCASC;IACD;;;OAGG;IACH,oDASC;IACD;;OAEG;IACH,yCAOC;IACD;;OAEG;IACH;;;;;;sBAoDC;IACD;;OAEG;IACH;;;sBAUC;IACD;;OAEG;IACH;;;YAOC;IACD,qDA0CC;IACD,cAYC;IACD,+BAKC;IACD,qCAOC;IACD,mBAQC;IACD,mBASC;IACD,yCASC;IACD,oDAUC;IACD;;;;;;MAwBC;IACD;;;;MAmBC;IACD,2DAQC;IACD,uCAMC;IACD,mCAEC;IACD,iCAIC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../js/ui/tabs.js"],"names":[],"mappings":"AAeA;;;GAGG;AACH,0CAcC;AAED;;;;GAIG;AACH,oCAHW,IAAI,uBAUd;AAED;;;;;GAKG;AACH,+BAJW,IAAI,YACJ,IAAI,OAuCd;AAlFD;;;GAGG;AACH,8BAA4B"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../js/ui/tabs.js"],"names":[],"mappings":"AAqBA;;;GAGG;AACH,0CAcC;AAED;;;;GAIG;AACH,oCAHW,IAAI,uBAUd;AAED;;;;;GAKG;AACH,+BAJW,IAAI,YACJ,IAAI,OAuCd;AAlFD;;;GAGG;AACH,8BAA4B"}
@@ -1,14 +1,65 @@
1
+ /**
2
+ * @param {Object} options Change options used as default for dialogs, can then be overridden by data attribute settings on element
3
+ */
4
+ export function setDefaults(options: any): void;
1
5
  /**
2
6
  * Initialize everything in document
3
7
  * - This will only initialize elements once, it is safe to call on page changes
4
8
  */
5
9
  export function init(): void;
6
- export function setup(context?: Document): void;
7
- export namespace options {
8
- let darkTheme: string;
9
- let lightTheme: string;
10
- let defaultTheme: string;
11
- let darkIcon: string;
12
- let lightIcon: string;
10
+ /**
11
+ * Query and setup all
12
+ */
13
+ export function setup(): void;
14
+ /**
15
+ * Sets up a single toggle
16
+ * @param {HTMLElement} toggle A toggle to be setup
17
+ */
18
+ export function setupToggle(toggle: HTMLElement, passedOptions: any): {
19
+ destroy: () => void;
20
+ toggle: HTMLElement;
21
+ options: any;
22
+ toggleState: (event: any) => void;
23
+ setState(themeKey: any): void;
24
+ };
25
+ export namespace attrs {
26
+ let init: string;
27
+ let toggle: string;
28
+ let toggleIcon: string;
29
+ let toggleLabel: string;
30
+ let toggleRemote: string;
31
+ let state: string;
32
+ }
33
+ export namespace defaults {
34
+ namespace themes {
35
+ namespace light {
36
+ let label: string;
37
+ let value: string;
38
+ let iconClass: string;
39
+ let targetClass: string;
40
+ let mediaQuery: string;
41
+ }
42
+ namespace dark {
43
+ let label_1: string;
44
+ export { label_1 as label };
45
+ let iconClass_1: string;
46
+ export { iconClass_1 as iconClass };
47
+ let targetClass_1: string;
48
+ export { targetClass_1 as targetClass };
49
+ let mediaQuery_1: string;
50
+ export { mediaQuery_1 as mediaQuery };
51
+ }
52
+ }
53
+ let target: string;
54
+ let group: any;
55
+ /**
56
+ * Optional callback to do something when the state changes
57
+ */
58
+ function onChange(_ctx: any): void;
59
+ let initialState: string;
60
+ let checkMediaQuery: boolean;
61
+ let savePreference: boolean;
62
+ let storagePrefix: string;
63
+ let debug: boolean;
13
64
  }
14
65
  //# sourceMappingURL=theme-toggle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../../js/ui/theme-toggle.js"],"names":[],"mappings":"AA6BA;;;GAGG;AACH,6BAOC;AAED,gDAeC"}
1
+ {"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../../js/ui/theme-toggle.js"],"names":[],"mappings":"AAmGA;;GAEG;AACH,gDAEC;AAED;;;GAGG;AACH,6BAGC;AAED;;GAEG;AACH,8BAEC;AAED;;;GAGG;AACH,oCAFW,WAAW;;;;;;EAiGrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA1JC;;OAEG;IACH,mCAAiB"}
@@ -32,8 +32,26 @@ export function setPositionClasses(parent: Node, classes?: any): void;
32
32
  * Resolve a target to Element
33
33
  * @param {String|Node} target The selector or node/element
34
34
  * @param {Object} context [document] The context to query possible selectors from
35
+ * @return {HTMLElement} The element or null if not found
35
36
  */
36
- export function getElement(target: string | Node, context?: any): any;
37
+ export function getElement(target: string | Node, context?: any): HTMLElement;
38
+ /**
39
+ * Resolve a target to Elements
40
+ * @param {String|Node} target The selector or node/element
41
+ * @param {Object} context [document] The context to query possible selectors from
42
+ * @return {Array} The elements or null if not found
43
+ */
44
+ export function getElements(target: string | Node, context?: any): any[];
45
+ /**
46
+ * Resolves a class input (string or array) into a consistent array of class names.
47
+ * @param {string|string[]} input - The class input, which can be a string, an array of strings, or any other value.
48
+ * @returns {string[]} An array of class names. Returns an empty array for invalid or falsy input.
49
+ * @example
50
+ * resolveClassArray("fas fa-check my-class"); // Returns ["fas", "fa-check", "my-class"]
51
+ * resolveClassArray(["another-class", "yet-another-class"]); // Returns ["another-class", "yet-another-class"]
52
+ * resolveClassArray("single-class"); // Returns ["single-class"]
53
+ */
54
+ export function resolveClasses(classes: any): string[];
37
55
  /**
38
56
  * Sets a CSS custom property equal to the scrollbar width
39
57
  * @param {Node} element The element that is the child of a scrollabel container
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../js/utils/dom.js"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,wCAJW,IAAI,oBAYd;AAED;;;;;;GAMG;AACH,gDAJW,IAAI,gBAEF,YAAa,CASzB;AAED;;GAEG;AACH,mEAMC;AAGD;;;;;;;;;GASG;AACH,2CAHa,IAAI,uBAoChB;AAED;;;;GAIG;AACH,mCAHW,SAAO,IAAI,sBAYrB;AAED;;;;;GAKG;AACH,+CAJW,IAAI,cACJ,IAAI,2BAMd;AAzHD;;GAEG;AAGH,qCAAqD"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../js/utils/dom.js"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,wCAJW,IAAI,oBAYd;AAED;;;;;;GAMG;AACH,gDAJW,IAAI,gBAEF,YAAa,CASzB;AAED;;GAEG;AACH,mEAMC;AAGD;;;;;;;;;GASG;AACH,2CAHa,IAAI,uBAoChB;AAED;;;;;GAKG;AACH,mCAJW,SAAO,IAAI,kBAEV,WAAW,CAWtB;AAED;;;;;GAKG;AACH,oCAJW,SAAO,IAAI,wBAerB;AAED;;;;;;;;GAQG;AACH,8CANa,MAAM,EAAE,CAiBpB;AAED;;;;;GAKG;AACH,+CAJW,IAAI,cACJ,IAAI,2BAMd;AAnKD;;GAEG;AAGH,qCAAqD"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Sets icon settings to Font Awesome icons
3
+ */
4
+ export function configureIcons(): void;
5
+ //# sourceMappingURL=font-awesome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font-awesome.d.ts","sourceRoot":"","sources":["../../js/utils/font-awesome.js"],"names":[],"mappings":"AAOA;;GAEG;AACH,uCAOC"}
@@ -5,5 +5,6 @@ export * as id from "./id.js";
5
5
  export * as index from "./index.js";
6
6
  export * as pauseYoutubeVideo from "./pause-youtube-video.js";
7
7
  export * as fileSave from "./file-save.js";
8
+ export * as fontAwesome from "./font-awesome.js";
8
9
  declare namespace ___Users_joescherben_Personal_Projects_ULU_frontend_js_utils_index_ { }
9
10
  //# sourceMappingURL=index.d.ts.map