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

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 (57) hide show
  1. package/ASSET_LICENSE.md +1 -1
  2. package/README.md +37 -6
  3. package/certification.json +6 -2
  4. package/dist/assets/css/moo-ui.css +7799 -8113
  5. package/dist/assets/css/moo-ui.min.css +5 -5
  6. package/dist/assets/css/moo.css +707 -685
  7. package/dist/assets/css/moo.min.css +5 -5
  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 +169 -52
  16. package/dist/js/moo-ui.min.js +3 -3
  17. package/dist/js/sidebar.js +122 -175
  18. package/dist/js/slider.js +1 -1
  19. package/dist/js/theme-prepaint.js +91 -0
  20. package/dist/release-manifest.json +24 -0
  21. package/package.json +12 -8
  22. package/scss/_components.scss +1 -4
  23. package/scss/components/_alert.scss +1 -2
  24. package/scss/components/_card.scss +5 -5
  25. package/scss/components/_close_button.scss +8 -3
  26. package/scss/components/_dialog.scss +16 -0
  27. package/scss/components/_dropdown.scss +12 -7
  28. package/scss/components/_search_trigger.scss +62 -0
  29. package/scss/components/_sidebar.scss +1 -2
  30. package/scss/components/_switch.scss +13 -5
  31. package/scss/components/_tabs.scss +1 -1
  32. package/scss/components/sidebar/_base.scss +93 -0
  33. package/scss/components/sidebar/_collapsed.scss +9 -90
  34. package/scss/foundations/_backdrop.scss +128 -0
  35. package/scss/foundations/_scope.scss +8 -0
  36. package/scss/layouts/_app.scss +77 -0
  37. package/scss/layouts/app/sidebar/_base.scss +117 -0
  38. package/scss/layouts/app/sidebar/_default.scss +26 -0
  39. package/scss/layouts/app/sidebar/_floating.scss +44 -0
  40. package/scss/layouts/app/sidebar/_inset.scss +29 -0
  41. package/scss/mixins/_banner.scss +3 -0
  42. package/scss/moo-core.scss +6 -34
  43. package/scss/moo-ui.scss +6 -6
  44. package/scss/settings/_bootstrap_overrides.scss +4 -0
  45. package/scss/settings/_component_variables.scss +20 -1
  46. package/scss/settings/_options.scss +2 -0
  47. package/scss/settings/_palette.scss +1 -1
  48. package/scss/themes/_forms.scss +15 -0
  49. package/scss/themes/_root.scss +16 -0
  50. package/scss/themes/_standalone.scss +5 -0
  51. package/scss/themes/{_scoped_core.scss → _theme.scss} +1 -0
  52. package/scss/components/sidebar/_inset.scss +0 -59
  53. package/scss/components/sidebar/_layout.scss +0 -176
  54. package/scss/foundations/_core_state_layer.scss +0 -25
  55. package/scss/foundations/_overlay_backdrop.scss +0 -19
  56. package/scss/themes/_standalone_root.scss +0 -119
  57. /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) {
@@ -3858,274 +3771,36 @@
3858
3771
  color: #fff !important;
3859
3772
  background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;
3860
3773
  }
