@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,9 +1,14 @@
1
1
  /*!
2
- * Moo UI core
3
- * Copyright (c) 2026 WPMoo (wpmoo.org)
4
- * Includes Bootstrap 5.3.3 component output
5
- * SPDX-License-Identifier: MIT
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)
6
9
  */
10
+
11
+ /* Global styles */
7
12
  @property --moo-scroll-fade-t {
8
13
  syntax: "<length-percentage>";
9
14
  inherits: false;
@@ -149,6 +154,7 @@
149
154
  }
150
155
  }
151
156
 
157
+ /* Theme tokens */
152
158
  .moo-ui[data-bs-theme] {
153
159
  --bs-blue: #0d6efd;
154
160
  --bs-indigo: #6610f2;
@@ -229,6 +235,14 @@
229
235
  --moo-chart-3: #a1a1aa;
230
236
  --moo-chart-4: #3f3f46;
231
237
  --moo-chart-5: #27272a;
238
+ --moo-heading-font-family: var(--bs-body-font-family);
239
+ --moo-small-font-size: 0.75rem;
240
+ --moo-paragraph-margin-top: 0;
241
+ --moo-paragraph-margin-bottom: 1rem;
242
+ font-family: var(--bs-body-font-family);
243
+ font-size: var(--bs-body-font-size);
244
+ font-weight: var(--bs-body-font-weight);
245
+ line-height: var(--bs-body-line-height);
232
246
  }
233
247
 
234
248
  .moo-ui[data-bs-theme="light"] {
@@ -406,6 +420,8 @@
406
420
  }
407
421
 
408
422
  @scope (.moo-ui) to (:where(.moo-ui[data-bs-theme="light"], .moo-ui[data-bs-theme="dark"])) {
423
+
424
+ /* Bootstrap Components */
409
425
  .table {
410
426
  --bs-table-color-type: initial;
411
427
  --bs-table-bg-type: initial;
@@ -656,7 +672,7 @@
656
672
  background-color: var(--moo-input-bg, transparent);
657
673
  background-clip: padding-box;
658
674
  border: var(--bs-border-width) solid var(--moo-border);
659
- border-radius: 0.625rem;
675
+ border-radius: var(--bs-border-radius-lg);
660
676
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
661
677
  }
662
678
  @media (prefers-reduced-motion: reduce) {
@@ -781,11 +797,11 @@
781
797
  }
782
798
  .form-control-color::-moz-color-swatch {
783
799
  border: 0 !important;
784
- border-radius: 0.625rem;
800
+ border-radius: var(--bs-border-radius-lg);
785
801
  }
786
802
  .form-control-color::-webkit-color-swatch {
787
803
  border: 0 !important;
788
- border-radius: 0.625rem;
804
+ border-radius: var(--bs-border-radius-lg);
789
805
  }
790
806
  .form-control-color.form-control-sm {
791
807
  height: calc(1.42857em + 0.5rem + calc(var(--bs-border-width) * 2));
@@ -809,7 +825,7 @@
809
825
  background-position: right 0.625rem center;
810
826
  background-size: 16px 12px;
811
827
  border: var(--bs-border-width) solid var(--moo-border);
812
- border-radius: 0.625rem;
828
+ border-radius: var(--bs-border-radius-lg);
813
829
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
814
830
  }
815
831
  @media (prefers-reduced-motion: reduce) {
@@ -1012,7 +1028,7 @@
1012
1028
  white-space: nowrap;
1013
1029
  background-color: var(--moo-input-bg, transparent);
1014
1030
  border: var(--bs-border-width) solid var(--moo-border);
1015
- border-radius: 0.625rem;
1031
+ border-radius: var(--bs-border-radius-lg);
1016
1032
  }
1017
1033
  .input-group-lg > .form-control,
1018
1034
  .input-group-lg > .form-select,
@@ -3057,6 +3073,7 @@
3057
3073
  border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;
3058
3074
  border-top-color: var(--bs-tooltip-bg);
3059
3075
  }
3076
+
3060
3077
  /* rtl:begin:ignore */
3061
3078
  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow {
3062
3079
  left: calc(-1 * var(--bs-tooltip-arrow-height));
@@ -3068,6 +3085,7 @@
3068
3085
  border-width: calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;
3069
3086
  border-right-color: var(--bs-tooltip-bg);
3070
3087
  }
3088
+
3071
3089
  /* rtl:end:ignore */
3072
3090
  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow {
3073
3091
  top: calc(-1 * var(--bs-tooltip-arrow-height));
@@ -3077,6 +3095,7 @@
3077
3095
  border-width: 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);
3078
3096
  border-bottom-color: var(--bs-tooltip-bg);
3079
3097
  }
3098
+
3080
3099
  /* rtl:begin:ignore */
3081
3100
  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow {
3082
3101
  right: calc(-1 * var(--bs-tooltip-arrow-height));
@@ -3088,6 +3107,7 @@
3088
3107
  border-width: calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);
3089
3108
  border-left-color: var(--bs-tooltip-bg);
3090
3109
  }
3110
+
3091
3111
  /* rtl:end:ignore */
3092
3112
  .tooltip-inner {
3093
3113
  max-width: var(--bs-tooltip-max-width);
@@ -3174,6 +3194,7 @@
3174
3194
  bottom: var(--bs-popover-border-width);
3175
3195
  border-top-color: var(--bs-popover-bg);
3176
3196
  }
3197
+
3177
3198
  /* rtl:begin:ignore */
3178
3199
  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow {
3179
3200
  left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
@@ -3191,6 +3212,7 @@
3191
3212
  left: var(--bs-popover-border-width);
3192
3213
  border-right-color: var(--bs-popover-bg);
3193
3214
  }
3215
+
3194
3216
  /* rtl:end:ignore */
3195
3217
  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow {
3196
3218
  top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
@@ -3216,6 +3238,7 @@
3216
3238
  content: "";
3217
3239
  border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);
3218
3240
  }
