@thebase/ui 1.2.0 → 1.3.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.
Files changed (119) hide show
  1. package/CHANGELOG.md +32 -260
  2. package/LICENSE +1 -1
  3. package/README.md +98 -93
  4. package/bin/{create-baseui-app.mjs → create-nodexui-app.mjs} +65 -65
  5. package/dist/{baseui.apidoc.esm.js → nodexui.apidoc.esm.js} +136 -136
  6. package/dist/{baseui.apidoc.min.js → nodexui.apidoc.min.js} +137 -137
  7. package/dist/nodexui.esm.js +58 -0
  8. package/dist/nodexui.i18n.esm.js +2 -0
  9. package/dist/nodexui.i18n.min.js +2 -0
  10. package/dist/nodexui.icons.esm.js +1 -0
  11. package/dist/{baseui.min.css → nodexui.min.css} +1 -1
  12. package/dist/nodexui.min.js +77 -0
  13. package/dist/{baseui.pwa.esm.js → nodexui.pwa.esm.js} +5 -5
  14. package/dist/{baseui.registry.json → nodexui.registry.json} +162 -162
  15. package/dist/{baseui.templates.xml → nodexui.templates.xml} +573 -573
  16. package/dist/{baseui.vite.esm.js → nodexui.vite.esm.js} +6 -6
  17. package/dist/runtime/mermaid/mermaid.esm.min.mjs +2 -2
  18. package/dist/runtime/milkdown/milkdown-editor.js +1 -1
  19. package/dist/runtime/milkdown/milkdown-text-editor.js +1 -1
  20. package/dist/themes/{baseui-dark.css → nodexui-dark.css} +2 -2
  21. package/dist/themes/{baseui-light.css → nodexui-light.css} +2 -2
  22. package/dist/types/analytics.d.ts +12 -12
  23. package/dist/types/apidoc.d.ts +1 -1
  24. package/dist/types/i18n.d.ts +25 -0
  25. package/dist/types/index.d.ts +16 -14
  26. package/dist/types/vite.d.ts +2 -2
  27. package/docs/analytics.md +12 -12
  28. package/docs/base-ui-skill.md +4 -4
  29. package/docs/blocks.md +6 -6
  30. package/docs/components/accordion.md +4 -4
  31. package/docs/components/alert-dialog.md +2 -2
  32. package/docs/components/alert.md +5 -5
  33. package/docs/components/apidoc.md +14 -14
  34. package/docs/components/aspect-ratio.md +2 -2
  35. package/docs/components/attachment.md +5 -5
  36. package/docs/components/avatar.md +7 -7
  37. package/docs/components/badge.md +2 -2
  38. package/docs/components/block-viewer.md +8 -8
  39. package/docs/components/breadcrumb.md +3 -3
  40. package/docs/components/bubble.md +2 -2
  41. package/docs/components/button-group.md +2 -2
  42. package/docs/components/button.md +2 -2
  43. package/docs/components/calendar.md +7 -7
  44. package/docs/components/card.md +2 -2
  45. package/docs/components/carousel.md +9 -9
  46. package/docs/components/chart.md +7 -7
  47. package/docs/components/checkbox.md +2 -2
  48. package/docs/components/clipboard-button.md +7 -7
  49. package/docs/components/code-editor.md +1 -1
  50. package/docs/components/collapsible.md +4 -4
  51. package/docs/components/combobox.md +7 -7
  52. package/docs/components/command.md +7 -7
  53. package/docs/components/context-menu.md +7 -7
  54. package/docs/components/data-table.md +9 -9
  55. package/docs/components/date-picker.md +7 -7
  56. package/docs/components/dialog.md +5 -5
  57. package/docs/components/direction.md +2 -2
  58. package/docs/components/drawer.md +4 -4
  59. package/docs/components/dropdown-menu.md +3 -3
  60. package/docs/components/empty.md +3 -3
  61. package/docs/components/field.md +1 -1
  62. package/docs/components/form.md +3 -3
  63. package/docs/components/hover-card.md +2 -2
  64. package/docs/components/icon.md +3 -3
  65. package/docs/components/input-otp.md +7 -7
  66. package/docs/components/input.md +6 -6
  67. package/docs/components/item.md +3 -3
  68. package/docs/components/kbd.md +2 -2
  69. package/docs/components/label.md +2 -2
  70. package/docs/components/markdown.md +13 -13
  71. package/docs/components/marker.md +2 -2
  72. package/docs/components/menubar.md +2 -2
  73. package/docs/components/message-scroller.md +7 -7
  74. package/docs/components/message.md +7 -7
  75. package/docs/components/native-select.md +3 -3
  76. package/docs/components/navigation-menu.md +3 -3
  77. package/docs/components/pagination.md +3 -3
  78. package/docs/components/popover.md +10 -10
  79. package/docs/components/progress.md +2 -2
  80. package/docs/components/pwa.md +4 -4
  81. package/docs/components/questionnaire.md +7 -7
  82. package/docs/components/radio-group.md +2 -2
  83. package/docs/components/resizable.md +7 -7
  84. package/docs/components/scroll-area.md +7 -7
  85. package/docs/components/select.md +2 -2
  86. package/docs/components/separator.md +2 -2
  87. package/docs/components/sheet.md +3 -3
  88. package/docs/components/shell.md +7 -7
  89. package/docs/components/sidebar.md +3 -3
  90. package/docs/components/skeleton.md +2 -2
  91. package/docs/components/slider.md +2 -2
  92. package/docs/components/spinner.md +4 -4
  93. package/docs/components/switch.md +2 -2
  94. package/docs/components/table.md +2 -2
  95. package/docs/components/tabs.md +6 -6
  96. package/docs/components/text-editor.md +6 -6
  97. package/docs/components/textarea.md +3 -3
  98. package/docs/components/theme-button.md +6 -6
  99. package/docs/components/toast.md +6 -6
  100. package/docs/components/toggle-group.md +7 -7
  101. package/docs/components/toggle.md +7 -7
  102. package/docs/components/tooltip.md +9 -9
  103. package/docs/components/typography.md +9 -9
  104. package/docs/i18n.md +119 -0
  105. package/docs/icons.md +9 -9
  106. package/docs/installation.md +31 -32
  107. package/docs/owl-components.md +36 -38
  108. package/docs/registry.md +14 -13
  109. package/docs/runtime-api.md +14 -12
  110. package/docs/theming.md +15 -15
  111. package/docs/usage-guide.md +54 -56
  112. package/package.json +51 -35
  113. package/dist/baseui.esm.js +0 -58
  114. package/dist/baseui.icons.esm.js +0 -1
  115. package/dist/baseui.min.js +0 -77
  116. /package/dist/{baseui.analytics.esm.js → nodexui.analytics.esm.js} +0 -0
  117. /package/dist/{baseui.analytics.min.js → nodexui.analytics.min.js} +0 -0
  118. /package/dist/themes/{baseui-dark.min.css → nodexui-dark.min.css} +0 -0
  119. /package/dist/themes/{baseui-light.min.css → nodexui-light.min.css} +0 -0
