@nadicodeai/ui 0.4.0 → 0.4.1

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 (124) hide show
  1. package/AGENTS.md +2 -1
  2. package/README.md +4 -2
  3. package/dist/components/accordion.d.ts +15 -5
  4. package/dist/components/accordion.d.ts.map +1 -1
  5. package/dist/components/accordion.js +34 -9
  6. package/dist/components/ai-elements/chain-of-thought.js +1 -1
  7. package/dist/components/ai-elements/mic-selector.js +1 -1
  8. package/dist/components/ai-elements/plan.d.ts +3 -2
  9. package/dist/components/ai-elements/plan.d.ts.map +1 -1
  10. package/dist/components/ai-elements/reasoning.js +1 -1
  11. package/dist/components/ai-elements/stack-trace.js +1 -1
  12. package/dist/components/ai-elements/transcription.js +1 -1
  13. package/dist/components/ai-elements/voice-selector.d.ts +2 -1
  14. package/dist/components/ai-elements/voice-selector.d.ts.map +1 -1
  15. package/dist/components/ai-elements/voice-selector.js +1 -1
  16. package/dist/components/alert-dialog.d.ts +10 -9
  17. package/dist/components/alert-dialog.d.ts.map +1 -1
  18. package/dist/components/alert-dialog.js +16 -13
  19. package/dist/components/aspect-ratio.d.ts +3 -2
  20. package/dist/components/aspect-ratio.d.ts.map +1 -1
  21. package/dist/components/aspect-ratio.js +6 -3
  22. package/dist/components/avatar.d.ts +5 -5
  23. package/dist/components/avatar.d.ts.map +1 -1
  24. package/dist/components/avatar.js +5 -5
  25. package/dist/components/badge.js +1 -1
  26. package/dist/components/breadcrumb.js +1 -1
  27. package/dist/components/button-group.js +1 -1
  28. package/dist/components/button.d.ts +4 -2
  29. package/dist/components/button.d.ts.map +1 -1
  30. package/dist/components/button.js +21 -17
  31. package/dist/components/checkbox.d.ts +2 -3
  32. package/dist/components/checkbox.d.ts.map +1 -1
  33. package/dist/components/checkbox.js +3 -3
  34. package/dist/components/collapsible.d.ts +8 -4
  35. package/dist/components/collapsible.d.ts.map +1 -1
  36. package/dist/components/collapsible.js +16 -6
  37. package/dist/components/command.d.ts +4 -3
  38. package/dist/components/command.d.ts.map +1 -1
  39. package/dist/components/command.js +13 -12
  40. package/dist/components/context-menu.d.ts +24 -15
  41. package/dist/components/context-menu.d.ts.map +1 -1
  42. package/dist/components/context-menu.js +38 -28
  43. package/dist/components/dialog.d.ts +10 -9
  44. package/dist/components/dialog.d.ts.map +1 -1
  45. package/dist/components/dialog.js +11 -10
  46. package/dist/components/direction.d.ts +6 -5
  47. package/dist/components/direction.d.ts.map +1 -1
  48. package/dist/components/direction.js +3 -4
  49. package/dist/components/drawer.d.ts +22 -10
  50. package/dist/components/drawer.d.ts.map +1 -1
  51. package/dist/components/drawer.js +70 -12
  52. package/dist/components/dropdown-menu.d.ts +25 -16
  53. package/dist/components/dropdown-menu.d.ts.map +1 -1
  54. package/dist/components/dropdown-menu.js +40 -30
  55. package/dist/components/form.d.ts +3 -3
  56. package/dist/components/form.d.ts.map +1 -1
  57. package/dist/components/form.js +1 -1
  58. package/dist/components/hover-card.d.ts +8 -4
  59. package/dist/components/hover-card.d.ts.map +1 -1
  60. package/dist/components/hover-card.js +12 -7
  61. package/dist/components/item.js +1 -1
  62. package/dist/components/label.d.ts +1 -2
  63. package/dist/components/label.d.ts.map +1 -1
  64. package/dist/components/label.js +1 -2
  65. package/dist/components/menubar.d.ts +21 -18
  66. package/dist/components/menubar.d.ts.map +1 -1
  67. package/dist/components/menubar.js +25 -23
  68. package/dist/components/navigation-menu.d.ts +16 -12
  69. package/dist/components/navigation-menu.d.ts.map +1 -1
  70. package/dist/components/navigation-menu.js +16 -13
  71. package/dist/components/popover.d.ts +11 -8
  72. package/dist/components/popover.d.ts.map +1 -1
  73. package/dist/components/popover.js +33 -12
  74. package/dist/components/progress.d.ts +7 -4
  75. package/dist/components/progress.d.ts.map +1 -1
  76. package/dist/components/progress.js +17 -5
  77. package/dist/components/radio-group.d.ts +4 -4
  78. package/dist/components/radio-group.d.ts.map +1 -1
  79. package/dist/components/radio-group.js +4 -4
  80. package/dist/components/scroll-area.d.ts +3 -3
  81. package/dist/components/scroll-area.d.ts.map +1 -1
  82. package/dist/components/scroll-area.js +2 -4
  83. package/dist/components/select.d.ts +11 -11
  84. package/dist/components/select.d.ts.map +1 -1
  85. package/dist/components/select.js +14 -18
  86. package/dist/components/separator.d.ts +2 -3
  87. package/dist/components/separator.d.ts.map +1 -1
  88. package/dist/components/separator.js +3 -3
  89. package/dist/components/sheet.d.ts +8 -7
  90. package/dist/components/sheet.d.ts.map +1 -1
  91. package/dist/components/sheet.js +10 -12
  92. package/dist/components/sidebar.js +1 -1
  93. package/dist/components/slider.d.ts +2 -3
  94. package/dist/components/slider.d.ts.map +1 -1
  95. package/dist/components/slider.js +10 -7
  96. package/dist/components/switch.d.ts +3 -4
  97. package/dist/components/switch.d.ts.map +1 -1
  98. package/dist/components/switch.js +2 -2
  99. package/dist/components/tabs.d.ts +5 -6
  100. package/dist/components/tabs.d.ts.map +1 -1
  101. package/dist/components/tabs.js +5 -5
  102. package/dist/components/theme-mode-switcher.js +1 -1
  103. package/dist/components/toggle-group.d.ts +12 -4
  104. package/dist/components/toggle-group.d.ts.map +1 -1
  105. package/dist/components/toggle-group.js +29 -7
  106. package/dist/components/toggle.d.ts +3 -3
  107. package/dist/components/toggle.d.ts.map +1 -1
  108. package/dist/components/toggle.js +9 -8
  109. package/dist/components/tooltip.d.ts +8 -6
  110. package/dist/components/tooltip.d.ts.map +1 -1
  111. package/dist/components/tooltip.js +7 -6
  112. package/dist/hooks/use-controllable-state.d.ts +9 -0
  113. package/dist/hooks/use-controllable-state.d.ts.map +1 -0
  114. package/dist/hooks/use-controllable-state.js +25 -0
  115. package/dist/lib/base-render.d.ts +14 -0
  116. package/dist/lib/base-render.d.ts.map +1 -0
  117. package/dist/lib/base-render.js +16 -0
  118. package/dist/lib/slot.d.ts +8 -0
  119. package/dist/lib/slot.d.ts.map +1 -0
  120. package/dist/lib/slot.js +17 -0
  121. package/docs/agents/nadicodeai-ui.md +1 -1
  122. package/docs/migration/base-ui-migration.md +49 -0
  123. package/llms.txt +2 -2
  124. package/package.json +3 -6
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ declare const Slot: {
3
+ Root: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & {
4
+ children?: React.ReactNode;
5
+ } & React.RefAttributes<HTMLElement>>;
6
+ };
7
+ export { Slot };
8
+ //# sourceMappingURL=slot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../src/lib/slot.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAqB9B,QAAA,MAAM,IAAI;;mBAjBG,KAAK,CAAC,SAAS;;CAmB3B,CAAA;AAED,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ import { useRender } from "@base-ui/react/use-render";
4
+ const SlotRoot = React.forwardRef(({ children, ...slotProps }, forwardedRef) => {
5
+ const isElement = React.isValidElement(children);
6
+ return useRender({
7
+ enabled: isElement,
8
+ render: isElement ? children : undefined,
9
+ ref: forwardedRef,
10
+ props: slotProps,
11
+ });
12
+ });
13
+ SlotRoot.displayName = "Slot";
14
+ const Slot = {
15
+ Root: SlotRoot,
16
+ };
17
+ export { Slot };
@@ -217,7 +217,7 @@ npx shadcn@latest add @ai-elements/message --dry-run
217
217
 