3241
+
3219
3242
  /* rtl:begin:ignore */
3220
3243
  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow {
3221
3244
  right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
@@ -3233,6 +3256,7 @@
3233
3256
  right: var(--bs-popover-border-width);
3234
3257
  border-left-color: var(--bs-popover-bg);
3235
3258
  }
3259
+
3236
3260
  /* rtl:end:ignore */
3237
3261
  .popover-header {
3238
3262
  padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);
@@ -3771,6 +3795,10 @@
3771
3795
  color: #fff !important;
3772
3796
  background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;
3773
3797
  }
3798
+
3799
+ /* Moo Components */
3800
+
3801
+ /* Keyboard keys */
3774
3802
  kbd {
3775
3803
  display: inline-flex;
3776
3804
  height: 1.25rem;
@@ -3781,6 +3809,8 @@
3781
3809
  line-height: 1rem;
3782
3810
  font-weight: 500;
3783
3811
  }
3812
+
3813
+ /* Input */
3784
3814
  .form-control {
3785
3815
  min-height: 2rem;
3786
3816
  }
@@ -3806,17 +3836,23 @@
3806
3836
  .form-select:disabled {
3807
3837
  opacity: var(--moo-disabled-control-opacity);
3808
3838
  }
3839
+
3840
+ /* Textarea */
3809
3841
  textarea.form-control:not(.form-control-sm, .form-control-lg) {
3810
3842
  padding: 0.5rem 0.75rem;
3811
3843
  }
3812
3844
  textarea.form-control:disabled {
3813
3845
  resize: none;
3814
3846
  }
3847
+
3848
+ /* Select */
3815
3849
  .form-select option,
3816
3850
  .form-select optgroup {
3817
3851
  color: var(--bs-body-color);
3818
3852
  background-color: var(--bs-body-bg);
3819
3853
  }
3854
+
3855
+ /* Input Group */
3820
3856
  .input-group:not(:has(> .form-control[type="file"])) {
3821
3857
  border: var(--bs-border-width) solid var(--moo-border);
3822
3858
  border-radius: var(--moo-input-group-border-radius);
@@ -3937,6 +3973,8 @@
3937
3973
  outline: 0;
3938
3974
  box-shadow: none;
3939
3975
  }
