@wpmoo/ui 1.0.0-rc.2 → 1.0.0-rc.4

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 (84) hide show
  1. package/ASSET_LICENSE.md +3 -1
  2. package/README.md +50 -107
  3. package/certification.json +20 -3
  4. package/dist/assets/css/moo-ui.css +8254 -7629
  5. package/dist/assets/css/moo-ui.min.css +3 -3
  6. package/dist/assets/css/moo.css +595 -71
  7. package/dist/assets/css/moo.min.css +3 -3
  8. package/dist/js/chart.js +15258 -0
  9. package/dist/js/chart.min.js +27 -0
  10. package/dist/js/combobox.js +98 -40
  11. package/dist/js/context-menu.js +5 -0
  12. package/dist/js/datatable.js +5 -0
  13. package/dist/js/datepicker.js +1154 -0
  14. package/dist/js/datepicker.min.js +6 -0
  15. package/dist/js/moo-ui.js +18950 -0
  16. package/dist/js/moo-ui.min.js +27 -0
  17. package/dist/js/sidebar.js +67 -25
  18. package/dist/js/slider.js +324 -0
  19. package/package.json +24 -4
  20. package/scss/_components.scss +73 -0
  21. package/scss/_config.scss +24 -0
  22. package/scss/_settings.scss +8 -0
  23. package/scss/components/_accordion.scss +59 -0
  24. package/scss/components/_alert.scss +94 -0
  25. package/scss/components/_avatar.scss +154 -0
  26. package/scss/components/_badge.scss +33 -0
  27. package/scss/components/_breadcrumb.scss +130 -0
  28. package/scss/components/_button.scss +228 -0
  29. package/scss/components/_button_group.scss +51 -0
  30. package/scss/components/_card.scss +142 -0
  31. package/scss/components/_checkbox.scss +115 -0
  32. package/scss/components/_close_button.scss +59 -0
  33. package/scss/components/_collapsible.scss +43 -0
  34. package/scss/components/_combobox.scss +258 -0
  35. package/scss/components/_context-menu.scss +28 -0
  36. package/scss/components/_datatable.scss +1082 -0
  37. package/scss/components/_datepicker.scss +236 -0
  38. package/scss/components/_dialog.scss +66 -0
  39. package/scss/components/_dropdown.scss +202 -0
  40. package/scss/components/_field.scss +125 -0
  41. package/scss/components/_input.scss +35 -0
  42. package/scss/components/_input_group.scss +201 -0
  43. package/scss/components/_kbd.scss +10 -0
  44. package/scss/components/_menubar.scss +16 -0
  45. package/scss/components/_navigation.scss +41 -0
  46. package/scss/components/_pagination.scss +70 -0
  47. package/scss/components/_popover.scss +47 -0
  48. package/scss/components/_progress.scss +7 -0
  49. package/scss/components/_radio_group.scss +9 -0
  50. package/scss/components/_select.scss +7 -0
  51. package/scss/components/_separator.scss +15 -0
  52. package/scss/components/_sheet.scss +32 -0
  53. package/scss/components/_sidebar.scss +7 -0
  54. package/scss/components/_skeleton.scss +17 -0
  55. package/scss/components/_slider.scss +214 -0
  56. package/scss/components/_spinner.scss +17 -0
  57. package/scss/components/_switch.scss +25 -0
  58. package/scss/components/_table.scss +7 -0
  59. package/scss/components/_tabs.scss +139 -0
  60. package/scss/components/_textarea.scss +7 -0
  61. package/scss/components/_toast.scss +119 -0
  62. package/scss/components/_toggle_group.scss +19 -0
  63. package/scss/components/_tooltip.scss +83 -0
  64. package/scss/components/sidebar/_collapsed.scss +187 -0
  65. package/scss/components/sidebar/_identity.scss +72 -0
  66. package/scss/components/sidebar/_inset.scss +59 -0
  67. package/scss/components/sidebar/_layout.scss +176 -0
  68. package/scss/components/sidebar/_menus.scss +236 -0
  69. package/scss/foundations/_core_global_primitives.scss +5 -0
  70. package/scss/foundations/_core_state_layer.scss +25 -0
  71. package/scss/foundations/_focus.scss +139 -0
  72. package/scss/foundations/_overlay_backdrop.scss +19 -0
  73. package/scss/moo-core.scss +47 -0
  74. package/scss/moo-ui.scss +50 -0
  75. package/scss/settings/_bootstrap_overrides.scss +11 -0
  76. package/scss/settings/_component_variables.scss +479 -0
  77. package/scss/settings/_forms.scss +65 -0
  78. package/scss/settings/_palette.scss +132 -0
  79. package/scss/themes/_scoped_core.scss +239 -0
  80. package/scss/themes/_standalone_root.scss +117 -0
  81. package/scss/utilities/_scroll_fade.scss +193 -0
  82. package/scss/utilities/_scroll_fade_primitives.scss +43 -0
  83. package/scss/_facade-settings.scss +0 -51
  84. package/scss/settings/_facade_public.scss +0 -23
@@ -144,6 +144,11 @@
144
144
  --moo-sidebar-foreground: var(--moo-foreground);
145
145
  --moo-sidebar-accent: var(--moo-muted-surface);
146
146
  --moo-sidebar-border: var(--moo-border);
147
+ --moo-chart-1: #52525b;
148
+ --moo-chart-2: #71717a;
149
+ --moo-chart-3: #a1a1aa;
150
+ --moo-chart-4: #3f3f46;
151
+ --moo-chart-5: #27272a;
147
152
  color-scheme: light;
148
153
  color: var(--bs-body-color);
149
154
  background-color: var(--bs-body-bg);
@@ -735,7 +740,7 @@
735
740
  line-height: 1.42857;
736
741
  color: var(--bs-body-color);
737
742
  appearance: none;
738
- background-color: transparent;
743
+ background-color: var(--moo-input-bg, transparent);
739
744
  background-clip: padding-box;
740
745
  border: var(--bs-border-width) solid var(--moo-border);
741
746
  border-radius: 0.625rem;
@@ -754,7 +759,7 @@
754
759
  }
755
760
  .form-control:focus {
756
761
  color: var(--bs-body-color);
757
- background-color: transparent;
762
+ background-color: var(--moo-input-bg, transparent);
758
763
  border-color: #8b8b8b;
759
764
  outline: 0;
760
765
  box-shadow: 0 0 0 2px rgba(23, 23, 23, 0.25);
@@ -885,7 +890,7 @@
885
890
  line-height: 1.42857;
886
891
  color: var(--bs-body-color);
887
892
  appearance: none;
888
- background-color: transparent;
893
+ background-color: var(--moo-input-bg, transparent);
889
894
  background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
890
895
  background-repeat: no-repeat;
891
896
  background-position: right 0.625rem center;
@@ -956,7 +961,7 @@
956
961
  margin-left: 0;
957
962
  }
