@wpmoo/ui 1.0.0-rc.8 → 1.0.0

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 (94) hide show
  1. package/ASSET_LICENSE.md +1 -1
  2. package/LICENSE +28 -0
  3. package/README.md +34 -6
  4. package/certification.json +3 -2
  5. package/dist/assets/css/moo-ui.css +634 -33
  6. package/dist/assets/css/moo-ui.min.css +10 -31
  7. package/dist/assets/css/moo.css +624 -30
  8. package/dist/assets/css/moo.min.css +10 -32
  9. package/dist/js/chart.js +23 -21
  10. package/dist/js/chart.min.js +5 -5
  11. package/dist/js/combobox.js +18 -65
  12. package/dist/js/context-menu.js +16 -68
  13. package/dist/js/datatable.js +39 -22
  14. package/dist/js/datepicker.js +4 -3
  15. package/dist/js/datepicker.min.js +4 -3
  16. package/dist/js/moo-ui.js +160 -15402
  17. package/dist/js/moo-ui.min.js +3 -23
  18. package/dist/js/sheet.js +46 -0
  19. package/dist/js/sidebar.js +5 -4
  20. package/dist/js/slider.js +12 -47
  21. package/dist/js/state.js +76 -0
  22. package/dist/release-manifest.json +6 -6
  23. package/package.json +5 -3
  24. package/scss/_components.scss +2 -2
  25. package/scss/_config.scss +15 -21
  26. package/scss/_settings.scss +0 -3
  27. package/scss/components/_accordion.scss +1 -12
  28. package/scss/components/_alert.scss +1 -12
  29. package/scss/components/_avatar.scss +1 -16
  30. package/scss/components/_badge.scss +1 -0
  31. package/scss/components/_breadcrumb.scss +1 -12
  32. package/scss/components/_button.scss +1 -29
  33. package/scss/components/_button_group.scss +1 -25
  34. package/scss/components/_card.scss +1 -29
  35. package/scss/components/_checkbox.scss +1 -38
  36. package/scss/components/_close_button.scss +1 -9
  37. package/scss/components/_collapsible.scss +1 -0
  38. package/scss/components/_combobox.scss +1 -6
  39. package/scss/components/_context-menu.scss +1 -11
  40. package/scss/components/_datatable.scss +46 -85
  41. package/scss/components/_datepicker.scss +1 -0
  42. package/scss/components/_dialog.scss +1 -14
  43. package/scss/components/_dropdown.scss +5 -51
  44. package/scss/components/_field.scss +6 -37
  45. package/scss/components/_input.scss +1 -5
  46. package/scss/components/_input_group.scss +1 -51
  47. package/scss/components/_kbd.scss +1 -0
  48. package/scss/components/_menubar.scss +1 -0
  49. package/scss/components/_navigation.scss +76 -6
  50. package/scss/components/_pagination.scss +1 -13
  51. package/scss/components/_popover.scss +1 -22
  52. package/scss/components/_progress.scss +1 -3
  53. package/scss/components/_radio_group.scss +105 -6
  54. package/scss/components/_search_trigger.scss +1 -2
  55. package/scss/components/_select.scss +1 -0
  56. package/scss/components/_separator.scss +1 -6
  57. package/scss/components/_sheet.scss +1 -17
  58. package/scss/components/_sidebar.scss +1 -2
  59. package/scss/components/_skeleton.scss +1 -8
  60. package/scss/components/_slider.scss +1 -2
  61. package/scss/components/_spinner.scss +1 -7
  62. package/scss/components/_switch.scss +1 -4
  63. package/scss/components/_table.scss +1 -2
  64. package/scss/components/_tabs.scss +1 -24
  65. package/scss/components/_textarea.scss +1 -0
  66. package/scss/components/_toast.scss +1 -4
  67. package/scss/components/_toggle_group.scss +1 -3
  68. package/scss/components/_tooltip.scss +1 -20
  69. package/scss/components/sidebar/_base.scss +0 -7
  70. package/scss/components/sidebar/_collapsed.scss +0 -6
  71. package/scss/components/sidebar/_identity.scss +0 -1
  72. package/scss/components/sidebar/_menus.scss +0 -17
  73. package/scss/foundations/_backdrop.scss +0 -26
  74. package/scss/foundations/_focus.scss +0 -56
  75. package/scss/foundations/_scope.scss +19 -0
  76. package/scss/layouts/_app.scss +5 -7
  77. package/scss/layouts/_page_grid.scss +27 -0
  78. package/scss/layouts/app/sidebar/_base.scss +0 -33
  79. package/scss/layouts/app/sidebar/_default.scss +2 -8
  80. package/scss/layouts/app/sidebar/_floating.scss +1 -9
  81. package/scss/layouts/app/sidebar/_inset.scss +5 -2
  82. package/scss/mixins/_banner.scss +9 -3
  83. package/scss/moo-core.scss +3 -6
  84. package/scss/moo-ui.scss +9 -5
  85. package/scss/settings/_bootstrap_overrides.scss +0 -8
  86. package/scss/settings/_component_variables.scss +4 -266
  87. package/scss/settings/_forms.scss +1 -38
  88. package/scss/settings/_palette.scss +0 -42
  89. package/scss/themes/_root.scss +4 -0
  90. package/scss/themes/_standalone.scss +1 -3
  91. package/scss/themes/_theme.scss +4 -0
  92. package/scss/utilities/_background_color.scss +18 -0
  93. package/scss/utilities/_border.scss +4 -0
  94. package/dist/js/theme-prepaint.js +0 -91
