@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
@@ -1,11 +1,11 @@
1
1
  # Textarea
2
2
 
3
- Native multiline text input with Base UI and Bootstrap styling.
3
+ Native multiline text input with Nodex UI and built-in styling.
4
4
 
5
5
  ## Base component
6
6
 
7
7
  ```js
8
- import { Textarea } from "@thebase/ui";
8
+ import { Textarea } from "nodexui";
9
9
  ```
10
10
 
11
11
  ```base-ui
@@ -64,7 +64,7 @@ Set `useTip="1"` to move `supportingText` into a tooltip: a question-mark icon a
64
64
  | `Textarea` | slots `start` / `end` / `footer` | slot | content drawn inside the box; `footer` sits along the bottom edge |
65
65
  | `Textarea` | `label`, `supportingText`, `useTip`, `errorText`, `maxLength`, `invalid`, `placeholder` | `String` / `Boolean` | Material-style outlined field, same behaviour as [Input](/examples/blocks.html#/docs/components/input): the label floats onto the border, `errorText` replaces `supportingText`. Also inherited from a parent `Field`. |
66
66
 
67
- See [Base Components](/examples/blocks.html#/docs/guide/owl-components) for how to load `@base/owl` and `dist/baseui.templates.xml`.
67
+ See [Nodex UI Component](/examples/blocks.html#/docs/guide/owl-components) for how to load `nodexui` and `dist/nodexui.templates.xml`.
68
68
 
69
69
  ## Static component
70
70
 
@@ -4,12 +4,12 @@ Use `b-ui="theme-button"` for an icon-only light/dark theme toggle.
4
4
 
5
5
  ## CDN install requirements
6
6
 
7
- Load the Base UI CSS and the Base UI JavaScript bundle (`baseui.min.js`). The component uses the built-in Lucide icon renderer and the `@base/theme` helper bundled with Base UI.
7
+ Load Nodex UI CSS and Nodex UI JavaScript bundle (`nodexui.min.js`). The component uses the built-in Lucide icon renderer and the `nodexui` helper bundled with Nodex UI.
8
8
 
9
9
  ## Base component
10
10
 
11
11
  ```js
12
- import { ThemeButton } from "@thebase/ui";
12
+ import { ThemeButton } from "nodexui";
13
13
  ```
14
14
 
15
15
  ```base-ui
@@ -24,7 +24,7 @@ import { ThemeButton } from "@thebase/ui";
24
24
  | `ThemeButton` | `className` | `String` | optional |
25
25
  | `ThemeButton` | `onChange` | `Function` | optional |
26
26
 