218
218
  `info --json` is the project-aware source for `tailwindVersion`, `base`,
219
219
  `iconLibrary`, aliases, `resolvedPaths`, and configured registries. Current
220
- package context should report Tailwind v4, radix base primitives, lucide icons,
220
+ package context should report Tailwind v4, Base UI primitives, lucide icons,
221
221
  source paths under `src/*`, and configured `@shadcn`/`@ai-elements` registry
222
222
  access. Use `search` to find current registry items, `docs` to fetch component
223
223
  documentation and example/API links, `view` to inspect item contents, and
@@ -0,0 +1,49 @@
1
+ # Base UI Migration
2
+
3
+ `@nadicodeai/ui` now uses Base UI as its active shadcn primitive base.
4
+
5
+ Current invariants:
6
+
7
+ - `components.json` uses `base-nova`, and `npx shadcn@latest info --json` should report `base: "base"`.
8
+ - Package source must not import `radix-ui`, `@radix-ui/*`, or `vaul`. `cmdk` is the one allowed carrier: shadcn's stock base-nova `command` still ships on it, and the package uses that stock registry item instead of a local rewrite, accepting cmdk's transitive Radix internals the same way shadcn does.
9
+ - `@nadicodeai/ui/package.json` must not depend on `radix-ui`, `@radix-ui/react-use-controllable-state`, or `vaul`.
10
+ - Website and portal Next config must optimize `@base-ui/react`, not `radix-ui`.
11
+ - Existing public `asChild` usage is preserved through package-local adapters that translate to Base UI `render`.
12
+ - Accordion and ToggleGroup preserve the previous single-string public API while feeding Base UI its array-shaped value model.
13
+ - AI Elements use the package-local `useControllableState` helper instead of Radix's hook.
14
+
15
+ ## Migration Catalog
16
+
17
+ Direct Base-backed shadcn replacements:
18
+
19
+ - `accordion`, `alert-dialog`, `aspect-ratio`, `avatar`, `checkbox`, `collapsible`, `context-menu`, `dialog`, `drawer`, `dropdown-menu`, `hover-card`, `label`, `menubar`, `navigation-menu`, `popover`, `progress`, `radio-group`, `scroll-area`, `select`, `separator`, `sheet`, `slider`, `switch`, `tabs`, `toggle`, `toggle-group`, and `tooltip`.
20
+
21
+ Manual compatibility helpers:
22
+
23
+ - `src/lib/base-render.tsx` translates historical `asChild` usage to Base UI `render`.
24
+ - `src/lib/slot.tsx` replaces Radix Slot for wrapper-only components, built on Base UI's `useRender` (the same mechanism stock base-nova wrapper items use).
25
+ - `button`, `badge`, `breadcrumb`, `button-group`, `form`, `item`, and `sidebar` preserve package APIs while removing Radix Slot.
26
+ - `direction` keeps the old `dir` prop and maps it to Base UI's `direction` prop.
27
+
28
+ Removed non-shadcn Radix carriers:
29
+
30
+ - `command` stays on the stock base-nova registry item, which ships on `cmdk` (shadcn has not migrated Command off cmdk; a local rewrite was reverted in review because it regressed cmdk's filtering and group accessibility).
31
+ - `drawer` replaces `vaul` with Base UI Drawer.
32
+ - AI Elements replace `@radix-ui/react-use-controllable-state` with `src/hooks/use-controllable-state.ts`.
33
+
34
+ AI Elements using the local controlled/uncontrolled helper:
35
+
36
+ - `chain-of-thought`
37
+ - `mic-selector`
38
+ - `reasoning`
39
+ - `stack-trace`
40
+ - `transcription`
41
+ - `voice-selector`
42
+
43
+ Verification:
44
+
45
+ ```bash
46
+ npm run build -w @nadicodeai/ui
47
+ npm run test -w @nadicodeai/ui
48
+ rg 'radix-ui|@radix-ui|vaul' @nadicodeai/ui/src @nadicodeai/ui/package.json website/next.config.ts portal/next.config.ts
49
+ ```
package/llms.txt CHANGED
@@ -20,7 +20,7 @@ Runtime imports:
20
20
  - AI Elements subpath: `import { Message } from "@nadicodeai/ui/components/ai-elements/message";`
21
21
 
22
22
  Component surface:
23
- - shadcn source components are shipped from `@nadicodeai/ui/components/*`.
23
+ - shadcn source components are shipped from `@nadicodeai/ui/components/*`; the active primitive base is Base UI.
24
24
  - Vercel AI Elements source components are shipped from `@nadicodeai/ui/components/ai-elements/*`.
25
25
  - React adapters over design-system grammar and assets ship from component subpaths.
26
26
  - Reusable marketing/section compositions belong in this package.
@@ -66,7 +66,7 @@ shadcn / AI Elements discovery:
66
66
  - Use live MCP/CLI discovery from `@nadicodeai/ui`; do not maintain a committed upstream registry inventory, snapshot, or inventory update script.
67
67
  - Codex MCP setup when supported: `npx shadcn@latest mcp init --client codex`.
68
68
  - CLI fallbacks: `npx shadcn@latest info --json`, `npx shadcn@latest search @shadcn -q "select" --json`, `npx shadcn@latest search @ai-elements -q "message" --json`, `npx shadcn@latest docs button select dialog --json`, `npx shadcn@latest view @shadcn/button`, `npx shadcn@latest add @shadcn/button --dry-run`, `npx shadcn@latest add @ai-elements/message --dry-run`.
69
- - Use `info --json` for aliases, Tailwind version, base primitive library, icon library, source paths, and configured registries. Use `search`, `docs`, and `view` before adding source; use `add --dry-run` or `add --diff` before changing files.
69
+ - Use `info --json` for aliases, Tailwind version, base primitive library, icon library, source paths, and configured registries. It should report Base UI, not Radix. Use `search`, `docs`, and `view` before adding source; use `add --dry-run` or `add --diff` before changing files.
70
70
 
71
71
  Agent references shipped in this package:
72
72
  - `AGENTS.md`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nadicodeai/ui",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -49,8 +49,7 @@
49
49
  },
