@wpmoo/ui 0.7.0 → 0.8.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/ASSET_LICENSE.md CHANGED
@@ -6,7 +6,7 @@ WPMoo-generated visual assets are copyright (c) 2026 WPMoo
6
6
  These assets are not licensed under the repository's MIT source code license
7
7
  unless an individual file or directory states otherwise. This includes brand
8
8
  assets, component preview images, marketing images, screenshots, generated
9
- artwork, and other WPMoo-owned image assets under `static/images/`.
9
+ artwork, and other WPMoo-owned image assets under `site/static/images/`.
10
10
 
11
11
  You may view these assets as part of the Moo UI documentation and demo site.
12
12
  You may not copy, redistribute, modify, sell, sublicense, or use them in another
package/README.md CHANGED
@@ -9,40 +9,37 @@
9
9
  <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-blue.svg"></a>
10
10
  </p>
11
11
 
12
- <p align="center">
13
- <strong>Bootstrap markup. shadcn feel.</strong>
14
- </p>
15
-
16
- <p align="center">
17
- Keep your Bootstrap 5.3 HTML and behavior. Replace the stylesheet and give
18
- your application a calmer, modern product interface without moving to React or
19
- Tailwind.
20
- </p>
12
+ <p align="center"><strong>Bootstrap markup. shadcn feel.</strong></p>
21
13
 
22
14
  <p align="center">
23
- <a href="https://ui.wpmoo.org/"><strong>Explore Moo UI »</strong></a>
15
+ Moo UI is a Bootstrap 5.3-native component system with a restrained,
16
+ shadcn-inspired visual language.
24
17
  </p>
25
18
 
26
19
  <p align="center">
20
+ <a href="https://ui.wpmoo.org/"><strong>Explore the catalog »</strong></a> ·
27
21
  <a href="#try-it-in-30-seconds">Try it in 30 seconds</a> ·
28
- <a href="https://www.npmjs.com/package/@wpmoo/ui">View on npm</a> ·
29
- <a href="https://github.com/wpmoo-org/ui/issues">Report bug</a>
22
+ <a href="https://github.com/wpmoo-org/ui/issues">Report an issue</a>
30
23
  </p>
31
24
 
32
25
  # Moo UI
33
26
 
34
- Moo UI is for teams that already like Bootstrap's durability, documented
35
- components, and server-rendered friendliness, but want their customer portals,
36
- admin screens, and business applications to feel more like modern SaaS
37
- software.
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, and Sidebar.
38
31
 
39
- It keeps Bootstrap as the public contract: familiar classes, `data-bs-*`
40
- behavior, CSS variables, Sass customization, and Bootstrap JavaScript plugins.
41
- Moo UI changes the visual language around that contract.
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 extends verified gaps.** Optional Moo 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 component layer to a `.moo-ui` boundary.
42
39
 
43
40
  ## Try It in 30 Seconds
44
41
 
45
- Drop the stylesheet into ordinary Bootstrap markup:
42
+ The quick demo intentionally follows the floating npm tag:
46
43
 
47
44
  ```html
48
45
  <link rel="stylesheet"
@@ -51,135 +48,154 @@ Drop the stylesheet into ordinary Bootstrap markup:
51
48
  <button type="button" class="btn btn-primary">Create workspace</button>
52
49
  ```
53
50
 
54
- That is the point of Moo UI: your markup still says Bootstrap, but the surface
55
- feels quieter, sharper, and more product-ready.
51
+ `moo-ui.css` is a complete Bootstrap CSS build with Moo UI defaults. Use it
52
+ instead of another Bootstrap stylesheet, not in addition to one.
56
53
 
