# Moo UI
> Bootstrap markup. shadcn feel.
Moo UI 1.2.1 is the release target for a Bootstrap 5.3-native component system with a restrained,
shadcn-inspired visual language for server-rendered and Bootstrap-native apps.
It is CSS-first, not JavaScript-free: Bootstrap owns native plugin behavior,
while Moo UI adds optional, explicit ESM only for documented gaps.
Use Moo UI when a project already uses Bootstrap or wants server-rendered HTML
with Bootstrap-compatible classes, variables, and plugin behavior. Do not use
Moo UI as evidence for a React, Tailwind, Radix, or internal Sass-source
implementation.
## Version And Support
- package release target: `@wpmoo/ui@1.2.1`
- Bootstrap peer range: `>=5.3.0 <5.4`
- Tested Bootstrap versions in the manifest: `5.3.0`, `5.3.3`, `5.3.8`
- License: MIT for source code
- Certification manifest status: `preview`
- Certified components in the current manifest: none
- Support policy: https://github.com/wpmoo-org/ui/blob/main/SUPPORT.md
The preview certification status means WPMoo-maintained release evidence exists,
not independent or accredited certification.
## Public Package Exports
- `@wpmoo/ui/moo-ui.css`: full expanded Bootstrap-compatible CSS build
- `@wpmoo/ui/moo-ui.min.css`: full minified CSS build
- `@wpmoo/ui/moo.css`: scoped expanded component layer for `.moo-ui`
- `@wpmoo/ui/moo.min.css`: scoped minified component layer
- `@wpmoo/ui/moo-ui.js`: optional aggregate ESM lifecycle bundle for all Moo UI modules
- `@wpmoo/ui/moo-ui.min.js`: minified aggregate ESM bundle
- `@wpmoo/ui/combobox.js`: optional Combobox ESM lifecycle
- `@wpmoo/ui/context-menu.js`: optional Context Menu ESM lifecycle
- `@wpmoo/ui/datatable.js`: optional DataTable ESM lifecycle
- `@wpmoo/ui/sidebar.js`: optional Sidebar ESM lifecycle
- `@wpmoo/ui/toc.js`: optional TableOfContents lifecycle and current-section tracking (`table-of-contents.js` remains a compatibility entrypoint)
- `@wpmoo/ui/chart.js`: optional Chart ESM lifecycle (Chart.js 4.5.1 bundled)
- `@wpmoo/ui/chart.min.js`: minified Chart bundle (artifact variant of chart.js)
- `@wpmoo/ui/datepicker.js`: optional Datepicker ESM lifecycle (self-contained, no third-party runtime)
- `@wpmoo/ui/datepicker.min.js`: minified Datepicker bundle (artifact variant of datepicker.js)
- `@wpmoo/ui/slider.js`: optional Slider ESM lifecycle (native range input, no third-party runtime)
- `@wpmoo/ui/sheet.js`: explicit `initSheets(root)` for server-marked Sheets; uses Bootstrap Offcanvas, no import-time scan
- `@wpmoo/ui/state.js`: classic placement-dependent browser state bootstrap (not ESM)
- `@wpmoo/ui/release-manifest.json`: release metadata with SHA-256 hashes for adapter-facing CSS and state bootstrap bytes
- `@wpmoo/ui/scss/config`: public Sass variable allow-list (LibSass `@import`)
- `@wpmoo/ui/scss/moo-ui`: full Bootstrap-compatible Sass source entrypoint
- `@wpmoo/ui/scss/moo-core`: scoped `.moo-ui` Sass source entrypoint
- `@wpmoo/ui/scss/components`: component layer Sass source entrypoint
- `@wpmoo/ui/scss/settings`: Moo UI settings aggregate for Bootstrap variable setup
- `@wpmoo/ui/certification.json`: versioned support and evidence manifest
- `@wpmoo/ui/package.json`: package metadata
The npm package does not publish catalog templates, preview artwork, catalog
JavaScript, or site assets. It ships Sass source files for the documented Sass
entrypoints; undocumented internal partial paths are not separate public APIs.
## Installation Facts
- Version-pinned CDN full stylesheet after publication: `https://unpkg.com/@wpmoo/ui@1.2.1/dist/assets/css/moo-ui.css`
Full replacement:
```js
import "@wpmoo/ui/moo-ui.css";
import "bootstrap/dist/js/bootstrap.bundle.min.js"; // only when plugins are used
```
The full stylesheet emits Moo UI root/body theme tokens before Bootstrap's
reboot body rules; pages that persist dark or system mode should set
`data-bs-theme` synchronously before loading it.
Scoped adoption:
```js
import "bootstrap/dist/css/bootstrap.min.css";
import "@wpmoo/ui/moo.css";
import "bootstrap/dist/js/bootstrap.bundle.min.js"; // only when plugins are used
```
```html
```
Optional Moo UI ESM is imported only for documented gaps and must be initialized
explicitly. Importing `combobox.js`, `context-menu.js`, `datatable.js`,
`sidebar.js`, `chart.js`, `datepicker.js`, `slider.js`, `sheet.js`, or the aggregate
`moo-ui.js` does not scan the document.
## Runtime Ownership
- Static HTML and CSS components: browser + Bootstrap-compatible markup
- Bootstrap plugins: Bootstrap JavaScript and documented `data-bs-*` behavior
- Combobox: optional Moo UI ESM
- Context Menu pointer and keyboard invocation: optional Moo UI ESM composed with
Bootstrap Dropdown
- DataTable sorting, filtering, selection, pagination, and responsive card sync:
optional Moo UI ESM composed with Bootstrap Table and controls
- Sidebar state and responsive coordination: optional Moo UI ESM composed with
Bootstrap behavior
- Chart rendering with light/dark theme toggle: optional Moo UI ESM, self-contained
bundle (Chart.js 4.5.1 bundled at build time)
- Datepicker with shadcn-like trigger/popover/calendar: optional Moo UI ESM,
self-contained (no third-party runtime)
- Slider with native range input semantics: optional Moo UI ESM, no third-party
runtime
- Sheet server-open marker: explicit `initSheets(root)` after Bootstrap Offcanvas
is available on the document's window
- Table of Contents: native fragment links and a
Bootstrap dropdown, with optional Moo UI ESM for current-section tracking
and explicit `refresh()` / `dispose()` lifecycle
## Documentation
- Home: https://ui.wpmoo.org/
- Introduction: https://ui.wpmoo.org/introduction/
- Installation: https://ui.wpmoo.org/installation/
- Support & Evidence: https://ui.wpmoo.org/support/
- Components: https://ui.wpmoo.org/components/
- Blocks: https://ui.wpmoo.org/blocks/
- AI Usage: https://ui.wpmoo.org/skills/
- Changelog: https://ui.wpmoo.org/changelog/
- Contributing: https://ui.wpmoo.org/contributing/
## Component Catalog
- [Components](https://ui.wpmoo.org/components/)
- [Accordion](https://ui.wpmoo.org/components/accordion/)
- [Alert](https://ui.wpmoo.org/components/alert/)
- [Alert Dialog](https://ui.wpmoo.org/components/alert-dialog/)
- [Avatar](https://ui.wpmoo.org/components/avatar/)
- [Badge](https://ui.wpmoo.org/components/badge/)
- [Breadcrumb](https://ui.wpmoo.org/components/breadcrumb/)
- [Button](https://ui.wpmoo.org/components/button/)
- [Button Group](https://ui.wpmoo.org/components/button-group/)
- [Card](https://ui.wpmoo.org/components/card/)
- [Chart](https://ui.wpmoo.org/components/chart/)
- [Checkbox](https://ui.wpmoo.org/components/checkbox/)
- [Close Button](https://ui.wpmoo.org/components/close-button/)
- [Collapsible](https://ui.wpmoo.org/components/collapsible/)
- [Combobox](https://ui.wpmoo.org/components/combobox/)
- [Context Menu](https://ui.wpmoo.org/components/context-menu/)
- [Data Table](https://ui.wpmoo.org/components/datatable/)
- [Date Picker](https://ui.wpmoo.org/components/datepicker/)
- [Dialog](https://ui.wpmoo.org/components/dialog/)
- [Dropdown Menu](https://ui.wpmoo.org/components/dropdown-menu/)
- [Empty](https://ui.wpmoo.org/components/empty/)
- [Field](https://ui.wpmoo.org/components/field/)
- [Form](https://ui.wpmoo.org/components/form/)
- [Input](https://ui.wpmoo.org/components/input/)
- [Input Group](https://ui.wpmoo.org/components/input-group/)
- [Kbd](https://ui.wpmoo.org/components/kbd/)
- [Menubar](https://ui.wpmoo.org/components/menubar/)
- [Native Select](https://ui.wpmoo.org/components/select/)
- [Navigation](https://ui.wpmoo.org/components/navigation/)
- [Pagination](https://ui.wpmoo.org/components/pagination/)
- [Popover](https://ui.wpmoo.org/components/popover/)
- [Progress](https://ui.wpmoo.org/components/progress/)
- [Radio Group](https://ui.wpmoo.org/components/radio-group/)
- [Separator](https://ui.wpmoo.org/components/separator/)
- [Sheet](https://ui.wpmoo.org/components/sheet/)
- [Sidebar](https://ui.wpmoo.org/components/sidebar/)
- [Skeleton](https://ui.wpmoo.org/components/skeleton/)
- [Slider](https://ui.wpmoo.org/components/slider/)
- [Spinner](https://ui.wpmoo.org/components/spinner/)
- [Switch](https://ui.wpmoo.org/components/switch/)
- [Table](https://ui.wpmoo.org/components/table/)
- [Table of Contents](https://ui.wpmoo.org/components/toc/)
- [Tabs](https://ui.wpmoo.org/components/tabs/)
- [Textarea](https://ui.wpmoo.org/components/textarea/)
- [Toast](https://ui.wpmoo.org/components/toast/)
- [Toggle Group](https://ui.wpmoo.org/components/toggle-group/)
- [Tooltip](https://ui.wpmoo.org/components/tooltip/)
- [Typography](https://ui.wpmoo.org/components/typography/)
## Utilities And Blocks
- [Blocks](https://ui.wpmoo.org/blocks/)
- [Utilities](https://ui.wpmoo.org/utils/)
- [Border](https://ui.wpmoo.org/utils/border/)
- [Scroll Fade](https://ui.wpmoo.org/utils/scroll-fade/)
## Agent Guidance
- Preserve Bootstrap behavior before adding custom behavior.
- Use Moo UI ESM only for Combobox, Context Menu, DataTable, Sidebar, Chart,
Datepicker, Slider, Sheet initialization, Table of Contents, or the documented
aggregate `moo-ui.js` entrypoint.
- Do not invent public Sass APIs, undocumented JavaScript entrypoints, or
certification claims.
- Treat shadcn/ui as visual direction only; examples and implementation should
remain original and Bootstrap-compatible.