@wpmoo/ui 1.0.0-rc.5 → 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 (48) hide show
  1. package/ASSET_LICENSE.md +1 -1
  2. package/README.md +5 -6
  3. package/certification.json +1 -1
  4. package/dist/assets/css/moo-ui.css +7748 -8075
  5. package/dist/assets/css/moo-ui.min.css +2 -2
  6. package/dist/assets/css/moo.css +289 -285
  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 +193 -51
  16. package/dist/js/moo-ui.min.js +3 -3
  17. package/dist/js/sidebar.js +145 -170
  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/_datatable.scss +27 -3
  24. package/scss/components/_dialog.scss +16 -0
  25. package/scss/components/_dropdown.scss +38 -3
  26. package/scss/components/_switch.scss +13 -5
  27. package/scss/components/_table.scss +6 -0
  28. package/scss/components/_tabs.scss +1 -1
  29. package/scss/components/sidebar/_collapsed.scss +28 -19
  30. package/scss/components/sidebar/_inset.scss +14 -44
  31. package/scss/components/sidebar/_layout.scss +86 -11
  32. package/scss/foundations/_backdrop.scss +128 -0
  33. package/scss/foundations/_scope.scss +5 -0
  34. package/scss/mixins/_banner.scss +3 -0
  35. package/scss/moo-core.scss +6 -34
  36. package/scss/moo-ui.scss +6 -6
  37. package/scss/settings/_bootstrap_overrides.scss +4 -0
  38. package/scss/settings/_component_variables.scss +13 -1
  39. package/scss/settings/_options.scss +2 -0
  40. package/scss/settings/_palette.scss +1 -1
  41. package/scss/themes/_forms.scss +15 -0
  42. package/scss/themes/_root.scss +16 -0
  43. package/scss/themes/_standalone.scss +5 -0
  44. package/scss/themes/{_scoped_core.scss → _theme.scss} +1 -0
  45. package/scss/foundations/_core_state_layer.scss +0 -25
  46. package/scss/foundations/_overlay_backdrop.scss +0 -19
  47. package/scss/themes/_standalone_root.scss +0 -119
  48. /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
  }
@@ -4641,6 +4555,9 @@ label.btn {
4641
4555
  font-size: 0.875rem;
4642
4556
  color: var(--moo-muted-foreground);
4643
4557
  }
4558
+ .card .table {
4559
+ --bs-table-bg: transparent;
4560
+ }
4644
4561
  .table-responsive:not(.scroll-fade-x):has(.table-row-actions > [aria-expanded="true"]) {
4645
4562
  overflow: visible;
4646
4563
  }
@@ -4752,6 +4669,24 @@ label.btn {
4752
4669
  }