958
963
  .form-check-input {
959
- --bs-form-check-bg: transparent;
964
+ --bs-form-check-bg: var(--moo-input-bg, transparent);
960
965
  flex-shrink: 0;
961
966
  width: 1rem;
962
967
  height: 1rem;
@@ -986,8 +991,8 @@
986
991
  box-shadow: 0 0 0 var(--bs-focus-ring-width) color-mix(in srgb, var(--moo-ring) 50%, transparent);
987
992
  }
988
993
  .form-check-input:checked {
989
- background-color: #171717;
990
- border-color: #171717;
994
+ background-color: var(--moo-primary);
995
+ border-color: var(--moo-primary);
991
996
  }
992
997
  .form-check-input:checked[type="checkbox"] {
993
998
  --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
@@ -996,8 +1001,8 @@
996
1001
  --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e");
997
1002
  }
998
1003
  .form-check-input[type="checkbox"]:indeterminate {
999
- background-color: #171717;
1000
- border-color: #171717;
1004
+ background-color: var(--moo-primary);
1005
+ border-color: var(--moo-primary);
1001
1006
  --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e");
1002
1007
  }
1003
1008
  .form-check-input:disabled {
@@ -1092,7 +1097,7 @@
1092
1097
  color: var(--bs-body-color);
1093
1098
  text-align: center;
1094
1099
  white-space: nowrap;
1095
- background-color: var(--bs-tertiary-bg);
1100
+ background-color: var(--moo-input-bg, transparent);
1096
1101
  border: var(--bs-border-width) solid var(--moo-border);
1097
1102
  border-radius: 0.625rem;
1098
1103
  }
@@ -3853,6 +3858,10 @@
3853
3858
  color: #fff !important;
3854
3859
  background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;
3855
3860
  }
3861
+ .form-label,
3862
+ .form-check-label {
3863
+ user-select: none;
3864
+ }
3856
3865
  :is(.btn, a, button, summary, [tabindex]):not(input, textarea, select):focus-visible,
