@ulu/frontend 0.1.0-beta.82 → 0.1.0-beta.84

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 (193) hide show
  1. package/CHANGELOG.md +32 -3
  2. package/dist/ulu-frontend.min.css +1 -1
  3. package/dist/ulu-frontend.min.js +17 -17
  4. package/docs-dev/assets/main.js +494 -7738
  5. package/docs-dev/assets/style.css +166 -221
  6. package/docs-dev/changelog/index.html +294 -3
  7. package/docs-dev/changelog/updates-and-changes/index.html +5109 -0
  8. package/docs-dev/demos/accordion/index.html +240 -0
  9. package/docs-dev/demos/badge/index.html +240 -0
  10. package/docs-dev/demos/breakpoints-manager/index.html +240 -0
  11. package/docs-dev/demos/button/index.html +240 -0
  12. package/docs-dev/demos/button-group/index.html +5502 -0
  13. package/docs-dev/demos/button-verbose/index.html +240 -0
  14. package/docs-dev/demos/callout/index.html +240 -0
  15. package/docs-dev/demos/captioned-figure/index.html +240 -0
  16. package/docs-dev/demos/card/index.html +256 -16
  17. package/docs-dev/demos/card-grid/index.html +240 -0
  18. package/docs-dev/demos/card-new/index.html +5088 -0
  19. package/docs-dev/demos/card-old/index.html +5223 -0
  20. package/docs-dev/demos/card.1/index.html +5223 -0
  21. package/docs-dev/demos/card.TRASH/index.html +5541 -0
  22. package/docs-dev/demos/counter-list/index.html +240 -0
  23. package/docs-dev/demos/css-icons/index.html +240 -0
  24. package/docs-dev/demos/data-grid/index.html +240 -0
  25. package/docs-dev/demos/data-table/index.html +340 -100
  26. package/docs-dev/demos/details-group/index.html +240 -0
  27. package/docs-dev/demos/file-save/index.html +240 -0
  28. package/docs-dev/demos/flipcard/index.html +240 -0
  29. package/docs-dev/demos/form-theme/index.html +240 -0
  30. package/docs-dev/demos/headline-label/index.html +5472 -0
  31. package/docs-dev/demos/index.html +240 -0
  32. package/docs-dev/demos/list-inline/index.html +240 -0
  33. package/docs-dev/demos/list-inline.1/index.html +4727 -0
  34. package/docs-dev/demos/list-lines/index.html +240 -0
  35. package/docs-dev/demos/menu-stack/index.html +240 -0
  36. package/docs-dev/demos/modals/index.html +240 -0
  37. package/docs-dev/demos/nav-strip/index.html +240 -0
  38. package/docs-dev/demos/overlay-section/index.html +240 -0
  39. package/docs-dev/demos/panel/index.html +5532 -0
  40. package/docs-dev/demos/popovers/index.html +240 -0
  41. package/docs-dev/demos/print/index.html +240 -0
  42. package/docs-dev/demos/pull-quote/index.html +240 -0
  43. package/docs-dev/demos/rail/index.html +5568 -0
  44. package/docs-dev/demos/rule/index.html +240 -0
  45. package/docs-dev/demos/scrollpoints/index.html +240 -0
  46. package/docs-dev/demos/spoke-spinner/index.html +240 -0
  47. package/docs-dev/demos/sticky-list/index.html +240 -0
  48. package/docs-dev/demos/tabs/index.html +240 -0
  49. package/docs-dev/demos/tag/index.html +240 -0
  50. package/docs-dev/demos/theme-toggle/index.html +240 -0
  51. package/docs-dev/demos/tiles/index.html +240 -0
  52. package/docs-dev/demos/tooltip/index.html +240 -0
  53. package/docs-dev/guide/building-stylesheet/index.html +240 -0
  54. package/docs-dev/guide/developing-ulu-scss-module/index.html +240 -0
  55. package/docs-dev/guide/index.html +240 -0
  56. package/docs-dev/guide/updates-and-changes/index.html +5033 -0
  57. package/docs-dev/index.html +240 -0
  58. package/docs-dev/javascript/events/index.html +240 -0
  59. package/docs-dev/javascript/index.html +240 -0
  60. package/docs-dev/javascript/settings/index.html +240 -0
  61. package/docs-dev/javascript/ui-breakpoints/index.html +240 -0
  62. package/docs-dev/javascript/ui-collapsible/index.html +240 -0
  63. package/docs-dev/javascript/ui-details-group/index.html +240 -0
  64. package/docs-dev/javascript/ui-dialog/index.html +240 -0
  65. package/docs-dev/javascript/ui-flipcard/index.html +240 -0
  66. package/docs-dev/javascript/ui-grid/index.html +240 -0
  67. package/docs-dev/javascript/ui-modal-builder/index.html +240 -0
  68. package/docs-dev/javascript/ui-overflow-scroller/index.html +240 -0
  69. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +240 -0
  70. package/docs-dev/javascript/ui-page/index.html +240 -0
  71. package/docs-dev/javascript/ui-popover/index.html +240 -0
  72. package/docs-dev/javascript/ui-print/index.html +240 -0
  73. package/docs-dev/javascript/ui-print-details/index.html +240 -0
  74. package/docs-dev/javascript/ui-programmatic-modal/index.html +240 -0
  75. package/docs-dev/javascript/ui-proxy-click/index.html +240 -0
  76. package/docs-dev/javascript/ui-resizer/index.html +452 -16
  77. package/docs-dev/javascript/ui-scroll-slider/index.html +240 -0
  78. package/docs-dev/javascript/ui-scrollpoint/index.html +240 -0
  79. package/docs-dev/javascript/ui-slider/index.html +240 -0
  80. package/docs-dev/javascript/ui-tabs/index.html +240 -0
  81. package/docs-dev/javascript/ui-theme-toggle/index.html +240 -0
  82. package/docs-dev/javascript/ui-tooltip/index.html +240 -0
  83. package/docs-dev/javascript/utils-class-logger/index.html +240 -0
  84. package/docs-dev/javascript/utils-css/index.html +240 -0
  85. package/docs-dev/javascript/utils-dom/index.html +240 -0
  86. package/docs-dev/javascript/utils-file-save/index.html +240 -0
  87. package/docs-dev/javascript/utils-floating-ui/index.html +240 -0
  88. package/docs-dev/javascript/utils-id/index.html +240 -0
  89. package/docs-dev/javascript/utils-pause-youtube-video/index.html +240 -0
  90. package/docs-dev/javascript/utils-system/index.html +240 -0
  91. package/docs-dev/sass/base/color/index.html +240 -0
  92. package/docs-dev/sass/base/elements/index.html +240 -0
  93. package/docs-dev/sass/base/index/index.html +240 -0
  94. package/docs-dev/sass/base/index.html +240 -0
  95. package/docs-dev/sass/base/keyframes/index.html +240 -0
  96. package/docs-dev/sass/base/layout/index.html +240 -0
  97. package/docs-dev/sass/base/normalize/index.html +240 -0
  98. package/docs-dev/sass/base/print/index.html +240 -0
  99. package/docs-dev/sass/base/root/index.html +240 -0
  100. package/docs-dev/sass/base/typography/index.html +240 -0
  101. package/docs-dev/sass/components/accordion/index.html +240 -0
  102. package/docs-dev/sass/components/adaptive-spacing/index.html +240 -0
  103. package/docs-dev/sass/components/badge/index.html +240 -0
  104. package/docs-dev/sass/components/basic-hero/index.html +240 -0
  105. package/docs-dev/sass/components/button/index.html +240 -0
  106. package/docs-dev/sass/components/button-group/index.html +5653 -0
  107. package/docs-dev/sass/components/button-verbose/index.html +240 -0
  108. package/docs-dev/sass/components/callout/index.html +240 -0
  109. package/docs-dev/sass/components/captioned-figure/index.html +240 -0
  110. package/docs-dev/sass/components/card/index.html +240 -0
  111. package/docs-dev/sass/components/card-grid/index.html +240 -0
  112. package/docs-dev/sass/components/counter-list/index.html +240 -0
  113. package/docs-dev/sass/components/css-icon/index.html +240 -0
  114. package/docs-dev/sass/components/data-grid/index.html +254 -14
  115. package/docs-dev/sass/components/data-table/index.html +240 -0
  116. package/docs-dev/sass/components/fill-context/index.html +240 -0
  117. package/docs-dev/sass/components/flipcard/index.html +240 -0
  118. package/docs-dev/sass/components/flipcard-grid/index.html +240 -0
  119. package/docs-dev/sass/components/form-theme/index.html +240 -0
  120. package/docs-dev/sass/components/headline-label/index.html +5683 -0
  121. package/docs-dev/sass/components/hero/index.html +240 -0
  122. package/docs-dev/sass/components/horizontal-rule/index.html +240 -0
  123. package/docs-dev/sass/components/image-grid/index.html +240 -0
  124. package/docs-dev/sass/components/index/index.html +254 -10
  125. package/docs-dev/sass/components/index.html +240 -0
  126. package/docs-dev/sass/components/links/index.html +240 -0
  127. package/docs-dev/sass/components/list-inline/index.html +240 -0
  128. package/docs-dev/sass/components/list-lines/index.html +240 -0
  129. package/docs-dev/sass/components/list-ordered/index.html +240 -0
  130. package/docs-dev/sass/components/list-unordered/index.html +240 -0
  131. package/docs-dev/sass/components/menu-stack/index.html +240 -0
  132. package/docs-dev/sass/components/modal/index.html +240 -0
  133. package/docs-dev/sass/components/nav-strip/index.html +240 -0
  134. package/docs-dev/sass/components/overlay-section/index.html +240 -0
  135. package/docs-dev/sass/components/pager/index.html +240 -0
  136. package/docs-dev/sass/components/panel/index.html +5883 -0
  137. package/docs-dev/sass/components/placeholder-block/index.html +240 -0
  138. package/docs-dev/sass/components/popover/index.html +240 -0
  139. package/docs-dev/sass/components/pull-quote/index.html +240 -0
  140. package/docs-dev/sass/components/rail/index.html +5670 -0
  141. package/docs-dev/sass/components/ratio-box/index.html +240 -0
  142. package/docs-dev/sass/components/rule/index.html +240 -0
  143. package/docs-dev/sass/components/scroll-slider/index.html +240 -0
  144. package/docs-dev/sass/components/skip-link/index.html +240 -0
  145. package/docs-dev/sass/components/slider/index.html +240 -0
  146. package/docs-dev/sass/components/spoke-spinner/index.html +240 -0
  147. package/docs-dev/sass/components/sticky-list/index.html +240 -0
  148. package/docs-dev/sass/components/tabs/index.html +240 -0
  149. package/docs-dev/sass/components/tag/index.html +240 -0
  150. package/docs-dev/sass/components/tile-button/index.html +240 -0
  151. package/docs-dev/sass/components/tile-grid/index.html +240 -0
  152. package/docs-dev/sass/components/tile-grid-overlay/index.html +240 -0
  153. package/docs-dev/sass/components/vignette/index.html +240 -0
  154. package/docs-dev/sass/components/wysiwyg/index.html +240 -0
  155. package/docs-dev/sass/core/breakpoint/index.html +241 -1
  156. package/docs-dev/sass/core/button/index.html +272 -30
  157. package/docs-dev/sass/core/color/index.html +240 -0
  158. package/docs-dev/sass/core/cssvar/index.html +240 -0
  159. package/docs-dev/sass/core/element/index.html +346 -30
  160. package/docs-dev/sass/core/index.html +240 -0
  161. package/docs-dev/sass/core/layout/index.html +240 -0
  162. package/docs-dev/sass/core/path/index.html +240 -0
  163. package/docs-dev/sass/core/selector/index.html +240 -0
  164. package/docs-dev/sass/core/typography/index.html +240 -0
  165. package/docs-dev/sass/core/units/index.html +240 -0
  166. package/docs-dev/sass/core/utils/index.html +358 -76
  167. package/docs-dev/sass/helpers/color/index.html +240 -0
  168. package/docs-dev/sass/helpers/display/index.html +240 -0
  169. package/docs-dev/sass/helpers/index/index.html +240 -0
  170. package/docs-dev/sass/helpers/index.html +240 -0
  171. package/docs-dev/sass/helpers/typography/index.html +240 -0
  172. package/docs-dev/sass/helpers/units/index.html +240 -0
  173. package/docs-dev/sass/helpers/utilities/index.html +240 -0
  174. package/docs-dev/sass/index.html +240 -0
  175. package/js/ui/modal-builder.js +2 -2
  176. package/js/ui/resizer.js +331 -112
  177. package/js/utils/font-awesome.js +1 -1
  178. package/package.json +1 -1
  179. package/scss/_breakpoint.scss +1 -1
  180. package/scss/_button.scss +7 -5
  181. package/scss/_element.scss +16 -0
  182. package/scss/_utils.scss +7 -0
  183. package/scss/components/_button-group.scss +90 -0
  184. package/scss/components/_data-grid.scss +0 -3
  185. package/scss/components/_headline-label.scss +83 -0
  186. package/scss/components/_index.scss +24 -0
  187. package/scss/components/_panel.scss +246 -0
  188. package/scss/components/_rail.scss +120 -0
  189. package/types/ui/dialog.d.ts.map +1 -1
  190. package/types/ui/index.d.ts +1 -1
  191. package/types/ui/resizer.d.ts +85 -12
  192. package/types/ui/resizer.d.ts.map +1 -1
  193. package/types/utils/index.d.ts +1 -1
