@thebase/ui 1.2.1 → 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 -269
  2. package/LICENSE +1 -1
  3. package/README.md +96 -105
  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.icons.esm.js +1 -0
  9. package/dist/{baseui.min.css → nodexui.min.css} +1 -1
  10. package/dist/nodexui.min.js +77 -0
  11. package/dist/{baseui.pwa.esm.js → nodexui.pwa.esm.js} +5 -5
  12. package/dist/{baseui.registry.json → nodexui.registry.json} +162 -162
  13. package/dist/{baseui.templates.xml → nodexui.templates.xml} +573 -573
  14. package/dist/{baseui.vite.esm.js → nodexui.vite.esm.js} +6 -6
  15. package/dist/runtime/mermaid/mermaid.esm.min.mjs +2 -2
  16. package/dist/runtime/milkdown/milkdown-editor.js +1 -1
  17. package/dist/runtime/milkdown/milkdown-text-editor.js +1 -1
  18. package/dist/themes/{baseui-dark.css → nodexui-dark.css} +2 -2
  19. package/dist/themes/{baseui-light.css → nodexui-light.css} +2 -2
  20. package/dist/types/analytics.d.ts +12 -12
  21. package/dist/types/apidoc.d.ts +1 -1
  22. package/dist/types/i18n.d.ts +7 -7
  23. package/dist/types/index.d.ts +15 -15
  24. package/dist/types/vite.d.ts +2 -2
  25. package/docs/analytics.md +12 -12
  26. package/docs/base-ui-skill.md +4 -4
  27. package/docs/blocks.md +6 -6
  28. package/docs/components/accordion.md +4 -4
  29. package/docs/components/alert-dialog.md +2 -2
  30. package/docs/components/alert.md +5 -5
  31. package/docs/components/apidoc.md +14 -14
  32. package/docs/components/aspect-ratio.md +2 -2
  33. package/docs/components/attachment.md +5 -5
  34. package/docs/components/avatar.md +7 -7
  35. package/docs/components/badge.md +2 -2
  36. package/docs/components/block-viewer.md +8 -8
  37. package/docs/components/breadcrumb.md +3 -3
  38. package/docs/components/bubble.md +2 -2
  39. package/docs/components/button-group.md +2 -2
  40. package/docs/components/button.md +2 -2
  41. package/docs/components/calendar.md +7 -7
  42. package/docs/components/card.md +2 -2
  43. package/docs/components/carousel.md +9 -9
  44. package/docs/components/chart.md +7 -7
  45. package/docs/components/checkbox.md +2 -2
  46. package/docs/components/clipboard-button.md +7 -7
  47. package/docs/components/code-editor.md +1 -1
  48. package/docs/components/collapsible.md +4 -4
  49. package/docs/components/combobox.md +7 -7
  50. package/docs/components/command.md +7 -7
  51. package/docs/components/context-menu.md +7 -7
  52. package/docs/components/data-table.md +9 -9
  53. package/docs/components/date-picker.md +7 -7
  54. package/docs/components/dialog.md +5 -5
  55. package/docs/components/direction.md +2 -2
  56. package/docs/components/drawer.md +4 -4
  57. package/docs/components/dropdown-menu.md +3 -3
  58. package/docs/components/empty.md +3 -3
  59. package/docs/components/field.md +1 -1
  60. package/docs/components/form.md +3 -3
  61. package/docs/components/hover-card.md +2 -2
  62. package/docs/components/icon.md +3 -3
  63. package/docs/components/input-otp.md +7 -7
  64. package/docs/components/input.md +6 -6
  65. package/docs/components/item.md +3 -3
  66. package/docs/components/kbd.md +2 -2
  67. package/docs/components/label.md +2 -2
  68. package/docs/components/markdown.md +13 -13
  69. package/docs/components/marker.md +2 -2
  70. package/docs/components/menubar.md +2 -2
  71. package/docs/components/message-scroller.md +7 -7
  72. package/docs/components/message.md +7 -7
  73. package/docs/components/native-select.md +3 -3
  74. package/docs/components/navigation-menu.md +3 -3
  75. package/docs/components/pagination.md +3 -3
  76. package/docs/components/popover.md +10 -10
  77. package/docs/components/progress.md +2 -2
  78. package/docs/components/pwa.md +4 -4
  79. package/docs/components/questionnaire.md +7 -7
  80. package/docs/components/radio-group.md +2 -2
  81. package/docs/components/resizable.md +7 -7
  82. package/docs/components/scroll-area.md +7 -7
  83. package/docs/components/select.md +2 -2
  84. package/docs/components/separator.md +2 -2
  85. package/docs/components/sheet.md +3 -3
  86. package/docs/components/shell.md +7 -7
  87. package/docs/components/sidebar.md +3 -3
  88. package/docs/components/skeleton.md +2 -2
  89. package/docs/components/slider.md +2 -2
  90. package/docs/components/spinner.md +4 -4
  91. package/docs/components/switch.md +2 -2
  92. package/docs/components/table.md +2 -2
  93. package/docs/components/tabs.md +6 -6
  94. package/docs/components/text-editor.md +6 -6
  95. package/docs/components/textarea.md +3 -3
  96. package/docs/components/theme-button.md +6 -6
  97. package/docs/components/toast.md +6 -6
  98. package/docs/components/toggle-group.md +7 -7
  99. package/docs/components/toggle.md +7 -7
  100. package/docs/components/tooltip.md +9 -9
  101. package/docs/components/typography.md +9 -9
  102. package/docs/i18n.md +10 -10
  103. package/docs/icons.md +9 -9
  104. package/docs/installation.md +31 -33
  105. package/docs/owl-components.md +36 -38
  106. package/docs/registry.md +14 -14
  107. package/docs/runtime-api.md +12 -12
  108. package/docs/theming.md +15 -15
  109. package/docs/usage-guide.md +54 -56
  110. package/package.json +48 -39
  111. package/dist/baseui.esm.js +0 -58
  112. package/dist/baseui.icons.esm.js +0 -1
  113. package/dist/baseui.min.js +0 -77
  114. /package/dist/{baseui.analytics.esm.js → nodexui.analytics.esm.js} +0 -0
  115. /package/dist/{baseui.analytics.min.js → nodexui.analytics.min.js} +0 -0
  116. /package/dist/{baseui.i18n.esm.js → nodexui.i18n.esm.js} +0 -0
  117. /package/dist/{baseui.i18n.min.js → nodexui.i18n.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.1`, 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,124 +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.
72
-
73
- ## PWA toolkit and CLI
74
-
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`.
76
-
77
- ```sh
78
- npx create-baseui-app create my-app
79
- npx create-baseui-app pwa . --config baseui.pwa.config.js
80
- ```
81
-
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
85
-
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).
87
-
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
- ## Internationalization
93
-
94
- New in 1.2.1: an optional, standalone i18n service (gettext-style `.po` catalogs, no Owl or Bootstrap). It is not part of the main bundles.
95
-
96
104
  ```js
97
- import { init, t, loadCatalog } from "https://cdn.jsdelivr.net/npm/@thebase/ui@1.2.1/dist/baseui.i18n.esm.js";
105
+ import { init, t, loadCatalog } from "https://cdn.jsdelivr.net/npm/nodexui@1.3.0/dist/nodexui.i18n.esm.js";
98
106
  init({ languages: [{ code: "en", label: "English" }, { code: "vi", label: "Tiếng Việt" }] });
99
107
  await loadCatalog(import.meta.url); // fetches ./i18n/vi.po when Vietnamese is picked
100
108
  console.log(t("Hello {name}", { name: "An" }));
101
109
  ```