27
- See [Base Components](/examples/blocks.html#/docs/guide/owl-components) for how to load `@base/owl` and `dist/baseui.templates.xml`.
27
+ See [Nodex UI Component](/examples/blocks.html#/docs/guide/owl-components) for how to load `nodexui` and `dist/nodexui.templates.xml`.
28
28
 
29
29
  ## Static component
30
30
 
@@ -42,11 +42,11 @@ Use `b-att-variant="default|outline|ghost|destructive|secondary|link"` and `b-at
42
42
 
43
43
  ## Methods
44
44
 
45
- Use the global runtime methods: `thebase.mount()`, `thebase.mountAll()`, and `thebase.destroy()`. For direct theme control, import `createThemeController` from `@thebase/ui`.
45
+ Use the global runtime methods: `thebase.mount()`, `thebase.mountAll()`, and `thebase.destroy()`. For direct theme control, import `createThemeController` from `nodexui`.
46
46
 
47
47
  ## Events
48
48
 
49
- Theme changes dispatch `baseui:theme-change` on `document` with `{ theme }` in `event.detail`.
49
+ Theme changes dispatch `nodexui:theme-change` on `document` with `{ theme }` in `event.detail`.
50
50
 
51
51
  ## CSS variables
52
52
 
@@ -62,7 +62,7 @@ See the example page headers for working `b-ui="theme-button"` navigation usage.
62
62
 
63
63
  ## Browser support
64
64
 
65
- The Base UI targets modern evergreen browsers that support ES modules, CSS variables, and Bootstrap 5.3.
65
+ Nodex UI targets modern evergreen browsers that support ES modules, CSS variables.
66
66
 
67
67
  ## Test checklist
68
68
 
@@ -5,7 +5,7 @@ Use `b-ui="toast"` for transient status messages.
5
5
  ## Base component
6
6
 
7
7
  ```js
8
- import { Toast } from "@thebase/ui";
8
+ import { Toast } from "nodexui";
9
9
  ```
10
10
 
11
11
  ```base-ui
@@ -35,7 +35,7 @@ The toast stays hidden until `open`/`state` becomes truthy (never shows on mount
35
35
  | `Toast` | `onOpenChange` | `Function` | optional |
36
36
  | `Toast` | `action` slot | — | optional — e.g. a `<Button/>`, rendered grouped next to the close button (`<t t-set-slot="action">...</t>`) |
37
37
 
38
- See [Base Components](/examples/blocks.html#/docs/guide/owl-components) for how to load `@base/owl` and `dist/baseui.templates.xml`.
38
+ See [Nodex UI Component](/examples/blocks.html#/docs/guide/owl-components) for how to load `nodexui` and `dist/nodexui.templates.xml`.
39
39
 
40
40
  ## Static component
41
41
 
@@ -54,7 +54,7 @@ The toast stays hidden until shown — omit `b-att-state="open"` and call `.show
54
54
 
55
55
  ```base-ui
56
56
  <div class="d-flex flex-column align-items-center gap-3">
57
- <button type="button" class="btn b-button btn-outline-secondary" onclick="document.getElementById('demo-toast').BaseUIToast.show()">Show Toast</button>
57
+ <button type="button" class="btn b-button btn-outline-secondary" onclick="document.getElementById('demo-toast').NodexUIToast.show()">Show Toast</button>
58
58
  <div id="demo-toast" b-ui="toast" b-att-delay="3000">
59
59
  <div class="b-toast-content">
60
60
  <div class="fw-medium">Event created</div>
@@ -68,13 +68,13 @@ The toast stays hidden until shown — omit `b-att-state="open"` and call `.show
68
68
  </div>
69
69
  ```
70
70
 
71
- Programmatic API: after mount, call `element.BaseUIToast.show()` or `element.BaseUIToast.hide()`. Events: `baseui:open`, `baseui:close`.
71
+ Programmatic API: after mount, call `element.NodexUIToast.show()` or `element.NodexUIToast.hide()`. Events: `nodexui:open`, `nodexui:close`.
72
72
 
73
- Toasts are backed by `bootstrap.Toast`: the root receives Bootstrap's `toast fade` classes, and visibility is driven by Bootstrap's own `show`/`showing` classes (not `hidden`). The close button(s) carry `data-bs-dismiss="toast"` in addition to the `b-toast-close`/`b-toast-close` selector, so Bootstrap's own delegated dismiss handler drives them.
73
+ Toasts are backed by `bootstrap.Toast`: the root receives the built-in `toast fade` classes, and visibility is driven by the built-in `show`/`showing` classes (not `hidden`). The close button(s) carry `data-bs-dismiss="toast"` in addition to the `b-toast-close`/`b-toast-close` selector, so the built-in delegated dismiss handler drives them.
74
74
 
75
75
  ### Screen-corner placement
76
76
 
77
- Set `b-att-position` to `top-left`, `top-right`, `bottom-left`, or `bottom-right` to fix the toast to that corner of the viewport. The toast element itself gets the Bootstrap `toast-container position-fixed p-3 pe-auto` classes plus the matching edge utility classes (`top-0`/`bottom-0` + `start-0`/`end-0`) merged in — no wrapper element. Omit the attribute to leave the toast inline in the document flow (the previous, default behavior):
77
+ Set `b-att-position` to `top-left`, `top-right`, `bottom-left`, or `bottom-right` to fix the toast to that corner of the viewport. The toast element itself gets the built-in `toast-container position-fixed p-3 pe-auto` classes plus the matching edge utility classes (`top-0`/`bottom-0` + `start-0`/`end-0`) merged in — no wrapper element. Omit the attribute to leave the toast inline in the document flow (the previous, default behavior):
78
78
 
79
79
  ```base-ui
80
80
  <div id="corner-toast" b-ui="toast" b-att-position="bottom-right" b-att-delay="3000">
@@ -4,12 +4,12 @@ Use `b-ui="toggle-group"` for a CDN-ready toggle group component.
4
4
 
5
5
  ## CDN install requirements
6
6
 
7
- Load the pinned the Base UI CSS and JavaScript files; no extra dependency is required for this component.
7
+ Load the pinned Nodex UI CSS and JavaScript files; no extra dependency is required for this component.
8
8
 
9
9
  ## Base component
10
10
 
11
11
  ```js
12
- import { ToggleGroup, ToggleGroupItem } from "@thebase/ui";
12
+ import { ToggleGroup, ToggleGroupItem } from "nodexui";
13
13
  ```
14
14
 
15
15
  ```base-ui
@@ -36,7 +36,7 @@ import { ToggleGroup, ToggleGroupItem } from "@thebase/ui";
36
36
  | `ToggleGroupItem` | `value` | `String` | required |
37
37
  | `ToggleGroupItem` | `className` | `String` | optional |
38
38
 
39
- See [Base Components](/examples/blocks.html#/docs/guide/owl-components) for how to load `@base/owl` and `dist/baseui.templates.xml`.
39
+ See [Nodex UI Component](/examples/blocks.html#/docs/guide/owl-components) for how to load `nodexui` and `dist/nodexui.templates.xml`.
40
40
 
41
41
  ## Static component
42
42
 
@@ -50,7 +50,7 @@ Call `thebase.mount(element)` or rely on `thebase.mountAll()` after the script l
50
50
 
51
51
  ## Options and attributes
52
52
 
53
- See `dist/baseui.registry.json` for the supported attribute list.
53
+ See `dist/nodexui.registry.json` for the supported attribute list.
54
54
 
55
55
  ## Methods
56
56
 
@@ -58,11 +58,11 @@ Use the global runtime methods: `thebase.mount()`, `thebase.mountAll()`, and `th
58
58
 
59
59
  ## Events
60
60
 
61
- Interactive components emit documented `baseui:*` events from their root element. Static components do not emit events.
61
+ Interactive components emit documented `nodexui:*` events from their root element. Static components do not emit events.
62
62
 
63
63
  ## CSS variables
64
64
 
65
- The component inherits the Base UI semantic tokens such as `--b-surface`, `--b-border`, `--b-primary`, and `--b-radius`.
65
+ The component inherits Nodex UI semantic tokens such as `--b-surface`, `--b-border`, `--b-primary`, and `--b-radius`.
66
66
 
67
67
  ## Accessibility behavior
68
68
 
@@ -74,7 +74,7 @@ See `examples/index.html` for a working CDN-style page.
74
74
 
75
75
  ## Browser support
76
76
 
77
- The Base UI targets modern evergreen browsers that support ES modules, CSS variables, and Bootstrap 5.3.
77
+ Nodex UI targets modern evergreen browsers that support ES modules, CSS variables.
78
78
 
79
79
  ## Test checklist
80
80
 
@@ -4,12 +4,12 @@ Use `b-ui="toggle"` for a CDN-ready toggle component.
4
4
 
5
5
  ## CDN install requirements
6
6
 
7
- Load the pinned the Base UI CSS and JavaScript files; no extra dependency is required for this component.
7
+ Load the pinned Nodex UI CSS and JavaScript files; no extra dependency is required for this component.
8
8
 
9
9
  ## Base component
10
10
 
11
11
  ```js
12
- import { Toggle } from "@thebase/ui";
12
+ import { Toggle } from "nodexui";
13
13
  ```
14
14
 
15
15
  ```base-ui
@@ -37,7 +37,7 @@ import { Toggle } from "@thebase/ui";
37
37
  | `Toggle` | `className` | `String` | optional |
38
38
  | `Toggle` | `onChange` | `Function` | optional |
39
39
 
40
- See [Base Components](/examples/blocks.html#/docs/guide/owl-components) for how to load `@base/owl` and `dist/baseui.templates.xml`.
40
+ See [Nodex UI Component](/examples/blocks.html#/docs/guide/owl-components) for how to load `nodexui` and `dist/nodexui.templates.xml`.
41
41
 
42
42
  ## Static component
43
43
 
@@ -51,7 +51,7 @@ Call `thebase.mount(element)` or rely on `thebase.mountAll()` after the script l
51
51
 
52
52
  ## Options and attributes
53
53
 
54
- See `dist/baseui.registry.json` for the supported attribute list.
54
+ See `dist/nodexui.registry.json` for the supported attribute list.
55
55
 
56
56
  ## Methods
57
57
 
@@ -59,11 +59,11 @@ Use the global runtime methods: `thebase.mount()`, `thebase.mountAll()`, and `th
59
59
 
60
60
  ## Events
61
61
 
62
- Interactive components emit documented `baseui:*` events from their root element. Static components do not emit events.
62
+ Interactive components emit documented `nodexui:*` events from their root element. Static components do not emit events.
63
63
 
64
64
  ## CSS variables
65
65
 
66
- The component inherits the Base UI semantic tokens such as `--b-surface`, `--b-border`, `--b-primary`, and `--b-radius`.
66
+ The component inherits Nodex UI semantic tokens such as `--b-surface`, `--b-border`, `--b-primary`, and `--b-radius`.
67
67
 
68
68
  ## Accessibility behavior
69
69
 
@@ -75,7 +75,7 @@ See `examples/index.html` for a working CDN-style page.
75
75
 
76
76
  ## Browser support
77
77
 
78
- The Base UI targets modern evergreen browsers that support ES modules, CSS variables, and Bootstrap 5.3.
78
+ Nodex UI targets modern evergreen browsers that support ES modules, CSS variables.
79
79
 
80
80
  ## Test checklist
81
81
 
@@ -5,7 +5,7 @@ Use `b-ui="tooltip"` with either `b-att-content` or a tooltip content child.
5
5
  ## Base component
6
6
 
7
7
  ```js
8
- import { Tooltip } from "@thebase/ui";
8
+ import { Tooltip } from "nodexui";
9
9
  ```
10
10
 
11
11
  ```base-ui
@@ -24,11 +24,11 @@ import { Tooltip } from "@thebase/ui";
24
24
  | `Tooltip` | `state` | `String` | optional; `"open"`/`"on"`/`"active"` shows the tooltip once on mount (uncontrolled testing hook) |
25
25
  | `Tooltip` | `className` | `String` | optional |
26
26
 
27
- See [Base Components](/examples/blocks.html#/docs/guide/owl-components) for how to load `@base/owl` and `dist/baseui.templates.xml`.
27
+ See [Nodex UI Component](/examples/blocks.html#/docs/guide/owl-components) for how to load `nodexui` and `dist/nodexui.templates.xml`.
28
28
 
29
- Both the pure Base and static forms are driven by a live `bootstrap.Tooltip` instance owned on the trigger element, with `trigger: "hover focus"` — **the visible popup is Bootstrap's own generated DOM (a `.tooltip`/`.tooltip-arrow`/`.tooltip-inner` node, positioned via Popper), appended to `document.body`, not rendered inline where you authored the tooltip.** Don't query for it as a descendant of the trigger; query `document.body.querySelector(".tooltip .tooltip-inner")` instead. Bootstrap sets `aria-describedby` on the trigger itself, but only while the tooltip is actually shown (removed again on hide) — the Base UI does not additionally set a static `aria-describedby` up front.
29
+ Both the pure Base and static forms are driven by a live `bootstrap.Tooltip` instance owned on the trigger element, with `trigger: "hover focus"` — **the visible popup is the built-in generated DOM (a `.tooltip`/`.tooltip-arrow`/`.tooltip-inner` node, positioned via Popper), appended to `document.body`, not rendered inline where you authored the tooltip.** Don't query for it as a descendant of the trigger; query `document.body.querySelector(".tooltip .tooltip-inner")` instead. base sets `aria-describedby` on the trigger itself, but only while the tooltip is actually shown (removed again on hide) — Nodex UI does not additionally set a static `aria-describedby` up front.
30
30
 
31
- The default slot's rendered markup is captured into an HTML string for Bootstrap's `title`/`html: true` options (Bootstrap can't consume live vnodes): the Base component renders the slot into a hidden buffer element internal to its own template, reads its `innerHTML` on mount, and re-syncs the live popup via `.setContent({'.tooltip-inner': html})` whenever that HTML changes on a later render.
31
+ The default slot's rendered markup is captured into an HTML string for the built-in `title`/`html: true` options (the library can't consume live vnodes): the Base component renders the slot into a hidden buffer element internal to its own template, reads its `innerHTML` on mount, and re-syncs the live popup via `.setContent({'.tooltip-inner': html})` whenever that HTML changes on a later render.
32
32
 
33
33
  ## Static component
34
34
 
@@ -38,7 +38,7 @@ The default slot's rendered markup is captured into an HTML string for Bootstrap
38
38
  </span>
39
39
  ```
40
40
 
41
- Tooltips show on hover and focus, then hide on mouse leave and blur — Bootstrap's own `trigger: "hover focus"` wires this, not manual event listeners. The static adapter reads `[b-tooltip-content]` (or the element built from `b-att-content`) once at mount time as the tooltip's HTML content, then removes that node from the DOM — Bootstrap owns showing/hiding the content from then on, so no `[b-tooltip-content]` element survives in the authored markup post-mount.
41
+ Tooltips show on hover and focus, then hide on mouse leave and blur — the built-in `trigger: "hover focus"` wires this, not manual event listeners. The static adapter reads `[b-tooltip-content]` (or the element built from `b-att-content`) once at mount time as the tooltip's HTML content, then removes that node from the DOM — the library owns showing/hiding the content from then on, so no `[b-tooltip-content]` element survives in the authored markup post-mount.
42
42
 
43
43
  ## Enhanced usage
44
44
 
@@ -46,7 +46,7 @@ Call `thebase.mount(element)` or rely on `thebase.mountAll()` after the script l
46
46
 
47
47
  ## Options and attributes
48
48
 
49
- See `dist/baseui.registry.json` for the supported attribute list.
49
+ See `dist/nodexui.registry.json` for the supported attribute list.
50
50
 
51
51
  ## Methods
52
52
 
@@ -54,11 +54,11 @@ Use the global runtime methods: `thebase.mount()`, `thebase.mountAll()`, and `th
54
54
 
55
55
  ## Events
56
56
 
57
- Interactive components emit documented `baseui:*` events from their root element. Listen for Bootstrap's own `shown.bs.tooltip`/`hidden.bs.tooltip` on the trigger element to react to show/hide; the Base UI mirrors those into `b-att-state` (`open`/`closed`) on the static root and `this.state.open` on the Base component.
57
+ Interactive components emit documented `nodexui:*` events from their root element. Listen for the built-in `shown.bs.tooltip`/`hidden.bs.tooltip` on the trigger element to react to show/hide; Nodex UI mirrors those into `b-att-state` (`open`/`closed`) on the static root and `this.state.open` on the Base component.
58
58
 
59
59
  ## CSS variables
60
60
 
61
- The component inherits the Base UI semantic tokens such as `--b-surface`, `--b-border`, `--b-primary`, and `--b-radius`. The popup itself is styled by Bootstrap's own bundled `.tooltip`/`.tooltip-arrow`/`.tooltip-inner` CSS (loaded via `dist/baseui.min.css`), not the Base UI's own classes.
61
+ The component inherits Nodex UI semantic tokens such as `--b-surface`, `--b-border`, `--b-primary`, and `--b-radius`. The popup itself is styled by the built-in bundled `.tooltip`/`.tooltip-arrow`/`.tooltip-inner` CSS (loaded via `dist/nodexui.min.css`), not Nodex UI's own classes.
62
62
 
63
63
  ## Accessibility behavior
64
64
 
@@ -70,7 +70,7 @@ See `examples/index.html` for a working CDN-style page.
70
70
 
71
71
  ## Browser support
72
72
 
73
- The Base UI targets modern evergreen browsers that support ES modules, CSS variables, and Bootstrap 5.3.
73
+ Nodex UI targets modern evergreen browsers that support ES modules, CSS variables.
74
74
 
75
75
  ## Test checklist
76
76
 
@@ -5,7 +5,7 @@ Small text helpers for plain content.
5
5
  ## Base component
6
6
 
7
7
  ```js
8
- import { Typography } from "@thebase/ui";
8
+ import { Typography } from "nodexui";
9
9
  ```
10
10
 
11
11
  ```base-ui
@@ -86,23 +86,23 @@ import { Typography } from "@thebase/ui";
86
86
  | `Typography` | `tag` | `String` | optional; defaults to `h1`-`h4`, `blockquote`, `small`, `ul` for those variants, else `p` |
87
87
  | `Typography` | `className` | `String` | optional |
88
88
 
89
- See [Base Components](/examples/blocks.html#/docs/guide/owl-components) for how to load `@base/owl` and `dist/baseui.templates.xml`.
89
+ See [Nodex UI Component](/examples/blocks.html#/docs/guide/owl-components) for how to load `nodexui` and `dist/nodexui.templates.xml`.
90
90
 
91
- ## Bootstrap typography classes
91
+ ## built-in typography classes
92
92
 
93
- Base UI redefines the Bootstrap 5 typography classes to the shadcn typeset values
94
- (`src/styles/base-extensions.css`), in Be Vietnam Pro. Use plain Bootstrap markup:
93
+ Nodex UI redefines the built-in typography classes to the shadcn typeset values
94
+ (`src/styles/base-extensions.css`), in Be Vietnam Pro. Use plain built-in markup:
95
95
 
96
96
  | Element / class | Result |
97
97
  | --- | --- |
98
98
  | `h1` / `.h1` ... `h4` / `.h4` | 1.75rem, 1.25rem, 1.125rem, 1rem; weight 600; line-height 1.3 to 1.5 |
99
99
  | `h5` / `.h5`, `h6` / `.h6` | 0.875rem / 0.8125rem, weight 500, muted; `h6` is uppercase with 0.08em tracking |
100
- | `.display-1` ... `.display-6` | Bootstrap sizes, weight 600, line-height 1.2 |
100
+ | `.display-1` ... `.display-6` | built-in sizes, weight 600, line-height 1.2 |
101
101
  | `.lead`, `.small`, `mark`, `del`, `abbr[title]` | muted lead text, `--b-text-sm`, shadcn highlight, muted strike-through, dotted underline |
102
102
  | `blockquote` / `.blockquote` | 2px start border, 1em inline padding, inherited size |
103
103
  | `hr`, `dt`, `dd`, `code`, `pre`, `kbd`, `caption` | shadcn rule, weights, muted-background code, keycap border |
104
104
 
105
- Bootstrap's bottom-margin rhythm is unchanged. For the shadcn flow model (margin-top only,
105
+ the built-in bottom-margin rhythm is unchanged. For the shadcn flow model (margin-top only,
106
106
  1.25em between blocks, 1.75 line-height, styled lists, links and tables) wrap prose in
107
107
  `class="b-typeset"`; tune with `--b-typeset-flow` and `--b-typeset-leading`.
108
108
 
@@ -110,9 +110,9 @@ Bootstrap's bottom-margin rhythm is unchanged. For the shadcn flow model (margin
110
110
 
111
111
  ```base-ui
112
112
  <p b-ui="typography" b-att-variant="lead">Readable intro text.</p>
113
- <span b-ui="typography" b-att-variant="code">baseui</span>
113
+ <span b-ui="typography" b-att-variant="code">nodexui</span>
114
114
  ```
115
115
 
116
116
  Options: `b-att-variant="body|lead|muted|code|kbd|h1|h2|h3|h4|blockquote|small|list"` (static markup keeps its own element, so write `<h2 b-ui="typography" b-att-variant="h2">`; the variant only adds the class).
117
117
 
118
- Accessibility: choose semantic HTML elements first, then add the Base UI typography attributes for styling.
118
+ Accessibility: choose semantic HTML elements first, then add Nodex UI typography attributes for styling.
package/docs/i18n.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # i18n service
2
2
 
3
- Instructions for adding translations to a page or app with the Base UI i18n service (`@thebase/ui/i18n`). It is optional and standalone: no Owl, Bootstrap or component runtime, and it is not part of the main bundles.
3
+ Instructions for adding translations to a page or app with Nodex UI i18n service (`nodexui/i18n`). It is optional and standalone: no framework or component runtime, and it is not part of the main bundles.
4
4
 
5
5
  - **Audience:** developers adding a language switcher or translating an existing page.
6
6
  - **Runnable example:** `examples/i18n/` (open `/examples/i18n/` from `npm run dev`).
7
- - **Real-world use:** `emvhub/i18n.js` and the `i18n/*.po` folders beside each emvhub module.
7
+ - **Real-world use:** `emvhub/i18n.js` and the `i18n/*.po` folders beside each emvhub module; the examples app does the same in `examples/i18n.js` and `examples/components/*/i18n/` (English and Vietnamese). Update catalogs with `node scripts/emvhub-i18n.mjs extract [--site=emvhub|examples/components] [newLang]`.
8
8
 
9
9
  ## 1. How it works
10
10
 
@@ -24,9 +24,9 @@ flowchart LR
24
24
 
25
25
  | How you load it | Use |
26
26
  | --- | --- |
27
- | ES module | `import { init, t, loadCatalog } from "@thebase/ui/i18n"` (file: `dist/baseui.i18n.esm.js`) |
28
- | Import map | map `@base/i18n` to the ESM file, then `import … from "@base/i18n"` |
29
- | Script tag | `dist/baseui.i18n.min.js` sets `window.thebase.i18n` |
27
+ | ES module | `import { init, t, loadCatalog } from "nodexui/i18n"` (file: `dist/nodexui.i18n.esm.js`) |
28
+ | Import map | map `nodexui/i18n` to the ESM file, then `import … from "nodexui/i18n"` |
29
+ | Script tag | `dist/nodexui.i18n.min.js` sets `window.thebase.i18n` |
30
30
 
31
31
  ## 3. Quick start
32
32
 
@@ -34,14 +34,14 @@ flowchart LR
34
34
 
35
35
  ```html
36
36
  <script type="importmap">
37
- { "imports": { "@base/i18n": "https://cdn.jsdelivr.net/npm/@thebase/ui@<version>/dist/baseui.i18n.esm.js" } }
37
+ { "imports": { "nodexui/i18n": "https://cdn.jsdelivr.net/npm/nodexui@<version>/dist/nodexui.i18n.esm.js" } }
38
38
  </script>
39
39
  ```
40
40
 
41
41
  2. Configure once, then load the catalog next to your module:
42
42
 
43
43
  ```js
44
- import { init, t, loadCatalog, languages, currentLanguage, setLanguage, translateHead } from "@base/i18n";
44
+ import { init, t, loadCatalog, languages, currentLanguage, setLanguage, translateHead } from "nodexui/i18n";
45
45
 
46
46
  init({ languages: [{ code: "en", label: "English" }, { code: "vi", label: "Tiếng Việt" }], storageKey: "my-lang" });
47
47
  await loadCatalog(import.meta.url); // fetches ./i18n/vi.po when Vietnamese is picked
@@ -99,10 +99,10 @@ Each module loads its own catalog, but language selection and `init()` must happ
99
99
 
100
100
  ```js
101
101
  // i18n.js
102
- import { init } from "@base/i18n";
102
+ import { init } from "nodexui/i18n";
103
103
 
104
104
  init({ languages: [{ code: "en", label: "English" }, { code: "vi", label: "Tiếng Việt" }], storageKey: "my-lang" });
105
- export * from "@base/i18n";
105
+ export * from "nodexui/i18n";
106
106
  ```
107
107
 
108
108
  Because ES modules evaluate dependencies first, `init()` runs before any module's top-level `await loadCatalog(import.meta.url)`. A module that shares another folder's texts loads both: `await Promise.all([loadCatalog(import.meta.url), loadCatalog(new URL("../lib/", import.meta.url))])`.
@@ -116,4 +116,4 @@ Because ES modules evaluate dependencies first, `init()` runs before any module'
116
116
  | Module-level texts untranslated | `t()` ran before `await loadCatalog(...)` finished. Await it at the top of the module. |
117
117
  | Switching language reloads the page | By design: every text is redrawn in the new language. |
118
118
  | Choice not remembered | Storage is blocked; the `?lang=` link still works for that visit. |
119
- | Offline/PWA | Precache each `i18n/<code>.po` in your service worker (see `emvhub/baseui.pwa.config.js`). |
119
+ | Offline/PWA | Precache each `i18n/<code>.po` in your service worker (see `emvhub/nodexui.pwa.config.js`). |
package/docs/icons.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Built-in Icons
2
2
 
3
- The Base UI ships the full Lucide icon set as a built-in CDN-ready icon library. Icons use the `b-icon` attribute, render as CSS masks, and inherit `currentColor` from the surrounding button, link, menu item, block, or theme.
3
+ Nodex UI ships the full Lucide icon set as a built-in CDN-ready icon library. Icons use the `b-icon` attribute, render as CSS masks, and inherit `currentColor` from the surrounding button, link, menu item, block, or theme.
4
4
 
5
5
  ```html
6
6
  <button b-ui="button" type="button">
@@ -15,20 +15,20 @@ The Base UI ships the full Lucide icon set as a built-in CDN-ready icon library.
15
15
 
16
16
  ## Install
17
17
 
18
- Load the normal the Base UI assets. No separate icon script is required.
18
+ Load the normal Nodex UI assets. No separate icon script is required.
19
19
 
20
20
  ```html
21
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.css">
22
- <script src="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.js" defer></script>
21
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.min.css">
22
+ <script src="https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.min.js" defer></script>
23
23
  ```
24
24
 
25
- `https://unpkg.com/@thebase/ui@latest/dist/...` mirrors the same files as an alternative CDN if jsDelivr is unreachable. Pin an exact version (e.g. `@1.2.1`, or `@1` to take only non-breaking updates) instead of `@latest` for production. `b-icon` also works with the [pure Base `Icon` component](components/icon.md) — the recommended API in an application; the classic script above is for pages using the static `b-ui` API.
25
+ `https://unpkg.com/nodexui@latest/dist/...` mirrors the same files as an alternative CDN if jsDelivr is unreachable. Pin an exact version (e.g. `@1.3.0`, or `@1` to take only non-breaking updates) instead of `@latest` for production. `b-icon` also works with the [pure Base `Icon` component](components/icon.md) — the recommended API in an application; the classic script above is for pages using the static `b-ui` API.
26
26
 
27
27
  The build publishes every Lucide SVG to `dist/icons/lucide/` and writes the generated icon manifest to `dist/icons/lucide.json`.
28
28
 
29
29
  ## Markup
30
30
 
31
- Use the Lucide icon name in kebab-case, camelCase, snake_case, or space-separated form. The Base UI normalizes the name to the matching Lucide SVG file.
31
+ Use the Lucide icon name in kebab-case, camelCase, snake_case, or space-separated form. Nodex UI normalizes the name to the matching Lucide SVG file.
32
32
 
33
33
  ```html
34
34
  <span b-icon="check"></span>
@@ -46,7 +46,7 @@ Use `b-icon-size` when the surrounding component should not control the icon siz
46
46
 
47
47
  ## Color
48
48
 
49
- Icons inherit `currentColor`, so set color on the parent element or let the Base UI component variants and themes do it.
49
+ Icons inherit `currentColor`, so set color on the parent element or let Nodex UI component variants and themes do it.
50
50
 
51
51
  ```html
52
52
  <button b-ui="button" b-att-variant="destructive" type="button">
@@ -62,7 +62,7 @@ Icons inherit `currentColor`, so set color on the parent element or let the Base
62
62
 
63
63
  ## Accessibility
64
64
 
65
- Decorative icons should not have a label. The Base UI marks them with `aria-hidden="true"`.
65
+ Decorative icons should not have a label. Nodex UI marks them with `aria-hidden="true"`.
66
66
 
67
67
  ```html
68
68
  <span b-icon="mail"></span>
@@ -84,7 +84,7 @@ Standalone meaningful icons can use `aria-label`.
84
84
 
85
85
  ## Self-hosting
86
86
 
87
- By default, icon URLs point to the pinned Lucide CDN configured in the registry. To serve icons from your own the Base UI build, point `b-icon-base-url` at the published icon folder.
87
+ By default, icon URLs point to the pinned Lucide CDN configured in the registry. To serve icons from your own Nodex UI build, point `b-icon-base-url` at the published icon folder.
88
88
 
89
89
  ```html
90
90
  <span b-icon="search" b-icon-base-url="/dist/icons/lucide"></span>
@@ -2,60 +2,58 @@
2
2
 
3
3
  See the [Usage Guide](usage-guide.md) for the end-to-end integration path (choosing an API, install, theming, verification). This page covers install mechanics only.
4
4
 
5
- The Base UI is distributed as one CSS file and one JavaScript file for browser use. `dist/baseui.min.js` is fully self-contained: Bootstrap's JS bundle (Popper.js included) and the Owl runtime are embedded ahead of the Base UI's own code, in load order (Bootstrap, then Owl, then the Base UI) — nothing else needs to load first. Both install paths below load this same file; the Base component API is the recommended way to consume the Base UI in an application, with the base static markup (`b-ui`) API available as a lighter-weight alternative for non-Owl pages.
5
+ Nodex UI is distributed as one CSS file and one JavaScript file for browser use. `dist/nodexui.min.js` is fully self-contained: the JS bundle (Popper.js included) and the Nodex runtime are embedded ahead of Nodex UI's own code, in load order (JS bundle, then runtime, then Nodex UI) — nothing else needs to load first. Both install paths below load this same file; the Base component API is the recommended way to consume Nodex UI in an application, with the base static markup (`b-ui`) API available as a lighter-weight alternative for non-component pages.
6
6
 
7
- 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 — `@latest` can silently change what your page loads the moment a new version is published.
7
+ The snippets below use the `@latest` tag for readability. Pin an exact version instead (e.g. `@1.3.0`, or `@1` to take only non-breaking updates) for any production page — `@latest` can silently change what your page loads the moment a new version is published.
8
8
 
9
9
  ## Base component install (recommended)
10
10
 
11
- If you're building your own application and want to import the Base UI components as real Owl component classes (`<Button/>`, `<Card/>`, `<Tabs/>`, ...) instead of `b-ui` markup, it's the same one file as the static install, just accessed through an import map:
11
+ If you're building your own application and want to import Nodex UI components as real Nodex component classes (`<Button/>`, `<Card/>`, `<Tabs/>`, ...) instead of `b-ui` markup, it's the same one file as the static install, just accessed through an import map:
12
12
 
13
13
  ```html
14
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.css">
14
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.min.css">
15
15
  <script type="importmap">
16
16
  {
17
17
  "imports": {
18
- "@base/owl": "https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.esm.js",
19
- "@base/component": "https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.esm.js",
20
- "@base/theme": "https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.esm.js",
21
- "@base/templates": "https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.templates.xml"
18
+ "nodexui": "https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.esm.js",
19
+ "nodexui/templates": "https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.templates.xml"
22
20
  }
23
21
  }
24
22
  </script>
25
23
  ```
26
24
 
27
- `https://unpkg.com/@thebase/ui@latest/dist/...` mirrors the same files if jsDelivr is unreachable — swap the host in each URL above.
25
+ `https://unpkg.com/nodexui@latest/dist/...` mirrors the same files if jsDelivr is unreachable — swap the host in each URL above.
28
26
 
29
- `@base/owl`, `@base/component`, and `@base/theme` all resolve to the exact same `dist/baseui.esm.js` module — the browser fetches and evaluates it once, so `Component`/`mount`/`xml` from `@base/owl` and `Button`/`Card`/... from `@base/component` are guaranteed to be the same runtime identity (no separate script needs to load first to set up a shared global). Your own app code should still import Owl from `@base/owl`, never install or import `@odoo/owl` directly — that's what keeps a `class Root extends Component` you write instanceof-compatible with Base UI's own components. `@base/templates` maps to the templates XML — not a JS module, so resolve it with `import.meta.resolve("@base/templates")` and `fetch()` the result rather than `import`ing it.
27
+ `nodexui` resolves to the `dist/nodexui.esm.js` module — the browser fetches and evaluates it once, so `Component`/`mount`/`xml` from `nodexui` and `Button`/`Card`/... from `nodexui` are guaranteed to be the same runtime identity (no separate script needs to load first to set up a shared global). Your own app code should still import Nodex from `nodexui`, never install or import `@odoo/owl` directly — that's what keeps a `class Root extends Component` you write instanceof-compatible with Nodex UI's own components. `nodexui/templates` maps to the templates XML — not a JS module, so resolve it with `import.meta.resolve("nodexui/templates")` and `fetch()` the result rather than `import`ing it.
30
28
 
31
- For npm/bundler usage, everything (Owl framework, component classes, theme helper) is exported from the one `@thebase/ui` package entry: `import { Component, mount, xml, Button, Card, createThemeController } from "@thebase/ui";` — plus `@thebase/ui/dist/baseui.templates.xml` (component templates — fetch or load them before mounting). Note that importing the main entry always runs its `autoMount()` side effect (it scans the DOM for `[b-ui]`/`[b-icon]` markers on `DOMContentLoaded`) — harmless if your page has none, but worth knowing if you specifically wanted a side-effect-free import.
29
+ For npm/bundler usage, everything (Nodex runtime, component classes, theme helper) is exported from the one `nodexui` package entry: `import { Component, mount, xml, Button, Card, createThemeController } from "nodexui";` — plus `nodexui/dist/nodexui.templates.xml` (component templates — fetch or load them before mounting). Note that importing the main entry always runs its `autoMount()` side effect (it scans the DOM for `[b-ui]`/`[b-icon]` markers on `DOMContentLoaded`) — harmless if your page has none, but worth knowing if you specifically wanted a side-effect-free import.
32
30
 
33
- See [Base Components](owl-components.md) for the full loading contract, a worked example, and common mistakes.
31
+ See [Nodex UI Component](owl-components.md) for the full loading contract, a worked example, and common mistakes.
34
32
 
35
33
  ## Static `b-ui` install (alternative)
36
34
 
37
- For static HTML, a server-rendered page, or a Base HUB website page that has no Owl runtime of its own, load the same bundle as plain CSS + a classic `<script>` tag instead of an import map:
35
+ For static HTML, a server-rendered page, or a Base HUB website page that has no Nodex runtime of its own, load the same bundle as plain CSS + a classic `<script>` tag instead of an import map:
38
36
 
39
37
  ```html
40
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.css">
41
- <script src="https://cdn.jsdelivr.net/npm/@thebase/ui@latest/dist/baseui.min.js" defer></script>
38
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.min.css">
39
+ <script src="https://cdn.jsdelivr.net/npm/nodexui@latest/dist/nodexui.min.js" defer></script>
42
40
  ```
43
41
 
44
- Bootstrap 5 is the bundled baseline CSS framework, and its JS bundle now drives the Base UI's interactive components directly.
42
+ base is the bundled baseline CSS framework, and its JS bundle now drives Nodex UI's interactive components directly.
45
43
 
46
- `@thebase/ui` is published on npm, so [unpkg](https://unpkg.com/@thebase/ui@latest/) mirrors the same files as an alternative CDN (`https://unpkg.com/@thebase/ui@latest/dist/baseui.min.css` / `baseui.min.js`) if jsDelivr is unreachable in your environment. Pin an exact version (e.g. `@1.2.1`, or `@1` to take only non-breaking updates) instead of `@latest` for production.
44
+ `nodexui` is published on npm, so [unpkg](https://unpkg.com/nodexui@latest/) mirrors the same files as an alternative CDN (`https://unpkg.com/nodexui@latest/dist/nodexui.min.css` / `nodexui.min.js`) if jsDelivr is unreachable in your environment. Pin an exact version (e.g. `@1.3.0`, or `@1` to take only non-breaking updates) instead of `@latest` for production.
47
45
 
48
46
  For npm/self-hosted usage:
49
47
 
50
48
  ```sh
51
- npm install @thebase/ui
49
+ npm install nodexui
52
50
  ```
53
51
 
54
- Then copy or serve `node_modules/@thebase/ui/dist/baseui.min.css` and `node_modules/@thebase/ui/dist/baseui.min.js`.
52
+ Then copy or serve `node_modules/nodexui/dist/nodexui.min.css` and `node_modules/nodexui/dist/nodexui.min.js`.
55
53
 
56
- `dist/bootstrap.bundle.min.js` also ships standalone, unmodified, with its own integrity hash in `dist/baseui.registry.json`, in case a project wants vendored Bootstrap JS on its own — the Base UI itself never needs it loaded separately.
54
+ `dist/bootstrap.bundle.min.js` also ships standalone, unmodified, with its own integrity hash in `dist/nodexui.registry.json`, in case a project wants vendored built-in JS on its own — Nodex UI itself never needs it loaded separately.
57
55
 
58
- The static bundle auto-mounts existing `[b-ui]` and `[b-icon]` markers on `DOMContentLoaded`. Use `thebase.mountAll(root)` after later DOM injection, and `thebase.destroy(root)` before removing a mounted subtree that owns listeners or an Owl-backed controller.
56
+ The static bundle auto-mounts existing `[b-ui]` and `[b-icon]` markers on `DOMContentLoaded`. Use `thebase.mountAll(root)` after later DOM injection, and `thebase.destroy(root)` before removing a mounted subtree that owns listeners or an runtime-backed controller.
59
57
 
60
58
  The package also ships the complete Lucide SVG icon set under `dist/icons/lucide/` and a generated `dist/icons/lucide.json` manifest. The built-in icon component can use the pinned jsDelivr Lucide CDN by default or your own self-hosted path:
61
59
 
@@ -70,20 +68,20 @@ Production pages should use pinned version URLs. `latest` is for demos and exper
70
68
 
71
69
  | Need | npm/bundler export | Browser import-map key | Dist file |
72
70
  | --- | --- | --- | --- |
73
- | Static `b-ui` runtime, Owl framework, every Base component class, theme helper | `@thebase/ui` | `@base/owl`, `@base/component`, `@base/theme` (all three point at the same file) | `dist/baseui.esm.js`, `dist/baseui.min.js` |
74
- | Styles | `@thebase/ui/baseui.css` | none; load with `<link>` | `dist/baseui.min.css` |
75
- | Bootstrap JS | embedded; standalone file is a vendoring convenience only, not part of the Base UI's own load path | none | `dist/bootstrap.bundle.min.js` |
76
- | Named-icon components (`IconEye`, ...) | `@thebase/ui/icons` | `@base/icons` | `dist/baseui.icons.esm.js` |
77
- | Owl templates XML | `@thebase/ui/dist/baseui.templates.xml` | `@base/templates` | `dist/baseui.templates.xml` |
78
- | Registry metadata | `@thebase/ui/registry` | none; fetch the JSON file | `dist/baseui.registry.json` |
79
- | Optional analytics service (`init`, `track`) | `@thebase/ui/analytics` | none; import the file URL or load the `<script>` build (sets `window.thebase.analytics`) | `dist/baseui.analytics.esm.js`, `dist/baseui.analytics.min.js` |
80
- | Optional i18n service (`init`, `t`, `loadCatalog`) | `@thebase/ui/i18n` | `@base/i18n` (as in `emvhub/index.html`); or load the `<script>` build (sets `window.thebase.i18n`) | `dist/baseui.i18n.esm.js`, `dist/baseui.i18n.min.js` |
81
- | Standalone ApiDoc (`mountApiDoc`) | `@thebase/ui/apidoc` | none; embeds Owl + its templates, still needs `baseui.min.css`; set `assetBase` for the language logos | `dist/baseui.apidoc.esm.js`, `dist/baseui.apidoc.min.js` |
82
-
83
- `@base/templates` points to XML, not JavaScript. Resolve and fetch it (`fetch(import.meta.resolve("@base/templates"))`) before mounting an application that uses the Base UI component classes.
71
+ | Static `b-ui` runtime, Nodex runtime, every Base component class, theme helper | `nodexui` | `nodexui` (one key pointing at the same file) | `dist/nodexui.esm.js`, `dist/nodexui.min.js` |
72
+ | Styles | `nodexui/nodexui.css` | none; load with `<link>` | `dist/nodexui.min.css` |
73
+ | built-in JS | embedded; standalone file is a vendoring convenience only, not part of Nodex UI's own load path | none | `dist/bootstrap.bundle.min.js` |
74
+ | Named-icon components (`IconEye`, ...) | `nodexui/icons` | `nodexui/icons` | `dist/nodexui.icons.esm.js` |
75
+ | Nodex templates XML | `nodexui/dist/nodexui.templates.xml` | `nodexui/templates` | `dist/nodexui.templates.xml` |
76
+ | Registry metadata | `nodexui/registry` | none; fetch the JSON file | `dist/nodexui.registry.json` |
77
+ | Optional analytics service (`init`, `track`) | `nodexui/analytics` | none; import the file URL or load the `<script>` build (sets `window.thebase.analytics`) | `dist/nodexui.analytics.esm.js`, `dist/nodexui.analytics.min.js` |
78
+ | Optional i18n service (`init`, `t`, `loadCatalog`) | `nodexui/i18n` | `nodexui/i18n` (as in `emvhub/index.html`); or load the `<script>` build (sets `window.thebase.i18n`) | `dist/nodexui.i18n.esm.js`, `dist/nodexui.i18n.min.js` |
79
+ | Standalone ApiDoc (`mountApiDoc`) | `nodexui/apidoc` | none; embeds Nodex + its templates, still needs `nodexui.min.css`; set `assetBase` for the language logos | `dist/nodexui.apidoc.esm.js`, `dist/nodexui.apidoc.min.js` |
80
+
81
+ `nodexui/templates` points to XML, not JavaScript. Resolve and fetch it (`fetch(import.meta.resolve("nodexui/templates"))`) before mounting an application that uses Nodex UI component classes.
84
82
 
85
83
  ## Release Guardrails
86
84
 
87
- The Base UI intentionally keeps Bootstrap bundled for the browser build, both CSS and JS. Bootstrap's JS bundle and the Owl runtime are embedded directly into `dist/baseui.min.js`/`baseui.esm.js` — in that load order — along with every Base component class and the theme helper, so both the static API and the pure Base API install with one stylesheet and one script/import: there is no more separate `baseui.owl.*`/`baseui.components.esm.js`/`baseui.theme.esm.js` file to keep in load order. Bootstrap's JS instances (`bootstrap.Modal`, `Dropdown`, `Collapse`, `Tab`, `Toast`, `Carousel`, `Tooltip`, `Popover`, `Alert`) drive the components that map to them, wrapped by the Base UI's own `.behavior.js`/`runtime/*.js` helpers so both the static and pure Base APIs share identical ARIA/keyboard/event behavior.
85
+ Nodex UI intentionally keeps its built-in styles and scripts bundled for the browser build, both CSS and JS. The JS bundle and the Nodex runtime are embedded directly into `dist/nodexui.min.js`/`nodexui.esm.js` — in that load order — along with every Base component class and the theme helper, so both the static API and the pure Base API install with one stylesheet and one script/import: there is no more separate `nodexui.owl.*`/`nodexui.components.esm.js`/`nodexui.theme.esm.js` file to keep in load order. the bundled JS instances (`bootstrap.Modal`, `Dropdown`, `Collapse`, `Tab`, `Toast`, `Carousel`, `Tooltip`, `Popover`, `Alert`) drive the components that map to them, wrapped by Nodex UI's own `.behavior.js`/`runtime/*.js` helpers so both the static and pure Base APIs share identical ARIA/keyboard/event behavior.
88
86
 
89
87
  Release checks enforce runtime dependency, peer dependency, scoped CSS selector, and CDN file-size budgets through `npm run lint` and `npm run build`.