@@ -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
+ }
@@ -3,9 +3,6 @@
3
3
  /// A page grid layout component that uses data attribute instead of class names, for brevity and readability
4
4
  ////
5
5
 
6
- /// Content Block
7
- /// @demo data-grid
8
-
9
6
  @use "sass:map";
10
7
  @use "sass:math";
11
8
 
@@ -0,0 +1,83 @@
1
+ ////
2
+ /// @group headline-label
3
+ ////
4
+
5
+ @use "sass:map";
6
+ @use "sass:meta";
7
+ @use "../utils";
8
+ @use "../color";
9
+ @use "../typography";
10
+
11
+ // Used for function fallback
12
+ $-fallbacks: (
13
+ "font-weight" : (
14
+ "function" : meta.get-function("get", false, "typography"),
15
+ "property" : "font-weight-bold"
16
+ ),
17
+ "font-family" : (
18
+ "function" : meta.get-function("get", false, "typography"),
19
+ "property" : "font-family-sans"
20
+ ),
21
+ "line-height" : (
22
+ "function" : meta.get-function("get", false, "typography"),
23
+ "property" : "line-height-dense"
24
+ )
25
+ );
26
+
27
+ /// Module Settings
28
+ /// @type Map
29
+ /// @prop {Color} color [ulu.cssvar-use("color-accent")] The text color of the headline label.
30
+ /// @prop {Dimension} margin-bottom [0.2em] The bottom margin of the headline label.
31
+ /// @prop {String} font-weight [typography.get("font-weight-bold")] The font weight of the headline label.
32
+ /// @prop {String} font-family [typography.get("font-family-sans")] The font family of the headline label.
33
+ /// @prop {Dimension|Number} line-height [typography.get("line-height-dense")] The font family of the headline label.
34
+ /// @prop {String} text-transform [null] The font family of the headline label.
35
+ /// @prop {String} type-size ["small"] The typography size preset to use for the headline label (e.g., "small", "medium", "large"), Only uses the font-size value for size
36
+
37
+ $config: (
38
+ "color": "accent",
39
+ "margin-bottom": 0.2em,
40
+ "font-weight": true,
41
+ "font-family": true,
42
+ "line-height": true,
43
+ "text-transform" : null,
44
+ "type-size": "small"
45
+ ) !default;
46
+
47
+ /// Change modules $config
48
+ /// @param {Map} $changes Map of changes
49
+ /// @example scss
50
+ /// @include ulu.component-headline-label-set(( "color" : red ));
51
+
52
+ @mixin set($changes) {
53
+ $config: map.merge($config, $changes) !global;
54
+ }
55
+
56
+ /// Get a config option
57
+ /// @param {String} $name Name of property
58
+ /// @example scss
59
+ /// @include ulu.component-headline-label-get("color");
60
+
61
+ @function get($name) {
62
+ $value: utils.require-map-get($config, $name, "headline-label [config]");
63
+ @return utils.function-fallback($name, $value, $-fallbacks);
64
+ }
65
+
66
+ /// Prints component styles
67
+ /// @example scss
68
+ /// @include ulu.component-headline-label-styles();
69
+
70
+ @mixin styles {
71
+ .headline-label {
72
+ display: block;
73
+ margin-bottom: get("margin-bottom");
74
+ font-weight: get("font-weight");
75
+ font-family: get("font-family");
76
+ line-height: get("line-height");
77
+ text-transform: get("text-transform");
78
+ color: color.get(get("color"));
79
+ @if (get("type-size")) {
80
+ @include typography.size(get("type-size"), $only-font-size: true);
81
+ }
82
+ }
83
+ }
@@ -8,6 +8,7 @@
8
8
  @forward "badge" as badge-*;