3861
- .form-label,
3862
- .form-check-label {
3863
- user-select: none;
3774
+ kbd {
3775
+ display: inline-flex;
3776
+ height: 1.25rem;
3777
+ min-width: 1.25rem;
3778
+ align-items: center;
3779
+ justify-content: center;
3780
+ font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
3781
+ line-height: 1rem;
3782
+ font-weight: 500;
3864
3783
  }
3865
- :is(.btn, a, button, summary, [tabindex]):not(input, textarea, select):focus-visible,
3866
- :is(.form-control, .form-select, .form-check-input):focus-visible {
3867
- border-color: var(--moo-ring);
3868
- outline: 0;
3869
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
3784
+ .form-control {
3785
+ min-height: 2rem;
3870
3786
  }
3871
- .btn:focus-visible:hover,
3872
- .btn.show:focus-visible {
3873
- border-color: var(--bs-btn-hover-border-color);
3874
- box-shadow: none;
3787
+ .form-control:not(textarea):not([type="file"]):not(.form-control-sm, .form-control-lg) {
3788
+ min-height: calc(2rem + var(--bs-border-width) * 2);
3875
3789
  }
3876
- .form-control:focus:not(:focus-visible),
3877
- .form-select:focus:not(:focus-visible) {
3878
- border-color: var(--moo-border);
3879
- box-shadow: none;
3790
+ .form-control[type="file"]:not(.form-control-sm, .form-control-lg)::file-selector-button {
3791
+ min-height: calc(2rem - var(--bs-border-width) * 2);
3880
3792
  }
3881
- .page-link:focus:not(:focus-visible) {
3882
- outline: 0;
3883
- box-shadow: none;
3793
+ .form-control[type="time"] {
3794
+ appearance: none;
3795
+ position: relative;
3884
3796
  }
3885
- .page-item:not(.active) > .page-link:focus:not(:focus-visible) {
3886
- color: var(--bs-pagination-color);
3887
- background-color: var(--bs-pagination-bg);
3888
- border-color: var(--bs-pagination-border-color);
3889
- }
3890
- .form-control.is-invalid,
3891
- .form-control.is-invalid:focus,
3892
- .was-validated .form-control:invalid,
3893
- .was-validated .form-control:invalid:focus,
3894
- .form-select.is-invalid,
3895
- .form-select.is-invalid:focus,
3896
- .was-validated .form-select:invalid,
3897
- .was-validated .form-select:invalid:focus {
3898
- box-shadow: 0 0 0 3px var(--moo-form-invalid-ring-color);
3899
- }
3900
- .btn-check:focus:not(:focus-visible) + .btn {
3901
- outline: 0;
3902
- box-shadow: none;
3903
- }
3904
- .btn-check:focus-visible + .btn {
3905
- border-color: var(--moo-ring);
3906
- outline: 0;
3907
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
3908
- }
3909
- .input-group > .dropdown-toggle[aria-expanded="true"]:focus-visible {
3910
- box-shadow: none;
3911
- }
3912
- .combobox-chips:focus-within {
3913
- border-color: var(--moo-ring);
3914
- outline: 0;
3915
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
3916
- }
3917
- .input-group:has(> .form-control:focus):not(:has(> .form-control[type="file"])) {
3918
- border-color: var(--moo-ring);
3919
- outline: 0;
3920
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
3921
- }
3922
- .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))):has(> :is(.form-control, .form-select).is-invalid),
3923
- .was-validated .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))):has(> :is(.form-control, .form-select):invalid) {
3924
- border-color: var(--bs-form-invalid-border-color);
3925
- box-shadow: 0 0 0 3px var(--moo-form-invalid-ring-color);
3926
- }
3927
- .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))) > :is(.form-control, .form-select).is-invalid,
3928
- .was-validated .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))) > :is(.form-control, .form-select):invalid {
3929
- box-shadow: none;
3930
- }
3931
- :where( .scroll-fade, .scroll-fade-y, .scroll-fade-x, .scroll-fade-t, .scroll-fade-b, .scroll-fade-l, .scroll-fade-r, .scroll-fade-s, .scroll-fade-e ) {
3932
- --scroll-fade-size: min(12%, 2.5rem);
3933
- --scroll-fade-reveal: 6rem;
3934
- --moo-scroll-fade-t-size: var(--scroll-fade-size);
3935
- --moo-scroll-fade-b-size: var(--scroll-fade-size);
3936
- --moo-scroll-fade-s-size: var(--scroll-fade-size);
3937
- --moo-scroll-fade-e-size: var(--scroll-fade-size);
3938
- --moo-scroll-fade-mask: linear-gradient(
3939
- to bottom,
3940
- transparent 0,
3941
- #000 var(--moo-scroll-fade-t),
3942
- #000 calc(100% - var(--moo-scroll-fade-b)),
3943
- transparent 100%
3944
- );
3945
- mask-image: var(--moo-scroll-fade-mask);
3946
- }
3947
- .scroll-fade,
3948
- .scroll-fade-y {
3949
- animation-name: moo-scroll-fade-reveal-t, moo-scroll-fade-reveal-b;
3950
- animation-duration: 1ms, 1ms;
3951
- animation-fill-mode: both, both;
3952
- animation-timing-function: linear, linear;
3953
- animation-timeline: scroll(self y), scroll(self y);
3954
- animation-range: 0 var(--scroll-fade-reveal), calc(100% - var(--scroll-fade-reveal)) 100%;
3955
- }
3956
- .scroll-fade-t {
3957
- animation-name: moo-scroll-fade-reveal-t;
3958
- animation-duration: 1ms;
3959
- animation-fill-mode: both;
3960
- animation-timing-function: linear;
3961
- animation-timeline: scroll(self y);
3962
- animation-range: 0 var(--scroll-fade-reveal);
3963
- }
3964
- .scroll-fade-b {
3965
- animation-name: moo-scroll-fade-reveal-b;
3966
- animation-duration: 1ms;
3967
- animation-fill-mode: both;
3968
- animation-timing-function: linear;
3969
- animation-timeline: scroll(self y);
3970
- animation-range: calc(100% - var(--scroll-fade-reveal)) 100%;
3971
- }
3972
- .scroll-fade-x,
3973
- .scroll-fade-s,
3974
- .scroll-fade-e {
3975
- --moo-scroll-fade-mask: linear-gradient(
3976
- to right,
3977
- transparent 0,
3978
- #000 var(--moo-scroll-fade-s),
3979
- #000 calc(100% - var(--moo-scroll-fade-e)),
3980
- transparent 100%
3981
- );
3982
- }
3983
- .scroll-fade-x {
3984
- animation-name: moo-scroll-fade-reveal-s, moo-scroll-fade-reveal-e;
3985
- animation-duration: 1ms, 1ms;
3986
- animation-fill-mode: both, both;
3987
- animation-timing-function: linear, linear;
3988
- animation-timeline: scroll(self inline), scroll(self inline);
3989
- animation-range: 0 var(--scroll-fade-reveal), calc(100% - var(--scroll-fade-reveal)) 100%;
3990
- }
3991
- .scroll-fade-s {
3992
- animation-name: moo-scroll-fade-reveal-s;
3993
- animation-duration: 1ms;
3994
- animation-fill-mode: both;
3995
- animation-timing-function: linear;
3996
- animation-timeline: scroll(self inline);
3997
- animation-range: 0 var(--scroll-fade-reveal);
3998
- }
3999
- .scroll-fade-e {
4000
- animation-name: moo-scroll-fade-reveal-e;
4001
- animation-duration: 1ms;
4002
- animation-fill-mode: both;
4003
- animation-timing-function: linear;
4004
- animation-timeline: scroll(self inline);
4005
- animation-range: calc(100% - var(--scroll-fade-reveal)) 100%;
4006
- }
4007
- .scroll-fade-x:where([dir="rtl"], [dir="rtl"] *),
4008
- .scroll-fade-s:where([dir="rtl"], [dir="rtl"] *),
4009
- .scroll-fade-e:where([dir="rtl"], [dir="rtl"] *) {
4010
- --moo-scroll-fade-mask: linear-gradient(
4011
- to left,
4012
- transparent 0,
4013
- #000 var(--moo-scroll-fade-s),
4014
- #000 calc(100% - var(--moo-scroll-fade-e)),
4015
- transparent 100%
4016
- );
4017
- }
4018
- .scroll-fade-l,
4019
- .scroll-fade-r {
4020
- --moo-scroll-fade-mask: linear-gradient(
4021
- to right,
4022
- transparent 0,
4023
- #000 var(--moo-scroll-fade-s),
4024
- #000 calc(100% - var(--moo-scroll-fade-e)),
4025
- transparent 100%
4026
- );
4027
- }
4028
- .scroll-fade-l {
4029
- animation-name: moo-scroll-fade-reveal-s;
4030
- animation-duration: 1ms;
4031
- animation-fill-mode: both;
4032
- animation-timing-function: linear;
4033
- animation-timeline: scroll(self x);
4034
- animation-range: 0 var(--scroll-fade-reveal);
4035
- }
4036
- .scroll-fade-r {
4037
- animation-name: moo-scroll-fade-reveal-e;
4038
- animation-duration: 1ms;
4039
- animation-fill-mode: both;
4040
- animation-timing-function: linear;
4041
- animation-timeline: scroll(self x);
4042
- animation-range: calc(100% - var(--scroll-fade-reveal)) 100%;
4043
- }
4044
- .scroll-fade-none {
4045
- --moo-scroll-fade-mask: none;
4046
- }
4047
- .no-scrollbar {
4048
- scrollbar-width: none;
4049
- }
4050
- .no-scrollbar::-webkit-scrollbar {
4051
- display: none;
4052
- }
4053
- .scrollbar-thin {
4054
- --moo-scrollbar-thin-size: 0.375rem;
4055
- --moo-scrollbar-thin-thumb-bg: color-mix(in srgb, var(--bs-secondary-color) 28%, transparent);
4056
- --moo-scrollbar-thin-thumb-hover-bg: color-mix(in srgb, var(--bs-secondary-color) 45%, transparent);
4057
- scrollbar-color: var(--moo-scrollbar-thin-thumb-bg) transparent;
4058
- scrollbar-width: thin;
4059
- }
4060
- .scrollbar-thin::-webkit-scrollbar {
4061
- width: var(--moo-scrollbar-thin-size);
4062
- height: var(--moo-scrollbar-thin-size);
4063
- }
4064
- .scrollbar-thin::-webkit-scrollbar-track {
4065
- background: transparent;
4066
- }
4067
- .scrollbar-thin::-webkit-scrollbar-thumb {
4068
- border-radius: var(--bs-border-radius-pill);
4069
- background-color: var(--moo-scrollbar-thin-thumb-bg);
4070
- }
4071
- .scrollbar-thin::-webkit-scrollbar-thumb:hover {
4072
- background-color: var(--moo-scrollbar-thin-thumb-hover-bg);
4073
- }
4074
- @supports not (animation-timeline: scroll()) {
4075
- .scroll-fade,
4076
- .scroll-fade-y {
4077
- --moo-scroll-fade-t: var(--moo-scroll-fade-t-size);
4078
- --moo-scroll-fade-b: var(--moo-scroll-fade-b-size);
4079
- }
4080
- .scroll-fade-x {
4081
- --moo-scroll-fade-s: var(--moo-scroll-fade-s-size);
4082
- --moo-scroll-fade-e: var(--moo-scroll-fade-e-size);
4083
- }
4084
- .scroll-fade-t {
4085
- --moo-scroll-fade-t: var(--moo-scroll-fade-t-size);
4086
- }
4087
- .scroll-fade-b {
4088
- --moo-scroll-fade-b: var(--moo-scroll-fade-b-size);
4089
- }
4090
- .scroll-fade-l,
4091
- .scroll-fade-s {
4092
- --moo-scroll-fade-s: var(--moo-scroll-fade-s-size);
4093
- }
4094
- .scroll-fade-r,
4095
- .scroll-fade-e {
4096
- --moo-scroll-fade-e: var(--moo-scroll-fade-e-size);
4097
- }
4098
- }
4099
- kbd {
4100
- display: inline-flex;
4101
- height: 1.25rem;
4102
- min-width: 1.25rem;
4103
- align-items: center;
4104
- justify-content: center;
4105
- font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
4106
- line-height: 1rem;
4107
- font-weight: 500;
4108
- }
4109
- .form-control {
4110
- min-height: 2rem;
4111
- }
4112
- .form-control:not(textarea):not([type="file"]):not(.form-control-sm, .form-control-lg) {
4113
- min-height: calc(2rem + var(--bs-border-width) * 2);
4114
- }
4115
- .form-control[type="file"]:not(.form-control-sm, .form-control-lg)::file-selector-button {
4116
- min-height: calc(2rem - var(--bs-border-width) * 2);
4117
- }
4118
- .form-control[type="time"] {
4119
- appearance: none;
4120
- position: relative;
4121
- }
4122
- .form-control[type="time"]::-webkit-calendar-picker-indicator {
4123
- position: absolute;
4124
- inset: 0;
4125
- width: 100%;
4126
- height: 100%;
4127
- opacity: 0;
4128
- cursor: pointer;
3797
+ .form-control[type="time"]::-webkit-calendar-picker-indicator {
3798
+ position: absolute;
3799
+ inset: 0;
3800
+ width: 100%;
3801
+ height: 100%;
3802
+ opacity: 0;
3803
+ cursor: pointer;
4129
3804
  }
4130
3805
  .form-control:disabled,
4131
3806
  .form-select:disabled {
@@ -4436,33 +4111,88 @@ label.btn {
4436
4111
  --bs-btn-hover-color: var(--moo-muted-foreground);
4437
4112
  text-underline-offset: 0.25rem;
4438
4113
  }
4439
- .btn-close {
4440
- --bs-btn-close-color: var(--moo-foreground);
4441
- --bs-btn-hover-color: var(--bs-btn-close-color);
4442
- --bs-btn-hover-bg: var(--moo-muted-surface);
4443
- --bs-btn-hover-border-color: transparent;
4444
- --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230a0a0a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M18 6 6 18'/%3e%3cpath d='m6 6 12 12'/%3e%3c/svg%3e");
4445
- display: inline-flex;
4446
- flex: 0 0 auto;
4447
- align-items: center;
4448
- justify-content: center;
4449
- border-width: var(--bs-border-width);
4450
- border-style: var(--bs-border-style);
4451
- border-color: transparent;
4452
- border-radius: var(--bs-border-radius-xl);
4453
- color: var(--bs-btn-close-color);
4454
- background-image: none;
4455
- 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;
4456
- }
4457
- .btn-close::before {
4458
- width: 0.75rem;
4459
- height: 0.75rem;
4114
+ .search-trigger {
4115
+ width: 10rem;
4116
+ max-width: 100%;
4117
+ flex: 0 1 10rem;
4118
+ min-width: 0;
4119
+ justify-content: space-between;
4120
+ height: 2rem;
4121
+ padding: 0.5rem 0.75rem;
4122
+ color: var(--bs-secondary-color);
4123
+ border: var(--bs-border-width) solid transparent;
4124
+ border-radius: var(--bs-border-radius);
4125
+ background: color-mix(in srgb, var(--bs-secondary-bg) 55%, var(--bs-body-bg));
4126
+ font-size: 0.875rem;
4127
+ font-weight: 400;
4128
+ box-shadow: none;
4129
+ }
4130
+ .search-trigger:hover {
4131
+ color: var(--bs-secondary-color);
4132
+ border-color: transparent;
4133
+ background: color-mix(in srgb, var(--bs-secondary-bg) 78%, var(--bs-body-bg));
4134
+ }
4135
+ .search-trigger:focus-visible {
4136
+ color: var(--bs-secondary-color);
4137
+ border-color: transparent;
4138
+ background: color-mix(in srgb, var(--bs-secondary-bg) 78%, var(--bs-body-bg));
4139
+ }
4140
+ .search-trigger__label {
4141
+ display: inline-flex;
4142
+ min-width: 0;
4143
+ align-items: center;
4144
+ gap: 0.5rem;
4145
+ overflow: hidden;
4146
+ text-overflow: ellipsis;
4147
+ white-space: nowrap;
4148
+ }
4149
+ .search-trigger__shortcut {
4150
+ display: inline-flex;
4151
+ flex: 0 0 auto;
4152
+ align-items: center;
4153
+ gap: 0.25rem;
4154
+ margin-inline-start: auto;
4155
+ }
4156
+ @media (min-width: 992px) {
4157
+ .search-trigger {
4158
+ width: 13rem;
4159
+ flex-basis: 13rem;
4160
+ }
4161
+ }
4162
+ @media (min-width: 1400px) {
4163
+ .search-trigger {
4164
+ width: 16rem;
4165
+ flex-basis: 16rem;
4166
+ }
4167
+ }
4168
+ .btn-close {
4169
+ --bs-btn-close-color: var(--moo-foreground);
4170
+ --bs-btn-hover-color: var(--bs-btn-close-color);
4171
+ --bs-btn-hover-bg: var(--moo-muted-surface);
4172
+ --bs-btn-hover-border-color: transparent;
4173
+ --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230a0a0a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M18 6 6 18'/%3e%3cpath d='m6 6 12 12'/%3e%3c/svg%3e");
4174
+ display: inline-flex;
4175
+ flex: 0 0 auto;
4176
+ align-items: center;
4177
+ justify-content: center;
4178
+ border-width: var(--bs-border-width);
4179
+ border-style: var(--bs-border-style);
4180
+ border-color: transparent;
4181
+ border-radius: var(--bs-border-radius-pill);
4182
+ color: var(--bs-btn-close-color);
4183
+ background-image: none;
4184
+ 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;
4185
+ }
4186
+ .btn-close::before {
4187
+ width: 0.75rem;
4188
+ height: 0.75rem;
4460
4189
  content: "";
4461
4190
  background-color: currentColor;
4462
4191
  -webkit-mask: var(--bs-btn-close-bg) center/contain no-repeat;
4463
4192
  mask: var(--bs-btn-close-bg) center/contain no-repeat;
4464
4193
  }
4465
- [data-bs-theme="dark"] .btn-close {
4194
+ :scope[data-bs-theme="light"] .btn-close,
4195
+ :scope[data-bs-theme="dark"] .btn-close {
4466
4196
  filter: none;
4467
4197
  }
4468
4198
  .btn-close:hover {
@@ -4570,7 +4300,7 @@ label.btn {
4570
4300
  .card:has(> .card-image) {
4571
4301
  padding-block-start: 0;
4572
4302
  }
4573
- .card[data-bs-theme="dark"], :where([data-bs-theme="dark"]) .card:not([data-bs-theme="light"]):not([data-bs-theme="light"] *) {
4303
+ :scope[data-bs-theme="dark"] .card {
4574
4304
  --bs-card-bg: color-mix(in srgb, var(--bs-secondary-bg) 30%, var(--bs-body-bg));
4575
4305
  --moo-card-footer-bg: color-mix(in srgb, var(--bs-secondary-bg) 50%, var(--bs-body-bg));
4576
4306
  }
@@ -4753,6 +4483,10 @@ label.btn {
4753
4483
  --moo-dropdown-sidebar-min-width: 14rem;
4754
4484
  min-width: max(100%, var(--moo-dropdown-sidebar-min-width));
4755
4485
  }
4486
+ [data-identity-trigger="1"] + .dropdown-menu {
4487
+ --moo-dropdown-sidebar-min-width: 14rem;
4488
+ min-width: var(--moo-dropdown-sidebar-min-width);
4489
+ }
4756
4490
  @media (max-width: 575.98px) {
4757
4491
  [data-slot="sidebar-header"] .dropend > .dropdown-menu,
4758
4492
  [data-slot="sidebar-footer"] .dropend > .dropdown-menu {
@@ -4794,8 +4528,8 @@ label.btn {
4794
4528
  [data-slot="sidebar-footer"] [data-sidebar-dropdown-positioned] > .dropdown-menu {
4795
4529
  position: fixed !important;
4796
4530
  z-index: 1000;
4797
- inset-inline-start: var(--moo-sidebar-dropdown-inline-start, auto) !important;
4798
- inset-inline-end: auto !important;
4531
+ left: var(--moo-sidebar-dropdown-left, auto) !important;
4532
+ right: var(--moo-sidebar-dropdown-right, auto) !important;
4799
4533
  width: var(--moo-dropdown-sidebar-min-width);
4800
4534
  min-width: var(--moo-dropdown-sidebar-min-width);
4801
4535
  margin: 0;
@@ -4808,11 +4542,6 @@ label.btn {
4808
4542
  inset-block-start: auto !important;
4809
4543
  inset-block-end: var(--moo-sidebar-dropdown-block-end) !important;
4810
4544
  }
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
4545
  }
4817
4546
  .menubar {
4818
4547
  gap: 0.125rem;
@@ -4986,60 +4715,6 @@ label.btn {
4986
4715
  .skeleton > .placeholder {
4987
4716
  display: block;
4988
4717
  }
4989
- .sidebar-wrapper {
4990
- --moo-sidebar-width: 16rem;
4991
- --moo-sidebar-width-icon: 3rem;
4992
- display: flex;
4993
- width: 100%;
4994
- min-height: 100svh;
4995
- }
4996
- .sidebar-wrapper--contained {
4997
- min-height: 0;
4998
- height: 34rem;
4999
- overflow: hidden;
5000
- border: var(--bs-border-width) solid var(--moo-border);
5001
- border-radius: var(--bs-border-radius-xl);
5002
- }
5003
- .sidebar {
5004
- --bs-offcanvas-width: var(--moo-sidebar-width);
5005
- flex: 0 0 var(--moo-sidebar-width);
5006
- width: var(--moo-sidebar-width);
5007
- color: var(--moo-sidebar-foreground);
5008
- }
5009
- .sidebar[data-side="left"] .sidebar-inner {
5010
- border-inline-end: var(--bs-border-width) solid var(--moo-sidebar-border);
5011
- }
5012
- .sidebar[data-side="right"] {
5013
- order: 1;
5014
- }
5015
- .sidebar[data-side="right"] .sidebar-inner {
5016
- border-inline-start: var(--bs-border-width) solid var(--moo-sidebar-border);
5017
- }
5018
- @media (min-width: 992px) {
5019
- .sidebar {
5020
- transition: flex-basis 0.2s ease, width 0.2s ease;
5021
- }
5022
- .sidebar[data-variant="floating"] .sidebar-inner {
5023
- width: auto;
5024
- height: calc(100svh - 1rem);
5025
- max-height: calc(100svh - 1rem);
5026
- margin: 0.5rem;
5027
- border: var(--bs-border-width) solid var(--moo-sidebar-border);
5028
- border-radius: var(--bs-border-radius-lg);
5029
- box-shadow: var(--bs-box-shadow-sm);
5030
- }
5031
- .sidebar-wrapper--contained .sidebar[data-variant="floating"] .sidebar-inner {
5032
- height: calc(100% - 1rem);
5033
- max-height: calc(100% - 1rem);
5034
- }
5035
- .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] {
5036
- flex-basis: calc(var(--moo-sidebar-width-icon) + 1rem);
5037
- width: calc(var(--moo-sidebar-width-icon) + 1rem);
5038
- }
5039
- .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] .sidebar-inner {
5040
- box-shadow: var(--bs-box-shadow);
5041
- }
5042
- }
5043
4718
  .sidebar-inner {
5044
4719
  position: sticky;
5045
4720
  top: 0;
@@ -5050,11 +4725,6 @@ label.btn {
5050
4725
  max-height: 100svh;
5051
4726
  background: var(--moo-sidebar);
5052
4727
  }
5053
- .sidebar-wrapper--contained .sidebar-inner {
5054
- position: relative;
5055
- height: 100%;
5056
- max-height: 100%;
5057
- }
5058
4728
  .sidebar-header,
5059
4729
  .sidebar-footer {
5060
4730
  display: flex;
@@ -5361,96 +5031,7 @@ label.btn {
5361
5031
  text-overflow: ellipsis;
5362
5032
  white-space: nowrap;
5363
5033
  }
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
- @media (min-width: 992px) {
5388
- .sidebar-wrapper:has(.sidebar[data-variant="inset"]) {
5389
- background: var(--moo-sidebar);
5390
- }
5391
- .sidebar-wrapper:has(.sidebar[data-variant="inset"]) .sidebar-inset {
5392
- margin: 0.5rem;
5393
- margin-inline-start: 0;
5394
- border-radius: var(--bs-border-radius-xl);
5395
- box-shadow: var(--bs-box-shadow-sm);
5396
- }
5397
- .sidebar-wrapper[data-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"]) .sidebar-inset {
5398
- margin-inline-start: 0.5rem;
5399
- }
5400
- .sidebar-wrapper:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
5401
- margin-inline-start: 0.5rem;
5402
- margin-inline-end: 0;
5403
- }
5404
- .sidebar-wrapper[data-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
5405
- margin-inline-end: 0.5rem;
5406
- }
5407
- }
5408
- .sidebar-rail {
5409
- position: absolute;
5410
- inset-block: 0;
5411
- inset-inline-end: 0;
5412
- z-index: 20;
5413
- width: 1rem;
5414
- padding: 0;
5415
- transform: translateX(50%);
5416
- border: 0;
5417
- background: transparent;
5418
- cursor: pointer;
5419
- }
5420
- [dir="rtl"] .sidebar-rail {
5421
- transform: translateX(-50%);
5422
- }
5423
- .sidebar-rail::after {
5424
- content: "";
5425
- position: absolute;
5426
- inset-block: 0;
5427
- inset-inline-start: 50%;
5428
- width: var(--bs-border-width);
5429
- background: transparent;
5430
- transition: background 0.15s ease;
5431
- }
5432
- .sidebar-rail:hover::after {
5433
- background: var(--moo-sidebar-border);
5434
- }
5435
5034
  @media (min-width: 992px) {
5436
- .sidebar {
5437
- position: relative;
5438
- }
5439
- .sidebar-wrapper:has([data-sidebar-dropdown-positioned] > .dropdown-menu.show) > .sidebar {
5440
- position: relative;
5441
- z-index: 1000;
5442
- }
5443
- .sidebar-wrapper:has([data-sidebar-dropdown-positioned] > .dropdown-menu.show) > .sidebar > .sidebar-inner {
5444
- z-index: 1000;
5445
- }
5446
- .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] {
5447
- flex-basis: var(--moo-sidebar-width-icon);
5448
- width: var(--moo-sidebar-width-icon);
5449
- }
5450
- .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar-inset {
5451
- position: relative;
5452
- z-index: 0;
5453
- }
5454
5035
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-group-label,
5455
5036
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__text,
5456
5037
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__subtitle,
@@ -5464,13 +5045,14 @@ label.btn {
5464
5045
  display: none !important;
5465
5046
  }
5466
5047
  [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"]:has(.sidebar-menu-button[data-bs-toggle="dropdown"][aria-expanded="true"]) {
5467
- z-index: 1000;
5048
+ z-index: 1031;
5468
5049
  }
5469
5050
  .sidebar-menu-flyout {
5470
5051
  position: fixed;
5471
5052
  z-index: 1000;
5472
5053
  inset-block-start: var(--moo-sidebar-flyout-block-start);
5473
- inset-inline-start: var(--moo-sidebar-flyout-inline-start);
5054
+ left: var(--moo-sidebar-flyout-left);
5055
+ right: auto;
5474
5056
  display: flex;
5475
5057
  flex-direction: column;
5476
5058
  min-width: 10rem;
@@ -5542,30 +5124,6 @@ label.btn {
5542
5124
  display: none;
5543
5125
  }
5544
5126
  }
5545
- @media (max-width: 991.98px) {
5546
- .sidebar-rail {
5547
- display: none;
5548
- }
5549
- .sidebar-wrapper--contained {
5550
- flex-direction: column;
5551
- height: auto;
5552
- min-height: 34rem;
5553
- overflow: visible;
5554
- }
5555
- .sidebar-wrapper--contained .sidebar {
5556
- position: relative;
5557
- inset: auto;
5558
- flex: 0 0 auto;
5559
- width: 100%;
5560
- height: auto;
5561
- visibility: visible;
5562
- transform: none;
5563
- }
5564
- .sidebar-wrapper--contained .sidebar-inner {
5565
- height: auto;
5566
- max-height: none;
5567
- }
5568
- }
5569
5127
  .alert {
5570
5128
  --bs-alert-border-color: var(--moo-border);
5571
5129
  --bs-alert-color: var(--moo-foreground);
@@ -5584,10 +5142,9 @@ label.btn {
5584
5142
  .alert-dismissible .btn-close {
5585
5143
  top: auto;
5586
5144
  right: auto;
5587
- inset-block-start: 50%;
5145
+ inset-block-start: var(--bs-alert-padding-y);
5588
5146
  inset-inline-end: var(--bs-alert-padding-x);
5589
5147
  padding: 0.34375rem 0.34375rem;
5590
- transform: translateY(-50%);
5591
5148
  }
5592
5149
  .alert-danger {
5593
5150
  --bs-alert-bg: transparent;
@@ -6064,18 +5621,24 @@ label.btn {
6064
5621
  .form-switch .form-check-input {
6065
5622
  height: 1.15rem;
6066
5623
  }
6067
- :where([data-bs-theme="dark"]) .form-switch .form-check-input:checked {
5624
+ :scope[data-bs-theme="light"] .form-switch .form-check-input:checked {
5625
+ --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");
5626
+ background-color: var(--moo-primary);
5627
+ border-color: var(--moo-primary);
5628
+ filter: none;
5629
+ }
5630
+ :scope[data-bs-theme="dark"] .form-switch .form-check-input:checked {
6068
5631
  --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
5632
  background-color: var(--moo-primary);
6070
5633
  border-color: var(--moo-primary);
6071
5634
  filter: none;
6072
5635
  }
6073
- .form-switch .form-check-input:focus:active:not(:checked),
6074
- .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
5636
+ :scope[data-bs-theme="light"] .form-switch .form-check-input:focus:active:not(:checked),
5637
+ :scope[data-bs-theme="light"] .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
6075
5638
  --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
5639
  }
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) {
5640
+ :scope[data-bs-theme="dark"] .form-switch .form-check-input:focus:active:not(:checked),
5641
+ :scope[data-bs-theme="dark"] .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
6079
5642
  --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
5643
  }
6081
5644
  .spinner [data-icon] {
@@ -6369,6 +5932,16 @@ label.btn {
6369
5932
  .modal-header {
6370
5933
  gap: calc(var(--bs-modal-padding) * 0.75);
6371
5934
  }
5935
+ .modal-header:has(> .btn-close) {
5936
+ position: relative;
5937
+ padding-inline-end: calc( var(--bs-modal-padding) + 0.75rem + 0.6875rem + 0.5rem);
5938
+ }
5939
+ .modal-header:has(> .btn-close) > .btn-close {
5940
+ position: absolute;
5941
+ inset-block-start: 0.5rem;
5942
+ inset-inline-end: 0.5rem;
5943
+ margin: 0;
5944
+ }
6372
5945
  .modal--alert {
6373
5946
  --bs-modal-width: 24rem;
6374
5947
  --bs-modal-padding: 1rem;
@@ -7857,42 +7430,491 @@ label.btn {
7857
7430
  .datatable--release-review {
7858
7431
  --moo-datatable-min-width: 64rem;
7859
7432
  }
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,
7888
- .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,
7896
- .offcanvas-backdrop.show {
7897
- opacity: var(--moo-overlay-backdrop-opacity, 1);
7433
+ .form-label,
7434
+ .form-check-label {
7435
+ user-select: none;
7436
+ }
7437
+ :is(.btn, a, button, summary, [tabindex]):not(input, textarea, select):focus-visible,
7438
+ :is(.form-control, .form-select, .form-check-input):focus-visible {
7439
+ border-color: var(--moo-ring);
7440
+ outline: 0;
7441
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
7442
+ }
7443
+ .btn:focus-visible:hover,
7444
+ .btn.show:focus-visible {
7445
+ border-color: var(--bs-btn-hover-border-color);
7446
+ box-shadow: none;
7447
+ }
7448
+ .form-control:focus:not(:focus-visible),
7449
+ .form-select:focus:not(:focus-visible) {
7450
+ border-color: var(--moo-border);
7451
+ box-shadow: none;
7452
+ }
7453
+ .page-link:focus:not(:focus-visible) {
7454
+ outline: 0;
7455
+ box-shadow: none;
7456
+ }
7457
+ .page-item:not(.active) > .page-link:focus:not(:focus-visible) {
7458
+ color: var(--bs-pagination-color);
7459
+ background-color: var(--bs-pagination-bg);
7460
+ border-color: var(--bs-pagination-border-color);
7461
+ }
7462
+ .form-control.is-invalid,
7463
+ .form-control.is-invalid:focus,
7464
+ .was-validated .form-control:invalid,
7465
+ .was-validated .form-control:invalid:focus,
7466
+ .form-select.is-invalid,
7467
+ .form-select.is-invalid:focus,
7468
+ .was-validated .form-select:invalid,
7469
+ .was-validated .form-select:invalid:focus {
7470
+ box-shadow: 0 0 0 3px var(--moo-form-invalid-ring-color);
7471
+ }
7472
+ .btn-check:focus:not(:focus-visible) + .btn {
7473
+ outline: 0;
7474
+ box-shadow: none;
7475
+ }
7476
+ .btn-check:focus-visible + .btn {
7477
+ border-color: var(--moo-ring);
7478
+ outline: 0;
7479
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
7480
+ }
7481
+ .input-group > .dropdown-toggle[aria-expanded="true"]:focus-visible {
7482
+ box-shadow: none;
7483
+ }
7484
+ .combobox-chips:focus-within {
7485
+ border-color: var(--moo-ring);
7486
+ outline: 0;
7487
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
7488
+ }
7489
+ .input-group:has(> .form-control:focus):not(:has(> .form-control[type="file"])) {
7490
+ border-color: var(--moo-ring);
7491
+ outline: 0;
7492
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
7493
+ }
7494
+ .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))):has(> :is(.form-control, .form-select).is-invalid),
7495
+ .was-validated .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))):has(> :is(.form-control, .form-select):invalid) {
7496
+ border-color: var(--bs-form-invalid-border-color);
7497
+ box-shadow: 0 0 0 3px var(--moo-form-invalid-ring-color);
7498
+ }
7499
+ .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))) > :is(.form-control, .form-select).is-invalid,
7500
+ .was-validated .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))) > :is(.form-control, .form-select):invalid {
7501
+ box-shadow: none;
7502
+ }
7503
+ :where( .scroll-fade, .scroll-fade-y, .scroll-fade-x, .scroll-fade-t, .scroll-fade-b, .scroll-fade-l, .scroll-fade-r, .scroll-fade-s, .scroll-fade-e ) {
7504
+ --scroll-fade-size: min(12%, 2.5rem);
7505
+ --scroll-fade-reveal: 6rem;
7506
+ --moo-scroll-fade-t-size: var(--scroll-fade-size);
7507
+ --moo-scroll-fade-b-size: var(--scroll-fade-size);
7508
+ --moo-scroll-fade-s-size: var(--scroll-fade-size);
7509
+ --moo-scroll-fade-e-size: var(--scroll-fade-size);
7510
+ --moo-scroll-fade-mask: linear-gradient(
7511
+ to bottom,
7512
+ transparent 0,
7513
+ #000 var(--moo-scroll-fade-t),
7514
+ #000 calc(100% - var(--moo-scroll-fade-b)),
7515
+ transparent 100%
7516
+ );
7517
+ mask-image: var(--moo-scroll-fade-mask);
7518
+ }
7519
+ .scroll-fade,
7520
+ .scroll-fade-y {
7521
+ animation-name: moo-scroll-fade-reveal-t, moo-scroll-fade-reveal-b;
7522
+ animation-duration: 1ms, 1ms;
7523
+ animation-fill-mode: both, both;
7524
+ animation-timing-function: linear, linear;
7525
+ animation-timeline: scroll(self y), scroll(self y);
7526
+ animation-range: 0 var(--scroll-fade-reveal), calc(100% - var(--scroll-fade-reveal)) 100%;
7527
+ }
7528
+ .scroll-fade-t {
7529
+ animation-name: moo-scroll-fade-reveal-t;
7530
+ animation-duration: 1ms;
7531
+ animation-fill-mode: both;
7532
+ animation-timing-function: linear;
7533
+ animation-timeline: scroll(self y);
7534
+ animation-range: 0 var(--scroll-fade-reveal);
7535
+ }
7536
+ .scroll-fade-b {
7537
+ animation-name: moo-scroll-fade-reveal-b;
7538
+ animation-duration: 1ms;
7539
+ animation-fill-mode: both;
7540
+ animation-timing-function: linear;
7541
+ animation-timeline: scroll(self y);
7542
+ animation-range: calc(100% - var(--scroll-fade-reveal)) 100%;
7543
+ }
7544
+ .scroll-fade-x,
7545
+ .scroll-fade-s,
7546
+ .scroll-fade-e {
7547
+ --moo-scroll-fade-mask: linear-gradient(
7548
+ to right,
7549
+ transparent 0,
7550
+ #000 var(--moo-scroll-fade-s),
7551
+ #000 calc(100% - var(--moo-scroll-fade-e)),
7552
+ transparent 100%
7553
+ );
7554
+ }
7555
+ .scroll-fade-x {
7556
+ animation-name: moo-scroll-fade-reveal-s, moo-scroll-fade-reveal-e;
7557
+ animation-duration: 1ms, 1ms;
7558
+ animation-fill-mode: both, both;
7559
+ animation-timing-function: linear, linear;
7560
+ animation-timeline: scroll(self inline), scroll(self inline);
7561
+ animation-range: 0 var(--scroll-fade-reveal), calc(100% - var(--scroll-fade-reveal)) 100%;
7562
+ }
7563
+ .scroll-fade-s {
7564
+ animation-name: moo-scroll-fade-reveal-s;
7565
+ animation-duration: 1ms;
7566
+ animation-fill-mode: both;
7567
+ animation-timing-function: linear;
7568
+ animation-timeline: scroll(self inline);
7569
+ animation-range: 0 var(--scroll-fade-reveal);
7570
+ }
7571
+ .scroll-fade-e {
7572
+ animation-name: moo-scroll-fade-reveal-e;
7573
+ animation-duration: 1ms;
7574
+ animation-fill-mode: both;
7575
+ animation-timing-function: linear;
7576
+ animation-timeline: scroll(self inline);
7577
+ animation-range: calc(100% - var(--scroll-fade-reveal)) 100%;
7578
+ }
7579
+ .scroll-fade-x:where([dir="rtl"], [dir="rtl"] *),
7580
+ .scroll-fade-s:where([dir="rtl"], [dir="rtl"] *),
7581
+ .scroll-fade-e:where([dir="rtl"], [dir="rtl"] *) {
7582
+ --moo-scroll-fade-mask: linear-gradient(
7583
+ to left,
7584
+ transparent 0,
7585
+ #000 var(--moo-scroll-fade-s),
7586
+ #000 calc(100% - var(--moo-scroll-fade-e)),
7587
+ transparent 100%
7588
+ );
7589
+ }
7590
+ .scroll-fade-l,
7591
+ .scroll-fade-r {
7592
+ --moo-scroll-fade-mask: linear-gradient(
7593
+ to right,
7594
+ transparent 0,
7595
+ #000 var(--moo-scroll-fade-s),
7596
+ #000 calc(100% - var(--moo-scroll-fade-e)),
7597
+ transparent 100%
7598
+ );
7599
+ }
7600
+ .scroll-fade-l {
7601
+ animation-name: moo-scroll-fade-reveal-s;
7602
+ animation-duration: 1ms;
7603
+ animation-fill-mode: both;
7604
+ animation-timing-function: linear;
7605
+ animation-timeline: scroll(self x);
7606
+ animation-range: 0 var(--scroll-fade-reveal);
7607
+ }
7608
+ .scroll-fade-r {
7609
+ animation-name: moo-scroll-fade-reveal-e;
7610
+ animation-duration: 1ms;
7611
+ animation-fill-mode: both;
7612
+ animation-timing-function: linear;
7613
+ animation-timeline: scroll(self x);
7614
+ animation-range: calc(100% - var(--scroll-fade-reveal)) 100%;
7615
+ }
7616
+ .scroll-fade-none {
7617
+ --moo-scroll-fade-mask: none;
7618
+ }
7619
+ .no-scrollbar {
7620
+ scrollbar-width: none;
7621
+ }
7622
+ .no-scrollbar::-webkit-scrollbar {
7623
+ display: none;
7624
+ }
7625
+ .scrollbar-thin {
7626
+ --moo-scrollbar-thin-size: 0.375rem;
7627
+ --moo-scrollbar-thin-thumb-bg: color-mix(in srgb, var(--bs-secondary-color) 28%, transparent);
7628
+ --moo-scrollbar-thin-thumb-hover-bg: color-mix(in srgb, var(--bs-secondary-color) 45%, transparent);
7629
+ scrollbar-color: var(--moo-scrollbar-thin-thumb-bg) transparent;
7630
+ scrollbar-width: thin;
7631
+ }
7632
+ .scrollbar-thin::-webkit-scrollbar {
7633
+ width: var(--moo-scrollbar-thin-size);
7634
+ height: var(--moo-scrollbar-thin-size);
7635
+ }
7636
+ .scrollbar-thin::-webkit-scrollbar-track {
7637
+ background: transparent;
7638
+ }
7639
+ .scrollbar-thin::-webkit-scrollbar-thumb {
7640
+ border-radius: var(--bs-border-radius-pill);
7641
+ background-color: var(--moo-scrollbar-thin-thumb-bg);
7642
+ }
7643
+ .scrollbar-thin::-webkit-scrollbar-thumb:hover {
7644
+ background-color: var(--moo-scrollbar-thin-thumb-hover-bg);
7645
+ }
7646
+ @supports not (animation-timeline: scroll()) {
7647
+ .scroll-fade,
7648
+ .scroll-fade-y {
7649
+ --moo-scroll-fade-t: var(--moo-scroll-fade-t-size);
7650
+ --moo-scroll-fade-b: var(--moo-scroll-fade-b-size);
7651
+ }
7652
+ .scroll-fade-x {
7653
+ --moo-scroll-fade-s: var(--moo-scroll-fade-s-size);
7654
+ --moo-scroll-fade-e: var(--moo-scroll-fade-e-size);
7655
+ }
7656
+ .scroll-fade-t {
7657
+ --moo-scroll-fade-t: var(--moo-scroll-fade-t-size);
7658
+ }
7659
+ .scroll-fade-b {
7660
+ --moo-scroll-fade-b: var(--moo-scroll-fade-b-size);
7661
+ }
7662
+ .scroll-fade-l,
7663
+ .scroll-fade-s {
7664
+ --moo-scroll-fade-s: var(--moo-scroll-fade-s-size);
7665
+ }
7666
+ .scroll-fade-r,
7667
+ .scroll-fade-e {
7668
+ --moo-scroll-fade-e: var(--moo-scroll-fade-e-size);
7669
+ }
7670
+ }
7671
+ .sidebar {
7672
+ --moo-sidebar-width: 16rem;
7673
+ --moo-sidebar-width-icon: 3rem;
7674
+ --bs-offcanvas-width: var(--moo-sidebar-width);
7675
+ flex: 0 0 var(--moo-sidebar-width);
7676
+ width: var(--moo-sidebar-width);
7677
+ color: var(--moo-sidebar-foreground);
7678
+ }
7679
+ .sidebar-rail {
7680
+ position: absolute;
7681
+ inset-block: 0;
7682
+ inset-inline-end: 0;
7683
+ z-index: 20;
7684
+ width: 1rem;
7685
+ padding: 0;
7686
+ transform: translateX(50%);
7687
+ border: 0;
7688
+ background: transparent;
7689
+ cursor: pointer;
7690
+ }
7691
+ .sidebar:dir(rtl) .sidebar-rail {
7692
+ transform: translateX(-50%);
7693
+ }
7694
+ .sidebar-rail::after {
7695
+ content: "";
7696
+ position: absolute;
7697
+ inset-block: 0;
7698
+ inset-inline-start: 50%;
7699
+ width: var(--bs-border-width);
7700
+ background: transparent;
7701
+ transition: background 0.15s ease;
7702
+ }
7703
+ .sidebar-rail:hover::after {
7704
+ background: var(--moo-sidebar-border);
7705
+ }
7706
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
7707
+ position: relative;
7708
+ height: 100%;
7709
+ max-height: 100%;
7710
+ }
7711
+ @media (min-width: 992px) {
7712
+ .sidebar {
7713
+ position: relative;
7714
+ }
7715
+ .sidebar.offcanvas-lg[data-collapsible="offcanvas"] {
7716
+ visibility: visible;
7717
+ transform: none;
7718
+ }
7719
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"] > .sidebar.offcanvas-lg[data-collapsible="offcanvas"] {
7720
+ flex-basis: 0;
7721
+ width: 0;
7722
+ overflow: hidden;
7723
+ visibility: hidden;
7724
+ }
7725
+ .wrapper[data-layout="app"]:has([data-sidebar-dropdown-positioned] > .dropdown-menu.show) > .sidebar {
7726
+ position: relative;
7727
+ z-index: 1031;
7728
+ }
7729
+ .wrapper[data-layout="app"]:has([data-sidebar-dropdown-positioned] > .dropdown-menu.show) > .sidebar > .sidebar-inner {
7730
+ z-index: 1031;
7731
+ }
7732
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] {
7733
+ flex-basis: var(--moo-sidebar-width-icon);
7734
+ width: var(--moo-sidebar-width-icon);
7735
+ }
7736
+ }
7737
+ @media (max-width: 991.98px) {
7738
+ .sidebar-rail {
7739
+ display: none;
7740
+ }
7741
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar {
7742
+ position: relative;
7743
+ inset: auto;
7744
+ flex: 0 0 auto;
7745
+ width: 100%;
7746
+ height: auto;
7747
+ visibility: visible;
7748
+ transform: none;
7749
+ }
7750
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
7751
+ height: auto;
7752
+ max-height: none;
7753
+ }
7754
+ }
7755
+ .sidebar[data-side="left"] .sidebar-inner {
7756
+ border-right: var(--bs-border-width) solid var(--moo-sidebar-border);
7757
+ }
7758
+ .sidebar[data-side="right"] {
7759
+ order: 1;
7760
+ }
7761
+ .wrapper[data-layout="app"]:dir(rtl) > .sidebar[data-side="left"] {
7762
+ order: 1;
7763
+ }
7764
+ .wrapper[data-layout="app"]:dir(rtl) > .sidebar[data-side="right"] {
7765
+ order: 0;
7766
+ }
7767
+ .sidebar[data-side="right"] .sidebar-inner {
7768
+ border-left: var(--bs-border-width) solid var(--moo-sidebar-border);
7769
+ }
7770
+ @media (min-width: 992px) {
7771
+ .sidebar {
7772
+ transition: flex-basis 0.2s ease, width 0.2s ease;
7773
+ }
7774
+ .sidebar[data-variant="floating"] .sidebar-inner {
7775
+ width: auto;
7776
+ height: calc(100svh - 1rem);
7777
+ max-height: calc(100svh - 1rem);
7778
+ margin: 0.5rem;
7779
+ border: var(--bs-border-width) solid var(--moo-sidebar-border);
7780
+ border-radius: var(--bs-border-radius-lg);
7781
+ box-shadow: var(--bs-box-shadow-sm);
7782
+ }
7783
+ .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar[data-variant="floating"] .sidebar-inner {
7784
+ height: calc(100% - 1rem);
7785
+ max-height: calc(100% - 1rem);
7786
+ }
7787
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] {
7788
+ flex-basis: calc(var(--moo-sidebar-width-icon) + 1rem);
7789
+ width: calc(var(--moo-sidebar-width-icon) + 1rem);
7790
+ }
7791
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] .sidebar-inner {
7792
+ box-shadow: var(--bs-box-shadow);
7793
+ }
7794
+ }
7795
+ @media (prefers-reduced-motion: reduce) {
7796
+ .sidebar {
7797
+ transition: none;
7798
+ }
7799
+ }
7800
+ @media (min-width: 992px) {
7801
+ .wrapper[data-layout="app"]:has(> .sidebar[data-variant="inset"]) {
7802
+ background: var(--moo-sidebar);
7803
+ }
7804
+ .wrapper[data-layout="app"]:has(> .sidebar[data-variant="inset"]) > [data-slot="page"] {
7805
+ margin: 0.5rem;
7806
+ margin-left: 0;
7807
+ border-radius: var(--bs-border-radius-xl);
7808
+ box-shadow: var(--bs-box-shadow-sm);
7809
+ background: var(--bs-body-bg);
7810
+ }
7811
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"]:has(> .sidebar[data-variant="inset"]) > [data-slot="page"] {
7812
+ margin-left: 0.5rem;
7813
+ }
7814
+ .wrapper[data-layout="app"]:has(> .sidebar[data-variant="inset"][data-side="right"]) > [data-slot="page"] {
7815
+ margin-left: 0.5rem;
7816
+ margin-right: 0;
7817
+ }
7818
+ .wrapper[data-layout="app"][data-sidebar-state="collapsed"]:has(> .sidebar[data-variant="inset"][data-side="right"]) > [data-slot="page"] {
7819
+ margin-right: 0.5rem;
7820
+ }
7821
+ }
7822
+ .wrapper[data-layout="app"] {
7823
+ display: flex;
7824
+ width: 100%;
7825
+ height: 100svh;
7826
+ min-height: 0;
7827
+ overflow: hidden;
7828
+ }
7829
+ .wrapper[data-layout="app"][data-shell-mode="contained"] {
7830
+ min-height: 0;
7831
+ height: 34rem;
7832
+ overflow: hidden;
7833
+ border: var(--bs-border-width) solid var(--moo-border);
7834
+ border-radius: var(--bs-border-radius-xl);
7835
+ }
7836
+ .wrapper[data-layout="app"] > [data-slot="page"] {
7837
+ display: flex;
7838
+ min-width: 0;
7839
+ min-height: 0;
7840
+ flex: 1 1 auto;
7841
+ flex-direction: column;
7842
+ overflow-y: auto;
7843
+ }
7844
+ .wrapper[data-layout="app"] > [data-slot="page"] > header,
7845
+ .wrapper[data-layout="app"] > [data-slot="page"] > main,
7846
+ .wrapper[data-layout="app"] > [data-slot="page"] > footer {
7847
+ flex: 0 0 auto;
7848
+ }
7849
+ .wrapper[data-layout="app"] > [data-slot="page"] > main {
7850
+ display: flex;
7851
+ min-height: 0;
7852
+ flex: 1 1 auto;
7853
+ flex-direction: column;
7854
+ }
7855
+ .wrapper[data-layout="app"] > [data-slot="page"] > main > :is( .container, .container-sm, .container-md, .container-lg, .container-xl, .container-xxl, .container-fluid ) {
7856
+ display: flex;
7857
+ min-height: 0;
7858
+ flex: 1 1 auto;
7859
+ flex-direction: column;
7860
+ }
7861
+ @media (max-width: 991.98px) {
7862
+ .wrapper[data-layout="app"][data-shell-mode="contained"] {
7863
+ flex-direction: column;
7864
+ height: auto;
7865
+ min-height: 0;
7866
+ overflow: visible;
7867
+ }
7868
+ .wrapper[data-layout="app"][data-shell-mode="contained"] > [data-slot="page"] {
7869
+ overflow: visible;
7870
+ }
7871
+ }
7872
+ :scope[data-bs-theme="light"] .form-select {
7873
+ --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");
7874
+ }
7875
+ :scope[data-bs-theme="dark"] .form-select {
7876
+ --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");
7877
+ }
7878
+ :scope[data-bs-theme="light"] .form-switch .form-check-input:not(:checked):not(:focus) {
7879
+ --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");
7880
+ }
7881
+ :scope[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus) {
7882
+ --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");
7883
+ }
7884
+ .modal-backdrop,
7885
+ .offcanvas-backdrop {
7886
+ --bs-backdrop-opacity: var(--moo-overlay-backdrop-opacity, 1);
7887
+ opacity: 1;
7888
+ color: transparent;
7889
+ background-color: transparent;
7890
+ }
7891
+ .modal-backdrop.fade, .modal-backdrop.fade:not(.show),
7892
+ .offcanvas-backdrop.fade,
7893
+ .offcanvas-backdrop.fade:not(.show) {
7894
+ opacity: 1;
7895
+ }
7896
+ .modal-backdrop.show,
7897
+ .offcanvas-backdrop.show {
7898
+ transition: none;
7899
+ }
7900
+ .modal-backdrop.fade:not(.show),
7901
+ .offcanvas-backdrop.fade:not(.show) {
7902
+ color: var(--bs-body-color, currentcolor);
7903
+ transition: color var(--moo-overlay-motion-duration, 0.3s) ease-out;
7904
+ }
7905
+ .modal-backdrop::before,
7906
+ .offcanvas-backdrop::before {
7907
+ position: absolute;
7908
+ inset: 0;
7909
+ content: "";
7910
+ opacity: 0;
7911
+ background-color: var(--moo-overlay-backdrop-bg, color-mix(in srgb, #0a0a0a 10%, transparent));
7912
+ -webkit-backdrop-filter: blur(0);
7913
+ backdrop-filter: blur(0);
7914
+ animation: moo-overlay-backdrop-exit var(--moo-overlay-motion-duration, 0.3s) ease-out both;
7915
+ }
7916
+ .modal-backdrop.show::before,
7917
+ .offcanvas-backdrop.show::before {
7918
+ animation: moo-overlay-backdrop-enter var(--moo-overlay-motion-duration, 0.3s) ease-out both;
7919
+ }
7898
7920
  }