57
- ## Install
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 ESM | `@wpmoo/ui/combobox.js`, then explicit initialization |
61
+ | Context Menu pointer and keyboard invocation | Optional Moo 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 ESM, composed with Bootstrap Table and controls | `@wpmoo/ui/datatable.js`, then explicit initialization |
63
+ | Sidebar state and responsive coordination | Optional Moo ESM, composed with Bootstrap plugins | `@wpmoo/ui/sidebar.js`, then explicit initialization |
64
+
65
+ Moo UI does not replace Bootstrap plugins and does not publish a mandatory
66
+ aggregate JavaScript runtime.
58
67
 
59
- Use the published package when a bundler owns your build:
68
+ ## Install
60
69
 
61
70
  ```bash
62
- npm install @wpmoo/ui
71
+ npm install @wpmoo/ui bootstrap
63
72
  ```
64
73
 
74
+ ### Full replacement
75
+
76
+ Use the complete Moo UI Bootstrap build instead of Bootstrap's stylesheet:
77
+
65
78
  ```js
66
79
  import "@wpmoo/ui/moo-ui.css";
80
+ import "bootstrap/dist/js/bootstrap.bundle.min.js"; // only when plugins are used
67
81
  ```
68
82
 
69
- If a page uses Bootstrap plugins such as Dropdown, Tooltip, Popover, Modal,
70
- Toast, or Offcanvas, load Bootstrap's JavaScript bundle separately through your
71
- application. Tooltip and Popover also need the initialization Bootstrap
72
- documents for those plugins.
83
+ ### Scoped gradual adoption
84
+
85
+ Keep the existing Bootstrap stylesheet, load the scoped Moo layer after it, and
86
+ wrap only the area being migrated:
87
+
88
+ ```js
89
+ import "bootstrap/dist/css/bootstrap.min.css";
90
+ import "@wpmoo/ui/moo.css";
91
+ import "bootstrap/dist/js/bootstrap.bundle.min.js"; // only when plugins are used
92
+ ```
93
+
94
+ ```html
95
+ <div class="moo-ui">
96
+ <button type="button" class="btn btn-primary">Create workspace</button>
97
+ </div>
98
+ ```
99
+
100
+ ### Optional Moo ESM
101
+
102
+ Initialize only the documented behavior gaps you use:
103
+
104
+ ```js
105
+ import Combobox from "@wpmoo/ui/combobox.js";
106
+ import ContextMenu from "@wpmoo/ui/context-menu.js";
107
+ import DataTable from "@wpmoo/ui/datatable.js";
108
+ import Sidebar from "@wpmoo/ui/sidebar.js";
109
+
110
+ Combobox.getOrCreateInstance(document.querySelector(".combobox"));
111
+ ContextMenu.getOrCreateInstance(document.querySelector(".context-menu"));
112
+ DataTable.getOrCreateInstance(document.querySelector(".datatable"));
113
+ Sidebar.getOrCreateInstance(document.querySelector('[data-slot="sidebar-wrapper"]'));
114
+ ```
115
+
116
+ See the [Installation guide](https://ui.wpmoo.org/installation/) for CDN
117
+ recipes, load order, and troubleshooting.
73
118
 
74
119
  ## Choose an Adoption Path
75
120
 
76
- | Situation | Use | Contract |
77
- | --- | --- | --- |
78
- | New page or whole application | `moo-ui.css` | Complete Bootstrap CSS build with Moo UI defaults; use it instead of your existing Bootstrap stylesheet. |
79
- | Gradual adoption inside an existing Bootstrap app | `moo.css` | Scoped Moo component layer under a `.moo-ui` boundary for gradual adoption inside an existing Bootstrap app. |
121
+ | Situation | Recommended path |
122
+ | --- | --- |
123
+ | New page or whole application | Replace Bootstrap CSS with `moo-ui.css`. |
124
+ | Existing Bootstrap application | Load `moo.css` after Bootstrap CSS and add `.moo-ui` around migrated regions. |
125
+ | Static page with no interactive plugins | Load CSS only. |
126
+ | Page using Bootstrap plugins | Keep Bootstrap's bundle and its documented initialization. |
127
+ | Page using Combobox, Context Menu, DataTable, or Sidebar | Add only the corresponding optional Moo ESM module. |
128
+
129
+ ## Public Package Surface
130
+
131
+ `@wpmoo/ui` exports exactly these public entrypoints:
132
+
133
+ | Export | Purpose |
134
+ | --- | --- |
135
+ | `@wpmoo/ui/moo-ui.css` | Full expanded CSS build |
136
+ | `@wpmoo/ui/moo-ui.min.css` | Full minified CSS build |
137
+ | `@wpmoo/ui/moo.css` | Scoped expanded component layer for `.moo-ui` |
138
+ | `@wpmoo/ui/moo.min.css` | Scoped minified component layer |
139
+ | `@wpmoo/ui/combobox.js` | Optional Combobox ESM lifecycle |
140
+ | `@wpmoo/ui/context-menu.js` | Optional Context Menu ESM lifecycle |
141
+ | `@wpmoo/ui/datatable.js` | Optional DataTable ESM lifecycle |
142
+ | `@wpmoo/ui/sidebar.js` | Optional Sidebar ESM lifecycle |
143
+ | `@wpmoo/ui/certification.json` | Versioned support/evidence manifest |
144
+ | `@wpmoo/ui/package.json` | Package metadata |
145
+
146
+ The tarball also contains `README.md`, `LICENSE`, and `ASSET_LICENSE.md`. It
147
+ does not publish catalog templates, preview artwork, catalog JavaScript, SCSS
148
+ source, or a Sass facade. Internal Sass partials and
149
+ Jinja macros are repository build tools, not npm APIs.
80
150
 
81
151
  ## Why Bootstrap Teams Try It
82
152
 
83
- - **No frontend rewrite.** Keep server-rendered HTML, Bootstrap classes, and
84
- the component behavior your team already knows.
85
- - **Modern product rhythm.** Buttons, forms, overlays, navigation, data
86
- display, and app shells are tuned toward a restrained shadcn-inspired feel.
87
- - **Inspectable examples.** The catalog is static HTML. Every component page
88
- shows rendered examples and copyable markup.
89
- - **Bootstrap-native customization.** Moo UI uses Bootstrap Sass knobs and
90
- `--bs-*` variables wherever Bootstrap can express the need, adding Moo-owned
91
- tokens only for gaps Bootstrap does not model.
92
- - **Practical migration surface.** Start with one page, one scoped area, or a
93
- full stylesheet replacement after visual review.
94
-
95
- ## Philosophy
96
-
97
- - **Bootstrap is the contract.** Moo UI keeps Bootstrap markup, documented
98
- behavior, Sass knobs, and `--bs-*` variables wherever Bootstrap can express
99
- the need.
100
- - **shadcn is the feeling.** Moo UI studies restraint, rhythm, and product UI
101
- sensibility without adopting React, Tailwind, Radix, or shadcn source.
102
- - **HTML stays first-class.** The catalog is static, inspectable, and friendly
103
- to server-rendered applications.
104
- - **Extensions stay honest.** Moo-owned classes and behavior are added only
105
- when Bootstrap has no native component contract for the pattern.
106
-
107
- ## What Is Included
108
-
109
- The live catalog is the source of truth for current coverage:
110
-
111
- - [Components](https://ui.wpmoo.org/components/) for actions, forms,
112
- data display, feedback, disclosure, overlays, and navigation.
113
- - [Blocks](https://ui.wpmoo.org/blocks/) for composed application
114
- surfaces such as sidebar layouts.
115
- - A static documentation site that can be inspected without a client-side app
116
- runtime.
117
-
118
- Representative components include Button, Field, Table, Dialog, Toast, Sheet,
119
- and Sidebar. More components are being added as the catalog roadmap continues.
153
+ - Keep server-rendered HTML, Bootstrap classes, and familiar plugin behavior.
154
+ - Apply a restrained product rhythm to forms, overlays, navigation, data
155
+ display, and application shells.
156
+ - Inspect static rendered examples and copy the resulting HTML contracts.
157
+ - Start with one scoped region or replace the full stylesheet after review.
158
+
159
+ Representative components include Button, Field, Table, DataTable, Dialog,
160
+ Toast, Sheet, Combobox, Context Menu, and Sidebar. Browse the [component catalog](https://ui.wpmoo.org/components/)
161
+ and composed [blocks](https://ui.wpmoo.org/blocks/).
120
162
 
121
163
  ## Designed, Not Just Restyled
122
164
 
123
- Moo UI uses original sketch-style previews to show the thinking behind each
124
- primitive: states, spacing, hierarchy, and the product UI feeling Bootstrap
125
- projects often need. The README wraps a few of those transparent assets in
126
- theme-aware surfaces so they stay legible on GitHub.
165
+ The README uses original WPMoo preview artwork stored under
166
+ `site/static/images/`; those files are source assets for the public catalog and
167
+ are not part of the npm package.
127
168
 
128
169
  <p align="center">
129
- <a href="https://ui.wpmoo.org/components/button/">
130
- <picture>
131
- <source media="(prefers-color-scheme: dark)" srcset="static/images/readme/button-dark.svg">
132
- <img src="static/images/readme/button-light.svg" alt="Button preview" width="31%">
133
- </picture>
134
- </a>
135
- <a href="https://ui.wpmoo.org/components/dialog/">
136
- <picture>
137
- <source media="(prefers-color-scheme: dark)" srcset="static/images/readme/dialog-dark.svg">
138
- <img src="static/images/readme/dialog-light.svg" alt="Dialog preview" width="31%">
139
- </picture>
140
- </a>
141
- <a href="https://ui.wpmoo.org/components/sidebar/">
142
- <picture>
143
- <source media="(prefers-color-scheme: dark)" srcset="static/images/readme/sidebar-dark.svg">
144
- <img src="static/images/readme/sidebar-light.svg" alt="Sidebar preview" width="31%">
145
- </picture>
146
- </a>
147
- <a href="https://ui.wpmoo.org/components/toast/">
148
- <picture>
149
- <source media="(prefers-color-scheme: dark)" srcset="static/images/readme/toast-dark.svg">
150
- <img src="static/images/readme/toast-light.svg" alt="Toast preview" width="31%">
151
- </picture>
152
- </a>
153
- <a href="https://ui.wpmoo.org/components/sheet/">
154
- <picture>
155
- <source media="(prefers-color-scheme: dark)" srcset="static/images/readme/sheet-dark.svg">
156
- <img src="static/images/readme/sheet-light.svg" alt="Sheet preview" width="31%">
157
- </picture>
158
- </a>
159
- <a href="https://ui.wpmoo.org/components/input/">
160
- <picture>
161
- <source media="(prefers-color-scheme: dark)" srcset="static/images/readme/input-dark.svg">
162
- <img src="static/images/readme/input-light.svg" alt="Input preview" width="31%">
163
- </picture>
164
- </a>
170
+ <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>
171
+ <a href="https://ui.wpmoo.org/components/dialog/"><picture><source media="(prefers-color-scheme: dark)" srcset="https://ui.wpmoo.org/assets/images/readme/dialog-dark.svg"><img src="https://ui.wpmoo.org/assets/images/readme/dialog-light.svg" alt="Dialog preview" width="31%"></picture></a>
172
+ <a href="https://ui.wpmoo.org/components/sidebar/"><picture><source media="(prefers-color-scheme: dark)" srcset="https://ui.wpmoo.org/assets/images/readme/sidebar-dark.svg"><img src="https://ui.wpmoo.org/assets/images/readme/sidebar-light.svg" alt="Sidebar preview" width="31%"></picture></a>
165
173
  </p>
166
174
 
167
- <p align="center">
168
- <a href="https://ui.wpmoo.org/components/">Browse the full catalog →</a>
169
- </p>
175
+ ## Status And Support
170
176
 
171
- ## Package Boundaries
177
+ Moo UI is in the `0.x` series. Current package: `@wpmoo/ui@0.8.0`. The
178
+ package's certification manifest currently has `preview` status; catalog
179
+ availability is WPMoo-maintained preview evidence, not independent or
180
+ accredited certification. Read [Support & Evidence](https://ui.wpmoo.org/support/)
181
+ for the Bootstrap range, browser policy, maturity definitions, limitations, and
182
+ release evidence. Complete release notes are on
183
+ [GitHub Releases](https://github.com/wpmoo-org/ui/releases).
172
184
 
173
- The npm package distributes compiled CSS and license/notice files. It does not
174
- ship the catalog's generated preview images, Jinja templates, Sass source, or
175
- Moo-owned catalog JavaScript.
185
+ ## Contributing
176
186
 
177
- The source repository contains the static catalog, component templates, build
178
- tooling, tests, and documentation.
187
+ Small documentation corrections, reduced reproductions, accessibility checks,
188
+ and bounded component improvements are welcome. Start with
189
+ [`CONTRIBUTING.md`](CONTRIBUTING.md), choose an
190
+ [issue type](https://github.com/wpmoo-org/ui/issues/new/choose), and review the
191
+ [Code of Conduct](CODE_OF_CONDUCT.md) and [security policy](SECURITY.md).
179
192
 
180
- ## Development
193
+ ## Repository Layout And Development
181
194
 
182
- The catalog is intentionally small-tool friendly:
195
+ Moo UI Core is published from the repository root. Core source and package
196
+ outputs live outside `site/`; `dist/` is the package build. The `site/` tree
197
+ owns ui.wpmoo.org documentation, catalog chrome, public metadata, and protected
198
+ preview artwork; it builds to `site-dist/`.
183
199
 
184
200
  ```bash
185
201
  .venv/bin/python build.py
@@ -187,23 +203,11 @@ The catalog is intentionally small-tool friendly:
187
203
  .venv/bin/python -m unittest discover -s tests -v
188
204
  ```
189
205
 
190
- For developers who prefer npm scripts, the package also exposes:
191
-
192
- ```bash
193
- npm run build
194
- npm run dev
195
- npm test
196
- ```
197
-
198
- Browse the local catalog at `http://localhost:4173/` when `dev.py` is running.
206
+ Browse the local catalog at `http://localhost:4173/` while `dev.py` runs.
199
207
 
200
208
  ## Licensing
201
209
 
202
- Moo UI source code is licensed under the MIT License by WPMoo (`wpmoo.org`).
203
-
204
- WPMoo-generated visual assets, including image assets under `static/images/`,
205
- are not covered by the MIT source code license and remain copyright WPMoo, all
206
- rights reserved.
207
-
208
- Vendored third-party material keeps its original license and attribution. See
210
+ Moo UI source code is MIT licensed. WPMoo-generated visual assets under
211
+ `site/static/images/` remain separately protected as described in
212
+ `ASSET_LICENSE.md`. Vendored dependencies retain their original licenses; see
209
213
  `LICENSE`, `ASSET_LICENSE.md`, and `THIRD_PARTY_NOTICES.md`.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "0.1",
3
3
  "status": "preview",
4
- "coreVersion": "0.7.0",
4
+ "coreVersion": "0.8.0",
5
5
  "bootstrap": {
6
6
  "canonicalVersion": "5.3.3",
7
7
  "targetRange": ">=5.3.0 <5.4",
@@ -22,7 +22,9 @@
22
22
  ],
23
23
  "esm": [
24
24
  "./combobox.js",
25
- "./sidebar.js"
25
+ "./sidebar.js",
26
+ "./context-menu.js",
27
+ "./datatable.js"
26
28
  ],
27
29
  "sass": []
28
30
  },