3857
3866
  :is(.form-control, .form-select, .form-check-input):focus-visible {
3858
3867
  border-color: var(--moo-ring);
@@ -4100,6 +4109,24 @@
4100
4109
  .form-control {
4101
4110
  min-height: 2rem;
4102
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;
4129
+ }
4103
4130
  .form-control:disabled,
4104
4131
  .form-select:disabled {
4105
4132
  opacity: var(--moo-disabled-control-opacity);
@@ -4118,6 +4145,10 @@
4118
4145
  .input-group:not(:has(> .form-control[type="file"])) {
4119
4146
  border: var(--bs-border-width) solid var(--moo-border);
4120
4147
  border-radius: var(--moo-input-group-border-radius);
4148
+ background-color: var(--moo-input-bg, transparent);
4149
+ }
4150
+ .input-group:not(:has(> .form-control[type="file"])):not(:has(> .dropdown-menu)) {
4151
+ overflow: hidden;
4121
4152
  }
4122
4153
  .input-group.rounded-pill:not(:has(> .form-control[type="file"])) {
4123
4154
  --moo-input-group-border-radius: var(--bs-border-radius-pill);
@@ -4174,10 +4205,10 @@
4174
4205
  color: var(--bs-btn-active-color);
4175
4206
  }
4176
4207
  .input-group > .btn-ghost[aria-pressed="true"] {
4177
- color: var(--bs-primary);
4208
+ color: var(--bs-btn-active-color);
4178
4209
  }
4179
4210
  .input-group > .btn-ghost[aria-pressed="true"]::before {
4180
- opacity: 0;
4211
+ opacity: 1;
4181
4212
  }
4182
4213
  .input-group > .btn:not(:disabled):not(.disabled):not([aria-disabled="true"]):active {
4183
4214
  transform: none;
@@ -4189,7 +4220,6 @@
4189
4220
  }
4190
4221
  .input-group > .input-group-text {
4191
4222
  color: var(--bs-secondary-color);
4192
- background-color: transparent;
4193
4223
  }
4194
4224
  .input-group > .input-group-text:first-child {
4195
4225
  padding-inline-end: 0;
@@ -4487,6 +4517,11 @@ label.btn {
4487
4517
  .toggle-group > .btn:not(:disabled):not(.disabled):not([aria-disabled="true"]):active {
4488
4518
  transform: none;
4489
4519
  }
4520
+ .toggle-group > .btn-check:checked + .btn {
4521
+ --bs-btn-active-color: var(--moo-primary-foreground);
4522
+ --bs-btn-active-bg: var(--moo-primary);
4523
+ --bs-btn-active-border-color: var(--moo-primary);
4524
+ }
4490
4525
  .toggle-group > .btn-check:focus-visible + .btn,
4491
4526
  .toggle-group > .btn-check:checked:focus-visible + .btn {
4492
4527
  border-color: var(--moo-ring);
@@ -4494,9 +4529,9 @@ label.btn {
4494
4529
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
4495
4530
  }
4496
4531
  .card {
4497
- --bs-card-bg: var(--moo-surface);
4532
+ --bs-card-bg: color-mix(in srgb, var(--bs-secondary-bg) 5%, var(--bs-body-bg));
4498
4533
  --bs-card-color: var(--moo-foreground);
4499
- --bs-card-border-color: var(--moo-border);
4534
+ --bs-card-border-color: color-mix(in srgb, var(--bs-body-color) 10%, transparent);
4500
4535
  --bs-card-border-radius: var(--bs-border-radius-xl);
4501
4536
  --bs-card-inner-border-radius: calc(var(--bs-card-border-radius) - var(--bs-card-border-width));
4502
4537
  --bs-card-box-shadow: var(--bs-box-shadow-sm);
@@ -4504,6 +4539,7 @@ label.btn {
4504
4539
  --bs-card-cap-color: var(--moo-foreground);
4505
4540
  --bs-card-title-color: var(--moo-foreground);
4506
4541
  --bs-card-subtitle-color: var(--moo-muted-foreground);
4542
+ --moo-card-footer-bg: color-mix(in srgb, var(--bs-secondary-bg) 20%, var(--bs-body-bg));
4507
4543
  --moo-card-spacing: 1rem;
4508
4544
  gap: var(--moo-card-spacing);
4509
4545
  padding-block: var(--moo-card-spacing);
@@ -4516,6 +4552,10 @@ label.btn {
4516
4552
  .card:has(> .card-image) {
4517
4553
  padding-block-start: 0;
4518
4554
  }
4555
+ .card[data-bs-theme="dark"], :where([data-bs-theme="dark"]) .card:not([data-bs-theme="light"]):not([data-bs-theme="light"] *) {
4556
+ --bs-card-bg: color-mix(in srgb, var(--bs-secondary-bg) 30%, var(--bs-body-bg));
4557
+ --moo-card-footer-bg: color-mix(in srgb, var(--bs-secondary-bg) 50%, var(--bs-body-bg));
4558
+ }
4519
4559
  .card--sm {
4520
4560
  --moo-card-spacing: 0.75rem;
4521
4561
  }
@@ -4552,7 +4592,7 @@ label.btn {
4552
4592
  gap: 0.5rem;
4553
4593
  padding: var(--moo-card-spacing);
4554
4594
  border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);
4555
- background-color: var(--moo-muted-surface);
4595
+ background-color: var(--moo-card-footer-bg);
4556
4596
  }
4557
4597
  .card-img-top {
4558
4598
  border-top-left-radius: var(--bs-card-border-radius);
@@ -4711,7 +4751,7 @@ label.btn {
4711
4751
  }
4712
4752
  }
4713
4753
  @media (min-width: 992px) {
4714
- [data-slot="sidebar-header"] [data-moo-sidebar-dropdown-positioned] > .dropdown-menu {
4754
+ [data-slot="sidebar-header"] [data-sidebar-dropdown-positioned] > .dropdown-menu {
4715
4755
  position: fixed !important;
4716
4756
  z-index: 1000;
4717
4757
  inset-block-start: var(--moo-sidebar-dropdown-block-start) !important;
@@ -4940,11 +4980,11 @@ label.btn {
4940
4980
  height: calc(100% - 1rem);
4941
4981
  max-height: calc(100% - 1rem);
4942
4982
  }
4943
- .sidebar-wrapper[data-moo-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] {
4983
+ .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] {
4944
4984
  flex-basis: calc(var(--moo-sidebar-width-icon) + 1rem);
4945
4985
  width: calc(var(--moo-sidebar-width-icon) + 1rem);
4946
4986
  }
4947
- .sidebar-wrapper[data-moo-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] .sidebar-inner {
4987
+ .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] .sidebar-inner {
4948
4988
  box-shadow: var(--bs-box-shadow);
4949
4989
  }
4950
4990
  }
@@ -5089,6 +5129,10 @@ label.btn {
5089
5129
  font-weight: 500;
5090
5130
  background: var(--moo-sidebar-accent);
5091
5131
  }
5132
+ .sidebar-content:has(.sidebar-menu:is(:hover, :focus-within)) .sidebar-menu-button[aria-current="page"]:not(:hover):not(:focus-visible),
5133
+ .sidebar-content:has(.sidebar-menu-button:not([aria-current="page"]):is(:hover, :focus-visible)) .sidebar-menu-button[aria-current="page"]:not(:hover):not(:focus-visible) {
5134
+ background: transparent;
5135
+ }
5092
5136
  .sidebar-menu-button--lg {
5093
5137
  height: 3rem;
5094
5138
  padding: 0.5rem;
@@ -5298,14 +5342,14 @@ label.btn {
5298
5342
  border-radius: var(--bs-border-radius-xl);
5299
5343
  box-shadow: var(--bs-box-shadow-sm);
5300
5344
  }
5301
- .sidebar-wrapper[data-moo-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"]) .sidebar-inset {
5345
+ .sidebar-wrapper[data-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"]) .sidebar-inset {
5302
5346
  margin-inline-start: 0.5rem;
5303
5347
  }
5304
5348
  .sidebar-wrapper:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
5305
5349
  margin-inline-start: 0.5rem;
5306
5350
  margin-inline-end: 0;
5307
5351
  }
5308
- .sidebar-wrapper[data-moo-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
5352
+ .sidebar-wrapper[data-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
5309
5353
  margin-inline-end: 0.5rem;
5310
5354
  }
5311
5355
  }
@@ -5340,27 +5384,27 @@ label.btn {
5340
5384
  .sidebar {
5341
5385
  position: relative;
5342
5386
  }
5343
- .sidebar-wrapper[data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] {
5387
+ .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] {
5344
5388
  flex-basis: var(--moo-sidebar-width-icon);
5345
5389
  width: var(--moo-sidebar-width-icon);
5346
5390
  }
5347
- .sidebar-wrapper[data-moo-sidebar-state="collapsed"] .sidebar-inset {
5391
+ .sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar-inset {
5348
5392
  position: relative;
5349
5393
  z-index: 0;
5350
5394
  }
5351
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-group-label,
5352
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__text,
5353
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__subtitle,
5354
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__end {
5395
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-group-label,
5396
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__text,
5397
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__subtitle,
5398
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button__end {
5355
5399
  display: none;
5356
5400
  }
5357
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-sub,
5358
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-action,
5359
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-group-action,
5360
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-badge {
5401
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-sub,
5402
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-action,
5403
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-group-action,
5404
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-badge {
5361
5405
  display: none !important;
5362
5406
  }
5363
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"]:has(.sidebar-menu-button[data-bs-toggle="dropdown"][aria-expanded="true"]) {
5407
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"]:has(.sidebar-menu-button[data-bs-toggle="dropdown"][aria-expanded="true"]) {
5364
5408
  z-index: 1000;
5365
5409
  }
5366
5410
  .sidebar-menu-flyout {
@@ -5394,48 +5438,48 @@ label.btn {
5394
5438
  .sidebar-menu-flyout .sidebar-menu-badge {
5395
5439
  display: flex !important;
5396
5440
  }
5397
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button {
5441
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button {
5398
5442
  justify-content: center;
5399
5443
  padding-inline: 0;
5400
5444
  }
5401
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button--workspace:hover {
5445
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button--workspace:hover {
5402
5446
  background: transparent;
5403
5447
  }
5404
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button--workspace[aria-expanded="true"] {
5448
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button--workspace[aria-expanded="true"] {
5405
5449
  background: transparent;
5406
5450
  outline: 0;
5407
5451
  box-shadow: none;
5408
5452
  }
5409
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button--workspace:focus-visible {
5453
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button--workspace:focus-visible {
5410
5454
  background: transparent;
5411
5455
  outline: 0;
5412
5456
  box-shadow: none;
5413
5457
  }
5414
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-item--account > .sidebar-menu-button--account {
5458
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-item--account > .sidebar-menu-button--account {
5415
5459
  padding: 0;
5416
5460
  overflow: visible;
5417
5461
  }
5418
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-item--account > .sidebar-menu-button--account:hover {
5462
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-item--account > .sidebar-menu-button--account:hover {
5419
5463
  background: transparent;
5420
5464
  }
5421
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-item--account > .sidebar-menu-button--account[aria-expanded="true"] {
5465
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-item--account > .sidebar-menu-button--account[aria-expanded="true"] {
5422
5466
  background: transparent;
5423
5467
  outline: 0;
5424
5468
  box-shadow: none;
5425
5469
  }
5426
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-item--account > .sidebar-menu-button--account:focus-visible {
5470
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-item--account > .sidebar-menu-button--account:focus-visible {
5427
5471
  background: transparent;
5428
5472
  outline: 0;
5429
5473
  box-shadow: none;
5430
5474
  }
5431
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button--lg {
5475
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-button--lg {
5432
5476
  height: 2rem;
5433
5477
  padding: 0;
5434
5478
  }
5435
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-skeleton {
5479
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-skeleton {
5436
5480
  justify-content: center;
5437
5481
  }
5438
- [data-moo-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-skeleton__line {
5482
+ [data-sidebar-state="collapsed"] .sidebar[data-collapsible="icon"] .sidebar-menu-skeleton__line {
5439
5483
  display: none;
5440
5484
  }
5441
5485
  }
@@ -5476,14 +5520,15 @@ label.btn {
5476
5520
  padding-right: 0;
5477
5521
  padding-left: 0;
5478
5522
  padding-inline-start: var(--bs-alert-padding-x);
5479
- padding-inline-end: calc(var(--bs-alert-padding-x) + 1.5rem);
5523
+ padding-inline-end: calc(var(--bs-alert-padding-x) + 1.9375rem);
5480
5524
  }
5481
5525
  .alert-dismissible .btn-close {
5482
5526
  top: auto;
5483
5527
  right: auto;
5484
- inset-block-start: var(--bs-alert-padding-y);
5528
+ inset-block-start: 50%;
5485
5529
  inset-inline-end: var(--bs-alert-padding-x);
5486
5530
  padding: 0.34375rem 0.34375rem;
5531
+ transform: translateY(-50%);
5487
5532
  }
5488
5533
  .alert-danger {
5489
5534
  --bs-alert-bg: transparent;
@@ -5702,7 +5747,186 @@ label.btn {
5702
5747
  color: var(--moo-foreground) !important;
5703
5748
  }
5704
5749
  .progress {
5705
- --bs-progress-bar-bg: var(--moo-foreground);
5750
+ --bs-progress-bar-color: var(--moo-primary-foreground);
5751
+ --bs-progress-bar-bg: var(--moo-primary);
5752
+ }
5753
+ .slider {
5754
+ display: grid;
5755
+ gap: 0.5rem;
5756
+ width: 100%;
5757
+ }
5758
+ .slider-track {
5759
+ position: relative;
5760
+ display: flex;
5761
+ align-items: center;
5762
+ width: 100%;
5763
+ height: 0.75rem;
5764
+ cursor: pointer;
5765
+ touch-action: none;
5766
+ }
5767
+ .slider-track::before,
5768
+ .slider-range {
5769
+ position: absolute;
5770
+ inset-block-start: 50%;
5771
+ height: 0.25rem;
5772
+ border-radius: var(--bs-border-radius-pill);
5773
+ transform: translateY(-50%);
5774
+ pointer-events: none;
5775
+ }
5776
+ .slider-track::before {
5777
+ content: "";
5778
+ inset-inline: 0;
5779
+ background-color: var(--bs-secondary-bg);
5780
+ box-shadow: var(--bs-box-shadow-inset);
5781
+ }
5782
+ .slider-range {
5783
+ inset-inline-start: var(--moo-slider-start, 0%);
5784
+ inset-inline-end: calc(100% - var(--moo-slider-end, 0%));
5785
+ background-color: var(--moo-primary);
5786
+ }
5787
+ .slider-input {
5788
+ position: absolute;
5789
+ inset: 0;
5790
+ margin: 0;
5791
+ width: 100%;
5792
+ height: 100%;
5793
+ pointer-events: none;
5794
+ }
5795
+ .slider-input::-webkit-slider-runnable-track {
5796
+ height: 0.25rem;
5797
+ background-color: transparent;
5798
+ box-shadow: none;
5799
+ }
5800
+ .slider-input::-moz-range-track {
5801
+ height: 0.25rem;
5802
+ background-color: transparent;
5803
+ box-shadow: none;
5804
+ }
5805
+ .slider-input::-webkit-slider-thumb {
5806
+ position: relative;
5807
+ z-index: 1;
5808
+ width: 0.75rem;
5809
+ height: 0.75rem;
5810
+ margin-top: -0.25rem;
5811
+ background-color: var(--bs-body-bg);
5812
+ border-width: var(--bs-border-width);
5813
+ border-style: solid;
5814
+ border-color: var(--moo-primary);
5815
+ box-shadow: var(--bs-box-shadow-sm);
5816
+ pointer-events: auto;
5817
+ }
5818
+ .slider-input::-moz-range-thumb {
5819
+ position: relative;
5820
+ z-index: 1;
5821
+ width: 0.75rem;
5822
+ height: 0.75rem;
5823
+ background-color: var(--bs-body-bg);
5824
+ border-width: var(--bs-border-width);
5825
+ border-style: solid;
5826
+ border-color: var(--moo-primary);
5827
+ box-shadow: var(--bs-box-shadow-sm);
5828
+ pointer-events: auto;
5829
+ }
5830
+ .slider-input::-webkit-slider-thumb:active {
5831
+ background-color: var(--bs-body-bg);
5832
+ border-color: var(--moo-primary);
5833
+ }
5834
+ .slider-input::-moz-range-thumb:active {
5835
+ background-color: var(--bs-body-bg);
5836
+ border-color: var(--moo-primary);
5837
+ }
5838
+ .slider-input:focus-visible::-webkit-slider-thumb {
5839
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
5840
+ }
5841
+ .slider-input:focus-visible::-moz-range-thumb {
5842
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
5843
+ }
5844
+ .slider[data-slider-dragging] .slider-input::-webkit-slider-thumb {
5845
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
5846
+ }
5847
+ .slider[data-slider-dragging] .slider-input::-moz-range-thumb {
5848
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
5849
+ }
5850
+ .slider[data-slider-pointer-focus]:not([data-slider-dragging]) .slider-input:focus::-webkit-slider-thumb {
5851
+ box-shadow: var(--bs-box-shadow-sm);
5852
+ }
5853
+ .slider[data-slider-pointer-focus]:not([data-slider-dragging]) .slider-input:focus::-moz-range-thumb {
5854
+ box-shadow: var(--bs-box-shadow-sm);
5855
+ }
5856
+ .slider-input:disabled {
5857
+ opacity: 1;
5858
+ }
5859
+ .slider-input:disabled::-webkit-slider-thumb {
5860
+ background-color: var(--moo-muted-surface);
5861
+ border-color: var(--moo-disabled-foreground);
5862
+ box-shadow: none;
5863
+ cursor: default;
5864
+ }
5865
+ .slider-input:disabled::-moz-range-thumb {
5866
+ background-color: var(--moo-muted-surface);
5867
+ border-color: var(--moo-disabled-foreground);
5868
+ box-shadow: none;
5869
+ cursor: default;
5870
+ }
5871
+ .slider-input:disabled:focus-visible::-webkit-slider-thumb,
5872
+ .slider[data-slider-dragging] .slider-input:disabled::-webkit-slider-thumb,
5873
+ .slider[data-slider-pointer-focus] .slider-input:disabled:focus-visible::-webkit-slider-thumb {
5874
+ background-color: var(--moo-muted-surface);
5875
+ border-color: var(--moo-disabled-foreground);
5876
+ box-shadow: none;
5877
+ }
5878
+ .slider-input:disabled:focus-visible::-moz-range-thumb,
5879
+ .slider[data-slider-dragging] .slider-input:disabled::-moz-range-thumb,
5880
+ .slider[data-slider-pointer-focus] .slider-input:disabled:focus-visible::-moz-range-thumb {
5881
+ background-color: var(--moo-muted-surface);
5882
+ border-color: var(--moo-disabled-foreground);
5883
+ box-shadow: none;
5884
+ }
5885
+ .slider:has(.slider-input:disabled) .slider-track {
5886
+ cursor: default;
5887
+ }
5888
+ .slider:has(.slider-input:disabled) .slider-range {
5889
+ background-color: var(--moo-disabled-foreground);
5890
+ }
5891
+ .slider--range .slider-input--upper {
5892
+ z-index: 2;
5893
+ }
5894
+ .slider--vertical {
5895
+ width: max-content;
5896
+ }
5897
+ .slider--vertical [data-slider-output] {
5898
+ display: inline-block;
5899
+ min-width: 3ch;
5900
+ text-align: end;
5901
+ font-variant-numeric: tabular-nums;
5902
+ }
5903
+ .slider--vertical .slider-track {
5904
+ justify-content: center;
5905
+ justify-self: center;
5906
+ width: 0.75rem;
5907
+ height: 8rem;
5908
+ }
5909
+ .slider--vertical .slider-track::before {
5910
+ inset-block: 0;
5911
+ inset-inline: auto;
5912
+ width: 0.25rem;
5913
+ height: auto;
5914
+ transform: none;
5915
+ }
5916
+ .slider--vertical .slider-range {
5917
+ inset-block-start: calc(100% - var(--moo-slider-end, 0%));
5918
+ inset-block-end: var(--moo-slider-start, 0%);
5919
+ inset-inline-start: 50%;
5920
+ inset-inline-end: auto;
5921
+ width: 0.25rem;
5922
+ height: auto;
5923
+ transform: translateX(-50%);
5924
+ }
5925
+ .slider--vertical .slider-input {
5926
+ width: 100%;
5927
+ height: 100%;
5928
+ writing-mode: vertical-lr;
5929
+ direction: rtl;
5706
5930
  }
5707
5931
  hr {
5708
5932
  opacity: 1;
@@ -5712,12 +5936,35 @@ label.btn {
5712
5936
  opacity: 1;
5713
5937
  background-color: var(--moo-border);
5714
5938
  }
5715
- [data-bs-theme="dark"] .form-check-input:is(:checked, :indeterminate):not([role="switch"]) {
5716
- filter: invert(1);
5717
- }
5718
5939
  .form-check-input {
5719
5940
  margin-top: 0.125rem;
5720
5941
  }
5942
+ .form-check-input[type="checkbox"]:checked:not([role="switch"]) {
5943
+ --bs-form-check-bg-image: none;
5944
+ position: relative;
5945
+ overflow: hidden;
5946
+ }
5947
+ .form-check-input[type="checkbox"]:checked:not([role="switch"])::after {
5948
+ position: absolute;
5949
+ top: 45%;
5950
+ left: 50%;
5951
+ width: 0.32em;
5952
+ height: 0.58em;
5953
+ border-color: var(--moo-primary-foreground);
5954
+ border-style: solid;
5955
+ border-width: 0 0.14em 0.14em 0;
5956
+ content: "";
5957
+ transform: translate(-50%, -55%) rotate(45deg);
5958
+ transform-origin: center;
5959
+ }
5960
+ .form-check-input[type="checkbox"]:indeterminate:not([role="switch"]) {
5961
+ --bs-form-check-bg-image: linear-gradient(var(--moo-primary-foreground), var(--moo-primary-foreground));
5962
+ background-size: 62% 14%;
5963
+ background-position: center;
5964
+ }
5965
+ .form-check-input[type="radio"]:checked {
5966
+ --bs-form-check-bg-image: radial-gradient(circle at center, var(--moo-primary-foreground) 0 34%, transparent 36%);
5967
+ }
5721
5968
  .form-check-input:is([type="checkbox"], [type="radio"]):not(.is-invalid):focus:active,
5722
5969
  .form-check-input:is([type="checkbox"], [type="radio"]):not(.is-invalid):focus:not(:focus-visible) {
5723
5970
  border-color: var(--bs-border-color);
@@ -5725,11 +5972,11 @@ label.btn {
5725
5972
  }
5726
5973
  .form-check-input:is([type="checkbox"], [type="radio"]):checked:not(.is-invalid):focus:active,
5727
5974
  .form-check-input:is([type="checkbox"], [type="radio"]):checked:not(.is-invalid):focus:not(:focus-visible) {
5728
- border-color: #171717;
5975
+ border-color: var(--moo-primary);
5729
5976
  }
5730
5977
  .form-check-input[type="checkbox"]:not(.is-invalid):indeterminate:focus:active,
5731
5978
  .form-check-input[type="checkbox"]:not(.is-invalid):indeterminate:focus:not(:focus-visible) {
5732
- border-color: #171717;
5979
+ border-color: var(--moo-primary);
5733
5980
  }
5734
5981
  .form-check-input.is-invalid {
5735
5982
  box-shadow: 0 0 0 3px var(--moo-form-invalid-ring-color);
@@ -5749,8 +5996,8 @@ label.btn {
5749
5996
  .form-check-input:is([type="checkbox"], [type="radio"]):not([role="switch"]).is-invalid:checked,
5750
5997
  .form-check-input:is([type="checkbox"], [type="radio"]):not([role="switch"]).is-invalid:checked:focus:active,
5751
5998
  .form-check-input:is([type="checkbox"], [type="radio"]):not([role="switch"]).is-invalid:checked:focus:not(:focus-visible) {
5752
- border-color: var(--bs-primary);
5753
- background-color: var(--bs-primary);
5999
+ border-color: var(--moo-primary);
6000
+ background-color: var(--moo-primary);
5754
6001
  }
5755
6002
  .radio-group legend.form-label {
5756
6003
  font-size: inherit;
@@ -5760,8 +6007,8 @@ label.btn {
5760
6007
  }
5761
6008
  :where([data-bs-theme="dark"]) .form-switch .form-check-input:checked {
5762
6009
  --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");
5763
- background-color: var(--moo-foreground);
5764
- border-color: var(--moo-foreground);
6010
+ background-color: var(--moo-primary);
6011
+ border-color: var(--moo-primary);
5765
6012
  filter: none;
5766
6013
  }
5767
6014
  .form-switch .form-check-input:focus:active:not(:checked),
@@ -6110,6 +6357,83 @@ label.btn {
6110
6357
  .toast-header strong {
6111
6358
  font-weight: 500;
6112
6359
  }
6360
+ .toast-status-icon {
6361
+ display: inline-flex;
6362
+ flex: 0 0 auto;
6363
+ margin-inline-end: 0.5rem;
6364
+ color: var(--bs-secondary-color);
6365
+ }
6366
+ .toast-status-icon [data-icon] {
6367
+ width: 1rem;
6368
+ height: 1rem;
6369
+ }
6370
+ .toast[data-toast-variant="success"] .toast-status-icon {
6371
+ color: var(--moo-success);
6372
+ }
6373
+ .toast[data-toast-variant="info"] .toast-status-icon {
6374
+ color: var(--moo-info);
6375
+ }
6376
+ .toast[data-toast-variant="warning"] .toast-status-icon {
6377
+ color: var(--moo-warning);
6378
+ }
6379
+ .toast[data-toast-variant="destructive"] .toast-status-icon {
6380
+ color: var(--moo-destructive);
6381
+ }
6382
+ .toast[data-toast-variant="loading"] .toast-status-icon [data-icon] {
6383
+ animation: moo-spinner-rotate 0.75s linear infinite;
6384
+ }
6385
+ .toast-container--stacked[data-toast-stack="deck"] {
6386
+ --moo-toast-stack-gap: 0.75rem;
6387
+ --moo-toast-stack-peek: 0.75rem;
6388
+ --moo-toast-stack-scale-step: 0.1;
6389
+ --moo-toast-stack-min-scale: 0.5;
6390
+ --moo-toast-stack-enter-y: 150%;
6391
+ }
6392
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active] {
6393
+ bottom: 1rem !important;
6394
+ inset-inline-end: 1rem !important;
6395
+ height: 0;
6396
+ max-width: calc(100vw - 2rem);
6397
+ padding: 0 !important;
6398
+ width: min(24rem, calc(100vw - 2rem));
6399
+ }
6400
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active] > .toast[data-toast-stack-index] {
6401
+ inset-block-end: 0;
6402
+ inset-inline-end: 0;
6403
+ max-width: none;
6404
+ margin-bottom: 0;
6405
+ position: absolute;
6406
+ width: 100%;
6407
+ transform: translateY(var(--moo-toast-stack-collapsed-y, 0px)) scale(var(--moo-toast-stack-scale, 1));
6408
+ transform-origin: bottom center;
6409
+ z-index: var(--moo-toast-stack-z, 1);
6410
+ transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.5s ease, height 0.15s ease;
6411
+ }
6412
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active] > .toast[data-toast-stack-entering] {
6413
+ transform: translateY(calc(var(--moo-toast-stack-collapsed-y, 0px) + var(--moo-toast-stack-enter-y, 150%))) scale(var(--moo-toast-stack-scale, 1));
6414
+ }
6415
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active] > .toast[data-toast-stack-limited] {
6416
+ opacity: 0;
6417
+ pointer-events: none;
6418
+ }
6419
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active]:hover > .toast[data-toast-stack-index],
6420
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active]:focus-within > .toast[data-toast-stack-index],
6421
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active][data-toast-stack-hovering] > .toast[data-toast-stack-index] {
6422
+ transform: translateY(var(--moo-toast-stack-expanded-y, 0px)) scale(1);
6423
+ }
6424
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active]:hover > .toast[data-toast-stack-entering],
6425
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active]:focus-within > .toast[data-toast-stack-entering],
6426
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active][data-toast-stack-hovering] > .toast[data-toast-stack-entering] {
6427
+ transform: translateY(calc(var(--moo-toast-stack-collapsed-y, 0px) + var(--moo-toast-stack-enter-y, 150%))) scale(var(--moo-toast-stack-scale, 1));
6428
+ }
6429
+ @media (prefers-reduced-motion: reduce) {
6430
+ .toast[data-toast-variant="loading"] .toast-status-icon [data-icon] {
6431
+ animation: none;
6432
+ }
6433
+ .toast-container--stacked[data-toast-stack="deck"][data-toast-stack-active] > .toast[data-toast-stack-index] {
6434
+ transition: none;
6435
+ }
6436
+ }
6113
6437
  .field {
6114
6438
  display: flex;
6115
6439
  flex-direction: column;
@@ -6181,6 +6505,205 @@ label.btn {
6181
6505
  .field-fieldset + hr {
6182
6506
  opacity: 0.1;
6183
6507
  }
6508
+ .moo-datepicker {
6509
+ --moo-datepicker-width: 17.5rem;
6510
+ --moo-datepicker-popover-offset: 0.375rem;
6511
+ position: relative;
6512
+ width: 100%;
6513
+ max-width: var(--moo-datepicker-width);
6514
+ }
6515
+ .moo-datepicker__trigger {
6516
+ width: 100%;
6517
+ justify-content: flex-start;
6518
+ text-align: start;
6519
+ }
6520
+ .moo-datepicker__trigger [data-datepicker-label] {
6521
+ min-width: 0;
6522
+ overflow: hidden;
6523
+ text-overflow: ellipsis;
6524
+ }
6525
+ .moo-datepicker__trigger.is-invalid {
6526
+ border-color: var(--bs-form-invalid-border-color);
6527
+ color: var(--bs-form-invalid-color);
6528
+ }
6529
+ .moo-datepicker-time-row {
6530
+ display: flex;
6531
+ flex-wrap: wrap;
6532
+ align-items: flex-end;
6533
+ gap: 0.75rem;
6534
+ width: 100%;
6535
+ }
6536
+ .moo-datepicker-time-row > :first-child {
6537
+ min-width: 0;
6538
+ }
6539
+ .moo-datepicker-time {
6540
+ flex: 0 0 auto;
6541
+ width: calc(17.5rem / 2);
6542
+ max-width: 9rem;
6543
+ }
6544
+ .moo-datepicker__popover {
6545
+ position: absolute;
6546
+ inset-block-start: calc(100% + var(--moo-datepicker-popover-offset));
6547
+ inset-inline-start: 0;
6548
+ z-index: 1000;
6549
+ width: max-content;
6550
+ max-width: calc(100vw - 1rem);
6551
+ padding: 0.75rem;
6552
+ border: var(--bs-border-width) solid var(--bs-border-color);
6553
+ border-radius: var(--bs-border-radius-lg);
6554
+ background: var(--bs-body-bg);
6555
+ color: var(--bs-body-color);
6556
+ box-shadow: var(--bs-box-shadow-lg);
6557
+ }
6558
+ .moo-datepicker__popover[hidden] {
6559
+ display: none !important;
6560
+ }
6561
+ .moo-datepicker__popover.show {
6562
+ display: block;
6563
+ }
6564
+ .moo-datepicker__popover[data-datepicker-placement] {
6565
+ inset: auto;
6566
+ }
6567
+ .moo-calendar {
6568
+ --moo-datepicker-day-size: 2rem;
6569
+ --moo-datepicker-gap: 0.25rem;
6570
+ --moo-datepicker-padding: 0.75rem;
6571
+ --moo-datepicker-preset-gap: 0.375rem;
6572
+ --moo-datepicker-day-border-radius: var(--bs-border-radius-sm);
6573
+ --moo-datepicker-day-range-joined-border-radius: 0;
6574
+ width: calc(var(--moo-datepicker-day-size) * 7 + var(--moo-datepicker-gap) * 6);
6575
+ max-width: 100%;
6576
+ color: var(--bs-body-color);
6577
+ }
6578
+ .moo-calendar__header {
6579
+ display: grid;
6580
+ grid-template-columns: var(--moo-datepicker-day-size) minmax(0, 1fr) var(--moo-datepicker-day-size);
6581
+ align-items: center;
6582
+ gap: var(--moo-datepicker-gap);
6583
+ margin-bottom: 0.75rem;
6584
+ }
6585
+ .moo-calendar__caption {
6586
+ display: inline-flex;
6587
+ min-width: 0;
6588
+ align-items: center;
6589
+ justify-content: center;
6590
+ gap: var(--moo-datepicker-gap);
6591
+ font-weight: 500;
6592
+ }
6593
+ .moo-calendar__select {
6594
+ min-width: 0;
6595
+ height: calc(1.42857em + 0.5rem + calc(var(--bs-border-width) * 2));
6596
+ padding: 0 0.375rem;
6597
+ border: var(--bs-border-width) solid var(--bs-border-color);
6598
+ border-radius: var(--bs-border-radius-sm);
6599
+ background: var(--bs-body-bg);
6600
+ color: var(--bs-body-color);
6601
+ font: inherit;
6602
+ }
6603
+ .moo-calendar__nav {
6604
+ color: var(--bs-secondary-color);
6605
+ }
6606
+ .moo-calendar__nav:hover,
6607
+ .moo-calendar__nav:focus-visible {
6608
+ color: var(--bs-body-color);
6609
+ }
6610
+ .moo-calendar__nav-icon {
6611
+ font-size: 1.09375rem;
6612
+ line-height: 1;
6613
+ }
6614
+ .moo-calendar__weekdays,
6615
+ .moo-calendar__week {
6616
+ display: grid;
6617
+ grid-template-columns: repeat(7, var(--moo-datepicker-day-size));
6618
+ gap: var(--moo-datepicker-gap);
6619
+ }
6620
+ .moo-calendar__week + .moo-calendar__week {
6621
+ margin-top: var(--moo-datepicker-gap);
6622
+ }
6623
+ .moo-calendar__weekdays {
6624
+ margin-bottom: var(--moo-datepicker-gap);
6625
+ }
6626
+ .moo-calendar__weekday {
6627
+ display: inline-flex;
6628
+ align-items: center;
6629
+ justify-content: center;
6630
+ width: var(--moo-datepicker-day-size);
6631
+ height: 1.5rem;
6632
+ color: var(--bs-secondary-color);
6633
+ font-size: 0.76562rem;
6634
+ font-weight: 500;
6635
+ }
6636
+ .moo-calendar__cell {
6637
+ position: relative;
6638
+ width: var(--moo-datepicker-day-size);
6639
+ height: var(--moo-datepicker-day-size);
6640
+ }
6641
+ .moo-calendar__day {
6642
+ position: relative;
6643
+ display: inline-flex;
6644
+ width: var(--moo-datepicker-day-size);
6645
+ height: var(--moo-datepicker-day-size);
6646
+ align-items: center;
6647
+ justify-content: center;
6648
+ padding: 0;
6649
+ border: 0;
6650
+ border-radius: var(--moo-datepicker-day-border-radius);
6651
+ background: transparent;
6652
+ color: var(--bs-body-color);
6653
+ font: inherit;
6654
+ line-height: 1;
6655
+ }
6656
+ .moo-calendar__day:hover:not(:disabled),
6657
+ .moo-calendar__day:focus-visible {
6658
+ background: var(--moo-muted-surface);
6659
+ outline: 0;
6660
+ }
6661
+ .moo-calendar__day:focus-visible {
6662
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
6663
+ }
6664
+ .moo-calendar__day[data-calendar-selected="true"] {
6665
+ background: var(--moo-primary);
6666
+ color: var(--moo-primary-foreground);
6667
+ }
6668
+ .moo-calendar__day[data-calendar-selected="true"]:hover:not(:disabled),
6669
+ .moo-calendar__day[data-calendar-selected="true"]:focus-visible {
6670
+ background: var(--moo-primary);
6671
+ color: var(--moo-primary-foreground);
6672
+ }
6673
+ .moo-calendar__day[data-calendar-range="middle"] {
6674
+ border-radius: var(--moo-datepicker-day-range-joined-border-radius);
6675
+ background: color-mix(in srgb, var(--moo-primary) 14%, transparent);
6676
+ color: var(--bs-body-color);
6677
+ }
6678
+ .moo-calendar__day[data-calendar-range="start"] {
6679
+ border-start-end-radius: var(--moo-datepicker-day-range-joined-border-radius);
6680
+ border-end-end-radius: var(--moo-datepicker-day-range-joined-border-radius);
6681
+ }
6682
+ .moo-calendar__day[data-calendar-range="end"] {
6683
+ border-start-start-radius: var(--moo-datepicker-day-range-joined-border-radius);
6684
+ border-end-start-radius: var(--moo-datepicker-day-range-joined-border-radius);
6685
+ }
6686
+ .moo-calendar__day[data-calendar-outside="true"] {
6687
+ color: var(--bs-secondary-color);
6688
+ }
6689
+ .moo-calendar__day[data-calendar-today="true"]:not([data-calendar-selected="true"]) {
6690
+ outline: var(--bs-border-width) solid var(--bs-border-color);
6691
+ outline-offset: calc(-1 * var(--bs-border-width));
6692
+ }
6693
+ .moo-calendar__day:disabled {
6694
+ color: var(--moo-disabled-foreground);
6695
+ cursor: default;
6696
+ opacity: var(--moo-disabled-control-opacity);
6697
+ }
6698
+ .moo-calendar__presets {
6699
+ display: flex;
6700
+ flex-wrap: wrap;
6701
+ gap: var(--moo-datepicker-preset-gap);
6702
+ margin-top: 0.75rem;
6703
+ }
6704
+ .moo-calendar__preset {
6705
+ flex: 0 0 auto;
6706
+ }
6184
6707
  .combobox {
6185
6708
  --moo-combobox-width: 12.5rem;
6186
6709
  --moo-combobox-multiple-width: 20rem;
@@ -6328,10 +6851,11 @@ label.btn {
6328
6851
  display: none;
6329
6852
  }
6330
6853
  .combobox-option {
6331
- display: flex;
6854
+ display: grid;
6855
+ grid-template-columns: minmax(0, 1fr) 1rem;
6332
6856
  align-items: center;
6333
6857
  gap: 0.5rem;
6334
- padding-inline-end: 2rem;
6858
+ padding-inline-end: 0.375rem;
6335
6859
  line-height: var(--moo-combobox-option-line-height);
6336
6860
  }
6337
6861
  .combobox-option__content {
@@ -6340,9 +6864,18 @@ label.btn {
6340
6864
  flex: 1 1 auto;
6341
6865
  flex-direction: column;
6342
6866
  }
6343
- .combobox-option[aria-current="true"] {
6867
+ .combobox:not(.combobox--multiple) .combobox-option[aria-selected="true"],
6868
+ .combobox-option[aria-current="true"] {
6344
6869
  background-color: var(--bs-dropdown-link-hover-bg);
6345
6870
  }
6871
+ .combobox:not(.combobox--multiple)
6872
+ .combobox-menu:has(.combobox-option:not([aria-selected="true"]):hover)
6873
+ .combobox-option[aria-selected="true"]:not(:hover):not([aria-current="true"]),
6874
+ .combobox:not(.combobox--multiple)
6875
+ .combobox-menu:has(.combobox-option[aria-current="true"]:not([aria-selected="true"]))
6876
+ .combobox-option[aria-selected="true"]:not([aria-current="true"]) {
6877
+ background-color: transparent;
6878
+ }
6346
6879
  .combobox-option[aria-selected="true"] {
6347
6880
  font-weight: 500;
6348
6881
  }
@@ -6364,8 +6897,7 @@ label.btn {
6364
6897
  }
6365
6898
  .combobox-option__check {
6366
6899
  display: inline-flex;
6367
- flex: 0 0 auto;
6368
- margin-inline-start: auto;
6900
+ justify-self: end;
6369
6901
  visibility: hidden;
6370
6902
  }
6371
6903
  .combobox-option[aria-selected="true"] .combobox-option__check {
@@ -6412,6 +6944,7 @@ label.btn {
6412
6944
  --moo-datatable-search-filter-menu-width: 12.5rem;
6413
6945
  --moo-datatable-search-filter-options-menu-width: 17rem;
6414
6946
  --moo-datatable-scrollbar-size: 0.375rem;
6947
+ --moo-datatable-bulk-actions-bottom: 1rem;
6415
6948
  }
6416
6949
  .datatable-table {
6417
6950
  table-layout: fixed;
@@ -7114,7 +7647,7 @@ label.btn {
7114
7647
  --moo-datatable-bulk-actions-backdrop-blur: 8px;
7115
7648
  position: fixed;
7116
7649
  inset-inline-start: 50%;
7117
- inset-block-end: 1rem;
7650
+ inset-block-end: var(--moo-datatable-bulk-actions-bottom);
7118
7651
  transform: translateX(-50%) scale(1);
7119
7652
  transition: transform 0.15s ease-out;
7120
7653
  z-index: var(--bs-zindex-fixed, 1030);
@@ -7251,10 +7784,6 @@ label.btn {
7251
7784
  .datatable--release-review {
7252
7785
  --moo-datatable-min-width: 64rem;
7253
7786
  }
7254
- .form-label,
7255
- .form-check-label {
7256
- user-select: none;
7257
- }
7258
7787
  }
7259
7788
 
7260
7789
  :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-select,
@@ -7270,8 +7799,8 @@ label.btn {
7270
7799
  :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:checked,
7271
7800
  .moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:checked {
7272
7801
  --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");
7273
- background-color: var(--moo-foreground);
7274
- border-color: var(--moo-foreground);
7802
+ background-color: var(--moo-primary);
7803
+ border-color: var(--moo-primary);
7275
7804
  filter: none;
7276
7805
  }
7277
7806
 
@@ -7282,11 +7811,6 @@ label.btn {
7282
7811
  --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");
7283
7812
  }
7284
7813
 
7285
- :where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-check-input:checked:not([role="switch"]),
7286
- .moo-ui[data-bs-theme="dark"] .form-check-input:checked:not([role="switch"]) {
7287
- filter: invert(1);
7288
- }
7289
-
7290
7814
  .modal-backdrop,
7291
7815
  .offcanvas-backdrop {
7292
7816
  --bs-backdrop-opacity: var(--moo-overlay-backdrop-opacity, 1);