9
9
  @forward "basic-hero" as basic-hero-*;
10
10
  @forward "button" as button-*;
11
+ @forward "button-group" as button-group-*;
11
12
  @forward "button-verbose" as button-verbose-*;
12
13
  @forward "callout" as callout-*;
13
14
  @forward "card" as card-*;
@@ -20,6 +21,7 @@
20
21
  @forward "flipcard" as flipcard-*;
21
22
  @forward "flipcard-grid" as flipcard-grid-*;
22
23
  @forward "form-theme" as form-theme-*;
24
+ @forward "headline-label" as headline-label-*;
23
25
  @forward "horizontal-rule" as horizontal-rule-*;
24
26
  @forward "image-grid" as image-grid-*;
25
27
  @forward "links" as links-*;
@@ -32,9 +34,11 @@
32
34
  @forward "nav-strip" as nav-strip-*;
33
35
  @forward "overlay-section" as overlay-section-*;
34
36
  @forward "pager" as pager-*;
37
+ @forward "panel" as panel-*;
35
38
  @forward "placeholder-block" as placeholder-block-*;
36
39
  @forward "pull-quote" as pull-quote-*;
37
40
  @forward "popover" as popover-*;
41
+ @forward "rail" as rail-*;
38
42
  @forward "ratio-box" as ratio-box-*;