50
50
  "dependencies": {
51
51
  "@base-ui/react": "^1.6.0",
52
- "@nadicodeai/design-system": "0.4.0",
53
- "@radix-ui/react-use-controllable-state": "^1.2.3",
52
+ "@nadicodeai/design-system": "0.4.1",
54
53
  "@rive-app/react-webgl2": "^4.29.1",
55
54
  "@streamdown/cjk": "^1.0.3",
56
55
  "@streamdown/code": "^1.1.1",
@@ -68,7 +67,6 @@
68
67
  "media-chrome": "^4.19.2",
69
68
  "motion": "^12.40.0",
70
69
  "nanoid": "^5.1.15",
71
- "radix-ui": "^1.6.0",
72
70
  "react-day-picker": "^10.0.1",
73
71
  "react-hook-form": "^7.80.0",
74
72
  "react-jsx-parser": "^2.4.1",
@@ -79,8 +77,7 @@
79
77
  "streamdown": "^2.5.0",
80
78
  "tailwind-merge": "^3.0.0",
81
79
  "tokenlens": "^1.3.1",
82
- "use-stick-to-bottom": "^1.1.6",
83
- "vaul": "^1.1.2"
80
+ "use-stick-to-bottom": "^1.1.6"
84
81
  },
85
82
  "peerDependencies": {
86
83
  "@tailwindcss/postcss": "^4.3.1",