102
110
 
103
- From npm use `@thebase/ui/i18n`; for a `<script>` tag, `dist/baseui.i18n.min.js` sets `window.thebase.i18n`. See [i18n](docs/i18n.md) and the runnable example in [`examples/i18n/`](examples/i18n/).
111
+ ### Project CLI
104
112
 
105
- ## Theming
113
+ `create-nodexui-app` scaffolds a static-importmap or Vite PWA project (`create`, `init`, `convert`) and generates the manifest, service worker and icons (`pwa`):
114
+
115
+ ```sh
116
+ npx create-nodexui-app create my-app
117
+ npx create-nodexui-app pwa . --config nodexui.pwa.config.js
118
+ ```
106
119
 
107
- 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).
120
+ See [Usage Guide §5b](docs/usage-guide.md) and the [PWA component](docs/components/pwa.md).
108
121
 
109
- ## Release notes
122
+ ## Search and discoverability
110
123
 
111
- See [CHANGELOG.md](CHANGELOG.md) for the full version history. Current version: **1.2.1**.
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).
112
125
 
113
126
  ## Versioning policy
114
127
 
115
- 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:
116
129
 
117
- - Base component classes, their names, props, slots, and callback props exported from `@thebase/ui`.
118
- - 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.
119
132
  - CSS: `b-*` class names and `--b-*` design tokens.