package/README.md CHANGED
@@ -1,28 +1,54 @@
1
- # The Base UI
1
+ # Nodex UI
2
2
 
3
- The Base UI is a CDN-installable UI kit built with Bootstrap 5 styling and Owl framework enhanced behavior. The primary way to consume it is as **Base components** (`<Button/>`-style imports into your own application); the base static markup (`b-ui`) adapter is the alternative for plain static HTML, server-rendered pages, and Base HUB website pages that have no application of their own.
3
+ **Nodex UI** is an HTML-first, framework-independent UI component library for the web. It ships its own styling and behavior, loads straight from a CDN or npm, and needs no build step. Use it as **Nodex components** (`<Button/>`-style imports in your own application) or as the static `b-ui` markup adapter for plain HTML, server-rendered pages and CMS pages.
4
4
 
5
- Its strong points: **no build step** — every component runs straight from a CDN `<script>`/import map, nothing to compile; **modular component design** — each component is a self-contained unit you import or mark up individually, not a monolith; **vanilla JavaScript/TypeScript** — no framework lock-in, no JSX, no compiler-specific syntax to learn; and this combination makes it well suited to building **WYSIWYG website builders**, where components must mount, unmount, and re-render dynamically from user-driven markup or drag-and-drop edits rather than a fixed build-time component tree.
5
+ - npm package: [`nodexui`](https://www.npmjs.com/package/nodexui) · current version **1.3.0**
6
+ - Website, live demos and docs: <https://ui.thebase.vn>
7
+ - Release history: [CHANGELOG.md](CHANGELOG.md)
6
8
 
7
- Both APIs load straight from a CDN — jsDelivr or unpkg — no build step, no self-hosting required. The snippets below use the `@latest` tag for readability; pin an exact version instead (e.g. `@1.2.0`, or `@1` to take only non-breaking updates) for any production page, since `@latest` can change what your page loads the moment a new version ships. Pure Base usage:
9
+ ## Why Nodex UI
10
+
11
+ - **No build step.** Every component runs from a CDN `<script>` or import map; nothing to compile.
12
+ - **No framework lock-in.** Vanilla JavaScript/TypeScript, no JSX, no React or Vue required.
13
+ - **Modular.** Each component is a self-contained unit you import or mark up on its own (74 in the current registry).
14
+ - **Dynamic-friendly.** Components mount, unmount and re-render from user-driven markup, which suits WYSIWYG website builders and drag-and-drop editors.
15
+ - **Batteries included.** Lucide icons, light/dark theming, PWA tooling, ApiDoc, i18n and cookieless analytics (the last three are optional standalone bundles).
16
+
17
+ ## Install
18
+
19
+ ### npm
20
+
21
+ ```sh
22
+ npm install nodexui
23
+ ```
24
+
25
+ ```js
26
+ import { Component, mount, xml } from "nodexui";
27
+ import { Button, Card, CardBody, CardHeader, CardTitle } from "nodexui";
28
+ import "nodexui/nodexui.css";
29
+ ```
30
+
31
+ Subpath exports: `nodexui/analytics`, `nodexui/i18n`, `nodexui/apidoc`, `nodexui/icons`, `nodexui/pwa`, `nodexui/vite`, `nodexui/registry`.
32
+
33
+ ### CDN (Nodex components)
34
+
35
+ Both APIs load from jsDelivr or unpkg. The snippets use `@latest` for readability; pin an exact version (`@1.3.0`, or `@1` for non-breaking updates) on any production page.
8
36
 
9
37
  ```html
10
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.css">
38
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.min.css">
11
39
  <script type="importmap">
12
40
  {
13
41
  "imports": {
14
- "@base/owl": "https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.esm.js",
15
- "@base/component": "https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.esm.js",
16
- "@base/theme": "https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.esm.js",
17
- "@base/templates": "https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.templates.xml"
42
+ "nodexui": "https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.esm.js",
43
+ "nodexui/templates": "https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.templates.xml"
18
44
  }
19
45
  }
20
46
  </script>
21
47
  <script type="module">
22
- import { Component, mount, xml } from "@base/owl";
23
- import { Button, Card, CardBody, CardHeader, CardTitle } from "@base/component";
48
+ import { Component, mount, xml } from "nodexui";
49
+ import { Button, Card, CardBody, CardHeader, CardTitle } from "nodexui";
24
50
 
25
- const templates = await fetch(import.meta.resolve("@base/templates")).then((r) => r.text());
51
+ const templates = await fetch(import.meta.resolve("nodexui/templates")).then((r) => r.text());
26
52
 
27
53
  class Root extends Component {
28
54
  static components = { Button, Card, CardBody, CardHeader, CardTitle };
@@ -39,110 +65,89 @@ Both APIs load straight from a CDN — jsDelivr or unpkg — no build step, no s
39
65
  </script>
40
66
  ```
41
67
 
42
- [unpkg](https://unpkg.com/@thebase/ui@latest/) mirrors the same files as an alternative CDN — swap any `cdn.jsdelivr.net/npm` URL above for `unpkg.com` (e.g. `https://unpkg.com/@thebase/ui@latest/dist/baseui.esm.js`) if jsDelivr is unreachable in your environment. See [Base Components](docs/owl-components.md) for the full API, npm/bundler usage, and mixing with the static adapter.
68
+ Swap `cdn.jsdelivr.net/npm` for `unpkg.com` if jsDelivr is unreachable. See [Nodex Components](docs/owl-components.md) for the full API and bundler usage.
69
+
70
+ ### CDN (static `b-ui` markup)
43
71
 
44
- If you have no application, use the base static markup (`b-ui`) adapter instead — one stylesheet and one script tag, no import map:
72
+ With no application of your own, use one stylesheet and one script tag, no import map:
45
73
 
46
74
  ```html
47
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.css">
48
- <script src="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.js" defer></script>
75
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.min.css">
76
+ <script src="https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.min.js" defer></script>
49
77
  ```
50
78
 
51
- `dist/baseui.min.js`/`baseui.esm.js` are fully self-contained and back both APIs above: Bootstrap's JS bundle, the Owl runtime, every Base component class, and the theme helper are all embedded in load order (Bootstrap, then Owl, then the Base UI) — one file, nothing else to load first. There is no separate `baseui.owl.*`/`baseui.components.esm.js`/`baseui.theme.esm.js`. (`dist/bootstrap.bundle.min.js` still ships standalone, unmodified, for a project that wants vendored Bootstrap JS on its own — the Base UI itself never needs it loaded separately.)
79
+ `dist/nodexui.min.js` and `dist/nodexui.esm.js` are self-contained and back both APIs: the JS bundle, the Nodex runtime, every component class and the theme helper are embedded in load order. There is no separate runtime, components or theme file.
52
80
 
53
- The Base UI exposes every component (74 in the current registry) as a real Owl component class — see [Base Components](docs/owl-components.md) for the complete API, npm/bundler usage, and mixing with the static adapter.
81
+ Every component ships both APIs from `src/components/<name>/`: the static adapter (`<name>.js`, using `b-att-*` attributes and `nodexui:*` events) and a component class (`<name>.component.js`). A few components are intentionally reshaped in the component API, notably `chart` and the data-driven `data-table`, `combobox`, `command` and `calendar`. Each page under `docs/components/` explains the specifics.
54
82
 
55
- For app-level theme controls, import `createThemeController`/`BaseUITheme` as `@base/theme` in browser import maps (pointing at the same `dist/baseui.esm.js`) or straight from `@thebase/ui` in npm/bundler apps, to create persisted light/dark toggles like the documentation pages use.
83
+ ## Theming
56
84
 
57
- Every component ships both APIs from `src/components/<name>/`: the static `b-ui` adapter (`<name>.js`, using `b-att-*` attributes and `baseui:*` events) and a Base component class (`<name>.component.js`, exported from `@thebase/ui/components`). A few components' pure Base treatment is intentionally lighter or reshaped versus their static markup-driven adapter — most notably `chart` (a slotted container; static Chart.js bootstrapping stays a `b-ui`-only concern) and the data-driven `data-table`/`combobox`/`command`/`calendar` (props-driven instead of slot/markup-driven). See each component's doc page under `docs/components/` for specifics.
85
+ Colour tokens, `--base-radius` and `--b-overlay` live in the downloadable `nodexui-light.css` and `nodexui-dark.css` themes. The **Theme** tab of the examples app (`examples/index.html#/theme`) builds a custom pair for you. For app-level light/dark toggles, import `createThemeController` / `NodexUITheme` as `nodexui` (import map) or from `nodexui` (bundler). See [Theming](docs/theming.md).
58
86
 
59
- ## Analytics
87
+ ## Optional services
60
88
 
61
- The Base UI also ships an optional, cookieless web-analytics service (from 1.1.0). It is a standalone bundle — not part of `dist/baseui.min.js`/`baseui.esm.js`, with no Owl, Bootstrap, or component runtime dependency (~5.6 KB minified) — so you can load it with or without the rest of the Base UI. Nothing is collected until the page calls `init()`:
89
+ | Service | Import | What it is |
90
+ | --- | --- | --- |
91
+ | **Analytics** | `nodexui/analytics`, `dist/nodexui.analytics.min.js` | Cookieless, standalone (about 5.6 KB min). Nothing is collected until `init()` is called. Covers pageviews (including SPA), engagement, outbound links, downloads and forms. See [Analytics](docs/analytics.md) and [`examples/analytics/`](examples/analytics/). |
92
+ | **i18n** | `nodexui/i18n`, `dist/nodexui.i18n.min.js` | Gettext-style `.po` catalogs, no runtime dependencies. See [i18n](docs/i18n.md) and [`examples/i18n/`](examples/i18n/). |
93
+ | **ApiDoc** | `nodexui/apidoc` | Renders an OpenAPI 3 JSON file as browsable docs with a Try It panel and 17 code-sample languages. See [ApiDoc](docs/components/apidoc.md) and [`examples/apidoc/`](examples/apidoc/). |
94
+ | **PWA toolkit** | `nodexui/pwa`, `nodexui/vite` | `buildManifest`, `buildServiceWorker` and the `nodexuiPwa()` Vite plugin. |
62
95
 
63
96
  ```html
64
97
  <script type="module">
65
- import { init, track } from "https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.analytics.esm.js";
98
+ import { init, track } from "https://cdn.jsdelivr.net/npm/nodexui@1.3.0/dist/nodexui.analytics.esm.js";
66
99
  init({ backendUrl: "https://stats.example.com" }); // events POST to <backendUrl>/api/event
67
100
  track("Signup", { props: { plan: "pro" } });
68
101
  </script>
69
102
  ```
70
103
 
71
- From npm, use `import { init, track } from "@thebase/ui/analytics"`; for a classic `<script>` tag, `dist/baseui.analytics.min.js` sets `window.thebase.analytics`. It covers automatic and SPA pageviews, engagement (time on page and scroll depth), outbound links, file downloads, form submissions, and `thebase-event-*` class tagging. See [Analytics](docs/analytics.md) for every option, the payload format, opt-out, and sample Go Fiber / FastAPI backends. [`examples/analytics/`](examples/analytics/) holds a ready-to-run the Base UI dashboard for the collected data.
104
+ ```js
105
+ import { init, t, loadCatalog } from "https://cdn.jsdelivr.net/npm/nodexui@1.3.0/dist/nodexui.i18n.esm.js";
106
+ init({ languages: [{ code: "en", label: "English" }, { code: "vi", label: "Tiếng Việt" }] });
107
+ await loadCatalog(import.meta.url); // fetches ./i18n/vi.po when Vietnamese is picked
108
+ console.log(t("Hello {name}", { name: "An" }));
109
+ ```
72
110
 
73
- ## PWA toolkit and CLI
111
+ ### Project CLI
74
112
 
75
- The Base UI can scaffold and ship installable apps (from 1.1.2). The `create-baseui-app` CLI creates a static-importmap or Vite project (`create`, `init`, `convert`) and generates `manifest.webmanifest`, `sw.js` and a default icon set (`pwa`, icons from 1.1.3); the same generators are exported from `@thebase/ui/pwa` as `buildManifest` / `buildServiceWorker`.
113
+ `create-nodexui-app` scaffolds a static-importmap or Vite PWA project (`create`, `init`, `convert`) and generates the manifest, service worker and icons (`pwa`):
76
114
 
77
115
  ```sh
78
- npx create-baseui-app create my-app
79
- npx create-baseui-app pwa . --config baseui.pwa.config.js
116
+ npx create-nodexui-app create my-app
117
+ npx create-nodexui-app pwa . --config nodexui.pwa.config.js
80
118
  ```
81
119
 
82
- See [Usage Guide §5b](docs/usage-guide.md) and the [PWA component](docs/components/pwa.md). The examples site itself is an installable PWA (`examples/pwa/`).
83
-
84
- ## Outlined fields
120
+ See [Usage Guide §5b](docs/usage-guide.md) and the [PWA component](docs/components/pwa.md).
85
121
 
86
- New in 1.1.5 (1.1.6 adds `useTip` to show helper text in an info-icon tooltip): `Input`, `Textarea`, `NativeSelect`, `Combobox`, `DatePicker` and `Select` share one Material-style outlined look (`label`, `supportingText`, `errorText`, `invalid`), and `Field` passes its `label`/`description`/`error` to the control inside. See [Field](docs/components/field.md) and [Input](docs/components/input.md).
122
+ ## Search and discoverability
87
123
 
88
- ## ApiDoc
89
-
90
- New in 1.1.3: `ApiDoc` (`b-ui="apidoc"`) renders an OpenAPI 3 JSON file as browsable API docs — grouped sidebar, parameters, request bodies, responses, a Try It panel with code samples in 17 languages, and an Authorize dialog. See [ApiDoc](docs/components/apidoc.md), the `apidoc-01` block, and the live demo in [`examples/apidoc/`](examples/apidoc/).
91
-
92
- ## Theming
93
-
94
- New in 1.2.0: colour tokens, `--base-radius` and `--b-overlay` live only in the downloadable `baseui-light.css` / `baseui-dark.css` themes (new `--b-success|warning|info` status tokens), and the **Theme** tab of the examples app (`examples/index.html#/theme`) builds a custom pair for you. **Breaking in 1.2.0:** the `bu-` class and `--bu-*` variable prefix is now `b-` (`bu-button` -> `b-button`); see the CHANGELOG migration note. See [Theming](docs/theming.md).
95
-
96
- ## Release notes
97
-
98
- See [CHANGELOG.md](CHANGELOG.md) for the full version history. Current version: **1.2.0**.
124
+ The public site <https://ui.thebase.vn> keeps its hostname and URLs under the Nodex UI brand. The examples app sets per-route title, description, canonical and Open Graph tags (`examples/seo.js`), ships `sitemap.xml`, and reports first-party events through `examples/tracking.js`. Search Console is used for search visibility; Google Analytics is not. The plan, constraints and KPIs are in [the SEO, developer marketing and analytics brief](.agents/knowledge/base-ui-seo-analytics-ai-agent-brief.md).
99
125
 
100
126
  ## Versioning policy
101
127
 
102
- From 1.0.0 on, the Base UI follows [Semantic Versioning](https://semver.org/). The public API covered by this promise is:
128
+ Nodex UI follows [Semantic Versioning](https://semver.org/) from **1.3.0**. The public API covered by this promise is:
103
129
 
104
- - Base component classes, their names, props, slots, and callback props exported from `@thebase/ui`.
105
- - Static markup: `b-ui`/`b-icon` names, `b-att-*` attributes, and `baseui:*` events.
130
+ - Component classes, their names, props, slots and callback props exported from `nodexui`.
131
+ - Static markup: `b-ui` / `b-icon` names, `b-att-*` attributes and `nodexui:*` events.
106
132
  - CSS: `b-*` class names and `--b-*` design tokens.
107
- - Runtime exports (`BaseUI`, `Component`, `mount`, `xml`, `cn`, `mergeStyle`, theme helpers), including `Component`'s fallback to globally registered the Base UI components, and the published `dist/` file names and package `exports` paths.
108
-
109
- What each release type means:
110
-
111
- - **Major** (`2.0.0`): removes or renames any of the above, or changes its behavior or default look in a way existing pages must adapt to. Every breaking change is listed under a **Breaking** heading in the CHANGELOG with a migration note.
112
- - **Minor** (`1.1.0`): new components, props, variants, tokens, or icons — existing code keeps working unchanged.
113
- - **Patch** (`1.0.1`): bug fixes and visual fixes that don't change the API.
133
+ - Runtime exports (`NodexUI`, `Component`, `mount`, `xml`, `cn`, `mergeStyle`, theme helpers), the published `dist/` file names and the package `exports` paths.
114
134
 
115
- Anything prefixed `_`, undocumented internals, and the `docs/`/`examples/` sources are not part of the public API. Neither are the source-level authoring helpers described in [Component Authoring](docs/component-authoring.md) (`optional()`, `slotProps`, the `open-state.js` hooks, `bindBootstrapOverlay()`): they aren't exported from the package and may change in any release. Deprecated APIs keep working until the next major and are flagged in the CHANGELOG first.
135
+ **Major** releases remove or rename any of the above (listed under **Breaking** in the CHANGELOG with a migration note), **minor** releases add components, props, variants, tokens or icons, and **patch** releases fix bugs without changing the API. Names prefixed `_`, undocumented internals, `docs/` and `examples/` sources, and the authoring helpers in [Component Authoring](docs/component-authoring.md) are not public API. Deprecated APIs keep working until the next major and are flagged in the CHANGELOG first.
116
136
 
117
- Pinning: use an exact version (`@1.2.0`) when you need byte-identical output, or the major range (`@1` on jsDelivr/unpkg, `^1.0.0` in npm) to receive fixes and features without breaking changes. Avoid `@latest` in production — it will move to the next major.
137
+ Pin an exact version (`@1.3.0`) for byte-identical output, or the major range (`@1` on jsDelivr/unpkg, `^1.3.0` in npm) to receive non-breaking updates. Avoid `@latest` in production.
118
138
 
119
- ## Project Documents
139
+ ## Documentation
120
140
 
121
- Use these documents as the canonical project map:
141
+ - [Usage Guide](docs/usage-guide.md): the entry point for integrating Nodex UI into a project.
142
+ - [Installation](docs/installation.md): CDN, npm, self-hosting, icon assets, pinned versions, release guardrails.
143
+ - [Nodex Components](docs/owl-components.md): the component API, what to load, common mistakes.
144
+ - [Runtime API](docs/runtime-api.md): the `window.thebase` global, mounting lifecycle, theming API, destroy behavior.
145
+ - [Registry](docs/registry.md): `dist/nodexui.registry.json`, build files, component and block metadata.
146
+ - [Theming](docs/theming.md), [Icons](docs/icons.md), [Blocks](docs/blocks.md), [Analytics](docs/analytics.md), [i18n](docs/i18n.md).
147
+ - [Component reference](docs/components/button.md): usage, attributes, events and accessibility per component.
148
+ - [Component Authoring](docs/component-authoring.md): the `src/components/<name>/` contract (repo only, not published).
122
149
 
123
- - [Usage Guide](docs/usage-guide.md) is the single entry point for integrating the Base UI into a consumer project — start here, then follow its links into the reference docs below.
124
- - [Installation](docs/installation.md) covers CDN, npm, self-hosted usage, icon assets, pinned versions, and release guardrails.
125
- - [Analytics](docs/analytics.md) documents the optional, standalone cookieless analytics service (`@thebase/ui/analytics`).
126
- - [Runtime API](docs/runtime-api.md) documents the `window.thebase` global, mounting lifecycle, theming API, and destroy behavior.
127
- - [Registry](docs/registry.md) explains `dist/baseui.registry.json`, build files, block metadata, component metadata, and integrity hashes.
128
- - [Theming](docs/theming.md) describes `b-theme`, runtime theme overrides, shadcn-aligned tokens, Bootstrap variable mapping, and shared example theme persistence.
129
- - [Built-in Icons](docs/icons.md) covers the Lucide icon library, `b-icon` markup, accessibility rules, self-hosted icon paths, and JavaScript helpers.
130
- - [Component Authoring](docs/component-authoring.md) defines the `src/components/<name>/` source contract, component registration rules, event naming, cleanup requirements, and CSS scoping policy. Repo-only — not published to npm (see below).
131
- - [Base Components](docs/owl-components.md) covers the Base component API (`@thebase/ui` + `dist/baseui.templates.xml`), what to load, and common mistakes.
132
- - [Blocks](docs/blocks.md) documents copyable static shadcn-style blocks, source stylesheet ownership under `examples/blocks/`, gallery/viewer URLs, and block icon rules.
133
- - [Component Reference](docs/components/button.md) starts the per-component documentation set in `docs/components/`; each component page includes usage, attributes, events, accessibility notes, and test guidance where relevant.
134
- - [Frontend Implementation Plan](.agents/planning/2026-08-11-frontend-baseui-bootstrap-owl-implementation-plan.md) records the completed the Base UI 1.0.0 delivery checklist and earlier decisions for engineering context.
135
- - [Historical Product Plan](.agents/knowledge/baseUI/2026-08-11-baseui-bootstrap-owl-plan.md) preserves the original Bootstrap 5 + Owl product brief; use current `docs/` and registry files when they disagree with older planning assumptions.
136
-
137
- The links above work as-is when browsing this repo. `docs/*.md` and `docs/components/` also ship inside the published npm package (see `files` in `package.json`), so the same docs are reachable straight from a CDN without cloning the repo — no HTML rendering, just the raw Markdown source:
138
-
139
- ```text
140
- https://unpkg.com/@thebase/ui@latest/docs/usage-guide.md
141
- https://unpkg.com/@thebase/ui@latest/docs/components/button.md
142
- https://cdn.jsdelivr.net/npm/@thebase/ui@latest/docs/usage-guide.md
143
- ```
144
-
145
- Drop the version (`@thebase/ui/docs/...`) to always resolve to latest, or pin a version the way the rest of this README recommends pinning `dist/` assets. `docs/v2/` (the vendored general Owl framework reference) and `docs/component-authoring.md` (the Base UI's own component-authoring contract) are intentionally **not** published — they're development-time references for working inside this repo, not something a consumer needs to use the library.
150
+ `docs/*.md` and `docs/components/` also ship in the npm package, so the raw Markdown is reachable from a CDN, for example `https://cdn.jsdelivr.net/npm/nodexui@1.3.0/docs/usage-guide.md`. `docs/v2/` and `docs/component-authoring.md` are not published.
146
151
 
147
152
  ## Development
148
153
 
@@ -152,22 +157,22 @@ npm run build
152
157
  npm run dev
153
158
  ```
154
159
 
155
- Open `examples/index.html` through the dev server to test the browser build. Standalone demos: `examples/apidoc/` (ApiDoc with a Petstore spec), `examples/analytics/` (dashboard + Go/FastAPI backends), and `momo_demo/` (static `b-ui` business-admin page).
160
+ Open `examples/index.html` through the dev server. It is the single shell for docs, the component gallery, blocks, icons and charts, routed by hash (`#/docs`, `#/components`, `#/blocks`, `#/icons`, `#/chart`). Standalone demos: `examples/apidoc/`, `examples/analytics/` and `momo_demo/` (static `b-ui` admin page).
156
161
 
157
- `examples/index.html` is the single application shell for docs, the component gallery, the block gallery, icons, and the chart catalog, all reachable through one `main-nav` and hash routes (`#/docs`, `#/components`, `#/blocks`, `#/icons`, `#/chart`). Old bookmarked URLs like `/docs` and `/blocks` redirect to their hash-route equivalent. Each block has a shadcn-style Preview/Code/responsive viewer plus its source stylesheet colocated in `examples/blocks/`. `examples/charts/index.html` mirrors the current shadcn chart catalog with interactive the Base UI examples for area, bar, line, pie, radar, radial, and tooltip charts, and is embedded inline at `#/chart`.
162
+ Lucide's full SVG set is built in: `<span b-icon="search"></span>` in HTML or `thebase.icons.lucide.url("search")` from JavaScript. Builds publish the SVGs to `dist/icons/lucide/` and an index at `dist/icons/lucide.json`.
158
163
 
159
- The Base UI includes the full Lucide SVG icon set as a built-in icon library. Use `<span b-icon="search"></span>` in HTML, or `thebase.icons.lucide.url("search")` from JavaScript. Builds publish all SVGs to `dist/icons/lucide/` and an index at `dist/icons/lucide.json`.
160
-
161
- ## Package Scripts
162
-
163
- - `npm run dev` starts a static server for examples and built `dist/` assets.
164
- - `npm run build` creates CDN and npm artifacts in `dist/`.
165
- - `npm run lint` checks JavaScript and CSS policy.
166
- - `npm run test` runs runtime tests.
167
- - `npm publish` runs `prepublishOnly` first.
164
+ | Script | Purpose |
165
+ | --- | --- |
166
+ | `npm run dev` | Static server for examples and built `dist/` assets |
167
+ | `npm run build` | Build CDN and npm artifacts into `dist/` |
168
+ | `npm run lint` | JavaScript and CSS policy checks |
169
+ | `npm run test` | Runtime tests |
170
+ | `npm publish` | Runs `prepublishOnly` (lint, test, build) first |
168
171
 
169
172
  ## Distribution
170
173
 
171
- The npm package publishes the built `dist/` artifacts plus package metadata. The browser build bundles Bootstrap CSS, and `dist/baseui.min.js`/`baseui.esm.js` embed Bootstrap's JS bundle, the Owl runtime, every Base component class, and the theme helper directly (Bootstrap then Owl then the Base UI, in that load order) — consumers install the Base UI with one stylesheet and one script tag for either API. Bootstrap's JS drives every component that has a Bootstrap JS equivalent (modal, dropdown, collapse, tab, toast, carousel, tooltip, popover, alert); the Base UI's `.behavior.js`/`runtime/*.js` helpers wrap Bootstrap's JS API instead of reimplementing it, for both the static and pure Base APIs. `dist/bootstrap.bundle.min.js` also ships standalone (unmodified) and `dist/baseui.icons.esm.js` stays a separate, deliberate exception (2000+ generated icon components would blow the main bundle's size budget), as do the ApiDoc language logos (`dist/apidoc/img/`, loaded on demand) and the opt-in analytics service (`dist/baseui.analytics.esm.js`/`.min.js`, so pages that don't track pay nothing for it) — everything else is one file. Every shipped CSS/JS artifact is minified — there are no unminified twins to keep in sync.
174
+ The npm package `nodexui` publishes the built `dist/` artifacts, `docs/`, `README.md`, `CHANGELOG.md` and `LICENSE`. Everything is minified, with no unminified twins. Deliberate separate files: `dist/nodexui.icons.esm.js` (2000+ generated icon components), the ApiDoc language logos in `dist/apidoc/img/`, the analytics, i18n and ApiDoc bundles, and `dist/bootstrap.bundle.min.js` (unmodified, for projects that vendor built-in JS themselves).
175
+
176
+ ## License
172
177
 
173
- The published tarball also carries `docs/*.md` and `docs/components/` (see the "Project Documents" section above), `README.md`, `CHANGELOG.md`, and `LICENSE` — `docs/v2/` and `docs/component-authoring.md` are deliberately excluded from `package.json`'s `files` list since they're development-time-only references for working inside this repo.
178
+ MIT. See [LICENSE](LICENSE).