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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/ASSET_LICENSE.md +3 -1
  2. package/README.md +51 -123
  3. package/certification.json +14 -2
  4. package/dist/assets/css/moo-ui.css +55 -15
  5. package/dist/assets/css/moo-ui.min.css +3 -3
  6. package/dist/assets/css/moo.css +49 -15
  7. package/dist/assets/css/moo.min.css +3 -3
  8. package/dist/js/chart.js +1 -1
  9. package/dist/js/chart.min.js +1 -1
  10. package/dist/js/combobox.js +71 -18
  11. package/dist/js/context-menu.js +1 -1
  12. package/dist/js/datatable.js +1 -1
  13. package/dist/js/datepicker.js +1 -1
  14. package/dist/js/datepicker.min.js +1 -1
  15. package/dist/js/moo-ui.js +18950 -0
  16. package/dist/js/moo-ui.min.js +27 -0
  17. package/dist/js/sidebar.js +1 -1
  18. package/dist/js/slider.js +1 -1
  19. package/package.json +12 -4
  20. package/scss/_components.scss +73 -0
  21. package/scss/_settings.scss +8 -0
  22. package/scss/components/_accordion.scss +59 -0
  23. package/scss/components/_alert.scss +94 -0
  24. package/scss/components/_avatar.scss +154 -0
  25. package/scss/components/_badge.scss +33 -0
  26. package/scss/components/_breadcrumb.scss +130 -0
  27. package/scss/components/_button.scss +228 -0
  28. package/scss/components/_button_group.scss +51 -0
  29. package/scss/components/_card.scss +142 -0
  30. package/scss/components/_checkbox.scss +115 -0
  31. package/scss/components/_close_button.scss +59 -0
  32. package/scss/components/_collapsible.scss +43 -0
  33. package/scss/components/_combobox.scss +258 -0
  34. package/scss/components/_context-menu.scss +28 -0
  35. package/scss/components/_datatable.scss +1082 -0
  36. package/scss/components/_datepicker.scss +236 -0
  37. package/scss/components/_dialog.scss +66 -0
  38. package/scss/components/_dropdown.scss +202 -0
  39. package/scss/components/_field.scss +125 -0
  40. package/scss/components/_input.scss +35 -0
  41. package/scss/components/_input_group.scss +201 -0
  42. package/scss/components/_kbd.scss +10 -0
  43. package/scss/components/_menubar.scss +16 -0
  44. package/scss/components/_navigation.scss +41 -0
  45. package/scss/components/_pagination.scss +70 -0
  46. package/scss/components/_popover.scss +47 -0
  47. package/scss/components/_progress.scss +7 -0
  48. package/scss/components/_radio_group.scss +9 -0
  49. package/scss/components/_select.scss +7 -0
  50. package/scss/components/_separator.scss +15 -0
  51. package/scss/components/_sheet.scss +32 -0
  52. package/scss/components/_sidebar.scss +7 -0
  53. package/scss/components/_skeleton.scss +17 -0
  54. package/scss/components/_slider.scss +214 -0
  55. package/scss/components/_spinner.scss +17 -0
  56. package/scss/components/_switch.scss +25 -0
  57. package/scss/components/_table.scss +7 -0
  58. package/scss/components/_tabs.scss +139 -0
  59. package/scss/components/_textarea.scss +7 -0
  60. package/scss/components/_toast.scss +119 -0
  61. package/scss/components/_toggle_group.scss +19 -0
  62. package/scss/components/_tooltip.scss +83 -0
  63. package/scss/components/sidebar/_collapsed.scss +187 -0
  64. package/scss/components/sidebar/_identity.scss +72 -0
  65. package/scss/components/sidebar/_inset.scss +59 -0
  66. package/scss/components/sidebar/_layout.scss +176 -0
  67. package/scss/components/sidebar/_menus.scss +236 -0
  68. package/scss/foundations/_core_global_primitives.scss +5 -0
  69. package/scss/foundations/_core_state_layer.scss +25 -0
  70. package/scss/foundations/_focus.scss +139 -0
  71. package/scss/foundations/_overlay_backdrop.scss +19 -0
  72. package/scss/moo-core.scss +47 -0
  73. package/scss/moo-ui.scss +50 -0
  74. package/scss/settings/_bootstrap_overrides.scss +11 -0
  75. package/scss/settings/_component_variables.scss +479 -0
  76. package/scss/settings/_forms.scss +65 -0
  77. package/scss/settings/_palette.scss +132 -0
  78. package/scss/themes/_scoped_core.scss +239 -0
  79. package/scss/themes/_standalone_root.scss +117 -0
  80. package/scss/utilities/_scroll_fade.scss +193 -0
  81. package/scss/utilities/_scroll_fade_primitives.scss +43 -0
  82. package/THIRD_PARTY_NOTICES.md +0 -53