120
- - 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.
121
-
122
- What each release type means:
123
-
124
- - **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.
125
- - **Minor** (`1.1.0`): new components, props, variants, tokens, or icons — existing code keeps working unchanged.
126
- - **Patch** (`1.0.1`): bug fixes and visual fixes that don't change the API.
127
-
128
- 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.
129
-
130
- Pinning: use an exact version (`@1.2.1`) 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.
133
+ - Runtime exports (`NodexUI`, `Component`, `mount`, `xml`, `cn`, `mergeStyle`, theme helpers), the published `dist/` file names and the package `exports` paths.
131
134
 
132
- ## Project Documents
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.
133
136
 
134
- Use these documents as the canonical project map:
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.
135
138
 
136
- - [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.
137
- - [Installation](docs/installation.md) covers CDN, npm, self-hosted usage, icon assets, pinned versions, and release guardrails.
138
- - [Analytics](docs/analytics.md) documents the optional, standalone cookieless analytics service (`@thebase/ui/analytics`).
139
- - [i18n](docs/i18n.md) documents the optional, standalone translation service (`@thebase/ui/i18n`): `.po` catalogs, language detection, and the `init`/`t`/`loadCatalog` API.
140
- - [Runtime API](docs/runtime-api.md) documents the `window.thebase` global, mounting lifecycle, theming API, and destroy behavior.
141
- - [Registry](docs/registry.md) explains `dist/baseui.registry.json`, build files, block metadata, component metadata, and integrity hashes.
142
- - [Theming](docs/theming.md) describes `b-theme`, runtime theme overrides, shadcn-aligned tokens, Bootstrap variable mapping, and shared example theme persistence.
143
- - [Built-in Icons](docs/icons.md) covers the Lucide icon library, `b-icon` markup, accessibility rules, self-hosted icon paths, and JavaScript helpers.
144
- - [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).
145
- - [Base Components](docs/owl-components.md) covers the Base component API (`@thebase/ui` + `dist/baseui.templates.xml`), what to load, and common mistakes.
146
- - [Blocks](docs/blocks.md) documents copyable static shadcn-style blocks, source stylesheet ownership under `examples/blocks/`, gallery/viewer URLs, and block icon rules.
147
- - [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.
148
- - [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.
149
- - [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.
139
+ ## Documentation
150
140
 
151
- 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:
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).
152
149
 
153
- ```text
154
- https://unpkg.com/@thebase/ui@latest/docs/usage-guide.md
155
- https://unpkg.com/@thebase/ui@latest/docs/components/button.md
156
- https://cdn.jsdelivr.net/npm/@thebase/ui@latest/docs/usage-guide.md
157
- ```
158
-
159
- 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.
160
151
 
161
152
  ## Development
162
153
 
@@ -166,22 +157,22 @@ npm run build
166
157
  npm run dev
167
158
  ```
168
159
 
169
- 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).
170
-
171
- `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`.
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).
172
161
 
173
- 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`.
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`.
174
163
 
175
- ## Package Scripts
176
-
177
- - `npm run dev` starts a static server for examples and built `dist/` assets.
178
- - `npm run build` creates CDN and npm artifacts in `dist/`.
179
- - `npm run lint` checks JavaScript and CSS policy.
180
- - `npm run test` runs runtime tests.
181
- - `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 |
182
171
 
183
172
  ## Distribution
184
173
 
185
- 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
186
177
 
187
- 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).