39
43
  @forward "rule" as rule-*;
40
44
  @forward "scroll-slider" as scroll-slider-*;
@@ -60,6 +64,7 @@
60
64
  @use "badge";
61
65
  @use "basic-hero";
62
66
  @use "button";
67
+ @use "button-group";
63
68
  @use "button-verbose";
64
69
  @use "callout";
65
70
  @use "card";
@@ -72,6 +77,7 @@
72
77
  @use "flipcard";
73
78
  @use "flipcard-grid";
74
79
  @use "form-theme";
80
+ @use "headline-label";
75
81
  @use "horizontal-rule";
76
82
  @use "image-grid";
77
83
  @use "list-lines";
@@ -84,9 +90,11 @@
84
90
  @use "nav-strip";
85
91
  @use "overlay-section";
86
92
  @use "pager";
93
+ @use "panel";
87
94
  @use "placeholder-block";
88
95
  @use "popover";
89
96
  @use "pull-quote";
97
+ @use "rail";
90
98
  @use "ratio-box";
91
99
  @use "rule";
92
100
  @use "scroll-slider";
@@ -113,6 +121,7 @@ $all-includes: (
113
121
  "badge",
114
122
  "basic-hero",
115
123
  "button",
124
+ "button-group",
116
125
  "button-verbose",
117
126
  "callout",
118
127
  "card",
@@ -125,6 +134,7 @@ $all-includes: (
125
134
  "flipcard",
126
135
  "flipcard-grid",
127
136
  "form-theme",
137
+ "headline-label",
128
138
  "horizontal-rule",
129
139
  "image-grid",
130
140
  "links",
@@ -137,7 +147,9 @@ $all-includes: (
137
147
  "nav-strip",
138
148
  "overlay-section",
139
149
  "pager",
150
+ "panel",
140
151
  "popover",
152
+ "rail",
141
153
  "ratio-box",
142
154
  "rule",
143
155
  "scroll-slider",
@@ -202,6 +214,9 @@ $current-includes: $all-includes;
202
214
  @if (list.index($includes, "button")) {
203
215
  @include button.styles;
204
216
  }
217
+ @if (list.index($includes, "button-group")) {
218
+ @include button-group.styles;
219
+ }
205
220
  @if (list.index($includes, "button-verbose")) {
206
221
  @include button-verbose.styles;
207
222
  }
@@ -247,6 +262,9 @@ $current-includes: $all-includes;
247
262
  @if (list.index($includes, "form-theme")) {
248
263
  @include form-theme.styles;
249
264
  }
265
+ @if (list.index($includes, "headline-label")) {
266
+ @include headline-label.styles;
267
+ }
250
268
  @if (list.index($includes, "horizontal-rule")) {
251
269
  @include horizontal-rule.styles;
252
270
  }
@@ -283,6 +301,9 @@ $current-includes: $all-includes;
283
301
  @if (list.index($includes, "pager")) {
284
302
  @include pager.styles;
285
303
  }
304
+ @if (list.index($includes, "panel")) {
305
+ @include panel.styles;
306
+ }
286
307
  @if (list.index($includes, "placeholder-block")) {
287
308
  @include placeholder-block.styles;
288
309
  }
@@ -292,6 +313,9 @@ $current-includes: $all-includes;
292
313
  @if (list.index($includes, "pull-quote")) {
293
314
  @include pull-quote.styles;
294
315
  }
316
+ @if (list.index($includes, "rail")) {
317
+ @include rail.styles;
318
+ }
295
319
  @if (list.index($includes, "ratio-box")) {
296
320
  @include ratio-box.styles;
297
321
  }
@@ -0,0 +1,246 @@
1
+ ////
2
+ /// @group panel
3
+ /// A structured container for content with distinct header, body, and footer sections that can bleed to the edges.
4
+ ////
5
+
6
+ @use "sass:map";
7
+ @use "sass:list";
8
+ @use "sass:meta";
9
+
10
+ @use "../utils";
11
+ @use "../selector";
12
+ @use "../color";
13
+ @use "../element";
14
+ @use "../breakpoint";
15
+
16
+ // Used for function fallback
17
+ $-fallbacks: (
18
+ "box-shadow" : (
19
+ "function" : meta.get-function("get", false, "element"),
20
+ "property" : "box-shadow"
21
+ ),
22
+ "border-radius" : (
23
+ "function" : meta.get-function("get", false, "element"),
24
+ "property" : "border-radius"
25
+ ),
26
+ );
27
+
28
+ /// Module Settings
29
+ /// @type Map
30
+ /// @prop {Color} background-color [rgb(255, 255, 255)] The background color of the panel
31
+ /// @prop {Color} border [null] Set border to panel
32
+ /// @prop {Dimension} border-radius [element.$config.border-radius] The border radius of the panel
33
+ /// @prop {CssValue} box-shadow [element.$config.box-shadow] The box-shadow of the panel
34
+ /// @prop {Dimension} margin-bottom [1.5rem] The bottom margin of the panel
35
+ /// @prop {CssValue} overflow [null] Value for overflow, not included by default as it interferes with position sticky, but could be useful for cropping if that's needed (can be set on rows too)
36
+
37
+ $config: (
38
+ "background-color" : rgb(255, 255, 255),
39
+ "border" : null,
40
+ "border-radius" : true,
41
+ "box-shadow" : true,
42
+ "margin-bottom" : 1.5em,
43
+ "overflow" : null,
44
+ ) !default;
45
+
46
+ /// Styles Map (for unique variations/modifiers)
47
+ /// - Use this map to define distinct visual styles for the panel
48
+ /// - This map is two levels the first level is the name of the modifier (see default below).
49
+ /// This will become the modifier for the pane; so ("transparent" : (...)) = .panel--transparent.
50
+ /// The second level is that modifier row modifiers (ie. panel__row--header) (see row options below)
51
+ /// - Keyword "default" means without modifier for both parent and row configs
52
+ /// - For example "default" as panel container modifier name will mean
53
+ /// styles for this without any modifiers
54
+ /// - In a panels row config (second level) "default" will refer to the non-modified row (ie .panel__row)
55
+ /// - Order matters, default should be first
56
+ /// - Row Options
57
+ /// - Each row can have the following options:
58
+ /// overflow: Set overflow property if needed,
59
+ /// aspect-ratio,
60
+ /// height,
61
+ /// min-height,
62
+ /// padding,
63
+ /// margin: Can be used to create gap between container and row
64
+ /// background-color,
65
+ /// font-weight,
66
+ /// font-family,
67
+ /// color,
68
+ /// box-shadow,
69
+ /// grow: Default the panel will grow to fill the containers height, passing false disables this
70
+ /// border-top: If a string is passed it will resolved as an element rule style
71
+ /// border-bottom: If a string is passed it will resolved as an element rule style
72
+ /// @type Map
73
+
74
+ $styles: (
75
+ "default" : (
76
+ "default" : (
77
+ "padding": 1em,
78
+ ),
79
+ "header" : (
80
+ "padding" : (0.75em 1em),
81
+ "background-color" : #e7e7e7,
82
+ "border-bottom" : "default",
83
+ "font-weight" : bold,
84
+ "grow" : false,
85
+ "breakpoints" : (
86
+ "small" : (
87
+ "direction" : "max",
88
+ "padding" : (0.25em 0.5em)
89
+ )
90
+ )
91
+ ),
92
+ "footer" : (
93
+ "padding" : (0.5em 1em),
94
+ "background-color" : #f4f4f4,
95
+ "border-top" : "default",
96
+ "grow" : false
97
+ ),
98
+ "separator-top" : (
99
+ "border-top" : "light",
100
+ ),
101
+ "separator-bottom" : (
102
+ "border-bottom" : "light",
103
+ )
104
+ ),
105
+ "transparent" : (
106
+ "default" : (
107
+ "padding" : (1em 0),
108
+ "margin" : (0 1em),
109
+ ),
110
+ "header" : (
111
+ "padding" : (1em 0),
112
+ "margin" : (0 1em),
113
+ "background-color" : transparent,
114
+ "grow" : false
115
+ ),
116
+ "footer" : (
117
+ "padding" : (1em 0),
118
+ "margin" : (0 1em),
119
+ "background-color" : transparent,
120
+ "grow" : false
121
+ )
122
+ ),
123
+ "compact" : (
124
+ "default" : (
125
+ "padding" : (0.25em 0.5em)
126
+ ),
127
+ "header" : (
128
+ "padding" : (0.25em 0.5em)
129
+ ),
130
+ "body" : (
131
+ "padding" : (0.5em 1em)
132
+ )
133
+ )
134
+ ) !default;
135
+
136
+ /// Change modules $config
137
+ /// @param {Map} $changes Map of changes
138
+ /// @example scss
139
+ /// @include ulu.component-panel-set(( "property" : value ));
140
+ @mixin set($changes) {
141
+ $config: map.merge($config, $changes) !global;
142
+ }
143
+
144
+ /// Get a config option
145
+ /// @param {Map} $name Name of property
146
+ /// @example scss
147
+ /// @include ulu.component-panel-get("property");
148
+ @function get($name) {
149
+ $value: utils.require-map-get($config, $name, "panel [config]");
150
+ @return utils.function-fallback($name, $value, $-fallbacks);
151
+ }
152
+
153
+ /// Set style variations
154
+ /// - See $styles for more information on map properties/structure
155
+ /// @param {Map} $changes Map of changes (options for style include all config properties)
156
+ /// @param {String} $merge-mode Merge mode see utils.map-merge() [null|"deep"|"overwrite"]
157
+ @mixin set-styles($changes, $merge-mode: null) {
158
+ $styles: utils.map-merge($styles, $changes, $merge-mode) !global;
159
+ }
160
+
161
+ /// Output component styles
162
+ /// @example scss
163
+ /// @include ulu.component-panel-styles();
164
+ @mixin styles {
165
+ $prefix: selector.class("panel");
166
+
167
+ #{ $prefix } {
168
+ display: flex;
169
+ flex-direction: column;
170
+ overflow: get("overflow");
171
+ background-color: get("background-color");
172
+ box-shadow: get("box-shadow");
173
+ border: get("border");
174
+ border-radius: get("border-radius");
175
+ }
176
+ #{ $prefix }__row {
177
+ &:first-child {
178
+ border-top-left-radius: get("border-radius");
179
+ border-top-right-radius: get("border-radius");
180
+ }
181
+ &:last-child {
182
+ border-bottom-left-radius: get("border-radius");
183
+ border-bottom-right-radius: get("border-radius");
184
+ }
185
+ }
186
+
187
+ @each $modifier, $rows in $styles {
188
+ @if ($modifier == "default") {
189
+ @each $row-name, $props in $rows {
190
+ @if ($row-name == "default") {
191
+ #{ $prefix }__row {
192
+ @include create-row-style($props);
193
+ }
194
+ } @else {
195
+ #{ $prefix }__row--#{ $row-name } {
196
+ @include create-row-style($props);
197
+ }
198
+ }
199
+ }
200
+ } @else {
201
+ #{ $prefix }--#{ $modifier } {
202
+ @each $row-name, $props in $rows {
203
+ @if ($row-name == "default") {
204
+ #{ $prefix }__row {
205
+ @include create-row-style($props);
206
+ }
207
+ } @else {
208
+ #{ $prefix }__row--#{ $row-name } {
209
+ @include create-row-style($props);
210
+ }
211
+ }
212
+ }
213
+ }
214
+ }
215
+ }
216
+ }
217
+
218
+ /// Create row styles
219
+ /// @param {Map} $props - Row Options
220
+ @mixin create-row-style($props) {
221
+ overflow: map.get($props, "overflow");
222
+ aspect-ratio: map.get($props, "aspect-ratio");
223
+ height: map.get($props, "height");
224
+ min-height: map.get($props, "min-height");
225
+ padding: map.get($props, "padding");
226
+ margin: map.get($props, "margin");
227
+ background-color: color.get(map.get($props, "background-color"));
228
+ font-weight: map.get($props, "font-weight");
229
+ font-family: map.get($props, "font-family");
230
+ color: color.get(map.get($props, "color"));
231
+ box-shadow: map.get($props, "box-shadow");
232
+ flex-grow: if(map.get($props, "grow") == false, 0, 1); // Default is grow
233
+ border-top: element.get-optional-rule-style(map.get($props, "border-top"));
234
+ border-bottom: element.get-optional-rule-style(map.get($props, "border-bottom"));
235
+
236
+
237
+ // Allow passing breakpoint maps
238
+ $breakpoints: map.get($props, "breakpoints");
239
+ $b-options: ( "directionRequired" : true );
240
+
241
+ @if ($breakpoints and list.length($breakpoints)) {
242
+ @include breakpoint.from-each($breakpoints, $b-options) using ($b-props) {
243
+ @include create-row-style($b-props);
244
+ }
245
+ }
246
+ }
@@ -0,0 +1,120 @@
1
+ ////
2
+ /// @group rail
3
+ ////
4
+ /// A horizontal, flexible container for arranging diverse inline elements.
5
+ /// It provides a consistent layout for icons, labels, buttons, or other
6
+ /// modular components, aligning content to either end or centering it.
7
+ /// Item spacing is controlled via margins, allowing for individual item gap adjustments.
8
+
9
+ @use "sass:map";
10
+ @use "sass:meta";
11
+ @use "sass:math";
12
+
13
+ @use "../utils";
14
+ @use "../color";
15
+ @use "../selector";
16
+ @use "../layout";
17
+ @use "../element";
18
+
19
+ // Used for function fallback
20
+ $-fallbacks: (
21
+ "separator" : (
22
+ "function" : meta.get-function("get-rule-style", false, "element"),
23
+ "arguments" : ("light",)
24
+ ),
25
+ );
26
+
27
+
28
+ /// Module Settings
29
+ /// @type Map
30
+ /// @prop {Dimension} gap [1em] The default space between items in the rail
31
+ /// @prop {Map} gap-modifiers [("small" : 0.5em, "large" : 2em )] Alternate gaps (use child modifiers .rail__item--gap-[name], these apply gap changes between the item and the item before it
32
+ /// @prop {Dimension} margin-bottom [1em] The default space after rail
33
+ /// @prop {CssValue} separator [true] Pass border property for separator, defaults to element rule style light
34
+
35
+ $config: (
36
+ "gap" : 1em,
37
+ "margin-bottom" : 1em,
38
+ "separator" : true,
39
+ "gap-modifiers": (
40
+ "small" : 0.5em,
41
+ "none" : 0,
42
+ "large" : 2em
43
+ ),
44
+ ) !default;
45
+
46
+ /// Change modules $config
47
+ /// @param {Map} $changes Map of changes
48
+ /// @example scss
49
+ /// @include ulu.component-rail-set(( "gap" : 1.5em ));
50
+
51
+ @mixin set($changes) {
52
+ $config: map.merge($config, $changes) !global;
53
+ }
54
+
55
+ /// Get a config option
56
+ /// @param {Map} $name Name of property
57
+ /// @example scss
58
+ /// @include ulu.component-rail-get("gap");
59
+
60
+ @function get($name) {
61
+ $value: utils.require-map-get($config, $name, "rail [config]");
62
+ @return utils.function-fallback($name, $value, $-fallbacks);
63
+ }
64
+
65
+ /// Prints component styles
66
+ /// @example scss
67
+ /// @include ulu.component-rail-styles();
68
+
69
+ @mixin styles {
70
+ $prefix: selector.class("rail");
71
+ $gap: get("gap");
72
+
73
+ #{ $prefix } {
74
+ display: flex;
75
+ align-items: center;
76
+ flex-wrap: wrap;
77
+ gap: $gap;
78
+ margin-bottom: get("margin-bottom");
79
+ max-width: 100%;
80
+ }
81
+
82
+ // Modifiers
83
+ // - Note: Originally had mods for each type of flexbox layout
84
+ // simplified to just agnostic naming and only what is currently needed
85
+ // can update this in the future to add more alignment options if
86
+ // use cases come up
87
+
88
+ #{ $prefix }--justified {
89
+ justify-content: space-between;
90
+ }
91
+ #{ $prefix }--baseline {
92
+ align-items: baseline;
93
+ }
94
+ #{ $prefix }--nowrap {
95
+ flex-wrap: nowrap;
96
+ overflow-x: auto;
97
+ }
98
+
99
+ // Item level modifiers
100
+ #{ $prefix }__item--pull {
101
+ margin-inline-start: auto;
102
+ }
103
+ #{ $prefix }__item--separator {
104
+ border-inline-start: get("separator");
105
+ padding-inline-start: $gap;
106
+ }
107
+
108
+ @each $name, $value in get("gap-modifiers") {
109
+
110
+ $calc-gap: $value - $gap;
111
+
112
+ #{ $prefix }__item--gap-#{ $name } {
113
+ margin-inline-start: $calc-gap;
114
+
115
+ &#{ $prefix }__item--separator {
116
+ padding-inline-start: $value;
117
+ }
118
+ }
119
+ }
120
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../js/ui/dialog.js"],"names":[],"mappings":"AA6DA;;GAEG;AACH,gDAEC;AAED;;;GAGG;AACH,6BAqBC;AAED;;;;GAIG;AACH,sCAHW,IAAI,0BA2Bd;AAED;;;GAGG;AACH,oCAFW,IAAI,0BAyFd;AAED;;;;GAIG;AACH,yCAHW,IAAI,OAKd;AAzND;;GAEG;AACH,8CAA+C;AAE/C;;GAEG;AACH,+CAAuF;AAEvF;;GAEG;AACH,oCAAgE;;;;;;;;;qCAlB3B,oBAAoB"}
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../js/ui/dialog.js"],"names":[],"mappings":"AA6DA;;GAEG;AACH,gDAEC;AAED;;;GAGG;AACH,6BAqBC;AAED;;;;GAIG;AACH,sCAHW,IAAI,0BA2Bd;AAED;;;GAGG;AACH,oCAFW,IAAI,0BA6Dd;AAED;;;;GAIG;AACH,yCAHW,IAAI,OAKd;AA7LD;;GAEG;AACH,8CAA+C;AAE/C;;GAEG;AACH,+CAAuF;AAEvF;;GAEG;AACH,oCAAgE;;;;;;;;;qCAjB3B,oBAAoB"}
@@ -20,5 +20,5 @@ 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
22
  export * as detailsGroup from "./details-group.js";
23
- declare namespace ___Users_joe_Projects_Personal_Github_frontend_js_ui_index_ { }
23
+ declare namespace ___Users_joescherben_Personal_Projects_ULU_frontend_js_ui_index_ { }
24
24
  //# sourceMappingURL=index.d.ts.map