@wpmoo/ui 1.0.0-rc.6 → 1.0.0-rc.7

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 (46) hide show
  1. package/ASSET_LICENSE.md +1 -1
  2. package/README.md +4 -4
  3. package/certification.json +1 -1
  4. package/dist/assets/css/moo-ui.css +7742 -8126
  5. package/dist/assets/css/moo-ui.min.css +2 -2
  6. package/dist/assets/css/moo.css +242 -290
  7. package/dist/assets/css/moo.min.css +2 -2
  8. package/dist/js/chart.js +57 -5
  9. package/dist/js/chart.min.js +3 -3
  10. package/dist/js/combobox.js +1 -1
  11. package/dist/js/context-menu.js +1 -1
  12. package/dist/js/datatable.js +114 -213
  13. package/dist/js/datepicker.js +79 -37
  14. package/dist/js/datepicker.min.js +2 -2
  15. package/dist/js/moo-ui.js +168 -51
  16. package/dist/js/moo-ui.min.js +3 -3
  17. package/dist/js/sidebar.js +121 -174
  18. package/dist/js/slider.js +1 -1
  19. package/package.json +8 -8
  20. package/scss/components/_alert.scss +1 -2
  21. package/scss/components/_card.scss +5 -5
  22. package/scss/components/_close_button.scss +8 -3
  23. package/scss/components/_dialog.scss +16 -0
  24. package/scss/components/_dropdown.scss +2 -7
  25. package/scss/components/_switch.scss +13 -5
  26. package/scss/components/_tabs.scss +1 -1
  27. package/scss/components/sidebar/_collapsed.scss +20 -23
  28. package/scss/components/sidebar/_inset.scss +14 -44
  29. package/scss/components/sidebar/_layout.scss +86 -11
  30. package/scss/foundations/_backdrop.scss +128 -0
  31. package/scss/foundations/_scope.scss +5 -0
  32. package/scss/mixins/_banner.scss +3 -0
  33. package/scss/moo-core.scss +6 -34
  34. package/scss/moo-ui.scss +6 -6
  35. package/scss/settings/_bootstrap_overrides.scss +4 -0
  36. package/scss/settings/_component_variables.scss +6 -1
  37. package/scss/settings/_options.scss +2 -0
  38. package/scss/settings/_palette.scss +1 -1
  39. package/scss/themes/_forms.scss +15 -0
  40. package/scss/themes/_root.scss +16 -0
  41. package/scss/themes/_standalone.scss +5 -0
  42. package/scss/themes/{_scoped_core.scss → _theme.scss} +1 -0
  43. package/scss/foundations/_core_state_layer.scss +0 -25
  44. package/scss/foundations/_overlay_backdrop.scss +0 -19
  45. package/scss/themes/_standalone_root.scss +0 -119
  46. /package/scss/foundations/{_core_global_primitives.scss → _globals.scss} +0 -0
@@ -70,7 +70,86 @@
70
70
  }
71
71
  }
72
72
 