package/ASSET_LICENSE.md CHANGED
@@ -14,4 +14,6 @@ product, site, template, library, training dataset, or marketing asset without
14
14
  prior written permission from WPMoo.
15
15
 
16
16
  Third-party assets remain under their own licenses. See the
17
- [version-pinned third-party notices](https://github.com/wpmoo-org/ui/blob/v1.0.0-rc.3/THIRD_PARTY_NOTICES.md).
17
+ [version-pinned third-party notices](https://github.com/wpmoo-org/ui/blob/v1.0.0-rc.4/THIRD_PARTY_NOTICES.md).
18
+ Those notices are repository-only and are intentionally not shipped in the npm
19
+ package.
package/README.md CHANGED
@@ -24,18 +24,25 @@
24
24
 
25
25
  # Moo UI
26
26
 
27
- Moo UI preserves Bootstrap markup, variables, and JavaScript plugins wherever
28
- Bootstrap already provides the contract. For patterns Bootstrap does not
29
- provide, Moo UI adds small documented extensions, including optional ESM for
30
- Combobox, Context Menu, DataTable, Sidebar, Chart, Datepicker, and Slider.
31
-
32
- - **CSS-first.** Most components need only the stylesheet and ordinary HTML.
33
- - **Bootstrap owns native behavior.** Keep using Bootstrap's bundle for its
34
- Dropdown, Modal, Offcanvas, Tooltip, Popover, Toast, and other plugins.
35
- - **Moo UI extends verified gaps.** Optional Moo UI ESM is explicit and
36
- side-effect-free; importing it never scans the document automatically.
37
- - **Adopt all at once or gradually.** Use the full Bootstrap build or scope the
38
- Moo UI component layer to a `.moo-ui` boundary.
27
+ Moo UI gives Bootstrap 5.3 applications a calmer, shadcn-inspired product
28
+ surface without asking teams to abandon the markup, variables, and plugin
29
+ contracts they already use.
30
+
31
+ It is built for server-rendered products, admin screens, dashboards, and SaaS
32
+ interfaces where Bootstrap remains the public contract but the default visual
33
+ language needs to feel more current.
34
+
35
+ - **Bootstrap-native.** Keep familiar classes, form markup, layout utilities,
36
+ and Bootstrap JavaScript where Bootstrap already owns the behavior.
37
+ - **CSS-first.** Most components need only one stylesheet and ordinary HTML.
38
+ - **Gradual when needed.** Use the full build or scope Moo UI inside a
39
+ `.moo-ui` boundary while an existing Bootstrap app migrates piece by piece.
40
+ - **Explicit runtime.** Optional Moo UI behavior loads through ESM entrypoints
41
+ only when a component needs behavior Bootstrap does not provide.
42
+
43
+ This branch prepares `@wpmoo/ui@1.0.0-rc.4` for release. Until that
44
+ npm tag is published, use npm's current published package or the floating
45
+ quick demo below.
39
46
 
40
47
  ## Try It in 30 Seconds
41
48
 
@@ -51,23 +58,6 @@ The quick demo intentionally follows the floating npm tag:
51
58
  `moo-ui.css` is a complete Bootstrap CSS build with Moo UI defaults. Use it
52
59
  instead of another Bootstrap stylesheet, not in addition to one.
53
60
 
54
- ## Runtime Ownership
55
-
56
- | Surface | Runtime owner | What to load |
57
- | --- | --- | --- |
58
- | Static HTML and CSS components | Browser + Bootstrap markup | `moo-ui.css`, or Bootstrap CSS followed by scoped `moo.css` |
59
- | Dropdown, Modal, Offcanvas, Tooltip, Popover, Toast, and other Bootstrap plugins | Bootstrap | Bootstrap's JavaScript bundle and documented initialization |
60
- | Combobox | Optional Moo UI ESM | `@wpmoo/ui/combobox.js`, then explicit initialization |
61
- | Context Menu pointer and keyboard invocation | Optional Moo UI ESM, composed with Bootstrap Dropdown | `@wpmoo/ui/context-menu.js`, then explicit initialization |
62
- | DataTable sorting, filtering, selection, pagination, and responsive card sync | Optional Moo UI ESM, composed with Bootstrap Table and controls | `@wpmoo/ui/datatable.js`, then explicit initialization |
63
- | Sidebar state and responsive coordination | Optional Moo UI ESM, composed with Bootstrap plugins | `@wpmoo/ui/sidebar.js`, then explicit initialization |
64
- | Chart rendering with light/dark theme toggle | Optional Moo UI ESM, self-contained bundle (Chart.js 4.5.1 bundled) | `@wpmoo/ui/chart.js`, then explicit initialization |
65
- | Datepicker with shadcn-like trigger/popover/calendar | Optional Moo UI ESM, self-contained (no third-party runtime) | `@wpmoo/ui/datepicker.js`, then explicit initialization |
66
- | Slider with native range input semantics | Optional Moo UI ESM, no third-party runtime | `@wpmoo/ui/slider.js`, then explicit initialization |
67
-
68
- Moo UI does not replace Bootstrap plugins and does not publish a mandatory
69
- aggregate JavaScript runtime.
70
-
71
61
  ## Install
72
62
 
73
63
  ```bash
@@ -100,71 +90,23 @@ import "bootstrap/dist/js/bootstrap.bundle.min.js"; // only when plugins are use
100
90
  </div>
101
91
  ```
102
92
 
103
- ### Optional Moo UI ESM
104
-
105
- Initialize only the documented behavior gaps you use:
93
+ ### Optional runtime
106
94
 
107
95
  ```js
108
- import Combobox from "@wpmoo/ui/combobox.js";
109
- import ContextMenu from "@wpmoo/ui/context-menu.js";
110
- import DataTable from "@wpmoo/ui/datatable.js";
111
- import Sidebar from "@wpmoo/ui/sidebar.js";
112
- import Chart from "@wpmoo/ui/chart.js";
113
- import Datepicker from "@wpmoo/ui/datepicker.js";
114
- import Slider from "@wpmoo/ui/slider.js";
115
-
116
- Combobox.getOrCreateInstance(document.querySelector(".combobox"));
117
- ContextMenu.getOrCreateInstance(document.querySelector(".context-menu"));
118
- DataTable.getOrCreateInstance(document.querySelector(".datatable"));
119
- Sidebar.getOrCreateInstance(document.querySelector('[data-slot="sidebar-wrapper"]'));
120
- Chart.getOrCreateInstance(document.querySelector(".chart"));
121
- Datepicker.getOrCreateInstance(document.querySelector("[data-datepicker]"));
122
- Slider.getOrCreateInstance(document.querySelector("[data-slider]"));
96
+ import MooUI from "@wpmoo/ui/moo-ui.js";
97
+
98
+ const combobox = document.querySelector(".combobox");
99
+ if (combobox) {
100
+ MooUI.Combobox.getOrCreateInstance(combobox);
101
+ }
123
102
  ```
124
103
 
125
- See the [Installation guide](https://ui.wpmoo.org/installation/) for CDN
126
- recipes, load order, and troubleshooting.
127
-
128
- ## Choose an Adoption Path
129
-
130
- | Situation | Recommended path |
131
- | --- | --- |
132
- | New page or whole application | Replace Bootstrap CSS with `moo-ui.css`. |
133
- | Existing Bootstrap application | Load `moo.css` after Bootstrap CSS and add `.moo-ui` around migrated regions. |
134
- | Static page with no interactive plugins | Load CSS only. |
135
- | Page using Bootstrap plugins | Keep Bootstrap's bundle and its documented initialization. |
136
- | Page using Combobox, Context Menu, DataTable, or Sidebar | Add only the corresponding optional Moo UI ESM module. |
137
- | Page using Chart, Datepicker, or Slider | Add only the corresponding optional Moo UI ESM module. Chart bundles its third-party runtime; Datepicker and Slider are self-contained with no third-party dependency. |
138
-
139
- ## Public Package Surface
140
-
141
- `@wpmoo/ui` exports exactly these public entrypoints:
142
-
143
- | Export | Purpose |
144
- | --- | --- |
145
- | `@wpmoo/ui/moo-ui.css` | Full expanded CSS build |
146
- | `@wpmoo/ui/moo-ui.min.css` | Full minified CSS build |
147
- | `@wpmoo/ui/moo.css` | Scoped expanded component layer for `.moo-ui` |
148
- | `@wpmoo/ui/moo.min.css` | Scoped minified component layer |
149
- | `@wpmoo/ui/combobox.js` | Optional Combobox ESM lifecycle |
150
- | `@wpmoo/ui/context-menu.js` | Optional Context Menu ESM lifecycle |
151
- | `@wpmoo/ui/datatable.js` | Optional DataTable ESM lifecycle |
152
- | `@wpmoo/ui/chart.js` | Optional Chart ESM lifecycle (Chart.js 4.5.1 bundled) |
153
- | `@wpmoo/ui/chart.min.js` | Minified Chart bundle (artifact variant of chart.js) |
154
- | `@wpmoo/ui/datepicker.js` | Optional Datepicker ESM lifecycle (self-contained, no third-party runtime) |
155
- | `@wpmoo/ui/datepicker.min.js` | Minified Datepicker bundle (artifact variant of datepicker.js) |
156
- | `@wpmoo/ui/slider.js` | Optional Slider ESM lifecycle (native range input, no third-party runtime) |
157
- | `@wpmoo/ui/sidebar.js` | Optional Sidebar ESM lifecycle |
158
- | `@wpmoo/ui/scss/config` | Public Sass variable allow-list (LibSass `@import`) |
159
- | `@wpmoo/ui/certification.json` | Versioned support/evidence manifest |
160
- | `@wpmoo/ui/package.json` | Package metadata |
161
-
162
- The tarball also contains `README.md`, `LICENSE`, `ASSET_LICENSE.md`, and
163
- THIRD_PARTY_NOTICES.md. It does not publish catalog templates, preview
164
- artwork, catalog JavaScript, or internal SCSS partials beyond the public Sass
165
- config. Internal Sass partials and Jinja macros are repository build tools, not npm APIs.
166
-
167
- ## Why Bootstrap Teams Try It
104
+ The runtime bundle is optional and side-effect-free. Import the aggregate
105
+ `@wpmoo/ui/moo-ui.js` entrypoint, or import only the component module you use.
106
+ See the [Installation guide](https://ui.wpmoo.org/installation/) for npm, CDN,
107
+ Sass, Bootstrap JavaScript, and ESM recipes.
108
+
109
+ ## Why Teams Try It
168
110
 
169
111
  - Keep server-rendered HTML, Bootstrap classes, and familiar plugin behavior.
170
112
  - Apply a restrained product rhythm to forms, overlays, navigation, data
@@ -172,15 +114,15 @@ config. Internal Sass partials and Jinja macros are repository build tools, not
172
114
  - Inspect static rendered examples and copy the resulting HTML contracts.
173
115
  - Start with one scoped region or replace the full stylesheet after review.
174
116
 
175
- Representative components include Button, Field, Table, DataTable, Dialog,
176
- Toast, Sheet, Combobox, Context Menu, and Sidebar. Browse the [component catalog](https://ui.wpmoo.org/components/)
177
- and composed [blocks](https://ui.wpmoo.org/blocks/).
117
+ Browse the [component catalog](https://ui.wpmoo.org/components/), composed
118
+ [blocks](https://ui.wpmoo.org/blocks/), and full
119
+ [examples](https://ui.wpmoo.org/examples/).
178
120
 
179
121
  ## Designed, Not Just Restyled
180
122
 
181
- The README uses original WPMoo preview artwork stored under
182
- `site/static/images/`; those files are source assets for the public catalog and
183
- are not part of the npm package.
123
+ Moo UI is tuned for product interfaces: compact controls, quiet cards,
124
+ predictable overlays, readable forms, and data-heavy screens that still feel
125
+ calm.
184
126
 
185
127
  <p align="center">
186
128
  <a href="https://ui.wpmoo.org/components/button/"><picture><source media="(prefers-color-scheme: dark)" srcset="https://ui.wpmoo.org/assets/images/readme/button-dark.svg"><img src="https://ui.wpmoo.org/assets/images/readme/button-light.svg" alt="Button preview" width="31%"></picture></a>
@@ -190,41 +132,27 @@ are not part of the npm package.
190
132
 
191
133
  ## Status And Support
192
134
 
193
- Moo UI is at the `1.0.0-rc.3` release candidate. Current package: `@wpmoo/ui@1.0.0-rc.3`. The
194
- package's certification manifest currently has `preview` status; catalog
195
- availability is WPMoo-maintained preview evidence, not independent or
196
- accredited certification. Read [Support & Evidence](https://ui.wpmoo.org/support/)
197
- for the Bootstrap range, browser policy, maturity definitions, limitations, and
198
- release evidence. Complete release notes are on
135
+ Moo UI is preparing the `1.0.0-rc.4` release candidate. Public exports, package boundaries, browser support, and release evidence live in [Support & Evidence](https://ui.wpmoo.org/support/).
136
+ Complete release notes are on
199
137
  [GitHub Releases](https://github.com/wpmoo-org/ui/releases).
200
138
 
201
139
  ## Contributing
202
140
 
203
141
  Small documentation corrections, reduced reproductions, accessibility checks,
204
- and bounded component improvements are welcome. Start with
205
- [`CONTRIBUTING.md`](CONTRIBUTING.md), choose an
206
- [issue type](https://github.com/wpmoo-org/ui/issues/new/choose), and review the
207
- [Code of Conduct](CODE_OF_CONDUCT.md) and [security policy](SECURITY.md).
142
+ and bounded component improvements are welcome. The
143
+ [Contributing guide](https://ui.wpmoo.org/contributing/) covers local
144
+ development, project boundaries, workflow, and issue types.
208
145
 
209
146
  ## Repository Layout And Development
210
147
 
211
- Moo UI Core is published from the repository root. Core source and package
212
- outputs live outside `site/`; `dist/` is the package build. The `site/` tree
213
- owns ui.wpmoo.org documentation, catalog chrome, public metadata, and protected
214
- preview artwork; it builds to `site-dist/`.
215
-
216
- ```bash
217
- .venv/bin/python build.py
218
- .venv/bin/python dev.py
219
- .venv/bin/python -m unittest discover -s tests -v
220
- ```
221
-
222
- Browse the local catalog at `http://localhost:4173/` while `dev.py` runs.
148
+ Development setup and repository boundary notes live in the
149
+ [Contributing guide](https://ui.wpmoo.org/contributing/). Consumer install
150
+ paths live in the [Installation guide](https://ui.wpmoo.org/installation/).
223
151
 
224
152
  ## Licensing
225
153
 
226
- Moo UI source code is MIT licensed. WPMoo-generated visual assets under
227
- `site/static/images/` remain separately protected as described in
228
- `ASSET_LICENSE.md`. Vendored dependencies retain their original licenses; see
229
- `LICENSE`, `ASSET_LICENSE.md`, and the
230
- [version-pinned third-party notices](https://github.com/wpmoo-org/ui/blob/v1.0.0-rc.3/THIRD_PARTY_NOTICES.md).
154
+ Moo UI source code is MIT licensed. License details live in
155
+ [LICENSE](LICENSE) and the [License page](https://ui.wpmoo.org/license/).
156
+ Asset terms live in [ASSET_LICENSE.md](ASSET_LICENSE.md); dependency notices
157
+ live in the
158
+ [version-pinned third-party notices](https://github.com/wpmoo-org/ui/blob/v1.0.0-rc.4/THIRD_PARTY_NOTICES.md).
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "0.1",
3
3
  "status": "preview",
4
- "coreVersion": "1.0.0-rc.3",
4
+ "coreVersion": "1.0.0-rc.4",
5
5
  "bootstrap": {
6
6
  "canonicalVersion": "5.3.3",
7
7
  "targetRange": ">=5.3.0 <5.4",
@@ -21,6 +21,8 @@
21
21
  "./moo.min.css"
22
22
  ],
23
23
  "esm": [
24
+ "./moo-ui.js",
25
+ "./moo-ui.min.js",
24
26
  "./combobox.js",
25
27
  "./sidebar.js",
26
28
  "./context-menu.js",
@@ -31,7 +33,17 @@
31
33
  "./datepicker.js",
32
34
  "./datepicker.min.js"
33
35
  ],
34
- "sass": ["./scss/config"]
36
+ "sass": [
37
+ "./scss/config",
38
+ "./scss/moo-ui",
39
+ "./scss/moo-core",
40
+ "./scss/components",
41
+ "./scss/settings"
42
+ ],
43
+ "metadata": [
44
+ "./certification.json",
45
+ "./package.json"
46
+ ]
35
47
  },
36
48
  "supportPolicy": "https://github.com/wpmoo-org/ui/blob/main/SUPPORT.md"
37
49
  }
@@ -12430,6 +12430,11 @@ textarea.form-control-lg {
12430
12430
  background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;
12431
12431
  }
12432
12432
 
12433
+ .form-label,
12434
+ .form-check-label {
12435
+ user-select: none;
12436
+ }
12437
+
12433
12438
  :is(.btn, a, button, summary, [tabindex]):not(input, textarea, select):focus-visible,
12434
12439
  :is(.form-control, .form-select, .form-check-input):focus-visible {
12435
12440
  border-color: var(--moo-ring);
@@ -12717,6 +12722,24 @@ kbd {
12717
12722
  min-height: calc(2rem + var(--bs-border-width) * 2);
12718
12723
  }
12719
12724
 
12725
+ .form-control[type="file"]:not(.form-control-sm, .form-control-lg)::file-selector-button {
12726
+ min-height: calc(2rem - var(--bs-border-width) * 2);
12727
+ }
12728
+
12729
+ .form-control[type="time"] {
12730
+ appearance: none;
12731
+ position: relative;
12732
+ }
12733
+
12734
+ .form-control[type="time"]::-webkit-calendar-picker-indicator {
12735
+ position: absolute;
12736
+ inset: 0;
12737
+ width: 100%;
12738
+ height: 100%;
12739
+ opacity: 0;
12740
+ cursor: pointer;
12741
+ }
12742
+
12720
12743
  .form-control:disabled,
12721
12744
  .form-select:disabled {
12722
12745
  opacity: var(--moo-disabled-control-opacity);
@@ -13197,9 +13220,9 @@ label.btn {
13197
13220
  }
13198
13221
 
13199
13222
  .card {
13200
- --bs-card-bg: var(--moo-surface);
13223
+ --bs-card-bg: color-mix(in srgb, var(--bs-secondary-bg) 5%, var(--bs-body-bg));
13201
13224
  --bs-card-color: var(--moo-foreground);
13202
- --bs-card-border-color: var(--moo-border);
13225
+ --bs-card-border-color: color-mix(in srgb, var(--bs-body-color) 10%, transparent);
13203
13226
  --bs-card-border-radius: var(--bs-border-radius-xl);
13204
13227
  --bs-card-inner-border-radius: calc(var(--bs-card-border-radius) - var(--bs-card-border-width));
13205
13228
  --bs-card-box-shadow: var(--bs-box-shadow-sm);
@@ -13207,6 +13230,7 @@ label.btn {
13207
13230
  --bs-card-cap-color: var(--moo-foreground);
13208
13231
  --bs-card-title-color: var(--moo-foreground);
13209
13232
  --bs-card-subtitle-color: var(--moo-muted-foreground);
13233
+ --moo-card-footer-bg: color-mix(in srgb, var(--bs-secondary-bg) 20%, var(--bs-body-bg));
13210
13234
  --moo-card-spacing: 1rem;
13211
13235
  gap: var(--moo-card-spacing);
13212
13236
  padding-block: var(--moo-card-spacing);
@@ -13222,6 +13246,11 @@ label.btn {
13222
13246
  padding-block-start: 0;
13223
13247
  }
13224
13248
 
13249
+ .card[data-bs-theme="dark"], :where([data-bs-theme="dark"]) .card:not([data-bs-theme="light"]):not([data-bs-theme="light"] *) {
13250
+ --bs-card-bg: color-mix(in srgb, var(--bs-secondary-bg) 30%, var(--bs-body-bg));
13251
+ --moo-card-footer-bg: color-mix(in srgb, var(--bs-secondary-bg) 50%, var(--bs-body-bg));
13252
+ }
13253
+
13225
13254
  .card--sm {
13226
13255
  --moo-card-spacing: 0.75rem;
13227
13256
  }
@@ -13264,7 +13293,7 @@ label.btn {
13264
13293
  gap: 0.5rem;
13265
13294
  padding: var(--moo-card-spacing);
13266
13295
  border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);
13267
- background-color: var(--moo-muted-surface);
13296
+ background-color: var(--moo-card-footer-bg);
13268
13297
  }
13269
13298
 
13270
13299
  .card-img-top {
@@ -14777,6 +14806,13 @@ label.btn {
14777
14806
  width: max-content;
14778
14807
  }
14779
14808
 
14809
+ .slider--vertical [data-slider-output] {
14810
+ display: inline-block;
14811
+ min-width: 3ch;
14812
+ text-align: end;
14813
+ font-variant-numeric: tabular-nums;
14814
+ }
14815
+
14780
14816
  .slider--vertical .slider-track {
14781
14817
  justify-content: center;
14782
14818
  justify-self: center;
@@ -15537,9 +15573,8 @@ hr {
15537
15573
  width: 100%;
15538
15574
  }
15539
15575
 
15540
- .moo-datepicker-time-row .moo-datepicker {
15541
- flex: 1 1 12rem;
15542
- width: auto;
15576
+ .moo-datepicker-time-row > :first-child {
15577
+ min-width: 0;
15543
15578
  }
15544
15579
 
15545
15580
  .moo-datepicker-time {
@@ -15910,10 +15945,11 @@ hr {
15910
15945
  }
15911
15946
 
15912
15947
  .combobox-option {
15913
- display: flex;
15948
+ display: grid;
15949
+ grid-template-columns: minmax(0, 1fr) 1rem;
15914
15950
  align-items: center;
15915
15951
  gap: 0.5rem;
15916
- padding-inline-end: 2rem;
15952
+ padding-inline-end: 0.375rem;
15917
15953
  line-height: var(--moo-combobox-option-line-height);
15918
15954
  }
15919
15955
 
@@ -15924,10 +15960,20 @@ hr {
15924
15960
  flex-direction: column;
15925
15961
  }
15926
15962
 
15963
+ .combobox:not(.combobox--multiple) .combobox-option[aria-selected="true"],
15927
15964
  .combobox-option[aria-current="true"] {
15928
15965
  background-color: var(--bs-dropdown-link-hover-bg);
15929
15966
  }
15930
15967
 
15968
+ .combobox:not(.combobox--multiple)
15969
+ .combobox-menu:has(.combobox-option:not([aria-selected="true"]):hover)
15970
+ .combobox-option[aria-selected="true"]:not(:hover):not([aria-current="true"]),
15971
+ .combobox:not(.combobox--multiple)
15972
+ .combobox-menu:has(.combobox-option[aria-current="true"]:not([aria-selected="true"]))
15973
+ .combobox-option[aria-selected="true"]:not([aria-current="true"]) {
15974
+ background-color: transparent;
15975
+ }
15976
+
15931
15977
  .combobox-option[aria-selected="true"] {
15932
15978
  font-weight: 500;
15933
15979
  }
@@ -15953,8 +15999,7 @@ hr {
15953
15999
 
15954
16000
  .combobox-option__check {
15955
16001
  display: inline-flex;
15956
- flex: 0 0 auto;
15957
- margin-inline-start: auto;
16002
+ justify-self: end;
15958
16003
  visibility: hidden;
15959
16004
  }
15960
16005
 
@@ -16982,11 +17027,6 @@ ul.context-menu-menu:focus-visible {
16982
17027
  --moo-datatable-min-width: 64rem;
16983
17028
  }
16984
17029
 
16985
- .form-label,
16986
- .form-check-label {
16987
- user-select: none;
16988
- }
16989
-
16990
17030
  .modal-backdrop,
16991
17031
  .offcanvas-backdrop {
16992
17032
  --bs-backdrop-opacity: var(--moo-overlay-backdrop-opacity, 1);