3976
+
3977
+ /* Buttons */
3940
3978
  .btn {
3941
3979
  display: inline-flex;
3942
3980
  align-items: center;
@@ -4111,6 +4149,8 @@ label.btn {
4111
4149
  --bs-btn-hover-color: var(--moo-muted-foreground);
4112
4150
  text-underline-offset: 0.25rem;
4113
4151
  }
4152
+
4153
+ /* Search Trigger */
4114
4154
  .search-trigger {
4115
4155
  width: 10rem;
4116
4156
  max-width: 100%;
@@ -4165,6 +4205,8 @@ label.btn {
4165
4205
  flex-basis: 16rem;
4166
4206
  }
4167
4207
  }
4208
+
4209
+ /* Close Button */
4168
4210
  .btn-close {
4169
4211
  --bs-btn-close-color: var(--moo-foreground);
4170
4212
  --bs-btn-hover-color: var(--bs-btn-close-color);
@@ -4213,6 +4255,8 @@ label.btn {
4213
4255
  pointer-events: none;
4214
4256
  opacity: var(--moo-disabled-control-opacity);
4215
4257
  }
4258
+
4259
+ /* Button Group */
4216
4260
  [dir="rtl"] .btn-group,
4217
4261
  [dir="rtl"] .btn-toolbar {
4218
4262
  direction: ltr;
@@ -4262,6 +4306,8 @@ label.btn {
4262
4306
  min-width: calc(1.875rem + 1rem);
4263
4307
  padding-inline-end: 1.875rem;
4264
4308
  }
4309
+
4310
+ /* Toggle Group */
4265
4311
  .toggle-group > .btn:not(:disabled):not(.disabled):not([aria-disabled="true"]):active {
4266
4312
  transform: none;
4267
4313
  }
@@ -4276,6 +4322,8 @@ label.btn {
4276
4322
  outline: 0;
4277
4323
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--moo-ring) 50%, transparent);
4278
4324
  }
4325
+
4326
+ /* Card */
4279
4327
  .card {
4280
4328
  --bs-card-bg: color-mix(in srgb, var(--bs-secondary-bg) 5%, var(--bs-body-bg));
4281
4329
  --bs-card-color: var(--moo-foreground);
@@ -4371,6 +4419,8 @@ label.btn {
4371
4419
  font-size: 0.875rem;
4372
4420
  color: var(--moo-muted-foreground);
4373
4421
  }
4422
+
4423
+ /* Table */
4374
4424
  .card .table {
4375
4425
  --bs-table-bg: transparent;
4376
4426
  }
@@ -4380,6 +4430,8 @@ label.btn {
4380
4430
  .table-row-actions:has(> [aria-expanded="true"]) {
4381
4431
  z-index: 1000;
4382
4432
  }
4433
+
4434
+ /* Dropdown */
4383
4435
  .dropdown-menu {
4384
4436
  --bs-dropdown-bg: var(--moo-surface);
4385
4437
  --bs-dropdown-border-color: var(--moo-border);
@@ -4404,6 +4456,9 @@ label.btn {
4404
4456
  color: var(--bs-dropdown-link-color);
4405
4457
  background-color: transparent;
4406
4458
  }
4459
+ .dropdown-menu:has(.dropdown-item:hover) .dropdown-item.active:not(:hover) {
4460
+ background-color: transparent;
4461
+ }
4407
4462
  .dropdown-item > [data-icon] {
4408
4463
  width: 1rem;
4409
4464
  height: 1rem;
@@ -4543,6 +4598,8 @@ label.btn {
4543
4598
  inset-block-end: var(--moo-sidebar-dropdown-block-end) !important;
4544
4599
  }
4545
4600
  }
4601
+
4602
+ /* Menubar */
4546
4603
  .menubar {
4547
4604
  gap: 0.125rem;
4548
4605
  padding: 0.1875rem;
@@ -4556,6 +4613,8 @@ label.btn {
4556
4613
  color: var(--bs-btn-color);
4557
4614
  font-weight: 500;
4558
4615
  }
4616
+
4617
+ /* Avatar */
4559
4618
  .avatar {
4560
4619
  position: relative;
4561
4620
  display: inline-flex;
@@ -4678,10 +4737,19 @@ label.btn {
4678
4737
  content: "+";
4679
4738
  margin-inline-end: -0.1rem;
4680
4739
  }
4740
+
4741
+ /* Navigation */
4681
4742
  .nav {
4682
4743
  --bs-nav-link-color: var(--moo-foreground);
4683
4744
  --bs-nav-link-hover-color: var(--moo-foreground);
4684
4745
  --bs-nav-link-disabled-color: var(--moo-disabled-foreground);
4746
+ --bs-nav-link-description-color: color-mix(in srgb, var(--moo-muted-foreground) 95%, var(--moo-foreground));
4747
+ }
4748
+ .nav-link-description {
4749
+ color: var(--bs-nav-link-description-color);
4750
+ }
4751
+ .nav-link.disabled .nav-link-description {
4752
+ color: var(--bs-nav-link-disabled-color);
4685
4753
  }
4686
4754
  .nav-pills {
4687
4755
  --bs-nav-pills-border-radius: var(--bs-border-radius);
@@ -4707,6 +4775,58 @@ label.btn {
4707
4775
  height: 1rem;
4708
4776
  flex: 0 0 auto;
4709
4777
  }
4778
+ .nav-link-icon {
4779
+ display: inline-flex;
4780
+ align-items: center;
4781
+ flex: 0 0 auto;
4782
+ }
4783
+ .nav-steps {
4784
+ --bs-nav-step-icon-size: 2rem;
4785
+ --bs-nav-step-gap: 0.25rem;
4786
+ gap: var(--bs-nav-step-gap);
4787
+ }
4788
+ .nav-steps .nav-item {
4789
+ position: relative;
4790
+ }
4791
+ .nav-steps .nav-item:not(:only-child)::before {
4792
+ position: absolute;
4793
+ z-index: 1;
4794
+ inset-inline-start: calc(var(--bs-nav-link-padding-x) + var(--bs-nav-step-icon-size) / 2);
4795
+ inset-block: calc(var(--bs-nav-step-gap) / -2);
4796
+ border-inline-start: var(--bs-border-width) solid var(--bs-border-color);
4797
+ content: "";
4798
+ pointer-events: none;
4799
+ }
4800
+ .nav-steps .nav-item:first-child::before {
4801
+ inset-block-start: 50%;
4802
+ }
4803
+ .nav-steps .nav-item:last-child::before {
4804
+ inset-block-end: 50%;
4805
+ }
4806
+ .nav-steps .nav-link-icon {
4807
+ position: relative;
4808
+ z-index: 2;
4809
+ display: inline-flex;
4810
+ align-items: center;
4811
+ justify-content: center;
4812
+ flex: 0 0 var(--bs-nav-step-icon-size);
4813
+ inline-size: var(--bs-nav-step-icon-size);
4814
+ block-size: var(--bs-nav-step-icon-size);
4815
+ color: var(--moo-foreground);
4816
+ background-color: var(--moo-muted-surface);
4817
+ border: var(--bs-border-width) solid var(--bs-border-color);
4818
+ border-radius: var(--bs-border-radius);
4819
+ }
4820
+ .nav-steps .nav-link.disabled .nav-link-icon {
4821
+ color: var(--moo-disabled-foreground);
4822
+ }
4823
+ .nav-steps .nav-item[data-nav-completed="true"] .nav-link-icon {
4824
+ color: var(--moo-primary-foreground);
4825
+ background-color: var(--moo-primary);
4826
+ border-color: var(--moo-primary);
4827
+ }
4828
+
4829
+ /* Skeleton */
4710
4830
  .skeleton {
4711
4831
  color: var(--moo-border);
4712
4832
  border-radius: var(--bs-border-radius);
@@ -4715,6 +4835,8 @@ label.btn {
4715
4835
  .skeleton > .placeholder {
4716
4836
  display: block;
4717
4837
  }
4838
+
4839
+ /* Sidebar */
4718
4840
  .sidebar-inner {
4719
4841
  position: sticky;
4720
4842
  top: 0;
@@ -5124,6 +5246,8 @@ label.btn {
5124
5246
  display: none;
5125
5247
  }
5126
5248
  }
5249
+
5250
+ /* Alert */
5127
5251
  .alert {
5128
5252
  --bs-alert-border-color: var(--moo-border);
5129
5253
  --bs-alert-color: var(--moo-foreground);
@@ -5190,6 +5314,8 @@ label.btn {
5190
5314
  .alert-action {
5191
5315
  flex: 0 0 auto;
5192
5316
  }
5317
+
5318
+ /* Breadcrumb */
5193
5319
  .breadcrumb {
5194
5320
  --bs-breadcrumb-item-active-color: var(--moo-foreground);
5195
5321
  --bs-breadcrumb-item-padding-x: 0.375rem;
@@ -5289,6 +5415,8 @@ label.btn {
5289
5415
  width: 0.875rem;
5290
5416
  height: 0.875rem;
5291
5417
  }
5418
+
5419
+ /* Pagination */
5292
5420
  .page-link {
5293
5421
  display: inline-flex;
5294
5422
  align-items: center;
@@ -5334,6 +5462,8 @@ label.btn {
5334
5462
  .page-item.disabled {
5335
5463
  opacity: var(--moo-disabled-control-opacity);
5336
5464
  }
5465
+
5466
+ /* Badge */
5337
5467
  .badge {
5338
5468
  display: inline-flex;
5339
5469
  height: 1.25rem;
@@ -5362,10 +5492,14 @@ label.btn {
5362
5492
  .badge[class~="text-body-secondary"] {
5363
5493
  color: var(--moo-foreground) !important;
5364
5494
  }
5495
+
5496
+ /* Progress */
5365
5497
  .progress {
5366
5498
  --bs-progress-bar-color: var(--moo-primary-foreground);
5367
5499
  --bs-progress-bar-bg: var(--moo-primary);
5368
5500
  }
5501
+
5502
+ /* Slider */
5369
5503
  .slider {
5370
5504
  display: grid;
5371
5505
  gap: 0.5rem;
@@ -5544,6 +5678,8 @@ label.btn {
5544
5678
  writing-mode: vertical-lr;
5545
5679
  direction: rtl;
5546
5680
  }
5681
+
5682
+ /* Separator */
5547
5683
  hr {
5548
5684
  opacity: 1;
5549
5685
  border-top: var(--bs-border-width) solid var(--moo-border);
@@ -5552,6 +5688,8 @@ label.btn {
5552
5688
  opacity: 1;
5553
5689
  background-color: var(--moo-border);
5554
5690
  }
5691
+
5692
+ /* Checkbox */
5555
5693
  .form-check-input {
5556
5694
  margin-top: 0.125rem;
5557
5695
  }
@@ -5615,9 +5753,100 @@ label.btn {
5615
5753
  border-color: var(--moo-primary);
5616
5754
  background-color: var(--moo-primary);
5617
5755
  }
5756
+
5757
+ /* Radio Group */
5618
5758
  .radio-group legend.form-label {
5619
5759
  font-size: inherit;
5620
5760
  }
5761
+ .form-check-card {
5762
+ position: relative;
5763
+ padding: 0;
5764
+ margin-bottom: 0;
5765
+ }
5766
+ .form-check-card + .form-check-card {
5767
+ margin-block-start: 0.5rem;
5768
+ }
5769
+ .form-check-card > .form-check-input:not(.visually-hidden) {
5770
+ position: absolute;
5771
+ inset-block-start: 0.75rem;
5772
+ inset-inline-end: 0.75rem;
5773
+ float: none;
5774
+ margin: 0;
5775
+ }
5776
+ .form-check-card > .form-check-label {
5777
+ display: flex;
5778
+ align-items: center;
5779
+ gap: 0.75rem;
5780
+ padding: 0.75rem;
5781
+ padding-inline-end: 2.5rem;
5782
+ border: var(--bs-border-width) solid var(--moo-border);
5783
+ border-radius: var(--bs-border-radius);
5784
+ color: var(--moo-foreground);
5785
+ cursor: pointer;
5786
+ }
5787
+ .form-check-card.form-check-card--no-control > .form-check-label {
5788
+ padding-inline-end: 0.75rem;
5789
+ }
5790
+ .form-check-card > .form-check-input:not(:disabled) ~ .form-check-label:hover,
5791
+ .form-check-card > .form-check-input:checked ~ .form-check-label {
5792
+ background-color: var(--moo-muted-surface);
5793
+ }
5794
+ .form-check-card > .form-check-input:checked ~ .form-check-label {
5795
+ border-color: var(--moo-foreground);
5796
+ }
5797
+ .form-check-card > .form-check-input:checked ~ .form-check-label .form-check-card-media {
5798
+ border-color: var(--moo-primary);
5799
+ background-color: var(--moo-primary);
5800
+ color: var(--moo-primary-foreground);
5801
+ }
5802
+ .form-check-card > .form-check-input:focus-visible ~ .form-check-label {
5803
+ border-color: var(--moo-ring);
5804
+ box-shadow: 0 0 0 var(--bs-focus-ring-width) color-mix(in srgb, var(--moo-ring) 50%, transparent);
5805
+ }
5806
+ .form-check-card > .form-check-input.is-invalid ~ .form-check-label {
5807
+ border-color: var(--bs-form-invalid-border-color);
5808
+ }
5809
+ .form-check-card > .form-check-input.is-invalid:focus-visible ~ .form-check-label {
5810
+ box-shadow: 0 0 0 var(--bs-focus-ring-width) var(--moo-form-invalid-ring-color);
5811
+ }
5812
+ .form-check-card-content {
5813
+ display: flex;
5814
+ flex-direction: column;
5815
+ gap: 0.25rem;
5816
+ min-width: 0;
5817
+ line-height: 1.25;
5818
+ overflow-wrap: anywhere;
5819
+ }
5820
+ .form-check-card-content > .form-text {
5821
+ margin: 0;
5822
+ font-size: 0.76562rem;
5823
+ line-height: inherit;
5824
+ color: color-mix(in srgb, var(--moo-muted-foreground) 95%, var(--moo-foreground));
5825
+ }
5826
+ .form-check-card-title {
5827
+ font-weight: 500;
5828
+ }
5829
+ .form-check-card-media {
5830
+ display: grid;
5831
+ place-items: center;
5832
+ flex: 0 0 auto;
5833
+ inline-size: 2.30078rem;
5834
+ aspect-ratio: 1;
5835
+ border: var(--bs-border-width) solid var(--moo-border);
5836
+ border-radius: var(--bs-border-radius-sm);
5837
+ background-color: var(--moo-muted-surface);
5838
+ color: var(--moo-foreground);
5839
+ }
5840
+ .form-check-card-media > span {
5841
+ font-size: 0.76562rem;
5842
+ font-weight: 600;
5843
+ }
5844
+ .form-check-card-media > [data-icon] {
5845
+ width: 0.875rem;
5846
+ height: 0.875rem;
5847
+ }
5848
+
5849
+ /* Switch */
5621
5850
  .form-switch .form-check-input {
5622
5851
  height: 1.15rem;
5623
5852
  }
@@ -5641,6 +5870,8 @@ label.btn {
5641
5870
  :scope[data-bs-theme="dark"] .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
5642
5871
  --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");
5643
5872
  }
5873
+
5874
+ /* Spinner */
5644
5875
  .spinner [data-icon] {
5645
5876
  width: 1rem;
5646
5877
  height: 1rem;
@@ -5650,6 +5881,8 @@ label.btn {
5650
5881
  width: 0.75rem;
5651
5882
  height: 0.75rem;
5652
5883
  }
5884
+
5885
+ /* Accordion */
5653
5886
  .accordion-button::after {
5654
5887
  content: none;
5655
5888
  }
@@ -5694,6 +5927,8 @@ label.btn {
5694
5927
  .card .accordion {
5695
5928
  --bs-accordion-bg: transparent;
5696
5929
  }
5930
+
5931
+ /* Tabs */
5697
5932
  .tabs-list {
5698
5933
  display: inline-flex;
5699
5934
  gap: 0.125rem;
@@ -5797,6 +6032,8 @@ label.btn {
5797
6032
  pointer-events: auto;
5798
6033
  transition-delay: 0s;
5799
6034
  }
6035
+
6036
+ /* Collapsible */
5800
6037
  .collapsible {
5801
6038
  display: flex;
5802
6039
  flex-direction: column;
@@ -5834,6 +6071,8 @@ label.btn {
5834
6071
  color: var(--moo-muted-foreground);
5835
6072
  width: 100%;
5836
6073
  }
6074
+
6075
+ /* Tooltip */
5837
6076
  .tooltip {
5838
6077
  --bs-tooltip-max-width: 20rem;
5839
6078
  --bs-tooltip-padding-x: 0.75rem;
@@ -5888,6 +6127,8 @@ label.btn {
5888
6127
  .tooltip-inner kbd {
5889
6128
  margin-inline-start: 0.25rem;
5890
6129
  }
6130
+
6131
+ /* Popover */
5891
6132
  .popover {
5892
6133
  --bs-popover-border-radius: var(--bs-border-radius-lg);
5893
6134
  --bs-popover-border-color: var(--moo-border);
@@ -5911,6 +6152,8 @@ label.btn {
5911
6152
  .popover .popover-arrow {
5912
6153
  display: none;
5913
6154
  }
6155
+
6156
+ /* Dialog */
5914
6157
  .modal {
5915
6158
  --bs-modal-border-radius: var(--bs-border-radius-xl);
5916
6159
  --bs-modal-border-color: var(--moo-border);
@@ -5965,6 +6208,8 @@ label.btn {
5965
6208
  .modal-footer {
5966
6209
  padding: 1rem;
5967
6210
  }
6211
+
6212
+ /* Sheet */
5968
6213
  .offcanvas.sheet {
5969
6214
  --bs-offcanvas-width: 24rem;
5970
6215
  --bs-offcanvas-border-color: var(--moo-border);
@@ -5978,6 +6223,8 @@ label.btn {
5978
6223
  font-size: 1rem;
5979
6224
  font-weight: 500;
5980
6225
  }
6226
+
6227
+ /* Toast */
5981
6228
  .toast {
5982
6229
  --bs-toast-border-radius: var(--bs-border-radius-lg);
5983
6230
  --bs-toast-border-color: var(--moo-border);
@@ -6069,6 +6316,8 @@ label.btn {
6069
6316
  transition: none;
6070
6317
  }
6071
6318
  }
6319
+
6320
+ /* Field */
6072
6321
  .field {
6073
6322
  display: flex;
6074
6323
  flex-direction: column;
@@ -6115,6 +6364,10 @@ label.btn {
6115
6364
  .field-group > hr {
6116
6365
  margin-block: 0;
6117
6366
  }
6367
+ .field-group.row {
6368
+ flex-direction: row;
6369
+ gap: 0;
6370
+ }
6118
6371
  .field-form {
6119
6372
  display: flex;
6120
6373
  flex-direction: column;
@@ -6140,6 +6393,8 @@ label.btn {
6140
6393
  .field-fieldset + hr {
6141
6394
  opacity: 0.1;
6142
6395
  }
6396
+
6397
+ /* Date Picker */
6143
6398
  .moo-datepicker {
6144
6399
  --moo-datepicker-width: 17.5rem;
6145
6400
  --moo-datepicker-popover-offset: 0.375rem;
@@ -6339,6 +6594,8 @@ label.btn {
6339
6594
  .moo-calendar__preset {
6340
6595
  flex: 0 0 auto;
6341
6596
  }
6597
+
6598
+ /* Combobox */
6342
6599
  .combobox {
6343
6600
  --moo-combobox-width: 12.5rem;
6344
6601
  --moo-combobox-multiple-width: 20rem;
@@ -6554,6 +6811,8 @@ label.btn {
6554
6811
  color: var(--bs-secondary-color);
6555
6812
  text-align: center;
6556
6813
  }
6814
+
6815
+ /* Context Menu */
6557
6816
  .context-menu {
6558
6817
  position: relative;
6559
6818
  }
@@ -6568,6 +6827,8 @@ label.btn {
6568
6827
  ul.context-menu-menu:focus-visible {
6569
6828
  outline: 0;
6570
6829
  }
6830
+
6831
+ /* Data Table */
6571
6832
  .datatable {
6572
6833
  --moo-datatable-min-width: 48rem;
6573
6834
  --moo-datatable-actions-cell-bg: var(--bs-body-bg);
@@ -6589,15 +6850,88 @@ label.btn {
6589
6850
  table-layout: fixed;
6590
6851
  }
6591
6852
  .datatable--responsive-scroll .datatable-table,
6592
- .datatable--responsive-toggle .datatable-table {
6853
+ .datatable--responsive-toggle .datatable-table,
6854
+ .datatable--responsive-auto .datatable-table {
6593
6855
  min-width: var(--moo-datatable-min-width);
6594
6856
  }
6595
- .datatable--responsive-toggle[data-datatable-view="table"] .datatable-card-frame {
6857
+ .datatable--responsive-toggle[data-datatable-view="table"] .datatable-card-frame,
6858
+ .datatable--responsive-auto[data-datatable-view="table"] .datatable-card-frame {
6596
6859
  display: none;
6597
6860
  }
6598
- .datatable--responsive-toggle[data-datatable-view="cards"] .datatable-frame {
6861
+ .datatable--responsive-toggle[data-datatable-view="cards"] .datatable-frame,
6862
+ .datatable--responsive-auto[data-datatable-view="cards"] .datatable-frame {
6599
6863
  display: none;
6600
6864
  }
6865
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"] {
6866
+ --moo-datatable-responsive-breakpoint: 576px;
6867
+ }
6868
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"][data-datatable-view="auto"] .datatable-card-frame {
6869
+ display: none;
6870
+ }
6871
+ @media (max-width: 575.98px) {
6872
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"][data-datatable-view="auto"] .datatable-frame {
6873
+ display: none;
6874
+ }
6875
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="sm"][data-datatable-view="auto"] .datatable-card-frame {
6876
+ display: block;
6877
+ }
6878
+ }
6879
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"] {
6880
+ --moo-datatable-responsive-breakpoint: 768px;
6881
+ }
6882
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"][data-datatable-view="auto"] .datatable-card-frame {
6883
+ display: none;
6884
+ }
6885
+ @media (max-width: 767.98px) {
6886
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"][data-datatable-view="auto"] .datatable-frame {
6887
+ display: none;
6888
+ }
6889
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="md"][data-datatable-view="auto"] .datatable-card-frame {
6890
+ display: block;
6891
+ }
6892
+ }
6893
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"] {
6894
+ --moo-datatable-responsive-breakpoint: 992px;
6895
+ }
6896
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"][data-datatable-view="auto"] .datatable-card-frame {
6897
+ display: none;
6898
+ }
6899
+ @media (max-width: 991.98px) {
6900
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"][data-datatable-view="auto"] .datatable-frame {
6901
+ display: none;
6902
+ }
6903
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="lg"][data-datatable-view="auto"] .datatable-card-frame {
6904
+ display: block;
6905
+ }
6906
+ }
6907
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"] {
6908
+ --moo-datatable-responsive-breakpoint: 1200px;
6909
+ }
6910
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"][data-datatable-view="auto"] .datatable-card-frame {
6911
+ display: none;
6912
+ }
6913
+ @media (max-width: 1199.98px) {
6914
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"][data-datatable-view="auto"] .datatable-frame {
6915
+ display: none;
6916
+ }
6917
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xl"][data-datatable-view="auto"] .datatable-card-frame {
6918
+ display: block;
6919
+ }
6920
+ }
6921
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"] {
6922
+ --moo-datatable-responsive-breakpoint: 1400px;
6923
+ }
6924
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"][data-datatable-view="auto"] .datatable-card-frame {
6925
+ display: none;
6926
+ }
6927
+ @media (max-width: 1399.98px) {
6928
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"][data-datatable-view="auto"] .datatable-frame {
6929
+ display: none;
6930
+ }
6931
+ .datatable--responsive-auto[data-datatable-responsive-breakpoint="xxl"][data-datatable-view="auto"] .datatable-card-frame {
6932
+ display: block;
6933
+ }
6934
+ }
6601
6935
  .datatable-frame {
6602
6936
  border: var(--bs-border-width) solid var(--bs-border-color);
6603
6937
  border-radius: var(--bs-border-radius);
@@ -6645,6 +6979,16 @@ label.btn {
6645
6979
  .datatable-table > :not(caption) > * > * {
6646
6980
  vertical-align: middle;
6647
6981
  }
6982
+ .datatable-col > .btn-link,
6983
+ .datatable-card-title > .btn-link {
6984
+ max-inline-size: 100%;
6985
+ white-space: normal;
6986
+ overflow-wrap: anywhere;
6987
+ text-align: inherit;
6988
+ }
6989
+ .datatable-table > :not(caption) > * > .datatable-col:nth-child(1 of :not(.datatable-col-hidden)) {
6990
+ padding-inline-start: 1rem;
6991
+ }
6648
6992
  .datatable-toolbar {
6649
6993
  display: flex;
6650
6994
  flex-wrap: wrap;
@@ -7065,7 +7409,10 @@ label.btn {
7065
7409
  align-items: center;
7066
7410
  padding: 0.5rem 0.75rem;
7067
7411
  border-bottom: var(--bs-border-width) solid var(--bs-border-color);
7068
- background-color: var(--bs-tertiary-bg);
7412
+ background-color: color-mix(in srgb, var(--moo-surface) 50%, var(--moo-muted-surface));
7413
+ }
7414
+ .datatable-card-header:not(:has(> .datatable-card-select)) {
7415
+ grid-template-columns: minmax(0, 1fr) auto;
7069
7416
  }
7070
7417
  .datatable-card-select {
7071
7418
  display: inline-flex;
@@ -7430,6 +7777,8 @@ label.btn {
7430
7777
  .datatable--release-review {
7431
7778
  --moo-datatable-min-width: 64rem;
7432
7779
  }
7780
+
7781
+ /* Focus and keyboard navigation */
7433
7782
  .form-label,
7434
7783
  .form-check-label {
7435
7784
  user-select: none;
@@ -7500,6 +7849,13 @@ label.btn {
7500
7849
  .was-validated .input-group.has-validation:not(:has(> :is(.valid-feedback, .invalid-feedback, .valid-tooltip, .invalid-tooltip))) > :is(.form-control, .form-select):invalid {
7501
7850
  box-shadow: none;
7502
7851
  }
7852
+
7853
+ /* Utilities */
7854
+
7855
+ /* Border utilities */
7856
+ .border-dashed {
7857
+ border-style: dashed !important;
7858
+ }
7503
7859
  :where( .scroll-fade, .scroll-fade-y, .scroll-fade-x, .scroll-fade-t, .scroll-fade-b, .scroll-fade-l, .scroll-fade-r, .scroll-fade-s, .scroll-fade-e ) {
7504
7860
  --scroll-fade-size: min(12%, 2.5rem);
7505
7861
  --scroll-fade-reveal: 6rem;
@@ -7668,6 +8024,8 @@ label.btn {
7668
8024
  --moo-scroll-fade-e: var(--moo-scroll-fade-e-size);
7669
8025
  }
7670
8026
  }
8027
+
8028
+ /* Application layout */
7671
8029
  .sidebar {
7672
8030
  --moo-sidebar-width: 16rem;
7673
8031
  --moo-sidebar-width-icon: 3rem;
@@ -7738,21 +8096,8 @@ label.btn {
7738
8096
  .sidebar-rail {
7739
8097
  display: none;
7740
8098
  }
7741
- .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar {
7742
- position: relative;
7743
- inset: auto;
7744
- flex: 0 0 auto;
7745
- width: 100%;
7746
- height: auto;
7747
- visibility: visible;
7748
- transform: none;
7749
- }
7750
- .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
7751
- height: auto;
7752
- max-height: none;
7753
- }
7754
8099
  }
7755
- .sidebar[data-side="left"] .sidebar-inner {
8100
+ .sidebar[data-side="left"]:not([data-variant="inset"]) .sidebar-inner {
7756
8101
  border-right: var(--bs-border-width) solid var(--moo-sidebar-border);
7757
8102
  }
7758
8103
  .sidebar[data-side="right"] {
@@ -7764,11 +8109,11 @@ label.btn {
7764
8109
  .wrapper[data-layout="app"]:dir(rtl) > .sidebar[data-side="right"] {
7765
8110
  order: 0;
7766
8111
  }
7767
- .sidebar[data-side="right"] .sidebar-inner {
8112
+ .sidebar[data-side="right"]:not([data-variant="inset"]) .sidebar-inner {
7768
8113
  border-left: var(--bs-border-width) solid var(--moo-sidebar-border);
7769
8114
  }
7770
8115
  @media (min-width: 992px) {
7771
- .sidebar {
8116
+ :where(.wrapper[data-layout="app"][data-sidebar-ready]) > .sidebar {
7772
8117
  transition: flex-basis 0.2s ease, width 0.2s ease;
7773
8118
  }
7774
8119
  .sidebar[data-variant="floating"] .sidebar-inner {
@@ -7808,6 +8153,10 @@ label.btn {
7808
8153
  box-shadow: var(--bs-box-shadow-sm);
7809
8154
  background: var(--bs-body-bg);
7810
8155
  }
8156
+ .wrapper[data-layout="app"]:has(> .sidebar[data-variant="inset"]) > [data-slot="page"] > header {
8157
+ border-top-left-radius: inherit;
8158
+ border-top-right-radius: inherit;
8159
+ }
7811
8160
  .wrapper[data-layout="app"][data-sidebar-state="collapsed"]:has(> .sidebar[data-variant="inset"]) > [data-slot="page"] {
7812
8161
  margin-left: 0.5rem;
7813
8162
  }
@@ -7839,7 +8188,6 @@ label.btn {
7839
8188
  min-height: 0;
7840
8189
  flex: 1 1 auto;
7841
8190
  flex-direction: column;
7842
- overflow-y: auto;
7843
8191
  }
7844
8192
  .wrapper[data-layout="app"] > [data-slot="page"] > header,
7845
8193
  .wrapper[data-layout="app"] > [data-slot="page"] > main,
@@ -7851,6 +8199,7 @@ label.btn {
7851
8199
  min-height: 0;
7852
8200
  flex: 1 1 auto;
7853
8201
  flex-direction: column;
8202
+ overflow-y: auto;
7854
8203
  }
7855
8204
  .wrapper[data-layout="app"] > [data-slot="page"] > main > :is( .container, .container-sm, .container-md, .container-lg, .container-xl, .container-xxl, .container-fluid ) {
7856
8205
  display: flex;
@@ -7868,7 +8217,238 @@ label.btn {
7868
8217
  .wrapper[data-layout="app"][data-shell-mode="contained"] > [data-slot="page"] {
7869
8218
  overflow: visible;
7870
8219
  }
8220
+ .wrapper[data-layout="app"][data-shell-mode="contained"] > [data-slot="page"] > main {
8221
+ overflow: visible;
8222
+ }
8223
+ }
8224
+ [data-page-container] {
8225
+ container: moo-page / inline-size;
8226
+ }
8227
+ [data-page-container] [data-page-show-from] {
8228
+ display: none !important;
8229
+ }
8230
+ @container moo-page (min-width: 576px) {
8231
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="1"] {
8232
+ width: 8.33333%;
8233
+ }
8234
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="2"] {
8235
+ width: 16.66667%;
8236
+ }
8237
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="3"] {
8238
+ width: 25%;
8239
+ }
8240
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="4"] {
8241
+ width: 33.33333%;
8242
+ }
8243
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="5"] {
8244
+ width: 41.66667%;
8245
+ }
8246
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="6"] {
8247
+ width: 50%;
8248
+ }
8249
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="7"] {
8250
+ width: 58.33333%;
8251
+ }
8252
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="8"] {
8253
+ width: 66.66667%;
8254
+ }
8255
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="9"] {
8256
+ width: 75%;
8257
+ }
8258
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="10"] {
8259
+ width: 83.33333%;
8260
+ }
8261
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="11"] {
8262
+ width: 91.66667%;
8263
+ }
8264
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-sm="12"] {
8265
+ width: 100%;
8266
+ }
8267
+ [data-page-container] [data-page-show-from="sm"] {
8268
+ display: block !important;
8269
+ }
8270
+ [data-page-container] [data-page-hide-from="sm"] {
8271
+ display: none !important;
8272
+ }
8273
+ }
8274
+ @container moo-page (min-width: 768px) {
8275
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="1"] {
8276
+ width: 8.33333%;
8277
+ }
8278
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="2"] {
8279
+ width: 16.66667%;
8280
+ }
8281
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="3"] {
8282
+ width: 25%;
8283
+ }
8284
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="4"] {
8285
+ width: 33.33333%;
8286
+ }
8287
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="5"] {
8288
+ width: 41.66667%;
8289
+ }
8290
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="6"] {
8291
+ width: 50%;
8292
+ }
8293
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="7"] {
8294
+ width: 58.33333%;
8295
+ }
8296
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="8"] {
8297
+ width: 66.66667%;
8298
+ }
8299
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="9"] {
8300
+ width: 75%;
8301
+ }
8302
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="10"] {
8303
+ width: 83.33333%;
8304
+ }
8305
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="11"] {
8306
+ width: 91.66667%;
8307
+ }
8308
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-md="12"] {
8309
+ width: 100%;
8310
+ }
8311
+ [data-page-container] [data-page-show-from="md"] {
8312
+ display: block !important;
8313
+ }
8314
+ [data-page-container] [data-page-hide-from="md"] {
8315
+ display: none !important;
8316
+ }
8317
+ }
8318
+ @container moo-page (min-width: 992px) {
8319
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="1"] {
8320
+ width: 8.33333%;
8321
+ }
8322
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="2"] {
8323
+ width: 16.66667%;
8324
+ }
8325
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="3"] {
8326
+ width: 25%;
8327
+ }
8328
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="4"] {
8329
+ width: 33.33333%;
8330
+ }
8331
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="5"] {
8332
+ width: 41.66667%;
8333
+ }
8334
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="6"] {
8335
+ width: 50%;
8336
+ }
8337
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="7"] {
8338
+ width: 58.33333%;
8339
+ }
8340
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="8"] {
8341
+ width: 66.66667%;
8342
+ }
8343
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="9"] {
8344
+ width: 75%;
8345
+ }
8346
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="10"] {
8347
+ width: 83.33333%;
8348
+ }
8349
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="11"] {
8350
+ width: 91.66667%;
8351
+ }
8352
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-lg="12"] {
8353
+ width: 100%;
8354
+ }
8355
+ [data-page-container] [data-page-show-from="lg"] {
8356
+ display: block !important;
8357
+ }
8358
+ [data-page-container] [data-page-hide-from="lg"] {
8359
+ display: none !important;
8360
+ }
7871
8361
  }
8362
+ @container moo-page (min-width: 1200px) {
8363
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="1"] {
8364
+ width: 8.33333%;
8365
+ }
8366
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="2"] {
8367
+ width: 16.66667%;
8368
+ }
8369
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="3"] {
8370
+ width: 25%;
8371
+ }
8372
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="4"] {
8373
+ width: 33.33333%;
8374
+ }
8375
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="5"] {
8376
+ width: 41.66667%;
8377
+ }
8378
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="6"] {
8379
+ width: 50%;
8380
+ }
8381
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="7"] {
8382
+ width: 58.33333%;
8383
+ }
8384
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="8"] {
8385
+ width: 66.66667%;
8386
+ }
8387
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="9"] {
8388
+ width: 75%;
8389
+ }
8390
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="10"] {
8391
+ width: 83.33333%;
8392
+ }
8393
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="11"] {
8394
+ width: 91.66667%;
8395
+ }
8396
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xl="12"] {
8397
+ width: 100%;
8398
+ }
8399
+ [data-page-container] [data-page-show-from="xl"] {
8400
+ display: block !important;
8401
+ }
8402
+ [data-page-container] [data-page-hide-from="xl"] {
8403
+ display: none !important;
8404
+ }
8405
+ }
8406
+ @container moo-page (min-width: 1400px) {
8407
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="1"] {
8408
+ width: 8.33333%;
8409
+ }
8410
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="2"] {
8411
+ width: 16.66667%;
8412
+ }
8413
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="3"] {
8414
+ width: 25%;
8415
+ }
8416
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="4"] {
8417
+ width: 33.33333%;
8418
+ }
8419
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="5"] {
8420
+ width: 41.66667%;
8421
+ }
8422
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="6"] {
8423
+ width: 50%;
8424
+ }
8425
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="7"] {
8426
+ width: 58.33333%;
8427
+ }
8428
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="8"] {
8429
+ width: 66.66667%;
8430
+ }
8431
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="9"] {
8432
+ width: 75%;
8433
+ }
8434
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="10"] {
8435
+ width: 83.33333%;
8436
+ }
8437
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="11"] {
8438
+ width: 91.66667%;
8439
+ }
8440
+ [data-page-container] .row[data-layout="page-grid"] > [data-page-col-xxl="12"] {
8441
+ width: 100%;
8442
+ }
8443
+ [data-page-container] [data-page-show-from="xxl"] {
8444
+ display: block !important;
8445
+ }
8446
+ [data-page-container] [data-page-hide-from="xxl"] {
8447
+ display: none !important;
8448
+ }
8449
+ }
8450
+
8451
+ /* Form themes */
7872
8452
  :scope[data-bs-theme="light"] .form-select {
7873
8453
  --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
7874
8454
  }
@@ -7881,6 +8461,8 @@ label.btn {
7881
8461
  :scope[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus) {
7882
8462
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");
7883
8463
  }
8464
+
8465
+ /* Overlay backdrops */
7884
8466
  .modal-backdrop,
7885
8467
  .offcanvas-backdrop {
7886
8468
  --bs-backdrop-opacity: var(--moo-overlay-backdrop-opacity, 1);
@@ -7917,4 +8499,16 @@ label.btn {
7917
8499
  .offcanvas-backdrop.show::before {
7918
8500
  animation: moo-overlay-backdrop-enter var(--moo-overlay-motion-duration, 0.3s) ease-out both;
7919
8501
  }
8502
+
8503
+ /* Typography */
8504
+ :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) {
8505
+ font-family: var(--moo-heading-font-family, var(--bs-body-font-family));
8506
+ }
8507
+ :is(small, .small) {
8508
+ font-size: var(--moo-small-font-size);
8509
+ }
8510
+ p {
8511
+ margin-top: var(--moo-paragraph-margin-top);
8512
+ margin-bottom: var(--moo-paragraph-margin-bottom);
8513
+ }
7920
8514
  }