73
- .moo-ui {
73
+ @keyframes moo-overlay-backdrop-enter {
74
+ from {
75
+ opacity: 0;
76
+ -webkit-backdrop-filter: blur(0);
77
+ backdrop-filter: blur(0);
78
+ }
79
+ to {
80
+ opacity: var(--moo-overlay-backdrop-opacity, 1);
81
+ -webkit-backdrop-filter: var(--moo-overlay-backdrop-filter, blur(6px));
82
+ backdrop-filter: var(--moo-overlay-backdrop-filter, blur(6px));
83
+ }
84
+ }
85
+
86
+ @keyframes moo-overlay-backdrop-exit {
87
+ from {
88
+ opacity: var(--moo-overlay-backdrop-opacity, 1);
89
+ -webkit-backdrop-filter: var(--moo-overlay-backdrop-filter, blur(6px));
90
+ backdrop-filter: var(--moo-overlay-backdrop-filter, blur(6px));
91
+ }
92
+ to {
93
+ opacity: 0;
94
+ -webkit-backdrop-filter: blur(0);
95
+ backdrop-filter: blur(0);
96
+ }
97
+ }
98
+
99
+ .modal-backdrop,
100
+ .offcanvas-backdrop {
101
+ --bs-backdrop-opacity: var(--moo-overlay-backdrop-opacity, 1);
102
+ opacity: 1;
103
+ color: transparent;
104
+ background-color: transparent;
105
+ }
106
+
107
+ .modal-backdrop.fade, .modal-backdrop.fade:not(.show),
108
+ .offcanvas-backdrop.fade,
109
+ .offcanvas-backdrop.fade:not(.show) {
110
+ opacity: 1;
111
+ }
112
+
113
+ .modal-backdrop.show,
114
+ .offcanvas-backdrop.show {
115
+ transition: none;
116
+ }
117
+
118
+ .modal-backdrop.fade:not(.show),
119
+ .offcanvas-backdrop.fade:not(.show) {
120
+ color: var(--bs-body-color, currentcolor);
121
+ transition: color var(--moo-overlay-motion-duration, 0.3s) ease-out;
122
+ }
123
+
124
+ .modal-backdrop::before,
125
+ .offcanvas-backdrop::before {
126
+ position: absolute;
127
+ inset: 0;
128
+ content: "";
129
+ opacity: 0;
130
+ background-color: var(--moo-overlay-backdrop-bg, color-mix(in srgb, #0a0a0a 10%, transparent));
131
+ -webkit-backdrop-filter: blur(0);
132
+ backdrop-filter: blur(0);
133
+ animation: moo-overlay-backdrop-exit var(--moo-overlay-motion-duration, 0.3s) ease-out both;
134
+ }
135
+
136
+ .modal-backdrop.show::before,
137
+ .offcanvas-backdrop.show::before {
138
+ animation: moo-overlay-backdrop-enter var(--moo-overlay-motion-duration, 0.3s) ease-out both;
139
+ }
140
+
141
+ @media (prefers-reduced-motion: reduce) {
142
+ .modal-backdrop,
143
+ .offcanvas-backdrop {
144
+ transition: none;
145
+ }
146
+ .modal-backdrop::before,
147
+ .offcanvas-backdrop::before {
148
+ animation: none;
149
+ }
150
+ }
151
+
152
+ .moo-ui[data-bs-theme] {
74
153
  --bs-blue: #0d6efd;
75
154
  --bs-indigo: #6610f2;
76
155
  --bs-purple: #6f42c1;
@@ -136,9 +215,10 @@
136
215
  --bs-focus-ring-width: 2px;
137
216
  --bs-focus-ring-opacity: 0.25;
138
217
  --bs-focus-ring-color: var(--moo-ring);
218
+ --moo-overlay-motion-duration: 0.3s;
139
219
  --moo-overlay-backdrop-opacity: 1;
140
220
  --moo-overlay-backdrop-bg: color-mix(in srgb, #0a0a0a 10%, transparent);
141
- --moo-overlay-backdrop-filter: blur(8px);
221
+ --moo-overlay-backdrop-filter: blur(6px);
142
222
  --moo-input-group-border-radius: var(--bs-border-radius-lg);
143
223
  --moo-disabled-control-opacity: 0.5;
144
224
  --moo-sidebar-foreground: var(--moo-foreground);
@@ -149,173 +229,6 @@
149
229
  --moo-chart-3: #a1a1aa;
150
230
  --moo-chart-4: #3f3f46;
151
231
  --moo-chart-5: #27272a;
152
- color-scheme: light;
153
- color: var(--bs-body-color);
154
- background-color: var(--bs-body-bg);
155
- --moo-surface: #fff;
156
- --moo-muted-surface: #f4f4f5;
157
- --moo-border: #e4e4e7;
158
- --moo-primary: #171717;
159
- --moo-primary-foreground: #fafafa;
160
- --moo-foreground: #18181b;
161
- --moo-muted-foreground: #71717a;
162
- --moo-disabled-foreground: #a1a1aa;
163
- --moo-ring: color-mix(in srgb, #fff 60%, #171717);
164
- --moo-destructive: #e7000b;
165
- --moo-destructive-surface: color-mix(in srgb, #e7000b 3%, transparent);
166
- --moo-destructive-surface-hover: color-mix(in srgb, #e7000b 6%, transparent);
167
- --moo-destructive-foreground: #e7000b;
168
- --moo-form-invalid-ring-color: color-mix(in srgb, #e7000b 20%, transparent);
169
- --moo-warning: #b45309;
170
- --moo-warning-surface: color-mix(in srgb, #b45309 10%, transparent);
171
- --moo-warning-surface-hover: color-mix(in srgb, #b45309 20%, transparent);
172
- --moo-warning-foreground: #b45309;
173
- --moo-success: #047857;
174
- --moo-success-surface: color-mix(in srgb, #047857 10%, transparent);
175
- --moo-success-surface-hover: color-mix(in srgb, #047857 20%, transparent);
176
- --moo-success-foreground: #047857;
177
- --moo-info: #0369a1;
178
- --moo-info-surface: color-mix(in srgb, #0369a1 10%, transparent);
179
- --moo-info-surface-hover: color-mix(in srgb, #0369a1 20%, transparent);
180
- --moo-info-foreground: #0369a1;
181
- --moo-sidebar: #fafafa;
182
- --bs-body-color: var(--moo-foreground);
183
- --bs-body-color-rgb: 24, 24, 27;
184
- --bs-body-bg: var(--moo-surface);
185
- --bs-body-bg-rgb: 255, 255, 255;
186
- --bs-emphasis-color: var(--moo-foreground);
187
- --bs-emphasis-color-rgb: 24, 24, 27;
188
- --bs-secondary-color: var(--moo-muted-foreground);
189
- --bs-secondary-color-rgb: 113, 113, 122;
190
- --bs-secondary-bg: var(--moo-muted-surface);
191
- --bs-secondary-bg-rgb: 244, 244, 245;
192
- --bs-tertiary-color: #a1a1aa;
193
- --bs-tertiary-color-rgb: 161, 161, 170;
194
- --bs-tertiary-bg: #fafafa;
195
- --bs-tertiary-bg-rgb: 250, 250, 250;
196
- --bs-heading-color: var(--moo-foreground);
197
- --bs-link-color: var(--moo-foreground);
198
- --bs-link-color-rgb: 24, 24, 27;
199
- --bs-link-hover-color: var(--moo-muted-foreground);
200
- --bs-link-hover-color-rgb: 113, 113, 122;
201
- --bs-code-color: #d63384;
202
- --bs-highlight-color: var(--moo-foreground);
203
- --bs-highlight-bg: #fff3cd;
204
- --bs-border-color: var(--moo-border);
205
- --bs-border-color-translucent: rgba(24, 24, 27, 0.175);
206
- --bs-form-valid-color: #047857;
207
- --bs-form-valid-border-color: #047857;
208
- --bs-form-invalid-color: var(--moo-destructive);
209
- --bs-form-invalid-border-color: #e7000b;
210
- --bs-primary-text-emphasis: #090909;
211
- --bs-secondary-text-emphasis: #626262;
212
- --bs-success-text-emphasis: #023023;
213
- --bs-info-text-emphasis: #012a40;
214
- --bs-warning-text-emphasis: #482104;
215
- --bs-danger-text-emphasis: #5c0004;
216
- --bs-light-text-emphasis: #495057;
217
- --bs-dark-text-emphasis: #495057;
218
- --bs-primary-bg-subtle: #d1d1d1;
219
- --bs-secondary-bg-subtle: #fdfdfd;
220
- --bs-success-bg-subtle: #cde4dd;
221
- --bs-info-bg-subtle: #cde1ec;
222
- --bs-warning-bg-subtle: #f0ddce;
223
- --bs-danger-bg-subtle: #faccce;
224
- --bs-light-bg-subtle: #fcfcfd;
225
- --bs-dark-bg-subtle: #ced4da;
226
- --bs-primary-border-subtle: #a2a2a2;
227
- --bs-secondary-border-subtle: #fbfbfb;
228
- --bs-success-border-subtle: #9bc9bc;
229
- --bs-info-border-subtle: #9ac3d9;
230
- --bs-warning-border-subtle: #e1ba9d;
231
- --bs-danger-border-subtle: #f5999d;
232
- --bs-light-border-subtle: #e9ecef;
233
- --bs-dark-border-subtle: #adb5bd;
234
- }
235
-
236
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) {
237
- color-scheme: dark;
238
- color: var(--bs-body-color);
239
- background-color: var(--bs-body-bg);
240
- --moo-surface: #0a0a0a;
241
- --moo-muted-surface: #27272a;
242
- --moo-border: #3f3f46;
243
- --moo-primary: #e4e4e7;
244
- --moo-primary-foreground: #18181b;
245
- --moo-foreground: #fafafa;
246
- --moo-muted-foreground: #a1a1aa;
247
- --moo-disabled-foreground: #71717a;
248
- --moo-ring: color-mix(in srgb, #fff 40%, #171717);
249
- --moo-destructive: #ff6467;
250
- --moo-destructive-surface: color-mix(in srgb, #ff6467 20%, transparent);
251
- --moo-destructive-surface-hover: color-mix(in srgb, #ff6467 30%, transparent);
252
- --moo-destructive-foreground: #ff6467;
253
- --moo-form-invalid-ring-color: color-mix(in srgb, #ff6467 40%, transparent);
254
- --moo-warning: color-mix(in srgb, #fafafa 60%, #b45309);
255
- --moo-warning-surface: color-mix(in srgb, color-mix(in srgb, #fafafa 60%, #b45309) 20%, transparent);
256
- --moo-warning-surface-hover: color-mix(in srgb, color-mix(in srgb, #fafafa 60%, #b45309) 30%, transparent);
257
- --moo-warning-foreground: color-mix(in srgb, #fafafa 60%, #b45309);
258
- --moo-success: color-mix(in srgb, #fafafa 60%, #047857);
259
- --moo-success-surface: color-mix(in srgb, color-mix(in srgb, #fafafa 60%, #047857) 20%, transparent);
260
- --moo-success-surface-hover: color-mix(in srgb, color-mix(in srgb, #fafafa 60%, #047857) 30%, transparent);
261
- --moo-success-foreground: color-mix(in srgb, #fafafa 60%, #047857);
262
- --moo-info: color-mix(in srgb, #fafafa 60%, #0369a1);
263
- --moo-info-surface: color-mix(in srgb, color-mix(in srgb, #fafafa 60%, #0369a1) 20%, transparent);
264
- --moo-info-surface-hover: color-mix(in srgb, color-mix(in srgb, #fafafa 60%, #0369a1) 30%, transparent);
265
- --moo-info-foreground: color-mix(in srgb, #fafafa 60%, #0369a1);
266
- --moo-sidebar: #1c1c1f;
267
- --bs-body-color: var(--moo-foreground);
268
- --bs-body-color-rgb: 250, 250, 250;
269
- --bs-body-bg: var(--moo-surface);
270
- --bs-body-bg-rgb: 10, 10, 10;
271
- --bs-emphasis-color: var(--moo-foreground);
272
- --bs-emphasis-color-rgb: 250, 250, 250;
273
- --bs-secondary-color: var(--moo-muted-foreground);
274
- --bs-secondary-color-rgb: 161, 161, 170;
275
- --bs-secondary-bg: var(--moo-muted-surface);
276
- --bs-secondary-bg-rgb: 39, 39, 42;
277
- --bs-tertiary-color: #71717a;
278
- --bs-tertiary-color-rgb: 113, 113, 122;
279
- --bs-tertiary-bg: #202024;
280
- --bs-tertiary-bg-rgb: 32, 32, 36;
281
- --bs-heading-color: var(--moo-foreground);
282
- --bs-link-color: var(--moo-foreground);
283
- --bs-link-color-rgb: 250, 250, 250;
284
- --bs-link-hover-color: var(--moo-muted-foreground);
285
- --bs-link-hover-color-rgb: 161, 161, 170;
286
- --bs-code-color: #e685b5;
287
- --bs-highlight-color: var(--moo-foreground);
288
- --bs-highlight-bg: #664d03;
289
- --bs-border-color: var(--moo-border);
290
- --bs-border-color-translucent: rgba(250, 250, 250, 0.15);
291
- --bs-form-valid-color: #75b798;
292
- --bs-form-valid-border-color: #75b798;
293
- --bs-form-invalid-color: var(--moo-destructive);
294
- --bs-form-invalid-border-color: color-mix(in srgb, #ff6467 50%, transparent);
295
- --bs-primary-text-emphasis: #747474;
296
- --bs-secondary-text-emphasis: #f8f8f9;
297
- --bs-success-text-emphasis: #68ae9a;
298
- --bs-info-text-emphasis: #68a5c7;
299
- --bs-warning-text-emphasis: #d2986b;
300
- --bs-danger-text-emphasis: #f1666d;
301
- --bs-light-text-emphasis: #f8f9fa;
302
- --bs-dark-text-emphasis: #dee2e6;
303
- --bs-primary-bg-subtle: #050505;
304
- --bs-secondary-bg-subtle: #313131;
305
- --bs-success-bg-subtle: #011811;
306
- --bs-info-bg-subtle: #011520;
307
- --bs-warning-bg-subtle: #241102;
308
- --bs-danger-bg-subtle: #2e0002;
309
- --bs-light-bg-subtle: #343a40;
310
- --bs-dark-bg-subtle: #1f2225;
311
- --bs-primary-border-subtle: #0e0e0e;
312
- --bs-secondary-border-subtle: #929293;
313
- --bs-success-border-subtle: #024834;
314
- --bs-info-border-subtle: #023f61;
315
- --bs-warning-border-subtle: #6c3205;
316
- --bs-danger-border-subtle: #8b0007;
317
- --bs-light-border-subtle: #495057;
318
- --bs-dark-border-subtle: #343a40;
319
232
  }
320
233
 
321
234
  .moo-ui[data-bs-theme="light"] {
@@ -488,11 +401,11 @@
488
401
  --bs-dark-border-subtle: #343a40;
489
402
  }
490
403
 
491
- .moo-ui[dir="rtl"] {
404
+ .moo-ui[data-bs-theme][dir="rtl"] {
492
405
  direction: rtl;
493
406
  }
494
407
 
495
- @scope (.moo-ui) {
408
+ @scope (.moo-ui) to (:where(.moo-ui[data-bs-theme="light"], .moo-ui[data-bs-theme="dark"])) {
496
409
  .table {
497
410
  --bs-table-color-type: initial;
498
411
  --bs-table-bg-type: initial;
@@ -2843,7 +2756,7 @@
2843
2756
  pointer-events: none;
2844
2757
  }
2845
2758
  .modal.fade .modal-dialog {
2846
- transition: transform 0.3s ease-out;
2759
+ transition: transform var(--moo-overlay-motion-duration, 0.3s) ease-out;
2847
2760
  transform: translate(0, -50px);
2848
2761
  }
2849
2762
  @media (prefers-reduced-motion: reduce) {
@@ -3349,7 +3262,7 @@
3349
3262
  --bs-offcanvas-border-width: var(--bs-border-width);
3350
3263
  --bs-offcanvas-border-color: var(--bs-border-color-translucent);
3351
3264
  --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);
3352
- --bs-offcanvas-transition: transform 0.3s ease-in-out;
3265
+ --bs-offcanvas-transition: transform var(--moo-overlay-motion-duration, 0.3s) ease-in-out;
3353
3266
  --bs-offcanvas-title-line-height: 1.5;
3354
3267
  }
3355
3268
  @media (max-width: 575.98px) {
@@ -4449,7 +4362,7 @@ label.btn {
4449
4362
  border-width: var(--bs-border-width);
4450
4363
  border-style: var(--bs-border-style);
4451
4364
  border-color: transparent;
4452
- border-radius: var(--bs-border-radius-xl);
4365
+ border-radius: var(--bs-border-radius-pill);
4453
4366
  color: var(--bs-btn-close-color);
4454
4367
  background-image: none;
4455
4368
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
@@ -4462,7 +4375,8 @@ label.btn {
4462
4375
  -webkit-mask: var(--bs-btn-close-bg) center/contain no-repeat;
4463
4376
  mask: var(--bs-btn-close-bg) center/contain no-repeat;
4464
4377
  }
4465
- [data-bs-theme="dark"] .btn-close {
4378
+ :scope[data-bs-theme="light"] .btn-close,
4379
+ :scope[data-bs-theme="dark"] .btn-close {
4466
4380
  filter: none;
4467
4381
  }
4468
4382
  .btn-close:hover {
@@ -4570,7 +4484,7 @@ label.btn {
4570
4484
  .card:has(> .card-image) {
4571
4485
  padding-block-start: 0;
4572
4486
  }
4573
- .card[data-bs-theme="dark"], :where([data-bs-theme="dark"]) .card:not([data-bs-theme="light"]):not([data-bs-theme="light"] *) {
4487
+ :scope[data-bs-theme="dark"] .card {
4574
4488
  --bs-card-bg: color-mix(in srgb, var(--bs-secondary-bg) 30%, var(--bs-body-bg));
4575
4489
  --moo-card-footer-bg: color-mix(in srgb, var(--bs-secondary-bg) 50%, var(--bs-body-bg));
4576
4490
  }
@@ -4794,8 +4708,8 @@ label.btn {
4794
4708
  [data-slot="sidebar-footer"] [data-sidebar-dropdown-positioned] > .dropdown-menu {
4795
4709
  position: fixed !important;
4796
4710
  z-index: 1000;
4797
- inset-inline-start: var(--moo-sidebar-dropdown-inline-start, auto) !important;
4798
- inset-inline-end: auto !important;
4711
+ left: var(--moo-sidebar-dropdown-left, auto) !important;
4712
+ right: var(--moo-sidebar-dropdown-right, auto) !important;
4799
4713
  width: var(--moo-dropdown-sidebar-min-width);
4800
4714
  min-width: var(--moo-dropdown-sidebar-min-width);
4801
4715
  margin: 0;
@@ -4808,11 +4722,6 @@ label.btn {
4808
4722
  inset-block-start: auto !important;
4809
4723
  inset-block-end: var(--moo-sidebar-dropdown-block-end) !important;
4810
4724
  }
4811
- [data-slot="sidebar"][data-side="right"] [data-slot="sidebar-header"] [data-sidebar-dropdown-positioned] > .dropdown-menu,
4812
- [data-slot="sidebar"][data-side="right"] [data-slot="sidebar-footer"] [data-sidebar-dropdown-positioned] > .dropdown-menu {
4813
- inset-inline-start: auto !important;
4814
- inset-inline-end: var(--moo-sidebar-dropdown-inline-end, auto) !important;
4815
- }
4816
4725
  }
4817
4726
  .menubar {
4818
4727
  gap: 0.125rem;
@@ -4986,14 +4895,14 @@ label.btn {
4986
4895
  .skeleton > .placeholder {
4987
4896
  display: block;
4988
4897
  }
4989
- .sidebar-wrapper {
4990
- --moo-sidebar-width: 16rem;
4991
- --moo-sidebar-width-icon: 3rem;
4898
+ .wrapper[data-layout="app"] {
4992
4899
  display: flex;
4993
4900
  width: 100%;
4994
- min-height: 100svh;
4901
+ height: 100svh;
4902
+ min-height: 0;
4903
+ overflow: hidden;
4995
4904
  }
4996
- .sidebar-wrapper--contained {
4905
+ .wrapper[data-layout="app"][data-shell-mode="contained"] {
4997
4906
  min-height: 0;
4998
4907
  height: 34rem;
4999
4908
  overflow: hidden;
@@ -5001,19 +4910,27 @@ label.btn {
5001
4910
  border-radius: var(--bs-border-radius-xl);
5002
4911
  }
5003
4912
  .sidebar {
4913
+ --moo-sidebar-width: 16rem;
4914
+ --moo-sidebar-width-icon: 3rem;
5004
4915
  --bs-offcanvas-width: var(--moo-sidebar-width);
5005
4916
  flex: 0 0 var(--moo-sidebar-width);
5006
4917
  width: var(--moo-sidebar-width);
5007
4918
  color: var(--moo-sidebar-foreground);
5008
4919
  }
5009
4920
  .sidebar[data-side="left"] .sidebar-inner {
5010
- border-inline-end: var(--bs-border-width) solid var(--moo-sidebar-border);
4921
+ border-right: var(--bs-border-width) solid var(--moo-sidebar-border);
5011
4922
  }
5012
4923
  .sidebar[data-side="right"] {
5013
4924
  order: 1;
5014
4925
  }
4926
+ .wrapper[data-layout="app"]:dir(rtl) > .sidebar[data-side="left"] {
4927
+ order: 1;
4928
+ }
4929
+ .wrapper[data-layout="app"]:dir(rtl) > .sidebar[data-side="right"] {
4930
+ order: 0;
4931
+ }
5015
4932
  .sidebar[data-side="right"] .sidebar-inner {
5016
- border-inline-start: var(--bs-border-width) solid var(--moo-sidebar-border);
4933
+ border-left: var(--bs-border-width) solid var(--moo-sidebar-border);
5017
4934
  }
5018
4935
  @media (min-width: 992px) {
5019
4936
  .sidebar {
@@ -5028,18 +4945,23 @@ label.btn {
5028
4945
  border-radius: var(--bs-border-radius-lg);
5029
4946
  box-shadow: var(--bs-box-shadow-sm);
5030
4947
  }
5031
- .sidebar-wrapper--contained .sidebar[data-variant="floating"] .sidebar-inner {
4948
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar[data-variant="floating"] .sidebar-inner {
5032
4949
  height: calc(100% - 1rem);
5033
4950
  max-height: calc(100% - 1rem);
5034
4951
  }
5035
- .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] {
4952
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] {
5036
4953
  flex-basis: calc(var(--moo-sidebar-width-icon) + 1rem);
5037
4954
  width: calc(var(--moo-sidebar-width-icon) + 1rem);
5038
4955
  }
5039
- .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] .sidebar-inner {
4956
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] .sidebar-inner {
5040
4957
  box-shadow: var(--bs-box-shadow);
5041
4958
  }
5042
4959
  }
4960
+ @media (prefers-reduced-motion: reduce) {
4961
+ .sidebar {
4962
+ transition: none;
4963
+ }
4964
+ }
5043
4965
  .sidebar-inner {
5044
4966
  position: sticky;
5045
4967
  top: 0;
@@ -5050,11 +4972,47 @@ label.btn {
5050
4972
  max-height: 100svh;
5051
4973
  background: var(--moo-sidebar);
5052
4974
  }
5053
- .sidebar-wrapper--contained .sidebar-inner {
4975
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
5054
4976
  position: relative;
5055
4977
  height: 100%;
5056
4978
  max-height: 100%;
5057
4979
  }
4980
+ .wrapper[data-layout="app"] > [data-slot="page"] {
4981
+ display: flex;
4982
+ min-width: 0;
4983
+ min-height: 0;
4984
+ flex: 1 1 auto;
4985
+ flex-direction: column;
4986
+ overflow-y: auto;
4987
+ }
4988
+ .wrapper[data-layout="app"] > [data-slot="page"] > header,
4989
+ .wrapper[data-layout="app"] > [data-slot="page"] > main,
4990
+ .wrapper[data-layout="app"] > [data-slot="page"] > footer {
4991
+ flex: 0 0 auto;
4992
+ }
4993
+ .wrapper[data-layout="app"] > [data-slot="page"] > main {
4994
+ display: flex;
4995
+ min-height: 0;
4996
+ flex: 1 1 auto;
4997
+ flex-direction: column;
4998
+ }
4999
+ .wrapper[data-layout="app"] > [data-slot="page"] > main > :is( .container, .container-sm, .container-md, .container-lg, .container-xl, .container-xxl, .container-fluid ) {
5000
+ display: flex;
5001
+ min-height: 0;
5002
+ flex: 1 1 auto;
5003
+ flex-direction: column;
5004
+ }
5005
+ @media (max-width: 991.98px) {
5006
+ .wrapper[data-layout="app"][data-shell-mode="contained"] {
5007
+ flex-direction: column;
5008
+ height: auto;
5009
+ min-height: 0;
5010
+ overflow: visible;
5011
+ }
5012
+ .wrapper[data-layout="app"][data-shell-mode="contained"] > [data-slot="page"] {
5013
+ overflow: visible;
5014
+ }
5015
+ }
5058
5016
  .sidebar-header,
5059
5017
  .sidebar-footer {
5060
5018
  display: flex;
@@ -5361,48 +5319,26 @@ label.btn {
5361
5319
  text-overflow: ellipsis;
5362
5320
  white-space: nowrap;
5363
5321
  }
5364
- .sidebar-inset {
5365
- display: flex;
5366
- flex: 1 1 auto;
5367
- flex-direction: column;
5368
- min-width: 0;
5369
- background: var(--bs-body-bg);
5370
- }
5371
- .sidebar-inset__header {
5372
- position: sticky;
5373
- top: 0;
5374
- z-index: 20;
5375
- display: flex;
5376
- align-items: center;
5377
- gap: 0.5rem;
5378
- height: 4rem;
5379
- padding-inline: 1rem;
5380
- border-bottom: var(--bs-border-width) solid var(--bs-border-color);
5381
- background: var(--bs-body-bg);
5382
- }
5383
- .sidebar-inset__content {
5384
- flex: 1 1 auto;
5385
- min-width: 0;
5386
- }
5387
5322
  @media (min-width: 992px) {
5388
- .sidebar-wrapper:has(.sidebar[data-variant="inset"]) {
5323
+ .wrapper[data-layout="app"]:has(> .sidebar[data-variant="inset"]) {
5389
5324
  background: var(--moo-sidebar);
5390
5325
  }
5391
- .sidebar-wrapper:has(.sidebar[data-variant="inset"]) .sidebar-inset {
5326
+ .wrapper[data-layout="app"]:has(> .sidebar[data-variant="inset"]) > [data-slot="page"] {
5392
5327
  margin: 0.5rem;
5393
- margin-inline-start: 0;
5328
+ margin-left: 0;
5394
5329
  border-radius: var(--bs-border-radius-xl);
5395
5330
  box-shadow: var(--bs-box-shadow-sm);
5331
+ background: var(--bs-body-bg);
5396
5332
  }
5397
- .sidebar-wrapper[data-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"]) .sidebar-inset {
5398
- margin-inline-start: 0.5rem;
5333
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"]:has(> .sidebar[data-variant="inset"]) > [data-slot="page"] {
5334
+ margin-left: 0.5rem;
5399
5335
  }
5400
- .sidebar-wrapper:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
5401
- margin-inline-start: 0.5rem;
5402
- margin-inline-end: 0;
5336
+ .wrapper[data-layout="app"]:has(> .sidebar[data-variant="inset"][data-side="right"]) > [data-slot="page"] {
5337
+ margin-left: 0.5rem;
5338
+ margin-right: 0;
5403
5339
  }
5404
- .sidebar-wrapper[data-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
5405
- margin-inline-end: 0.5rem;
5340
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"]:has(> .sidebar[data-variant="inset"][data-side="right"]) > [data-slot="page"] {
5341
+ margin-right: 0.5rem;
5406
5342
  }
5407
5343
  }
5408
5344
  .sidebar-rail {
@@ -5417,7 +5353,7 @@ label.btn {
5417
5353
  background: transparent;
5418
5354
  cursor: pointer;
5419
5355
  }
5420
- [dir="rtl"] .sidebar-rail {
5356
+ .sidebar:dir(rtl) .sidebar-rail {
5421
5357
  transform: translateX(-50%);
5422
5358
  }
5423
5359
  .sidebar-rail::after {
@@ -5436,21 +5372,17 @@ label.btn {
5436
5372
  .sidebar {
5437
5373
  position: relative;
5438
5374
  }
5439
- .sidebar-wrapper:has([data-sidebar-dropdown-positioned] > .dropdown-menu.show) > .sidebar {
5375
+ .wrapper[data-layout="app"]:has([data-sidebar-dropdown-positioned] > .dropdown-menu.show) > .sidebar {
5440
5376
  position: relative;
5441
- z-index: 1000;
5377
+ z-index: 1031;
5442
5378
  }
5443
- .sidebar-wrapper:has([data-sidebar-dropdown-positioned] > .dropdown-menu.show) > .sidebar > .sidebar-inner {
5444
- z-index: 1000;
5379
+ .wrapper[data-layout="app"]:has([data-sidebar-dropdown-positioned] > .dropdown-menu.show) > .sidebar > .sidebar-inner {
5380
+ z-index: 1031;
5445
5381
  }
5446
- .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] {
5382
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] {
5447
5383
  flex-basis: var(--moo-sidebar-width-icon);
5448
5384
  width: var(--moo-sidebar-width-icon);
5449
5385
  }
5450
- .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar-inset {
5451
- position: relative;
5452
- z-index: 0;
5453
- }
5454
5386
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-group-label,
5455
5387
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__text,
5456
5388
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__subtitle,
@@ -5464,13 +5396,14 @@ label.btn {
5464
5396
  display: none !important;
5465
5397
  }
5466
5398
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"]:has(.sidebar-menu-button[data-bs-toggle="dropdown"][aria-expanded="true"]) {
5467
- z-index: 1000;
5399
+ z-index: 1031;
5468
5400
  }
5469
5401
  .sidebar-menu-flyout {
5470
5402
  position: fixed;
5471
5403
  z-index: 1000;
5472
5404
  inset-block-start: var(--moo-sidebar-flyout-block-start);
5473
- inset-inline-start: var(--moo-sidebar-flyout-inline-start);
5405
+ left: var(--moo-sidebar-flyout-left);
5406
+ right: auto;
5474
5407
  display: flex;
5475
5408
  flex-direction: column;
5476
5409
  min-width: 10rem;
@@ -5546,13 +5479,7 @@ label.btn {
5546
5479
  .sidebar-rail {
5547
5480
  display: none;
5548
5481
  }
5549
- .sidebar-wrapper--contained {
5550
- flex-direction: column;
5551
- height: auto;
5552
- min-height: 34rem;
5553
- overflow: visible;
5554
- }
5555
- .sidebar-wrapper--contained .sidebar {
5482
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar {
5556
5483
  position: relative;
5557
5484
  inset: auto;
5558
5485
  flex: 0 0 auto;
@@ -5561,7 +5488,7 @@ label.btn {
5561
5488
  visibility: visible;
5562
5489
  transform: none;
5563
5490
  }
5564
- .sidebar-wrapper--contained .sidebar-inner {
5491
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
5565
5492
  height: auto;
5566
5493
  max-height: none;
5567
5494
  }
@@ -5584,10 +5511,9 @@ label.btn {
5584
5511
  .alert-dismissible .btn-close {
5585
5512
  top: auto;
5586
5513
  right: auto;
5587
- inset-block-start: 50%;
5514
+ inset-block-start: var(--bs-alert-padding-y);
5588
5515
  inset-inline-end: var(--bs-alert-padding-x);
5589
5516
  padding: 0.34375rem 0.34375rem;
5590
- transform: translateY(-50%);
5591
5517
  }
5592
5518
  .alert-danger {
5593
5519
  --bs-alert-bg: transparent;
@@ -6064,18 +5990,24 @@ label.btn {
6064
5990
  .form-switch .form-check-input {
6065
5991
  height: 1.15rem;
6066
5992
  }
6067
- :where([data-bs-theme="dark"]) .form-switch .form-check-input:checked {
5993
+ :scope[data-bs-theme="light"] .form-switch .form-check-input:checked {
5994
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
5995
+ background-color: var(--moo-primary);
5996
+ border-color: var(--moo-primary);
5997
+ filter: none;
5998
+ }
5999
+ :scope[data-bs-theme="dark"] .form-switch .form-check-input:checked {
6068
6000
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2318181b'/%3e%3c/svg%3e");
6069
6001
  background-color: var(--moo-primary);
6070
6002
  border-color: var(--moo-primary);
6071
6003
  filter: none;
6072
6004
  }
6073
- .form-switch .form-check-input:focus:active:not(:checked),
6074
- .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
6005
+ :scope[data-bs-theme="light"] .form-switch .form-check-input:focus:active:not(:checked),
6006
+ :scope[data-bs-theme="light"] .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
6075
6007
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%2810, 10, 10, 0.25%29'/%3e%3c/svg%3e");
6076
6008
  }
6077
- :where([data-bs-theme="dark"]) .form-switch .form-check-input:focus:active:not(:checked),
6078
- :where([data-bs-theme="dark"]) .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
6009
+ :scope[data-bs-theme="dark"] .form-switch .form-check-input:focus:active:not(:checked),
6010
+ :scope[data-bs-theme="dark"] .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
6079
6011
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");
6080
6012
  }
6081
6013
  .spinner [data-icon] {
@@ -6369,6 +6301,16 @@ label.btn {
6369
6301
  .modal-header {
6370
6302
  gap: calc(var(--bs-modal-padding) * 0.75);
6371
6303
  }
6304
+ .modal-header:has(> .btn-close) {
6305
+ position: relative;
6306
+ padding-inline-end: calc( var(--bs-modal-padding) + 0.75rem + 0.6875rem + 0.5rem);
6307
+ }
6308
+ .modal-header:has(> .btn-close) > .btn-close {
6309
+ position: absolute;
6310
+ inset-block-start: 0.5rem;
6311
+ inset-inline-end: 0.5rem;
6312
+ margin: 0;
6313
+ }
6372
6314
  .modal--alert {
6373
6315
  --bs-modal-width: 24rem;
6374
6316
  --bs-modal-padding: 1rem;
@@ -7857,42 +7799,52 @@ label.btn {
7857
7799
  .datatable--release-review {
7858
7800
  --moo-datatable-min-width: 64rem;
7859
7801
  }
7860
- }
7861
-
7862
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-select,
7863
- .moo-ui[data-bs-theme="dark"] .form-select {
7864
- --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
7865
- }
7866
-
7867
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:not(:checked):not(:focus),
7868
- .moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus) {
7869
- --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");
7870
- }
7871
-
7872
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:checked,
7873
- .moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:checked {
7874
- --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2318181b'/%3e%3c/svg%3e");
7875
- background-color: var(--moo-primary);
7876
- border-color: var(--moo-primary);
7877
- filter: none;
7878
- }
7879
-
7880
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:focus:active:not(:checked),
7881
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:focus:not(:focus-visible):not(:checked),
7882
- .moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:focus:active:not(:checked),
7883
- .moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
7884
- --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");
7885
- }
7886
-
7887
- .modal-backdrop,
7802
+ :scope[data-bs-theme="light"] .form-select {
7803
+ --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
7804
+ }
7805
+ :scope[data-bs-theme="dark"] .form-select {
7806
+ --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
7807
+ }
7808
+ :scope[data-bs-theme="light"] .form-switch .form-check-input:not(:checked):not(:focus) {
7809
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%2810, 10, 10, 0.25%29'/%3e%3c/svg%3e");
7810
+ }
7811
+ :scope[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus) {
7812
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");
7813
+ }
7814
+ .modal-backdrop,
7888
7815
  .offcanvas-backdrop {
7889
- --bs-backdrop-opacity: var(--moo-overlay-backdrop-opacity, 1);
7890
- background-color: var(--moo-overlay-backdrop-bg, color-mix(in srgb, #0a0a0a 10%, transparent));
7891
- -webkit-backdrop-filter: var(--moo-overlay-backdrop-filter, blur(8px));
7892
- backdrop-filter: var(--moo-overlay-backdrop-filter, blur(8px));
7893
- }
7894
-
7895
- .modal-backdrop.show,
7816
+ --bs-backdrop-opacity: var(--moo-overlay-backdrop-opacity, 1);
7817
+ opacity: 1;
7818
+ color: transparent;
7819
+ background-color: transparent;
7820
+ }
7821
+ .modal-backdrop.fade, .modal-backdrop.fade:not(.show),
7822
+ .offcanvas-backdrop.fade,
7823
+ .offcanvas-backdrop.fade:not(.show) {
7824
+ opacity: 1;
7825
+ }
7826
+ .modal-backdrop.show,
7896
7827
  .offcanvas-backdrop.show {
7897
- opacity: var(--moo-overlay-backdrop-opacity, 1);
7828
+ transition: none;
7829
+ }
7830
+ .modal-backdrop.fade:not(.show),
7831
+ .offcanvas-backdrop.fade:not(.show) {
7832
+ color: var(--bs-body-color, currentcolor);
7833
+ transition: color var(--moo-overlay-motion-duration, 0.3s) ease-out;
7834
+ }
7835
+ .modal-backdrop::before,
7836
+ .offcanvas-backdrop::before {
7837
+ position: absolute;
7838
+ inset: 0;
7839
+ content: "";
7840
+ opacity: 0;
7841
+ background-color: var(--moo-overlay-backdrop-bg, color-mix(in srgb, #0a0a0a 10%, transparent));
7842
+ -webkit-backdrop-filter: blur(0);
7843
+ backdrop-filter: blur(0);
7844
+ animation: moo-overlay-backdrop-exit var(--moo-overlay-motion-duration, 0.3s) ease-out both;
7845
+ }
7846
+ .modal-backdrop.show::before,
7847
+ .offcanvas-backdrop.show::before {
7848
+ animation: moo-overlay-backdrop-enter var(--moo-overlay-motion-duration, 0.3s) ease-out both;
7849
+ }
7898
7850
  }