@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 +1 -1
- package/README.md +141 -137
- package/certification.json +4 -2
- package/dist/assets/css/moo-ui.css +1105 -35
- package/dist/assets/css/moo-ui.min.css +2 -2
- package/dist/assets/css/moo.css +940 -17
- package/dist/assets/css/moo.min.css +2 -2
- package/dist/js/context-menu.js +274 -0
- package/dist/js/datatable.js +1080 -0
- package/package.json +6 -3
- package/THIRD_PARTY_NOTICES.md +0 -41
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
|
-
|
|
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://
|
|
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
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
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
|
-
|
|
55
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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 |
|
|
77
|
-
| --- | --- |
|
|
78
|
-
| New page or whole application |
|
|
79
|
-
|
|
|
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
|
-
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
131
|
-
|
|
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
|
-
|
|
168
|
-
<a href="https://ui.wpmoo.org/components/">Browse the full catalog →</a>
|
|
169
|
-
</p>
|
|
175
|
+
## Status And Support
|
|
170
176
|
|
|
171
|
-
|
|
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
|
-
|
|
174
|
-
ship the catalog's generated preview images, Jinja templates, Sass source, or
|
|
175
|
-
Moo-owned catalog JavaScript.
|
|
185
|
+
## Contributing
|
|
176
186
|
|
|
177
|
-
|
|
178
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
203
|
-
|
|
204
|
-
|
|
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`.
|
package/certification.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "0.1",
|
|
3
3
|
"status": "preview",
|
|
4
|
-
"coreVersion": "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
|
},
|