@@ -1,8 +1,16 @@
1
1
  /*!
2
- * Bootstrap v5.3.3 (https://getbootstrap.com/)
3
- * Copyright 2011-2024 The Bootstrap Authors
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
- */
2
+ * Moo UI v1.0.0 (https://wpmoo.org/)
3
+ * Copyright 2026 WPMoo Authors
4
+ * Licensed under MIT (https://github.com/wpmoo-org/ui/blob/main/LICENSE)
5
+ *
6
+ * Bootstrap v5.3.3 (https://getbootstrap.com/)
7
+ * Copyright 2011-2024 The Bootstrap Authors
8
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
9
+ */
10
+
11
+ /* Bootstrap configuration */
12
+
13
+ /* Bootstrap layout and standalone-only components */
6
14
  :root,
7
15
  [data-bs-theme="light"] {
8
16
  --bs-blue: #0d6efd;
@@ -180,6 +188,7 @@
180
188
  --bs-form-invalid-border-color: #ea868f;
181
189
  }
182
190
 
191
+ /* Theme tokens */
183
192
  .moo-ui[data-bs-theme] {
184
193
  --bs-blue: #0d6efd;
185
194
  --bs-indigo: #6610f2;
@@ -260,6 +269,14 @@
260
269
  --moo-chart-3: #a1a1aa;
261
270
  --moo-chart-4: #3f3f46;
262
271
  --moo-chart-5: #27272a;
272
+ --moo-heading-font-family: var(--bs-body-font-family);
273
+ --moo-small-font-size: 0.75rem;
274
+ --moo-paragraph-margin-top: 0;
275
+ --moo-paragraph-margin-bottom: 1rem;
276
+ font-family: var(--bs-body-font-family);
277
+ font-size: var(--bs-body-font-size);
278
+ font-weight: var(--bs-body-font-weight);
279
+ line-height: var(--bs-body-line-height);
263
280
  }
264
281
 
265
282
  .moo-ui[data-bs-theme="light"] {
@@ -436,10 +453,11 @@
436
453
  direction: rtl;
437
454
  }
438
455
 
439
- body > .moo-ui[data-bs-theme] {
456
+ body > .moo-ui[data-bs-theme]:not([data-moo-overlay-host]) {
440
457
  min-block-size: 100dvh;
441
458
  }
442
459
 
460
+ /* Base styles and typography */
443
461
  *,
444
462
  *::before,
445
463
  *::after {
@@ -1008,6 +1026,7 @@ progress {
1008
1026
  color: var(--bs-secondary-color);
1009
1027
  }
1010
1028
 
1029
+ /* Containers and grid */
1011
1030
  .container,
1012
1031
  .container-fluid,
1013
1032
  .container-xxl,
@@ -2777,7 +2796,7 @@ progress {
2777
2796
  height: 1.5em;
2778
2797
  content: "";
2779
2798
  background-color: var(--moo-input-bg, transparent);
2780
- border-radius: 0.625rem;
2799
+ border-radius: var(--bs-border-radius-lg);
2781
2800
  }
2782
2801
 
2783
2802
  .form-floating > .form-control:-webkit-autofill ~ label {
@@ -4054,6 +4073,7 @@ progress {
4054
4073
  }
4055
4074
  }
4056
4075
 
4076
+ /* Bootstrap helpers */
4057
4077
  .clearfix::after {
4058
4078
  display: block;
4059
4079
  clear: both;
@@ -4366,6 +4386,7 @@ progress {
4366
4386
  opacity: 0.25;
4367
4387
  }
4368
4388
 
4389
+ /* Bootstrap utilities */
4369
4390
  .align-baseline {
4370
4391
  vertical-align: baseline !important;
4371
4392
  }
@@ -6010,7 +6031,7 @@ progress {
6010
6031
 
6011
6032
  .bg-body-secondary {
6012
6033
  --bs-bg-opacity: 1;
6013
- background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;
6034
+ background-color: rgb(from var(--bs-secondary-bg) r g b / var(--bs-bg-opacity)) !important;
6014
6035
  }
6015
6036
 
6016
6037
  .bg-body-tertiary {
@@ -9284,6 +9305,8 @@ progress {
9284
9305
  }
9285
9306
 
9286
9307
  @scope (.moo-ui) to (:where(.moo-ui[data-bs-theme="light"], .moo-ui[data-bs-theme="dark"])) {
9308
+
9309
+ /* Bootstrap Components */
9287
9310
  .table {
9288
9311
  --bs-table-color-type: initial;
9289
9312
  --bs-table-bg-type: initial;
@@ -9534,7 +9557,7 @@ progress {
9534
9557
  background-color: var(--moo-input-bg, transparent);
9535
9558
  background-clip: padding-box;
9536
9559
  border: var(--bs-border-width) solid var(--moo-border);
9537
- border-radius: 0.625rem;
9560
+ border-radius: var(--bs-border-radius-lg);
9538
9561
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
9539
9562
  }
9540
9563
  @media (prefers-reduced-motion: reduce) {
@@ -9659,11 +9682,11 @@ progress {
9659
9682
  }
9660
9683
  .form-control-color::-moz-color-swatch {
9661
9684
  border: 0 !important;
9662
- border-radius: 0.625rem;
9685
+ border-radius: var(--bs-border-radius-lg);
9663
9686
  }
9664
9687
  .form-control-color::-webkit-color-swatch {
9665
9688
  border: 0 !important;
9666
- border-radius: 0.625rem;
9689
+ border-radius: var(--bs-border-radius-lg);
9667
9690
  }
9668
9691
  .form-control-color.form-control-sm {
9669
9692
  height: calc(1.42857em + 0.5rem + calc(var(--bs-border-width) * 2));
@@ -9687,7 +9710,7 @@ progress {
9687
9710
  background-position: right 0.625rem center;
9688
9711
  background-size: 16px 12px;
9689
9712
  border: var(--bs-border-width) solid var(--moo-border);
9690
- border-radius: 0.625rem;
9713
+ border-radius: var(--bs-border-radius-lg);
9691
9714
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
9692
9715
  }
9693
9716
  @media (prefers-reduced-motion: reduce) {
@@ -9896,7 +9919,7 @@ progress {
9896
9919
  white-space: nowrap;
9897
9920
  background-color: var(--moo-input-bg, transparent);
9898
9921
  border: var(--bs-border-width) solid var(--moo-border);
9899
- border-radius: 0.625rem;
9922
+ border-radius: var(--bs-border-radius-lg);
9900
9923
  }
9901
9924
  .input-group-lg > .form-control,
9902
9925
  .input-group-lg > .form-select,
@@ -11948,6 +11971,7 @@ progress {
11948
11971
  border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;
11949
11972
  border-top-color: var(--bs-tooltip-bg);
11950
11973
  }
11974
+
11951
11975
  /* rtl:begin:ignore */
11952
11976
  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow {
11953
11977
  left: calc(-1 * var(--bs-tooltip-arrow-height));
@@ -11959,6 +11983,7 @@ progress {
11959
11983
  border-width: calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;
11960
11984
  border-right-color: var(--bs-tooltip-bg);
11961
11985
  }
11986
+
11962
11987
  /* rtl:end:ignore */
11963
11988
  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow {
11964
11989
  top: calc(-1 * var(--bs-tooltip-arrow-height));
@@ -11968,6 +11993,7 @@ progress {
11968
11993
  border-width: 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);
11969
11994
  border-bottom-color: var(--bs-tooltip-bg);
11970
11995
  }
11996
+
11971
11997
  /* rtl:begin:ignore */
11972
11998
  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow {
11973
11999
  right: calc(-1 * var(--bs-tooltip-arrow-height));
@@ -11979,6 +12005,7 @@ progress {
11979
12005
  border-width: calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);
11980
12006
  border-left-color: var(--bs-tooltip-bg);
11981
12007
  }
12008
+
11982
12009
  /* rtl:end:ignore */
11983
12010
  .tooltip-inner {
11984
12011
  max-width: var(--bs-tooltip-max-width);
@@ -12065,6 +12092,7 @@ progress {
12065
12092
  bottom: var(--bs-popover-border-width);
12066
12093
  border-top-color: var(--bs-popover-bg);
12067
12094
  }
12095
+
12068
12096
  /* rtl:begin:ignore */
12069
12097
  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow {
12070
12098
  left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
@@ -12082,6 +12110,7 @@ progress {
12082
12110
  left: var(--bs-popover-border-width);
12083
12111
  border-right-color: var(--bs-popover-bg);
12084
12112
  }
12113
+
12085
12114
  /* rtl:end:ignore */
12086
12115
  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow {
12087
12116
  top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
@@ -12107,6 +12136,7 @@ progress {
12107
12136
  content: "";
12108
12137
  border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);
12109
12138
  }
12139
+
12110
12140
  /* rtl:begin:ignore */
12111
12141
  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow {
12112
12142
  right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
@@ -12124,6 +12154,7 @@ progress {
12124
12154
  right: var(--bs-popover-border-width);
12125
12155
  border-left-color: var(--bs-popover-bg);
12126
12156
  }
12157
+
12127
12158
  /* rtl:end:ignore */
12128
12159
  .popover-header {
12129
12160
  padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);
@@ -12662,6 +12693,10 @@ progress {
12662
12693
  color: #fff !important;
12663
12694
  background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;
12664
12695
  }
12696
+
12697
+ /* Moo Components */
12698
+
12699
+ /* Keyboard keys */
12665
12700
  kbd {
12666
12701
  display: inline-flex;
12667
12702
  height: 1.25rem;
@@ -12672,6 +12707,8 @@ progress {
12672
12707
  line-height: 1rem;
12673
12708
  font-weight: 500;
12674
12709
  }
12710
+
12711
+ /* Input */
12675
12712
  .form-control {
12676
12713
  min-height: 2rem;
12677
12714
  }
@@ -12697,17 +12734,23 @@ progress {
12697
12734
  .form-select:disabled {
12698
12735
  opacity: var(--moo-disabled-control-opacity);
12699
12736
  }
12737
+
12738
+ /* Textarea */
12700
12739
  textarea.form-control:not(.form-control-sm, .form-control-lg) {
12701
12740
  padding: 0.5rem 0.75rem;
12702
12741
  }
12703
12742
  textarea.form-control:disabled {
12704
12743
  resize: none;
12705
12744
  }
12745
+
12746
+ /* Select */
12706
12747
  .form-select option,
12707
12748
  .form-select optgroup {
12708
12749
  color: var(--bs-body-color);
12709
12750
  background-color: var(--bs-body-bg);
12710
12751
  }
12752
+
12753
+ /* Input Group */
12711
12754
  .input-group:not(:has(> .form-control[type="file"])) {
12712
12755
  border: var(--bs-border-width) solid var(--moo-border);
12713
12756
  border-radius: var(--moo-input-group-border-radius);
@@ -12828,6 +12871,8 @@ progress {
12828
12871
  outline: 0;
12829
12872
  box-shadow: none;
12830
12873
  }
12874
+
12875
+ /* Buttons */
12831
12876
  .btn {
12832
12877
  display: inline-flex;
12833
12878
  align-items: center;
@@ -13002,6 +13047,8 @@ label.btn {
13002
13047
  --bs-btn-hover-color: var(--moo-muted-foreground);
13003
13048
  text-underline-offset: 0.25rem;
13004
13049
  }
13050
+
13051
+ /* Search Trigger */
13005
13052
  .search-trigger {
13006
13053
  width: 10rem;
13007
13054
  max-width: 100%;
@@ -13056,6 +13103,8 @@ label.btn {
13056
13103
  flex-basis: 16rem;
13057
13104
  }
13058
13105
  }
13106
+
13107
+ /* Close Button */
13059
13108
  .btn-close {
13060
13109
  --bs-btn-close-color: var(--moo-foreground);
13061
13110
  --bs-btn-hover-color: var(--bs-btn-close-color);
@@ -13104,6 +13153,8 @@ label.btn {
13104
13153
  pointer-events: none;
13105
13154
  opacity: var(--moo-disabled-control-opacity);
13106
13155
  }
13156
+
13157
+ /* Button Group */
13107
13158
  [dir="rtl"] .btn-group,
13108
13159
  [dir="rtl"] .btn-toolbar {
13109
13160
  direction: ltr;
@@ -13153,6 +13204,8 @@ label.btn {
13153
13204
  min-width: calc(1.875rem + 1rem);
13154
13205
  padding-inline-end: 1.875rem;
13155
13206
  }
13207
+
13208
+ /* Toggle Group */
13156
13209
  .toggle-group > .btn:not(:disabled):not(.disabled):not([aria-disabled="true"]):active {
13157
13210
  transform: none;
13158
13211
  }
@@ -13167,6 +13220,8 @@ label.btn {
13167
13220
  outline: 0;
13168
13221
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
13169
13222
  }
13223
+
13224
+ /* Card */
13170
13225
  .card {
13171
13226
  --bs-card-bg: color-mix(in srgb, var(--bs-secondary-bg) 5%, var(--bs-body-bg));
13172
13227
  --bs-card-color: var(--moo-foreground);
@@ -13262,6 +13317,8 @@ label.btn {
13262
13317
  font-size: 0.875rem;
13263
13318
  color: var(--moo-muted-foreground);
13264
13319
  }
13320
+
13321
+ /* Table */
13265
13322
  .card .table {
13266
13323
  --bs-table-bg: transparent;
13267
13324
  }
@@ -13271,6 +13328,8 @@ label.btn {
13271
13328
  .table-row-actions:has(> [aria-expanded="true"]) {
13272
13329
  z-index: 1000;
13273
13330
  }
13331
+
13332
+ /* Dropdown */
13274
13333
  .dropdown-menu {
13275
13334
  --bs-dropdown-bg: var(--moo-surface);
13276
13335
  --bs-dropdown-border-color: var(--moo-border);
@@ -13295,6 +13354,9 @@ label.btn {
13295
13354
  color: var(--bs-dropdown-link-color);
13296
13355
  background-color: transparent;
13297
13356
  }
13357
+ .dropdown-menu:has(.dropdown-item:hover) .dropdown-item.active:not(:hover) {
13358
+ background-color: transparent;
13359
+ }
13298
13360
  .dropdown-item > [data-icon] {
13299
13361
  width: 1rem;
13300
13362
  height: 1rem;
@@ -13434,6 +13496,8 @@ label.btn {
13434
13496
  inset-block-end: var(--moo-sidebar-dropdown-block-end) !important;
13435
13497
  }
13436
13498
  }
13499
+
13500
+ /* Menubar */
13437
13501
  .menubar {
13438
13502
  gap: 0.125rem;
13439
13503
  padding: 0.1875rem;
@@ -13447,6 +13511,8 @@ label.btn {
13447
13511
  color: var(--bs-btn-color);
13448
13512
  font-weight: 500;
13449
13513
  }
13514
+
13515
+ /* Avatar */
13450
13516
  .avatar {
13451
13517
  position: relative;
13452
13518
  display: inline-flex;
@@ -13569,10 +13635,19 @@ label.btn {
13569
13635
  content: "+";
13570
13636
  margin-inline-end: -0.1rem;
13571
13637
  }
13638
+
13639
+ /* Navigation */
13572
13640
  .nav {
13573
13641
  --bs-nav-link-color: var(--moo-foreground);
13574
13642
  --bs-nav-link-hover-color: var(--moo-foreground);
13575
13643
  --bs-nav-link-disabled-color: var(--moo-disabled-foreground);
13644
+ --bs-nav-link-description-color: color-mix(in srgb, var(--moo-muted-foreground) 95%, var(--moo-foreground));
13645
+ }
13646
+ .nav-link-description {
13647
+ color: var(--bs-nav-link-description-color);
13648
+ }
13649
+ .nav-link.disabled .nav-link-description {
13650
+ color: var(--bs-nav-link-disabled-color);
13576
13651
  }
13577
13652
  .nav-pills {
13578
13653
  --bs-nav-pills-border-radius: var(--bs-border-radius);
@@ -13598,6 +13673,58 @@ label.btn {
13598
13673
  height: 1rem;
13599
13674
  flex: 0 0 auto;
13600
13675
  }
13676
+ .nav-link-icon {
13677
+ display: inline-flex;
13678
+ align-items: center;
13679
+ flex: 0 0 auto;
13680
+ }
13681
+ .nav-steps {
13682
+ --bs-nav-step-icon-size: 2rem;
13683
+ --bs-nav-step-gap: 0.25rem;
13684
+ gap: var(--bs-nav-step-gap);
13685
+ }
13686
+ .nav-steps .nav-item {
13687
+ position: relative;
13688
+ }
13689
+ .nav-steps .nav-item:not(:only-child)::before {
13690
+ position: absolute;
13691
+ z-index: 1;
13692
+ inset-inline-start: calc(var(--bs-nav-link-padding-x) + var(--bs-nav-step-icon-size) / 2);
13693
+ inset-block: calc(var(--bs-nav-step-gap) / -2);
13694
+ border-inline-start: var(--bs-border-width) solid var(--bs-border-color);
13695
+ content: "";
13696
+ pointer-events: none;
13697
+ }
13698
+ .nav-steps .nav-item:first-child::before {
13699
+ inset-block-start: 50%;
13700
+ }
13701
+ .nav-steps .nav-item:last-child::before {
13702
+ inset-block-end: 50%;
13703
+ }
13704
+ .nav-steps .nav-link-icon {
13705
+ position: relative;
13706
+ z-index: 2;
13707
+ display: inline-flex;
13708
+ align-items: center;
13709
+ justify-content: center;
13710
+ flex: 0 0 var(--bs-nav-step-icon-size);
13711
+ inline-size: var(--bs-nav-step-icon-size);
13712
+ block-size: var(--bs-nav-step-icon-size);
13713
+ color: var(--moo-foreground);
13714
+ background-color: var(--moo-muted-surface);
13715
+ border: var(--bs-border-width) solid var(--bs-border-color);
13716
+ border-radius: var(--bs-border-radius);
13717
+ }
13718
+ .nav-steps .nav-link.disabled .nav-link-icon {
13719
+ color: var(--moo-disabled-foreground);
13720
+ }
13721
+ .nav-steps .nav-item[data-nav-completed="true"] .nav-link-icon {
13722
+ color: var(--moo-primary-foreground);
13723
+ background-color: var(--moo-primary);
13724
+ border-color: var(--moo-primary);
13725
+ }
13726
+
13727
+ /* Skeleton */
13601
13728
  .skeleton {
13602
13729
  color: var(--moo-border);
13603
13730
  border-radius: var(--bs-border-radius);
@@ -13606,6 +13733,8 @@ label.btn {
13606
13733
  .skeleton > .placeholder {
13607
13734
  display: block;
13608
13735
  }
13736
+
13737
+ /* Sidebar */
13609
13738
  .sidebar-inner {
13610
13739
  position: sticky;
13611
13740
  top: 0;
@@ -14015,6 +14144,8 @@ label.btn {
14015
14144
  display: none;
14016
14145
  }
14017
14146
  }
14147
+
14148
+ /* Alert */
14018
14149
  .alert {
14019
14150
  --bs-alert-border-color: var(--moo-border);
14020
14151
  --bs-alert-color: var(--moo-foreground);
@@ -14081,6 +14212,8 @@ label.btn {
14081
14212
  .alert-action {
14082
14213
  flex: 0 0 auto;
14083
14214
  }
14215
+
14216
+ /* Breadcrumb */
14084
14217
  .breadcrumb {
14085
14218
  --bs-breadcrumb-item-active-color: var(--moo-foreground);
14086
14219
  --bs-breadcrumb-item-padding-x: 0.375rem;
@@ -14180,6 +14313,8 @@ label.btn {
14180
14313
  width: 0.875rem;
14181
14314
  height: 0.875rem;
14182
14315
  }
14316
+
14317
+ /* Pagination */
14183
14318
  .page-link {
14184
14319
  display: inline-flex;
14185
14320
  align-items: center;
@@ -14225,6 +14360,8 @@ label.btn {
14225
14360
  .page-item.disabled {
14226
14361
  opacity: var(--moo-disabled-control-opacity);
14227
14362
  }
14363
+
14364
+ /* Badge */
14228
14365
  .badge {
14229
14366
  display: inline-flex;
14230
14367
  height: 1.25rem;
@@ -14253,10 +14390,14 @@ label.btn {
14253
14390
  .badge[class~="text-body-secondary"] {
14254
14391
  color: var(--moo-foreground) !important;
14255
14392
  }
14393
+
14394
+ /* Progress */
14256
14395
  .progress {
14257
14396
  --bs-progress-bar-color: var(--moo-primary-foreground);
14258
14397
  --bs-progress-bar-bg: var(--moo-primary);
14259
14398
  }
14399
+
14400
+ /* Slider */
14260
14401
  .slider {
14261
14402
  display: grid;
14262
14403
  gap: 0.5rem;
@@ -14435,6 +14576,8 @@ label.btn {
14435
14576
  writing-mode: vertical-lr;
14436
14577
  direction: rtl;
14437
14578
  }
14579
+
14580
+ /* Separator */
14438
14581
  hr {
14439
14582
  opacity: 1;
14440
14583
  border-top: var(--bs-border-width) solid var(--moo-border);
@@ -14443,6 +14586,8 @@ label.btn {
14443
14586
  opacity: 1;
14444
14587
  background-color: var(--moo-border);
14445
14588
  }
14589
+
14590
+ /* Checkbox */
14446
14591
  .form-check-input {
14447
14592
  margin-top: 0.125rem;
14448
14593
  }
@@ -14506,9 +14651,100 @@ label.btn {
14506
14651
  border-color: var(--moo-primary);
14507
14652
  background-color: var(--moo-primary);
14508
14653
  }
14654
+
14655
+ /* Radio Group */
14509
14656
  .radio-group legend.form-label {
14510
14657
  font-size: inherit;
14511
14658
  }
14659
+ .form-check-card {
14660
+ position: relative;
14661
+ padding: 0;
14662
+ margin-bottom: 0;
14663
+ }
14664
+ .form-check-card + .form-check-card {
14665
+ margin-block-start: 0.5rem;
14666
+ }
14667
+ .form-check-card > .form-check-input:not(.visually-hidden) {
14668
+ position: absolute;
14669
+ inset-block-start: 0.75rem;
14670
+ inset-inline-end: 0.75rem;
14671
+ float: none;
14672
+ margin: 0;
14673
+ }
14674
+ .form-check-card > .form-check-label {
14675
+ display: flex;
14676
+ align-items: center;
14677
+ gap: 0.75rem;
14678
+ padding: 0.75rem;
14679
+ padding-inline-end: 2.5rem;
14680
+ border: var(--bs-border-width) solid var(--moo-border);
14681
+ border-radius: var(--bs-border-radius);
14682
+ color: var(--moo-foreground);
14683
+ cursor: pointer;
14684
+ }
14685
+ .form-check-card.form-check-card--no-control > .form-check-label {
14686
+ padding-inline-end: 0.75rem;
14687
+ }
14688
+ .form-check-card > .form-check-input:not(:disabled) ~ .form-check-label:hover,
14689
+ .form-check-card > .form-check-input:checked ~ .form-check-label {
14690
+ background-color: var(--moo-muted-surface);
14691
+ }
14692
+ .form-check-card > .form-check-input:checked ~ .form-check-label {
14693
+ border-color: var(--moo-foreground);
14694
+ }
14695
+ .form-check-card > .form-check-input:checked ~ .form-check-label .form-check-card-media {
14696
+ border-color: var(--moo-primary);
14697
+ background-color: var(--moo-primary);
14698
+ color: var(--moo-primary-foreground);
14699
+ }
14700
+ .form-check-card > .form-check-input:focus-visible ~ .form-check-label {
14701
+ border-color: var(--moo-ring);
14702
+ box-shadow: 0 0 0 var(--bs-focus-ring-width) color-mix(in srgb, var(--moo-ring) 50%, transparent);
14703
+ }
14704
+ .form-check-card > .form-check-input.is-invalid ~ .form-check-label {
14705
+ border-color: var(--bs-form-invalid-border-color);
14706
+ }
14707
+ .form-check-card > .form-check-input.is-invalid:focus-visible ~ .form-check-label {
14708
+ box-shadow: 0 0 0 var(--bs-focus-ring-width) var(--moo-form-invalid-ring-color);
14709
+ }
14710
+ .form-check-card-content {
14711
+ display: flex;
14712
+ flex-direction: column;
14713
+ gap: 0.25rem;
14714
+ min-width: 0;
14715
+ line-height: 1.25;
14716
+ overflow-wrap: anywhere;
14717
+ }
14718
+ .form-check-card-content > .form-text {
14719
+ margin: 0;
14720
+ font-size: 0.76562rem;
14721
+ line-height: inherit;
14722
+ color: color-mix(in srgb, var(--moo-muted-foreground) 95%, var(--moo-foreground));
14723
+ }
14724
+ .form-check-card-title {
14725
+ font-weight: 500;
14726
+ }
14727
+ .form-check-card-media {
14728
+ display: grid;
14729
+ place-items: center;
14730
+ flex: 0 0 auto;
14731
+ inline-size: 2.30078rem;
14732
+ aspect-ratio: 1;
14733
+ border: var(--bs-border-width) solid var(--moo-border);
14734
+ border-radius: var(--bs-border-radius-sm);
14735
+ background-color: var(--moo-muted-surface);
14736
+ color: var(--moo-foreground);
14737
+ }
14738
+ .form-check-card-media > span {
14739
+ font-size: 0.76562rem;
14740
+ font-weight: 600;
14741
+ }
14742
+ .form-check-card-media > [data-icon] {
14743
+ width: 0.875rem;
14744
+ height: 0.875rem;
14745
+ }
14746
+
14747
+ /* Switch */
14512
14748
  .form-switch .form-check-input {
14513
14749
  height: 1.15rem;
14514
14750
  }
@@ -14532,6 +14768,8 @@ label.btn {
14532
14768
  :scope[data-bs-theme="dark"] .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
14533
14769
  --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");
14534
14770
  }
14771
+
14772
+ /* Spinner */
14535
14773
  .spinner [data-icon] {
14536
14774
  width: 1rem;
14537
14775
  height: 1rem;
@@ -14541,6 +14779,8 @@ label.btn {
14541
14779
  width: 0.75rem;
14542
14780
  height: 0.75rem;
14543
14781
  }
14782
+
14783
+ /* Accordion */
14544
14784
  .accordion-button::after {
14545
14785
  content: none;
14546
14786
  }
@@ -14585,6 +14825,8 @@ label.btn {
14585
14825
  .card .accordion {
14586
14826
  --bs-accordion-bg: transparent;
14587
14827
  }
14828
+
14829
+ /* Tabs */
14588
14830
  .tabs-list {
14589
14831
  display: inline-flex;
14590
14832
  gap: 0.125rem;
@@ -14688,6 +14930,8 @@ label.btn {
14688
14930
  pointer-events: auto;
14689
14931
  transition-delay: 0s;
14690
14932
  }
14933
+
14934
+ /* Collapsible */
14691
14935
  .collapsible {
14692
14936
  display: flex;
14693
14937
  flex-direction: column;
@@ -14725,6 +14969,8 @@ label.btn {
14725
14969
  color: var(--moo-muted-foreground);
14726
14970
  width: 100%;
14727
14971
  }
14972
+
14973
+ /* Tooltip */
14728
14974
  .tooltip {
14729
14975
  --bs-tooltip-max-width: 20rem;
14730
14976
  --bs-tooltip-padding-x: 0.75rem;
@@ -14779,6 +15025,8 @@ label.btn {
14779
15025
  .tooltip-inner kbd {
14780
15026
  margin-inline-start: 0.25rem;
14781
15027
  }
15028
+
15029
+ /* Popover */
14782
15030
  .popover {
14783
15031
  --bs-popover-border-radius: var(--bs-border-radius-lg);
14784
15032
  --bs-popover-border-color: var(--moo-border);
@@ -14802,6 +15050,8 @@ label.btn {
14802
15050
  .popover .popover-arrow {
14803
15051
  display: none;
14804
15052
  }
15053
+
15054
+ /* Dialog */
14805
15055
  .modal {
14806
15056
  --bs-modal-border-radius: var(--bs-border-radius-xl);
14807
15057
  --bs-modal-border-color: var(--moo-border);
@@ -14856,6 +15106,8 @@ label.btn {
14856
15106
  .modal-footer {
14857
15107
  padding: 1rem;
14858
15108
  }
15109
+
15110
+ /* Sheet */
14859
15111
  .offcanvas.sheet {
14860
15112
  --bs-offcanvas-width: 24rem;
14861
15113
  --bs-offcanvas-border-color: var(--moo-border);
@@ -14869,6 +15121,8 @@ label.btn {
14869
15121
  font-size: 1rem;
14870
15122
  font-weight: 500;
14871
15123
  }
15124
+
15125
+ /* Toast */
14872
15126
  .toast {
14873
15127
  --bs-toast-border-radius: var(--bs-border-radius-lg);
14874
15128
  --bs-toast-border-color: var(--moo-border);
@@ -14960,6 +15214,8 @@ label.btn {
14960
15214
  transition: none;
14961
15215
  }
14962
15216
  }
15217
+
15218
+ /* Field */
14963
15219
  .field {
14964
15220
  display: flex;
14965
15221
  flex-direction: column;
@@ -15006,6 +15262,10 @@ label.btn {
15006
15262
  .field-group > hr {
15007
15263
  margin-block: 0;
15008
15264
  }
15265
+ .field-group.row {
15266
+ flex-direction: row;
15267
+ gap: 0;
15268
+ }
15009
15269
  .field-form {
15010
15270
  display: flex;
15011
15271
  flex-direction: column;
@@ -15031,6 +15291,8 @@ label.btn {
15031
15291
  .field-fieldset + hr {
15032
15292
  opacity: 0.1;
15033
15293
  }
15294
+
15295
+ /* Date Picker */
15034
15296
  .moo-datepicker {
15035
15297
  --moo-datepicker-width: 17.5rem;
15036
15298
  --moo-datepicker-popover-offset: 0.375rem;
@@ -15230,6 +15492,8 @@ label.btn {
15230
15492
  .moo-calendar__preset {
15231
15493
  flex: 0 0 auto;
15232
15494
  }
15495
+
15496
+ /* Combobox */
15233
15497
  .combobox {
15234
15498
  --moo-combobox-width: 12.5rem;
15235
15499
  --moo-combobox-multiple-width: 20rem;
@@ -15445,6 +15709,8 @@ label.btn {
15445
15709
  color: var(--bs-secondary-color);
15446
15710
  text-align: center;
15447
15711
  }
15712
+
15713
+ /* Context Menu */
15448
15714
  .context-menu {
15449
15715
  position: relative;
15450
15716
  }
@@ -15459,6 +15725,8 @@ label.btn {
15459
15725
  ul.context-menu-menu:focus-visible {
15460
15726
  outline: 0;
15461
15727
  }
15728
+
15729
+ /* Data Table */
15462
15730
  .datatable {
15463
15731
  --moo-datatable-min-width: 48rem;
15464
15732
  --moo-datatable-actions-cell-bg: var(--bs-body-bg);
@@ -15480,15 +15748,88 @@ label.btn {
15480
15748
  table-layout: fixed;
15481
15749
  }
15482
15750
  .datatable--responsive-scroll .datatable-table,
15483
- .datatable--responsive-toggle .datatable-table {
15751
+ .datatable--responsive-toggle .datatable-table,
15752
+ .datatable--responsive-auto .datatable-table {
15484
15753
  min-width: var(--moo-datatable-min-width);
15485
15754
  }
15486
- .datatable--responsive-toggle[data-datatable-view="table"] .datatable-card-frame {
15755
+ .datatable--responsive-toggle[data-datatable-view="table"] .datatable-card-frame,
15756
+ .datatable--responsive-auto[data-datatable-view="table"] .datatable-card-frame {
15487
15757
  display: none;
15488
15758
  }
15489
- .datatable--responsive-toggle[data-datatable-view="cards"] .datatable-frame {
15759
+ .datatable--responsive-toggle[data-datatable-view="cards"] .datatable-frame,
15760
+ .datatable--responsive-auto[data-datatable-view="cards"] .datatable-frame {
15490
15761
  display: none;
15491
15762
  }
15763
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"] {
15764
+ --moo-datatable-responsive-breakpoint: 576px;
15765
+ }
15766
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"][data-datatable-view="auto"] .datatable-card-frame {
15767
+ display: none;
15768
+ }
15769
+ @media (max-width: 575.98px) {
15770
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"][data-datatable-view="auto"] .datatable-frame {
15771
+ display: none;
15772
+ }
15773
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"][data-datatable-view="auto"] .datatable-card-frame {
15774
+ display: block;
15775
+ }
15776
+ }
15777
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"] {
15778
+ --moo-datatable-responsive-breakpoint: 768px;
15779
+ }
15780
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"][data-datatable-view="auto"] .datatable-card-frame {
15781
+ display: none;
15782
+ }
15783
+ @media (max-width: 767.98px) {
15784
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"][data-datatable-view="auto"] .datatable-frame {
15785
+ display: none;
15786
+ }
15787
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"][data-datatable-view="auto"] .datatable-card-frame {
15788
+ display: block;
15789
+ }
15790
+ }
15791
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"] {
15792
+ --moo-datatable-responsive-breakpoint: 992px;
15793
+ }
15794
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"][data-datatable-view="auto"] .datatable-card-frame {
15795
+ display: none;
15796
+ }
15797
+ @media (max-width: 991.98px) {
15798
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"][data-datatable-view="auto"] .datatable-frame {
15799
+ display: none;
15800
+ }
15801
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"][data-datatable-view="auto"] .datatable-card-frame {
15802
+ display: block;
15803
+ }
15804
+ }
15805
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"] {
15806
+ --moo-datatable-responsive-breakpoint: 1200px;
15807
+ }
15808
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"][data-datatable-view="auto"] .datatable-card-frame {
15809
+ display: none;
15810
+ }
15811
+ @media (max-width: 1199.98px) {
15812
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"][data-datatable-view="auto"] .datatable-frame {
15813
+ display: none;
15814
+ }
15815
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"][data-datatable-view="auto"] .datatable-card-frame {
15816
+ display: block;
15817
+ }
15818
+ }
15819
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"] {
15820
+ --moo-datatable-responsive-breakpoint: 1400px;
15821
+ }
15822
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"][data-datatable-view="auto"] .datatable-card-frame {
15823
+ display: none;
15824
+ }
15825
+ @media (max-width: 1399.98px) {
15826
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"][data-datatable-view="auto"] .datatable-frame {
15827
+ display: none;
15828
+ }
15829
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"][data-datatable-view="auto"] .datatable-card-frame {
15830
+ display: block;
15831
+ }
15832
+ }
15492
15833
  .datatable-frame {
15493
15834
  border: var(--bs-border-width) solid var(--bs-border-color);
15494
15835
  border-radius: var(--bs-border-radius);
@@ -15536,6 +15877,16 @@ label.btn {
15536
15877
  .datatable-table > :not(caption) > * > * {
15537
15878
  vertical-align: middle;
15538
15879
  }
15880
+ .datatable-col > .btn-link,
15881
+ .datatable-card-title > .btn-link {
15882
+ max-inline-size: 100%;
15883
+ white-space: normal;
15884
+ overflow-wrap: anywhere;
15885
+ text-align: inherit;
15886
+ }
15887
+ .datatable-table > :not(caption) > * > .datatable-col:nth-child(1 of :not(.datatable-col-hidden)) {
15888
+ padding-inline-start: 1rem;
15889
+ }
15539
15890
  .datatable-toolbar {
15540
15891
  display: flex;
15541
15892
  flex-wrap: wrap;
@@ -15956,7 +16307,10 @@ label.btn {
15956
16307
  align-items: center;
15957
16308
  padding: 0.5rem 0.75rem;
15958
16309
  border-bottom: var(--bs-border-width) solid var(--bs-border-color);
15959
- background-color: var(--bs-tertiary-bg);
16310
+ background-color: color-mix(in srgb, var(--moo-surface) 50%, var(--moo-muted-surface));
16311
+ }
16312
+ .datatable-card-header:not(:has(> .datatable-card-select)) {
16313
+ grid-template-columns: minmax(0, 1fr) auto;
15960
16314
  }
15961
16315
  .datatable-card-select {
15962
16316
  display: inline-flex;
@@ -16321,6 +16675,8 @@ label.btn {
16321
16675
  .datatable--release-review {
16322
16676
  --moo-datatable-min-width: 64rem;
16323
16677
  }
16678
+
16679
+ /* Focus and keyboard navigation */
16324
16680
  .form-label,
16325
16681
  .form-check-label {
16326
16682
  user-select: none;
@@ -16391,6 +16747,13 @@ label.btn {
16391
16747
  .was-validated .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))) > :is(.form-control, .form-select):invalid {
16392
16748
  box-shadow: none;
16393
16749
  }
16750
+
16751
+ /* Utilities */
16752
+
16753
+ /* Border utilities */
16754
+ .border-dashed {
16755
+ border-style: dashed !important;
16756
+ }
16394
16757
  :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 ) {
16395
16758
  --scroll-fade-size: min(12%, 2.5rem);
16396
16759
  --scroll-fade-reveal: 6rem;
@@ -16559,6 +16922,8 @@ label.btn {
16559
16922
  --moo-scroll-fade-e: var(--moo-scroll-fade-e-size);
16560
16923
  }
16561
16924
  }
16925
+
16926
+ /* Application layout */
16562
16927
  .sidebar {
16563
16928
  --moo-sidebar-width: 16rem;
16564
16929
  --moo-sidebar-width-icon: 3rem;
@@ -16629,21 +16994,8 @@ label.btn {
16629
16994
  .sidebar-rail {
16630
16995
  display: none;
16631
16996
  }
16632
- .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar {
16633
- position: relative;
16634
- inset: auto;
16635
- flex: 0 0 auto;
16636
- width: 100%;
16637
- height: auto;
16638
- visibility: visible;
16639
- transform: none;
16640
- }
16641
- .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
16642
- height: auto;
16643
- max-height: none;
16644
- }
16645
16997
  }
16646
- .sidebar[data-side="left"] .sidebar-inner {
16998
+ .sidebar[data-side="left"]:not([data-variant="inset"]) .sidebar-inner {
16647
16999
  border-right: var(--bs-border-width) solid var(--moo-sidebar-border);
16648
17000
  }
16649
17001
  .sidebar[data-side="right"] {
@@ -16655,11 +17007,11 @@ label.btn {
16655
17007
  .wrapper[data-layout="app"]:dir(rtl) > .sidebar[data-side="right"] {
16656
17008
  order: 0;
16657
17009
  }
16658
- .sidebar[data-side="right"] .sidebar-inner {
17010
+ .sidebar[data-side="right"]:not([data-variant="inset"]) .sidebar-inner {
16659
17011
  border-left: var(--bs-border-width) solid var(--moo-sidebar-border);
16660
17012
  }
16661
17013
  @media (min-width: 992px) {
16662
- .sidebar {
17014
+ :where(.wrapper[data-layout="app"][data-sidebar-ready]) > .sidebar {
16663
17015
  transition: flex-basis 0.2s ease, width 0.2s ease;
16664
17016
  }
16665
17017
  .sidebar[data-variant="floating"] .sidebar-inner {
@@ -16699,6 +17051,10 @@ label.btn {
16699
17051
  box-shadow: var(--bs-box-shadow-sm);
16700
17052
  background: var(--bs-body-bg);
16701
17053
  }
17054
+ .wrapper[data-layout="app"]:has(> .sidebar[data-variant="inset"]) > [data-slot="page"] > header {
17055
+ border-top-left-radius: inherit;
17056
+ border-top-right-radius: inherit;
17057
+ }
16702
17058
  .wrapper[data-layout="app"][data-sidebar-state="collapsed"]:has(> .sidebar[data-variant="inset"]) > [data-slot="page"] {
16703
17059
  margin-left: 0.5rem;
16704
17060
  }
@@ -16730,7 +17086,6 @@ label.btn {
16730
17086
  min-height: 0;
16731
17087
  flex: 1 1 auto;
16732
17088
  flex-direction: column;
16733
- overflow-y: auto;
16734
17089
  }
16735
17090
  .wrapper[data-layout="app"] > [data-slot="page"] > header,
16736
17091
  .wrapper[data-layout="app"] > [data-slot="page"] > main,
@@ -16742,6 +17097,7 @@ label.btn {
16742
17097
  min-height: 0;
16743
17098
  flex: 1 1 auto;
16744
17099
  flex-direction: column;
17100
+ overflow-y: auto;
16745
17101
  }
16746
17102
  .wrapper[data-layout="app"] > [data-slot="page"] > main > :is( .container, .container-sm, .container-md, .container-lg, .container-xl, .container-xxl, .container-fluid ) {
16747
17103
  display: flex;
@@ -16759,7 +17115,238 @@ label.btn {
16759
17115
  .wrapper[data-layout="app"][data-shell-mode="contained"] > [data-slot="page"] {
16760
17116
  overflow: visible;
16761
17117
  }
17118
+ .wrapper[data-layout="app"][data-shell-mode="contained"] > [data-slot="page"] > main {
17119
+ overflow: visible;
17120
+ }
17121
+ }
17122
+ [data-page-container] {
17123
+ container: moo-page / inline-size;
17124
+ }
17125
+ [data-page-container] [data-page-show-from] {
17126
+ display: none !important;
17127
+ }
17128
+ @container moo-page (min-width: 576px) {
17129
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="1"] {
17130
+ width: 8.33333%;
17131
+ }
17132
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="2"] {
17133
+ width: 16.66667%;
17134
+ }
17135
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="3"] {
17136
+ width: 25%;
17137
+ }
17138
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="4"] {
17139
+ width: 33.33333%;
17140
+ }
17141
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="5"] {
17142
+ width: 41.66667%;
17143
+ }
17144
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="6"] {
17145
+ width: 50%;
17146
+ }
17147
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="7"] {
17148
+ width: 58.33333%;
17149
+ }
17150
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="8"] {
17151
+ width: 66.66667%;
17152
+ }
17153
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="9"] {
17154
+ width: 75%;
17155
+ }
17156
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="10"] {
17157
+ width: 83.33333%;
17158
+ }
17159
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="11"] {
17160
+ width: 91.66667%;
17161
+ }
17162
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="12"] {
17163
+ width: 100%;
17164
+ }
17165
+ [data-page-container] [data-page-show-from="sm"] {
17166
+ display: block !important;
17167
+ }
17168
+ [data-page-container] [data-page-hide-from="sm"] {
17169
+ display: none !important;
17170
+ }
17171
+ }
17172
+ @container moo-page (min-width: 768px) {
17173
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="1"] {
17174
+ width: 8.33333%;
17175
+ }
17176
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="2"] {
17177
+ width: 16.66667%;
17178
+ }
17179
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="3"] {
17180
+ width: 25%;
17181
+ }
17182
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="4"] {
17183
+ width: 33.33333%;
17184
+ }
17185
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="5"] {
17186
+ width: 41.66667%;
17187
+ }
17188
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="6"] {
17189
+ width: 50%;
17190
+ }
17191
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="7"] {
17192
+ width: 58.33333%;
17193
+ }
17194
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="8"] {
17195
+ width: 66.66667%;
17196
+ }
17197
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="9"] {
17198
+ width: 75%;
17199
+ }
17200
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="10"] {
17201
+ width: 83.33333%;
17202
+ }
17203
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="11"] {
17204
+ width: 91.66667%;
17205
+ }
17206
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="12"] {
17207
+ width: 100%;
17208
+ }
17209
+ [data-page-container] [data-page-show-from="md"] {
17210
+ display: block !important;
17211
+ }
17212
+ [data-page-container] [data-page-hide-from="md"] {
17213
+ display: none !important;
17214
+ }
17215
+ }
17216
+ @container moo-page (min-width: 992px) {
17217
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="1"] {
17218
+ width: 8.33333%;
17219
+ }
17220
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="2"] {
17221
+ width: 16.66667%;
17222
+ }
17223
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="3"] {
17224
+ width: 25%;
17225
+ }
17226
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="4"] {
17227
+ width: 33.33333%;
17228
+ }
17229
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="5"] {
17230
+ width: 41.66667%;
17231
+ }
17232
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="6"] {
17233
+ width: 50%;
17234
+ }
17235
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="7"] {
17236
+ width: 58.33333%;
17237
+ }
17238
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="8"] {
17239
+ width: 66.66667%;
17240
+ }
17241
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="9"] {
17242
+ width: 75%;
17243
+ }
17244
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="10"] {
17245
+ width: 83.33333%;
17246
+ }
17247
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="11"] {
17248
+ width: 91.66667%;
17249
+ }
17250
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="12"] {
17251
+ width: 100%;
17252
+ }
17253
+ [data-page-container] [data-page-show-from="lg"] {
17254
+ display: block !important;
17255
+ }
17256
+ [data-page-container] [data-page-hide-from="lg"] {
17257
+ display: none !important;
17258
+ }
16762
17259
  }
17260
+ @container moo-page (min-width: 1200px) {
17261
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="1"] {
17262
+ width: 8.33333%;
17263
+ }
17264
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="2"] {
17265
+ width: 16.66667%;
17266
+ }
17267
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="3"] {
17268
+ width: 25%;
17269
+ }
17270
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="4"] {
17271
+ width: 33.33333%;
17272
+ }
17273
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="5"] {
17274
+ width: 41.66667%;
17275
+ }
17276
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="6"] {
17277
+ width: 50%;
17278
+ }
17279
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="7"] {
17280
+ width: 58.33333%;
17281
+ }
17282
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="8"] {
17283
+ width: 66.66667%;
17284
+ }
17285
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="9"] {
17286
+ width: 75%;
17287
+ }
17288
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="10"] {
17289
+ width: 83.33333%;
17290
+ }
17291
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="11"] {
17292
+ width: 91.66667%;
17293
+ }
17294
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="12"] {
17295
+ width: 100%;
17296
+ }
17297
+ [data-page-container] [data-page-show-from="xl"] {
17298
+ display: block !important;
17299
+ }
17300
+ [data-page-container] [data-page-hide-from="xl"] {
17301
+ display: none !important;
17302
+ }
17303
+ }
17304
+ @container moo-page (min-width: 1400px) {
17305
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="1"] {
17306
+ width: 8.33333%;
17307
+ }
17308
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="2"] {
17309
+ width: 16.66667%;
17310
+ }
17311
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="3"] {
17312
+ width: 25%;
17313
+ }
17314
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="4"] {
17315
+ width: 33.33333%;
17316
+ }
17317
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="5"] {
17318
+ width: 41.66667%;
17319
+ }
17320
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="6"] {
17321
+ width: 50%;
17322
+ }
17323
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="7"] {
17324
+ width: 58.33333%;
17325
+ }
17326
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="8"] {
17327
+ width: 66.66667%;
17328
+ }
17329
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="9"] {
17330
+ width: 75%;
17331
+ }
17332
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="10"] {
17333
+ width: 83.33333%;
17334
+ }
17335
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="11"] {
17336
+ width: 91.66667%;
17337
+ }
17338
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="12"] {
17339
+ width: 100%;
17340
+ }
17341
+ [data-page-container] [data-page-show-from="xxl"] {
17342
+ display: block !important;
17343
+ }
17344
+ [data-page-container] [data-page-hide-from="xxl"] {
17345
+ display: none !important;
17346
+ }
17347
+ }
17348
+
17349
+ /* Form themes */
16763
17350
  :scope[data-bs-theme="light"] .form-select {
16764
17351
  --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");
16765
17352
  }
@@ -16772,6 +17359,8 @@ label.btn {
16772
17359
  :scope[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus) {
16773
17360
  --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");
16774
17361
  }
17362
+
17363
+ /* Overlay backdrops */
16775
17364
  .modal-backdrop,
16776
17365
  .offcanvas-backdrop {
16777
17366
  --bs-backdrop-opacity: var(--moo-overlay-backdrop-opacity, 1);
@@ -16808,4 +17397,16 @@ label.btn {
16808
17397
  .offcanvas-backdrop.show::before {
16809
17398
  animation: moo-overlay-backdrop-enter var(--moo-overlay-motion-duration, 0.3s) ease-out both;
16810
17399
  }
17400
+
17401
+ /* Typography */
17402
+ :where(h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6, .display-1, .display-2, .display-3, .display-4, .display-5, .display-6) {
17403
+ font-family: var(--moo-heading-font-family, var(--bs-body-font-family));
17404
+ }
17405
+ :is(small, .small) {
17406
+ font-size: var(--moo-small-font-size);
17407
+ }
17408
+ p {
17409
+ margin-top: var(--moo-paragraph-margin-top);
17410
+ margin-bottom: var(--moo-paragraph-margin-bottom);
17411
+ }
16811
17412
  }