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

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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Moo UI sidebar.js v1.0.0-rc.4 (https://ui.wpmoo.org/)
2
+ * Moo UI sidebar.js v1.0.0-rc.5 (https://ui.wpmoo.org/)
3
3
  * Copyright 2026 WPMoo (https://wpmoo.org)
4
4
  * Licensed under MIT (https://github.com/wpmoo-org/ui/blob/main/LICENSE)
5
5
  */
package/dist/js/slider.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Moo UI slider.js v1.0.0-rc.4 (https://ui.wpmoo.org/)
2
+ * Moo UI slider.js v1.0.0-rc.5 (https://ui.wpmoo.org/)
3
3
  * Copyright 2026 WPMoo (https://wpmoo.org)
4
4
  * Licensed under MIT (https://github.com/wpmoo-org/ui/blob/main/LICENSE)
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wpmoo/ui",
3
- "version": "1.0.0-rc.4",
3
+ "version": "1.0.0-rc.5",
4
4
  "description": "Bootstrap markup. shadcn feel. A frontend-framework-free component system for server-rendered apps.",
5
5
  "license": "MIT",
6
6
  "author": "WPMoo (https://wpmoo.org)",
@@ -17,7 +17,11 @@
17
17
  "scripts": {
18
18
  "build": ".venv/bin/python build.py",
19
19
  "dev": ".venv/bin/python dev.py",
20
- "test": ".venv/bin/python -m unittest discover -s tests -v",
20
+ "test": ".venv/bin/python scripts/run-test-tier.py run release",
21
+ "test:quick": ".venv/bin/python scripts/run-test-tier.py run quick",
22
+ "test:browser-smoke": ".venv/bin/python scripts/run-test-tier.py run browser-smoke",
23
+ "test:browser-full": ".venv/bin/python scripts/run-test-tier.py run browser-full",
24
+ "test:release": ".venv/bin/python scripts/run-test-tier.py run release",
21
25
  "deploy": "wrangler deploy",
22
26
  "preview": "wrangler dev"
23
27
  },
@@ -94,7 +98,7 @@
94
98
  "devDependencies": {
95
99
  "axe-core": "4.13.0",
96
100
  "chart.js": "4.5.1",
97
- "esbuild": "0.28.1",
101
+ "esbuild": "0.28.2",
98
102
  "wrangler": "^4.120.0"
99
103
  }
100
104
  }
@@ -57,3 +57,9 @@
57
57
  .accordion-flush .accordion-button {
58
58
  font-weight: $font-weight-medium;
59
59
  }
60
+
61
+ // A card owns its own surface, so a nested accordion must let that surface
62
+ // show through instead of painting Bootstrap's body background on top of it.
63
+ .card .accordion {
64
+ --bs-accordion-bg: #{$moo-accordion-contained-bg};
65
+ }
@@ -12,6 +12,36 @@
12
12
  unicode-bidi: plaintext;
13
13
  }
14
14
 
15
+ // Bootstrap raises hovered, focused, and active group buttons above siblings
16
+ // so the current border wins the shared seam. In a mixed-emphasis group (for
17
+ // example primary + outline) pointer interaction paints one pixel into the
18
+ // neighbor and reads like a width jump. Keep keyboard focus, active classes,
19
+ // and checked inputs stacked, but let plain pointer hover/click use DOM order
20
+ // so the joined edge stays visually stable.
21
+ .btn-group > .btn:hover:not(:focus-visible):not(.active),
22
+ .btn-group > .btn:focus:not(:focus-visible):not(.active),
23
+ .btn-group > .btn:active:not(:focus-visible):not(.active),
24
+ .btn-group-vertical > .btn:hover:not(:focus-visible):not(.active),
25
+ .btn-group-vertical > .btn:focus:not(:focus-visible):not(.active),
26
+ .btn-group-vertical > .btn:active:not(:focus-visible):not(.active) {
27
+ z-index: auto;
28
+ }
29
+
30
+ .btn-group > .btn-check:checked + .btn:hover,
31
+ .btn-group > .btn-check:focus + .btn:hover,
32
+ .btn-group-vertical > .btn-check:checked + .btn:hover,
33
+ .btn-group-vertical > .btn-check:focus + .btn:hover {
34
+ z-index: 1;
35
+ }
36
+
37
+ // A button group is one compound control surface; pressing one segment should
38
+ // not translate that segment away from its joined border while siblings stay
39
+ // still. The active color change remains as the press affordance.
40
+ .btn-group > .btn:not(:disabled):not(.disabled):not([aria-disabled="true"]):active,
41
+ .btn-group-vertical > .btn:not(:disabled):not(.disabled):not([aria-disabled="true"]):active {
42
+ transform: none;
43
+ }
44
+
15
45
  // Icon buttons in button groups should stay square, not stretch to fill
16
46
  // the group width (Bootstrap's flex: 1 1 auto makes them rectangular).
17
47
  .btn-group > .btn-icon,
@@ -7,7 +7,7 @@
7
7
  .card {
8
8
  --bs-card-bg: color-mix(in srgb, var(--bs-secondary-bg) #{$moo-card-bg-mix}, var(--bs-body-bg));
9
9
  --bs-card-color: var(--moo-foreground);
10
- --bs-card-border-color: color-mix(in srgb, var(--bs-body-color) #{$moo-card-border-mix}, #{$moo-card-border-mix-base});
10
+ --bs-card-border-color: var(--moo-border);
11
11
  // The reference uses a 14px corner; Bootstrap's shared radius-xl is the
12
12
  // closest token and wins the delta (12px here) per the token-first rule.
13
13
  --bs-card-border-radius: var(--bs-border-radius-xl);
@@ -102,7 +102,7 @@
102
102
  border-radius: var(--moo-input-group-border-radius);
103
103
  background-color: var(--moo-muted-surface);
104
104
  opacity: 0;
105
- transition: opacity $transition-fade;
105
+ transition: $transition-fade;
106
106
  }
107
107
 
108
108
  .input-group > .btn-ghost:hover::before,
package/scss/moo-ui.scss CHANGED
@@ -13,6 +13,7 @@
13
13
 
14
14
  // Bootstrap layout and standalone-only components
15
15
  @import "bootstrap/scss/root";
16
+ @import "themes/standalone_root";
16
17
  @import "bootstrap/scss/reboot";
17
18
  @import "bootstrap/scss/type";
18
19
  @import "bootstrap/scss/images";
@@ -44,7 +45,6 @@
44
45
  // Bootstrap utilities
45
46
  @import "bootstrap/scss/utilities/api";
46
47
 
47
- @import "themes/standalone_root";
48
48
  @import "utilities/scroll_fade_primitives";
49
49
  @import "components";
50
50
  @import "foundations/overlay_backdrop";
@@ -150,6 +150,10 @@ $moo-switch-checked-bg-image-dark: url("data:image/svg+xml,<svg xmlns='http://ww
150
150
  // changes nothing but the chevron and revealed content.
151
151
  $accordion-button-active-bg: var(--bs-accordion-bg) !default;
152
152
  $accordion-button-active-color: var(--bs-accordion-color) !default;
153
+
154
+ // A nested accordion inherits its Card surface by default, while remaining
155
+ // configurable for Sass consumers that need a distinct contained surface.
156
+ $moo-accordion-contained-bg: transparent !default;
153
157
  // Bootstrap's pills nav has no shared-track concept, so the segmented
154
158
  // control's track padding/gap and trigger padding have no Bootstrap
155
159
  // variable to override — they are private knobs instead of literals in
@@ -182,13 +186,10 @@ $card-title-letter-spacing: -0.01em !default;
182
186
  $moo-card-spacing: 1rem !default;
183
187
  $moo-card-spacing-sm: 0.75rem !default;
184
188
 
185
- // Card surface and border blends: mix the muted surface over the base surface
186
- // (and foreground over a transparent base) so cards keep a subtle tint that
187
- // tracks the runtime theme without hardcoding a color.
189
+ // Card surface blends mix the muted surface over the base surface so cards keep
190
+ // a subtle tint that tracks the runtime theme without hardcoding a color.
188
191
  $moo-card-bg-mix: 5% !default;
189
192
  $moo-card-bg-mix-dark: 30% !default;
190
- $moo-card-border-mix: 10% !default;
191
- $moo-card-border-mix-base: transparent !default;
192
193
 
193
194
  // Bootstrap exposes one card-cap background for both headers and footers, but
194
195
  // the reference needs no header fill and a separately tuned footer surface.
@@ -305,7 +306,7 @@ $moo-form-focus-ring-color: var(--moo-ring) !default;
305
306
  // .offcanvas-backdrop selectors; Moo keeps their visual treatment aligned via
306
307
  // one token set instead of per-component backdrop rules.
307
308
  $moo-overlay-backdrop-opacity: 1 !default;
308
- $moo-overlay-backdrop-bg: color-mix(in srgb, var(--bs-black) 10%, transparent) !default;
309
+ $moo-overlay-backdrop-bg: color-mix(in srgb, #0a0a0a 10%, transparent) !default;
309
310
  $moo-overlay-backdrop-filter: blur(8px) !default;
310
311
 
311
312
  // A quieter elevation scale and the extra radius step, applied UI-wide through
@@ -62,6 +62,7 @@
62
62
  --bs-body-bg-rgb: #{to-rgb($moo-surface)};
63
63
  --bs-secondary-bg: var(--moo-muted-surface);
64
64
  --bs-secondary-bg-rgb: #{to-rgb($moo-muted-surface)};
65
+ --bs-border-color: var(--moo-border);
65
66
  --bs-tertiary-bg: #{$body-tertiary-bg};
66
67
  --bs-tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};
67
68
  --bs-tertiary-color: #{$body-tertiary-color};
@@ -108,6 +109,7 @@
108
109
  --bs-body-bg-rgb: #{to-rgb($moo-surface-dark)};
109
110
  --bs-secondary-bg: var(--moo-muted-surface);
110
111
  --bs-secondary-bg-rgb: #{to-rgb($moo-muted-surface-dark)};
112
+ --bs-border-color: var(--moo-border);
111
113
  --bs-tertiary-bg: #{$body-tertiary-bg-dark};
112
114
  --bs-tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};
113
115
  --bs-tertiary-color: #{$body-tertiary-color-dark};