4753
4670
  @media (max-width: 575.98px) {
4754
4671
  [data-slot="sidebar-header"] .dropend > .dropdown-menu,
4672
+ [data-slot="sidebar-footer"] .dropend > .dropdown-menu {
4673
+ left: 0 !important;
4674
+ right: 0 !important;
4675
+ min-width: 100%;
4676
+ margin: 0;
4677
+ transform: none !important;
4678
+ }
4679
+ [data-slot="sidebar-header"] .dropend > .dropdown-menu {
4680
+ top: calc(100% + 0.25rem) !important;
4681
+ bottom: auto !important;
4682
+ }
4683
+ [data-slot="sidebar-footer"] .dropend > .dropdown-menu {
4684
+ top: auto !important;
4685
+ bottom: calc(100% + 0.25rem) !important;
4686
+ }
4687
+ }
4688
+ @media (min-width: 576px) and (max-width: 991.98px) {
4689
+ [data-slot="sidebar-header"] .dropend > .dropdown-menu,
4755
4690
  [data-slot="sidebar-footer"] .dropend > .dropdown-menu {
4756
4691
  left: 0 !important;
4757
4692
  right: 0 !important;
@@ -4769,16 +4704,24 @@ label.btn {
4769
4704
  }
4770
4705
  }
4771
4706
  @media (min-width: 992px) {
4772
- [data-slot="sidebar-header"] [data-sidebar-dropdown-positioned] > .dropdown-menu {
4707
+ [data-slot="sidebar-header"] [data-sidebar-dropdown-positioned] > .dropdown-menu,
4708
+ [data-slot="sidebar-footer"] [data-sidebar-dropdown-positioned] > .dropdown-menu {
4773
4709
  position: fixed !important;
4774
4710
  z-index: 1000;
4775
- inset-block-start: var(--moo-sidebar-dropdown-block-start) !important;
4776
- inset-inline-start: var(--moo-sidebar-dropdown-inline-start) !important;
4711
+ left: var(--moo-sidebar-dropdown-left, auto) !important;
4712
+ right: var(--moo-sidebar-dropdown-right, auto) !important;
4777
4713
  width: var(--moo-dropdown-sidebar-min-width);
4778
4714
  min-width: var(--moo-dropdown-sidebar-min-width);
4779
4715
  margin: 0;
4780
4716
  transform: none !important;
4781
4717
  }
4718
+ [data-slot="sidebar-header"] [data-sidebar-dropdown-positioned] > .dropdown-menu {
4719
+ inset-block-start: var(--moo-sidebar-dropdown-block-start) !important;
4720
+ }
4721
+ [data-slot="sidebar-footer"] [data-sidebar-dropdown-positioned] > .dropdown-menu {
4722
+ inset-block-start: auto !important;
4723
+ inset-block-end: var(--moo-sidebar-dropdown-block-end) !important;
4724
+ }
4782
4725
  }
4783
4726
  .menubar {
4784
4727
  gap: 0.125rem;
@@ -4952,14 +4895,14 @@ label.btn {
4952
4895
  .skeleton > .placeholder {
4953
4896
  display: block;
4954
4897
  }
4955
- .sidebar-wrapper {
4956
- --moo-sidebar-width: 16rem;
4957
- --moo-sidebar-width-icon: 3rem;
4898
+ .wrapper[data-layout="app"] {
4958
4899
  display: flex;
4959
4900
  width: 100%;
4960
- min-height: 100svh;
4901
+ height: 100svh;
4902
+ min-height: 0;
4903
+ overflow: hidden;
4961
4904
  }
4962
- .sidebar-wrapper--contained {
4905
+ .wrapper[data-layout="app"][data-shell-mode="contained"] {
4963
4906
  min-height: 0;
4964
4907
  height: 34rem;
4965
4908
  overflow: hidden;
@@ -4967,19 +4910,27 @@ label.btn {
4967
4910
  border-radius: var(--bs-border-radius-xl);
4968
4911
  }
4969
4912
  .sidebar {
4913
+ --moo-sidebar-width: 16rem;
4914
+ --moo-sidebar-width-icon: 3rem;
4970
4915
  --bs-offcanvas-width: var(--moo-sidebar-width);
4971
4916
  flex: 0 0 var(--moo-sidebar-width);
4972
4917
  width: var(--moo-sidebar-width);
4973
4918
  color: var(--moo-sidebar-foreground);
4974
4919
  }
4975
4920
  .sidebar[data-side="left"] .sidebar-inner {
4976
- border-inline-end: var(--bs-border-width) solid var(--moo-sidebar-border);
4921
+ border-right: var(--bs-border-width) solid var(--moo-sidebar-border);
4977
4922
  }
4978
4923
  .sidebar[data-side="right"] {
4979
4924
  order: 1;
4980
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
+ }
4981
4932
  .sidebar[data-side="right"] .sidebar-inner {
4982
- border-inline-start: var(--bs-border-width) solid var(--moo-sidebar-border);
4933
+ border-left: var(--bs-border-width) solid var(--moo-sidebar-border);
4983
4934
  }
4984
4935
  @media (min-width: 992px) {
4985
4936
  .sidebar {
@@ -4994,18 +4945,23 @@ label.btn {
4994
4945
  border-radius: var(--bs-border-radius-lg);
4995
4946
  box-shadow: var(--bs-box-shadow-sm);
4996
4947
  }
4997
- .sidebar-wrapper--contained .sidebar[data-variant="floating"] .sidebar-inner {
4948
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar[data-variant="floating"] .sidebar-inner {
4998
4949
  height: calc(100% - 1rem);
4999
4950
  max-height: calc(100% - 1rem);
5000
4951
  }
5001
- .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"] {
5002
4953
  flex-basis: calc(var(--moo-sidebar-width-icon) + 1rem);
5003
4954
  width: calc(var(--moo-sidebar-width-icon) + 1rem);
5004
4955
  }
5005
- .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 {
5006
4957
  box-shadow: var(--bs-box-shadow);
5007
4958
  }
5008
4959
  }
4960
+ @media (prefers-reduced-motion: reduce) {
4961
+ .sidebar {
4962
+ transition: none;
4963
+ }
4964
+ }
5009
4965
  .sidebar-inner {
5010
4966
  position: sticky;
5011
4967
  top: 0;
@@ -5016,11 +4972,47 @@ label.btn {
5016
4972
  max-height: 100svh;
5017
4973
  background: var(--moo-sidebar);
5018
4974
  }
5019
- .sidebar-wrapper--contained .sidebar-inner {
4975
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
5020
4976
  position: relative;
5021
4977
  height: 100%;
5022
4978
  max-height: 100%;
5023
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
+ }
5024
5016
  .sidebar-header,
5025
5017
  .sidebar-footer {
5026
5018
  display: flex;
@@ -5327,48 +5319,26 @@ label.btn {
5327
5319
  text-overflow: ellipsis;
5328
5320
  white-space: nowrap;
5329
5321
  }
5330
- .sidebar-inset {
5331
- display: flex;
5332
- flex: 1 1 auto;
5333
- flex-direction: column;
5334
- min-width: 0;
5335
- background: var(--bs-body-bg);
5336
- }
5337
- .sidebar-inset__header {
5338
- position: sticky;
5339
- top: 0;
5340
- z-index: 20;
5341
- display: flex;
5342
- align-items: center;
5343
- gap: 0.5rem;
5344
- height: 4rem;
5345
- padding-inline: 1rem;
5346
- border-bottom: var(--bs-border-width) solid var(--bs-border-color);
5347
- background: var(--bs-body-bg);
5348
- }
5349
- .sidebar-inset__content {
5350
- flex: 1 1 auto;
5351
- min-width: 0;
5352
- }
5353
5322
  @media (min-width: 992px) {
5354
- .sidebar-wrapper:has(.sidebar[data-variant="inset"]) {
5323
+ .wrapper[data-layout="app"]:has(> .sidebar[data-variant="inset"]) {
5355
5324
  background: var(--moo-sidebar);
5356
5325
  }
5357
- .sidebar-wrapper:has(.sidebar[data-variant="inset"]) .sidebar-inset {
5326
+ .wrapper[data-layout="app"]:has(> .sidebar[data-variant="inset"]) > [data-slot="page"] {
5358
5327
  margin: 0.5rem;
5359
- margin-inline-start: 0;
5328
+ margin-left: 0;
5360
5329
  border-radius: var(--bs-border-radius-xl);
5361
5330
  box-shadow: var(--bs-box-shadow-sm);
5331
+ background: var(--bs-body-bg);
5362
5332
  }
5363
- .sidebar-wrapper[data-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"]) .sidebar-inset {
5364
- 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;
5365
5335
  }
5366
- .sidebar-wrapper:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
5367
- margin-inline-start: 0.5rem;
5368
- 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;
5369
5339
  }
5370
- .sidebar-wrapper[data-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
5371
- 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;
5372
5342
  }
5373
5343
  }
5374
5344
  .sidebar-rail {
@@ -5383,7 +5353,7 @@ label.btn {
5383
5353
  background: transparent;
5384
5354
  cursor: pointer;
5385
5355
  }
5386
- [dir="rtl"] .sidebar-rail {
5356
+ .sidebar:dir(rtl) .sidebar-rail {
5387
5357
  transform: translateX(-50%);
5388
5358
  }
5389
5359
  .sidebar-rail::after {
@@ -5402,14 +5372,17 @@ label.btn {
5402
5372
  .sidebar {
5403
5373
  position: relative;
5404
5374
  }
5405
- .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] {
5375
+ .wrapper[data-layout="app"]:has([data-sidebar-dropdown-positioned] > .dropdown-menu.show) > .sidebar {
5376
+ position: relative;
5377
+ z-index: 1031;
5378
+ }
5379
+ .wrapper[data-layout="app"]:has([data-sidebar-dropdown-positioned] > .dropdown-menu.show) > .sidebar > .sidebar-inner {
5380
+ z-index: 1031;
5381
+ }
5382
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] {
5406
5383
  flex-basis: var(--moo-sidebar-width-icon);
5407
5384
  width: var(--moo-sidebar-width-icon);
5408
5385
  }
5409
- .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar-inset {
5410
- position: relative;
5411
- z-index: 0;
5412
- }
5413
5386
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-group-label,
5414
5387
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__text,
5415
5388
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__subtitle,
@@ -5423,13 +5396,14 @@ label.btn {
5423
5396
  display: none !important;
5424
5397
  }
5425
5398
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"]:has(.sidebar-menu-button[data-bs-toggle="dropdown"][aria-expanded="true"]) {
5426
- z-index: 1000;
5399
+ z-index: 1031;
5427
5400
  }
5428
5401
  .sidebar-menu-flyout {
5429
5402
  position: fixed;
5430
5403
  z-index: 1000;
5431
5404
  inset-block-start: var(--moo-sidebar-flyout-block-start);
5432
- inset-inline-start: var(--moo-sidebar-flyout-inline-start);
5405
+ left: var(--moo-sidebar-flyout-left);
5406
+ right: auto;
5433
5407
  display: flex;
5434
5408
  flex-direction: column;
5435
5409
  min-width: 10rem;
@@ -5505,13 +5479,7 @@ label.btn {
5505
5479
  .sidebar-rail {
5506
5480
  display: none;
5507
5481
  }
5508
- .sidebar-wrapper--contained {
5509
- flex-direction: column;
5510
- height: auto;
5511
- min-height: 34rem;
5512
- overflow: visible;
5513
- }
5514
- .sidebar-wrapper--contained .sidebar {
5482
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar {
5515
5483
  position: relative;
5516
5484
  inset: auto;
5517
5485
  flex: 0 0 auto;
@@ -5520,7 +5488,7 @@ label.btn {
5520
5488
  visibility: visible;
5521
5489
  transform: none;
5522
5490
  }
5523
- .sidebar-wrapper--contained .sidebar-inner {
5491
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
5524
5492
  height: auto;
5525
5493
  max-height: none;
5526
5494
  }
@@ -5543,10 +5511,9 @@ label.btn {
5543
5511
  .alert-dismissible .btn-close {
5544
5512
  top: auto;
5545
5513
  right: auto;
5546
- inset-block-start: 50%;
5514
+ inset-block-start: var(--bs-alert-padding-y);
5547
5515
  inset-inline-end: var(--bs-alert-padding-x);
5548
5516
  padding: 0.34375rem 0.34375rem;
5549
- transform: translateY(-50%);
5550
5517
  }
5551
5518
  .alert-danger {
5552
5519
  --bs-alert-bg: transparent;
@@ -6023,18 +5990,24 @@ label.btn {
6023
5990
  .form-switch .form-check-input {
6024
5991
  height: 1.15rem;
6025
5992
  }
6026
- :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 {
6027
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");
6028
6001
  background-color: var(--moo-primary);
6029
6002
  border-color: var(--moo-primary);
6030
6003
  filter: none;
6031
6004
  }
6032
- .form-switch .form-check-input:focus:active:not(:checked),
6033
- .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) {
6034
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");
6035
6008
  }
6036
- :where([data-bs-theme="dark"]) .form-switch .form-check-input:focus:active:not(:checked),
6037
- :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) {
6038
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");
6039
6012
  }
6040
6013
  .spinner [data-icon] {
@@ -6328,6 +6301,16 @@ label.btn {
6328
6301
  .modal-header {
6329
6302
  gap: calc(var(--bs-modal-padding) * 0.75);
6330
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
+ }
6331
6314
  .modal--alert {
6332
6315
  --bs-modal-width: 24rem;
6333
6316
  --bs-modal-padding: 1rem;
@@ -6956,6 +6939,7 @@ label.btn {
6956
6939
  }
6957
6940
  .datatable {
6958
6941
  --moo-datatable-min-width: 48rem;
6942
+ --moo-datatable-actions-cell-bg: var(--bs-body-bg);
6959
6943
  --moo-datatable-actions-cell-fade-width: 1.25rem;
6960
6944
  --moo-datatable-card-label-width: 7rem;
6961
6945
  --moo-datatable-frame-header-min-height: 2.78125rem;
@@ -6967,6 +6951,9 @@ label.btn {
6967
6951
  --moo-datatable-scrollbar-size: 0.375rem;
6968
6952
  --moo-datatable-bulk-actions-bottom: 1rem;
6969
6953
  }
6954
+ .card .datatable {
6955
+ --moo-datatable-actions-cell-bg: var(--bs-card-bg);
6956
+ }
6970
6957
  .datatable-table {
6971
6958
  table-layout: fixed;
6972
6959
  }
@@ -6994,11 +6981,11 @@ label.btn {
6994
6981
  position: sticky;
6995
6982
  inset-inline-end: 0;
6996
6983
  z-index: 2;
6997
- background: linear-gradient(90deg, transparent 0, var(--bs-body-bg) var(--moo-datatable-actions-cell-fade-width));
6984
+ background: linear-gradient(90deg, transparent 0, var(--moo-datatable-actions-cell-bg) var(--moo-datatable-actions-cell-fade-width));
6998
6985
  }
6999
6986
  [dir="rtl"] .datatable-frame [data-datatable-column="actions"],
7000
6987
  .datatable-frame [dir="rtl"] [data-datatable-column="actions"] {
7001
- background: linear-gradient(270deg, transparent 0, var(--bs-body-bg) var(--moo-datatable-actions-cell-fade-width));
6988
+ background: linear-gradient(270deg, transparent 0, var(--moo-datatable-actions-cell-bg) var(--moo-datatable-actions-cell-fade-width));
7002
6989
  }
7003
6990
  .datatable-card-frame:has(.datatable-card .dropdown-menu.show) {
7004
6991
  position: relative;
@@ -7062,6 +7049,9 @@ label.btn {
7062
7049
  min-block-size: var(--moo-datatable-toolbar-control-height);
7063
7050
  width: 100%;
7064
7051
  }
7052
+ .datatable-searchbar:not(:has(> .dropdown-menu.show)) {
7053
+ overflow: hidden;
7054
+ }
7065
7055
  .datatable-searchbar .datatable-search {
7066
7056
  flex: 1 1 auto;
7067
7057
  max-width: none;
@@ -7073,7 +7063,7 @@ label.btn {
7073
7063
  position: absolute;
7074
7064
  inset-block-start: 50%;
7075
7065
  inset-inline-start: 0.625rem;
7076
- z-index: 2;
7066
+ z-index: 6;
7077
7067
  display: inline-flex;
7078
7068
  align-items: center;
7079
7069
  justify-content: center;
@@ -7524,6 +7514,10 @@ label.btn {
7524
7514
  .datatable-row-selected > td {
7525
7515
  background-color: var(--moo-muted-surface);
7526
7516
  }
7517
+ .datatable-row-selected > [data-datatable-column="actions"] {
7518
+ --moo-datatable-actions-cell-bg: var(--moo-muted-surface);
7519
+ background: var(--moo-muted-surface);
7520
+ }
7527
7521
  .datatable-card.datatable-row-selected {
7528
7522
  border-color: var(--moo-border);
7529
7523
  background-color: var(--moo-muted-surface);
@@ -7805,42 +7799,52 @@ label.btn {
7805
7799
  .datatable--release-review {
7806
7800
  --moo-datatable-min-width: 64rem;
7807
7801
  }
7808
- }
7809
-
7810
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-select,
7811
- .moo-ui[data-bs-theme="dark"] .form-select {
7812
- --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");
7813
- }
7814
-
7815
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:not(:checked):not(:focus),
7816
- .moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus) {
7817
- --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");
7818
- }
7819
-
7820
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:checked,
7821
- .moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:checked {
7822
- --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");
7823
- background-color: var(--moo-primary);
7824
- border-color: var(--moo-primary);
7825
- filter: none;
7826
- }
7827
-
7828
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:focus:active:not(:checked),
7829
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:focus:not(:focus-visible):not(:checked),
7830
- .moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:focus:active:not(:checked),
7831
- .moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
7832
- --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");
7833
- }
7834
-
7835
- .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,
7836
7815
  .offcanvas-backdrop {
7837
- --bs-backdrop-opacity: var(--moo-overlay-backdrop-opacity, 1);
7838
- background-color: var(--moo-overlay-backdrop-bg, color-mix(in srgb, #0a0a0a 10%, transparent));
7839
- -webkit-backdrop-filter: var(--moo-overlay-backdrop-filter, blur(8px));
7840
- backdrop-filter: var(--moo-overlay-backdrop-filter, blur(8px));
7841
- }
7842
-
7843
- .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,
7844
7827
  .offcanvas-backdrop.show {
7845
- 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
+ }
7846
7850
  }