@wpmoo/ui 1.5.0 → 2.1.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.
package/LICENSE CHANGED
@@ -19,31 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
22
-
23
- ---
24
-
25
- Chart.js v4.5.1
26
-
27
- The MIT License (MIT)
28
-
29
- Copyright (c) 2014-2024 Chart.js Contributors
30
-
31
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
32
-
33
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
34
-
35
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36
-
37
- ---
38
-
39
- @kurkle/color v0.3.4
40
-
41
- The MIT License (MIT)
42
-
43
- Copyright (c) 2018-2024 Jukka Kurkela
44
-
45
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
46
-
47
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
48
-
49
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -140,6 +140,17 @@ if (combobox) {
140
140
 
141
141
  The runtime bundle is optional and side-effect-free. Import the aggregate
142
142
  `@wpmoo/ui/moo-ui.js` entrypoint, or import only the component module you use.
143
+ Chart consumers install the optional peer explicitly (other components need no Chart dependency):
144
+
145
+ ```sh
146
+ npm install chart.js@4.6.1
147
+ ```
148
+
149
+ Chart.js supplies its own `@kurkle/color` dependency and vendor licenses. Neither
150
+ implementation is embedded in Moo UI's npm archive. Bundlers resolve `chart.js/auto`
151
+ from that installation. Native browser/CDN hosts must configure the version-pinned
152
+ import map in the [Installation guide](https://ui.wpmoo.org/installation/) before
153
+ loading MooChart. Self-hosted vendors must retain their upstream license files.
143
154
  The aggregate loads Chart.js only when `loadChart()` is called:
144
155
 
145
156
  ```js
@@ -197,6 +208,31 @@ const scrollbar = OverlayScrollbar.getOrCreateInstance(document.querySelector(".
197
208
  // scrollbar.dispose(); // restore the native scrollbar
198
209
  ```
199
210
 
211
+ For dependency-free password requirements feedback, initialize an identified
212
+ `fieldset[data-password-requirements]` explicitly:
213
+
214
+ ```js
215
+ import PasswordRequirements from "@wpmoo/ui/password-requirements.js";
216
+ const feedback = PasswordRequirements.getOrCreateInstance(
217
+ document.getElementById("password-rules"),
218
+ );
219
+ await feedback.ready;
220
+ // feedback.dispose(); // restore original markup, attributes and control state
221
+ ```
222
+
223
+ The [Field example](https://ui.wpmoo.org/components/field/#password-feedback-preview)
224
+ shows the rendered contract. Policy version3 supports length, maximum, case,
225
+ number and symbol requirements, plus optional confirmation and submit binding.
226
+ All controls share a form and nearest `.moo-ui` owner. Submit feedback requires
227
+ Bootstrap Tooltip on that document's window. There is no bundled estimator,
228
+ strength score, breached-password lookup, network request or storage access.
229
+ Meeting these checks does **not** establish password strength or replace server
230
+ validation. A trusted host may supply synchronous `analyze(value)`, returning
231
+ `{met: boolean, score: 0..4}`; this callback receives the normalized password and
232
+ owns its security/privacy behavior. Without it no score is produced. `onChange`
233
+ receives only Boolean check states, an active flag and the optional host score.
234
+ See the [public policy contract](https://github.com/wpmoo-org/ui/blob/main/docs/contracts/PACKAGE_SURFACE_DECISIONS.md#200-external-chart-vendors-and-password-requirements).
235
+
200
236
  The module preserves native document/touch/wheel scrolling. Its thin thumb
201
237
  appears while scrolling, near the trailing mouse edge or on keyboard focus;
202
238
  show/hide never reserves a layout gutter. Initial activation removes any native
@@ -239,11 +275,11 @@ calm.
239
275
 
240
276
  ## Status And Support
241
277
 
242
- The `1.5.0` minor release target adds an optional FloatingPanel ESM module and
243
- a composed onboarding checklist. Progress gains a circular variant; Collapsible
244
- supports composed headers, Navigation supports icon utilities, and Switch keeps
245
- native form names and values. Existing exports and Bootstrap compatibility are
246
- preserved; `@wpmoo/ui/floating-panel.js` is an additive public entrypoint.
278
+ The `2.1.0` minor release adds host-translated password feedback, the
279
+ `--moo-heading-font-weight` owner token, and a document scrolling mode for
280
+ website shells. The Layout catalog demonstrates the document mode with a live
281
+ preview and copyable example. Chart consumers use the optional Chart.js peer
282
+ or a native browser import map.
247
283
  Component certification remains
248
284
  `preview`, with its documented manual and browser/device limits. Public exports, package boundaries, browser support, and release evidence live in [Support & Evidence](https://ui.wpmoo.org/support/).
249
285
  Complete release notes are on
@@ -266,8 +302,8 @@ paths live in the [Installation guide](https://ui.wpmoo.org/installation/).
266
302
 
267
303
  Moo UI source code is MIT licensed. License details live in
268
304
  [LICENSE](LICENSE) and the [License page](https://ui.wpmoo.org/license/).
269
- The published `LICENSE` also retains the full MIT notices for bundled
270
- Chart.js and `@kurkle/color`.
271
- Asset terms live in [ASSET_LICENSE.md](ASSET_LICENSE.md); dependency notices
272
- live in the
273
- [version-pinned third-party notices](https://github.com/wpmoo-org/ui/blob/v1.5.0/THIRD_PARTY_NOTICES.md).
305
+ Third-party distribution details and notices are kept separately in
306
+ [THIRD_PARTY_NOTICES.md](https://github.com/wpmoo-org/ui/blob/v2.1.0/THIRD_PARTY_NOTICES.md).
307
+ Catalog visual assets and their license are repository-only and are not
308
+ included in the npm package. Asset terms live in the
309
+ [visual asset license](https://github.com/wpmoo-org/ui/blob/v2.1.0/ASSET_LICENSE.md).
@@ -0,0 +1,87 @@
1
+ # Third-Party Notices
2
+
3
+ Moo UI's own MIT license is kept separately in `LICENSE`. The full Moo CSS
4
+ includes Bootstrap-derived styles. Catalog-only assets and optional external
5
+ Chart vendors have separate distributions and licenses as described below.
6
+
7
+ ## Bootstrap
8
+
9
+ Moo UI vendors the official `twbs/bootstrap` v5.3.3 SCSS source and bundled
10
+ JavaScript. Bootstrap is licensed under the MIT License; the bundled license is
11
+ stored at `vendor/bootstrap/LICENSE`.
12
+
13
+ The MIT License (MIT)
14
+
15
+ Copyright (c) 2011-2024 The Bootstrap Authors
16
+
17
+ Permission is hereby granted, free of charge, to any person obtaining a copy
18
+ of this software and associated documentation files (the "Software"), to deal
19
+ in the Software without restriction, including without limitation the rights
20
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
21
+ copies of the Software, and to permit persons to whom the Software is
22
+ furnished to do so, subject to the following conditions:
23
+
24
+ The above copyright notice and this permission notice shall be included in
25
+ all copies or substantial portions of the Software.
26
+
27
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
33
+ THE SOFTWARE.
34
+
35
+ Bootstrap's component and Button documentation are behavior, semantics, and
36
+ accessibility references for this product.
37
+
38
+ ## shadcn/ui
39
+
40
+ Moo UI is designed for server-rendered interfaces that keep Bootstrap markup as
41
+ the durable contract. shadcn/ui is used as a visual-intent and catalog-coverage
42
+ reference. If you are building React and Tailwind applications, use shadcn/ui
43
+ directly: https://ui.shadcn.com/
44
+
45
+ ## Lucide
46
+
47
+ Moo UI vendors a build-time icon metadata subset from Iconify's Lucide icon
48
+ set at `src/icons/lucide-icons.json` and renders selected Lucide icons into the
49
+ generated catalog. Lucide is licensed under the ISC License. The source
50
+ metadata identifies the Lucide project, its contributors, and the upstream
51
+ license URL. The root favicon set (`favicon.svg`, `favicon.ico`,
52
+ `apple-touch-icon.png`, `icon-192.png`, and `icon-512.png`) uses the Lucide
53
+ Blocks geometry and remains covered by the same ISC license notice.
54
+
55
+ ## Geist
56
+
57
+ Moo UI vendors `Geist-Variable.woff2` for catalog chrome typography only.
58
+ Geist is licensed under the SIL Open Font License 1.1 (`OFL-1.1`); the bundled
59
+ license is stored at `vendor/geist/LICENSE`.
60
+
61
+ ## Chart.js
62
+
63
+ Chart.js4.6.1 is an external optional peer of Moo UI, not embedded in either
64
+ `dist/js/chart.js` or `dist/js/chart.min.js`. These files contain the MooChart
65
+ adapter. Consumers install Chart.js separately or serve its native ESM files
66
+ with an import map. The catalog serves exact locked files separately under
67
+ `vendor/chart.js/`, including its unchanged `LICENSE.md`.
68
+
69
+ - **License:** MIT
70
+ - **Source and license:** <https://github.com/chartjs/Chart.js/blob/v4.6.1/LICENSE.md>
71
+
72
+ ## @kurkle/color
73
+
74
+ Color0.3.4 is Chart.js's own dependency, not embedded in the Moo npm archive.
75
+ The catalog serves its native ESM file and unchanged license separately under
76
+ `vendor/@kurkle/color/`. npm consumers receive it through their Chart.js install.
77
+
78
+ - **License:** MIT
79
+ - **Source and license:** <https://github.com/kurkle/color/blob/v0.3.4/LICENSE.md>
80
+
81
+ ## WPMoo visual assets
82
+
83
+ WPMoo-generated visual assets, including image assets under `site/static/images/`,
84
+ are original WPMoo work and are not licensed under MIT unless explicitly
85
+ stated. See the
86
+ [repository visual asset license](https://github.com/wpmoo-org/ui/blob/v2.1.0/ASSET_LICENSE.md).
87
+ These assets and their license file are not included in the npm package.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "0.1",
3
3
  "status": "preview",
4
- "coreVersion": "1.5.0",
4
+ "coreVersion": "2.1.0",
5
5
  "bootstrap": {
6
6
  "canonicalVersion": "5.3.3",
7
7
  "targetRange": ">=5.3.0 <5.4",
@@ -21,6 +21,7 @@
21
21
  "./moo.min.css"
22
22
  ],
23
23
  "esm": [
24
+ "./password-requirements.js",
24
25
  "./moo-ui.js",
25
26
  "./moo-ui.min.js",
26
27
  "./combobox.js",
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Moo UI v1.5.0 (https://wpmoo.org/)
2
+ * Moo UI v2.1.0 (https://wpmoo.org/)
3
3
  * Copyright 2026 WPMoo Authors
4
4
  * Licensed under MIT (https://github.com/wpmoo-org/ui/blob/main/LICENSE)
5
5
  *
@@ -270,6 +270,7 @@
270
270
  --moo-chart-4: #3f3f46;
271
271
  --moo-chart-5: #27272a;
272
272
  --moo-heading-font-family: var(--bs-body-font-family);
273
+ --moo-heading-font-weight: 600;
273
274
  --moo-small-font-size: 0.75rem;
274
275
  --moo-paragraph-margin-top: 0;
275
276
  --moo-paragraph-margin-bottom: 1rem;
@@ -494,7 +495,7 @@ hr {
494
495
  h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
495
496
  margin-top: 0;
496
497
  margin-bottom: 0.5rem;
497
- font-weight: 600;
498
+ font-weight: var(--moo-heading-font-weight, 600);
498
499
  line-height: 1.2;
499
500
  color: var(--bs-heading-color);
500
501
  }
@@ -885,7 +886,7 @@ progress {
885
886
 
886
887
  .display-1 {
887
888
  font-size: calc(1.475rem + 2.7vw);
888
- font-weight: 600;
889
+ font-weight: var(--moo-heading-font-weight, 600);
889
890
  line-height: 1.2;
890
891
  }
891
892
 
@@ -897,7 +898,7 @@ progress {
897
898
 
898
899
  .display-2 {
899
900
  font-size: calc(1.425rem + 2.1vw);
900
- font-weight: 600;
901
+ font-weight: var(--moo-heading-font-weight, 600);
901
902
  line-height: 1.2;
902
903
  }
903
904
 
@@ -909,7 +910,7 @@ progress {
909
910
 
910
911
  .display-3 {
911
912
  font-size: calc(1.375rem + 1.5vw);
912
- font-weight: 600;
913
+ font-weight: var(--moo-heading-font-weight, 600);
913
914
  line-height: 1.2;
914
915
  }
915
916
 
@@ -921,7 +922,7 @@ progress {
921
922
 
922
923
  .display-4 {
923
924
  font-size: calc(1.35rem + 1.2vw);
924
- font-weight: 600;
925
+ font-weight: var(--moo-heading-font-weight, 600);
925
926
  line-height: 1.2;
926
927
  }
927
928
 
@@ -933,7 +934,7 @@ progress {
933
934
 
934
935
  .display-5 {
935
936
  font-size: calc(1.3125rem + 0.75vw);
936
- font-weight: 600;
937
+ font-weight: var(--moo-heading-font-weight, 600);
937
938
  line-height: 1.2;
938
939
  }
939
940
 
@@ -945,7 +946,7 @@ progress {
945
946
 
946
947
  .display-6 {
947
948
  font-size: calc(1.275rem + 0.3vw);
948
- font-weight: 600;
949
+ font-weight: var(--moo-heading-font-weight, 600);
949
950
  line-height: 1.2;
950
951
  }
951
952
 
@@ -13328,7 +13329,7 @@ label.btn {
13328
13329
  .card-title {
13329
13330
  margin-bottom: 0;
13330
13331
  font-size: 1rem;
13331
- font-weight: 600;
13332
+ font-weight: var(--moo-heading-font-weight, 600);
13332
13333
  line-height: 1.25;
13333
13334
  letter-spacing: -0.01em;
13334
13335
  }
@@ -13378,7 +13379,7 @@ label.btn {
13378
13379
  .empty-state-title {
13379
13380
  margin: 0;
13380
13381
  font-size: 1.09375rem;
13381
- font-weight: 600;
13382
+ font-weight: var(--moo-heading-font-weight, 600);
13382
13383
  line-height: 1.2;
13383
13384
  }
13384
13385
  .empty-state-description {
@@ -14337,7 +14338,7 @@ label.btn {
14337
14338
  .alert-heading {
14338
14339
  margin-bottom: 0.25rem;
14339
14340
  font-size: 0.875rem;
14340
- font-weight: 600;
14341
+ font-weight: var(--moo-heading-font-weight, 600);
14341
14342
  }
14342
14343
  .alert-action {
14343
14344
  flex: 0 0 auto;
@@ -17355,6 +17356,11 @@ label.btn {
17355
17356
  border: var(--bs-border-width) solid var(--moo-border);
17356
17357
  border-radius: var(--bs-border-radius-xl);
17357
17358
  }
17359
+ .wrapper[data-layout="app"][data-shell-mode="document"] {
17360
+ height: auto;
17361
+ min-height: 100svh;
17362
+ overflow: visible;
17363
+ }
17358
17364
  .wrapper[data-layout="app"] > [data-slot="page"] {
17359
17365
  display: flex;
17360
17366
  min-width: 0;
@@ -17452,6 +17458,9 @@ label.btn {
17452
17458
  flex-direction: column;
17453
17459
  overflow-y: auto;
17454
17460
  }
17461
+ .wrapper[data-layout="app"][data-shell-mode="document"] > [data-slot="page"] > main {
17462
+ overflow: visible;
17463
+ }
17455
17464
  .wrapper[data-layout="app"] > [data-slot="page"] > main > :is( .container, .container-sm, .container-md, .container-lg, .container-xl, .container-xxl, .container-fluid ) {
17456
17465
  display: flex;
17457
17466
  min-height: 0;