@nadicodeai/ui 0.4.1 → 0.5.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 (197) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +2 -2
  3. package/dist/components/accordion.d.ts +4 -15
  4. package/dist/components/accordion.d.ts.map +1 -1
  5. package/dist/components/accordion.js +5 -31
  6. package/dist/components/agent-message.js +1 -1
  7. package/dist/components/agent-tool-approval.d.ts.map +1 -1
  8. package/dist/components/agent-tool-approval.js +9 -6
  9. package/dist/components/ai-elements/artifact.js +1 -1
  10. package/dist/components/ai-elements/attachments.d.ts +1 -1
  11. package/dist/components/ai-elements/attachments.d.ts.map +1 -1
  12. package/dist/components/ai-elements/attachments.js +2 -2
  13. package/dist/components/ai-elements/audio-player.d.ts.map +1 -1
  14. package/dist/components/ai-elements/audio-player.js +8 -8
  15. package/dist/components/ai-elements/chain-of-thought.js +1 -1
  16. package/dist/components/ai-elements/checkpoint.d.ts +1 -1
  17. package/dist/components/ai-elements/checkpoint.d.ts.map +1 -1
  18. package/dist/components/ai-elements/checkpoint.js +1 -1
  19. package/dist/components/ai-elements/commit.d.ts.map +1 -1
  20. package/dist/components/ai-elements/commit.js +1 -1
  21. package/dist/components/ai-elements/context.d.ts +4 -4
  22. package/dist/components/ai-elements/context.d.ts.map +1 -1
  23. package/dist/components/ai-elements/context.js +4 -3
  24. package/dist/components/ai-elements/file-tree.d.ts.map +1 -1
  25. package/dist/components/ai-elements/file-tree.js +1 -1
  26. package/dist/components/ai-elements/inline-citation.d.ts.map +1 -1
  27. package/dist/components/ai-elements/inline-citation.js +2 -2
  28. package/dist/components/ai-elements/message.js +1 -1
  29. package/dist/components/ai-elements/mic-selector.d.ts.map +1 -1
  30. package/dist/components/ai-elements/mic-selector.js +1 -1
  31. package/dist/components/ai-elements/model-selector.d.ts +1 -1
  32. package/dist/components/ai-elements/model-selector.d.ts.map +1 -1
  33. package/dist/components/ai-elements/model-selector.js +1 -1
  34. package/dist/components/ai-elements/open-in-chat.d.ts.map +1 -1
  35. package/dist/components/ai-elements/open-in-chat.js +8 -5
  36. package/dist/components/ai-elements/plan.d.ts.map +1 -1
  37. package/dist/components/ai-elements/plan.js +3 -3
  38. package/dist/components/ai-elements/prompt-input.d.ts +2 -2
  39. package/dist/components/ai-elements/prompt-input.d.ts.map +1 -1
  40. package/dist/components/ai-elements/prompt-input.js +12 -12
  41. package/dist/components/ai-elements/queue.d.ts.map +1 -1
  42. package/dist/components/ai-elements/queue.js +2 -2
  43. package/dist/components/ai-elements/reasoning.js +1 -1
  44. package/dist/components/ai-elements/sandbox.js +3 -3
  45. package/dist/components/ai-elements/schema-display.js +4 -4
  46. package/dist/components/ai-elements/sources.js +1 -1
  47. package/dist/components/ai-elements/stack-trace.d.ts.map +1 -1
  48. package/dist/components/ai-elements/stack-trace.js +2 -2
  49. package/dist/components/ai-elements/task.d.ts.map +1 -1
  50. package/dist/components/ai-elements/task.js +3 -3
  51. package/dist/components/ai-elements/test-results.js +1 -1
  52. package/dist/components/ai-elements/tool.js +2 -2
  53. package/dist/components/ai-elements/voice-selector.d.ts +1 -1
  54. package/dist/components/ai-elements/voice-selector.d.ts.map +1 -1
  55. package/dist/components/ai-elements/voice-selector.js +1 -1
  56. package/dist/components/ai-elements/web-preview.d.ts.map +1 -1
  57. package/dist/components/ai-elements/web-preview.js +2 -2
  58. package/dist/components/alert-dialog.d.ts +1 -2
  59. package/dist/components/alert-dialog.d.ts.map +1 -1
  60. package/dist/components/alert-dialog.js +2 -3
  61. package/dist/components/alert.d.ts +2 -1
  62. package/dist/components/alert.d.ts.map +1 -1
  63. package/dist/components/alert.js +8 -5
  64. package/dist/components/aspect-ratio.d.ts.map +1 -1
  65. package/dist/components/aspect-ratio.js +0 -1
  66. package/dist/components/avatar.d.ts.map +1 -1
  67. package/dist/components/avatar.js +0 -1
  68. package/dist/components/badge.d.ts +2 -4
  69. package/dist/components/badge.d.ts.map +1 -1
  70. package/dist/components/badge.js +21 -13
  71. package/dist/components/breadcrumb.d.ts +3 -4
  72. package/dist/components/breadcrumb.d.ts.map +1 -1
  73. package/dist/components/breadcrumb.js +20 -12
  74. package/dist/components/button-group.d.ts +2 -3
  75. package/dist/components/button-group.d.ts.map +1 -1
  76. package/dist/components/button-group.js +17 -9
  77. package/dist/components/button.d.ts +1 -5
  78. package/dist/components/button.d.ts.map +1 -1
  79. package/dist/components/button.js +2 -8
  80. package/dist/components/calendar.d.ts +5 -3
  81. package/dist/components/calendar.d.ts.map +1 -1
  82. package/dist/components/calendar.js +17 -17
  83. package/dist/components/card.d.ts +3 -1
  84. package/dist/components/card.d.ts.map +1 -1
  85. package/dist/components/card.js +6 -6
  86. package/dist/components/carousel.d.ts +10 -1
  87. package/dist/components/carousel.d.ts.map +1 -1
  88. package/dist/components/carousel.js +10 -10
  89. package/dist/components/chart.d.ts.map +1 -1
  90. package/dist/components/chart.js +2 -3
  91. package/dist/components/collapsible.d.ts +3 -7
  92. package/dist/components/collapsible.d.ts.map +1 -1
  93. package/dist/components/collapsible.js +5 -16
  94. package/dist/components/combobox.d.ts +1 -1
  95. package/dist/components/combobox.d.ts.map +1 -1
  96. package/dist/components/combobox.js +10 -11
  97. package/dist/components/command.d.ts.map +1 -1
  98. package/dist/components/command.js +1 -1
  99. package/dist/components/context-menu.d.ts +4 -9
  100. package/dist/components/context-menu.d.ts.map +1 -1
  101. package/dist/components/context-menu.js +6 -16
  102. package/dist/components/dialog.d.ts +2 -3
  103. package/dist/components/dialog.d.ts.map +1 -1
  104. package/dist/components/dialog.js +2 -4
  105. package/dist/components/direction.d.ts +1 -8
  106. package/dist/components/direction.d.ts.map +1 -1
  107. package/dist/components/direction.js +1 -7
  108. package/dist/components/drawer.d.ts +4 -13
  109. package/dist/components/drawer.d.ts.map +1 -1
  110. package/dist/components/drawer.js +5 -22
  111. package/dist/components/dropdown-menu.d.ts +4 -9
  112. package/dist/components/dropdown-menu.d.ts.map +1 -1
  113. package/dist/components/dropdown-menu.js +6 -17
  114. package/dist/components/empty.d.ts.map +1 -1
  115. package/dist/components/empty.js +5 -5
  116. package/dist/components/field.d.ts.map +1 -1
  117. package/dist/components/field.js +11 -19
  118. package/dist/components/form.d.ts +2 -2
  119. package/dist/components/form.d.ts.map +1 -1
  120. package/dist/components/form.js +17 -5
  121. package/dist/components/hover-card.d.ts +3 -8
  122. package/dist/components/hover-card.d.ts.map +1 -1
  123. package/dist/components/hover-card.js +4 -9
  124. package/dist/components/input-group.d.ts +3 -1
  125. package/dist/components/input-group.d.ts.map +1 -1
  126. package/dist/components/input-group.js +10 -16
  127. package/dist/components/input-otp.d.ts.map +1 -1
  128. package/dist/components/input-otp.js +5 -5
  129. package/dist/components/input.d.ts.map +1 -1
  130. package/dist/components/input.js +2 -1
  131. package/dist/components/item.d.ts +3 -4
  132. package/dist/components/item.d.ts.map +1 -1
  133. package/dist/components/item.js +29 -18
  134. package/dist/components/kbd.d.ts.map +1 -1
  135. package/dist/components/kbd.js +1 -1
  136. package/dist/components/menubar.d.ts.map +1 -1
  137. package/dist/components/menubar.js +4 -1
  138. package/dist/components/native-select.d.ts +3 -2
  139. package/dist/components/native-select.d.ts.map +1 -1
  140. package/dist/components/native-select.js +2 -2
  141. package/dist/components/navigation-menu.d.ts +2 -9
  142. package/dist/components/navigation-menu.d.ts.map +1 -1
  143. package/dist/components/navigation-menu.js +4 -8
  144. package/dist/components/pagination.d.ts +8 -4
  145. package/dist/components/pagination.d.ts.map +1 -1
  146. package/dist/components/pagination.js +10 -13
  147. package/dist/components/popover.d.ts +3 -7
  148. package/dist/components/popover.d.ts.map +1 -1
  149. package/dist/components/popover.js +5 -30
  150. package/dist/components/radio-group.d.ts.map +1 -1
  151. package/dist/components/radio-group.js +0 -1
  152. package/dist/components/resizable.d.ts.map +1 -1
  153. package/dist/components/resizable.js +2 -2
  154. package/dist/components/scroll-area.d.ts.map +1 -1
  155. package/dist/components/scroll-area.js +0 -1
  156. package/dist/components/separator.d.ts.map +1 -1
  157. package/dist/components/separator.js +0 -1
  158. package/dist/components/sheet.d.ts +2 -3
  159. package/dist/components/sheet.d.ts.map +1 -1
  160. package/dist/components/sheet.js +2 -3
  161. package/dist/components/sidebar.d.ts +9 -15
  162. package/dist/components/sidebar.d.ts.map +1 -1
  163. package/dist/components/sidebar.js +85 -41
  164. package/dist/components/skeleton.js +1 -1
  165. package/dist/components/slider.d.ts.map +1 -1
  166. package/dist/components/slider.js +3 -8
  167. package/dist/components/sonner.d.ts +1 -1
  168. package/dist/components/sonner.d.ts.map +1 -1
  169. package/dist/components/sonner.js +15 -9
  170. package/dist/components/spinner.d.ts.map +1 -1
  171. package/dist/components/spinner.js +2 -2
  172. package/dist/components/switch.d.ts.map +1 -1
  173. package/dist/components/switch.js +0 -1
  174. package/dist/components/table.js +2 -2
  175. package/dist/components/tabs.d.ts.map +1 -1
  176. package/dist/components/tabs.js +0 -1
  177. package/dist/components/textarea.js +1 -1
  178. package/dist/components/theme-mode-switcher.js +4 -3
  179. package/dist/components/toggle-group.d.ts +3 -9
  180. package/dist/components/toggle-group.d.ts.map +1 -1
  181. package/dist/components/toggle-group.js +5 -22
  182. package/dist/components/toggle.d.ts +1 -2
  183. package/dist/components/toggle.d.ts.map +1 -1
  184. package/dist/components/toggle.js +2 -3
  185. package/dist/components/tooltip.d.ts +2 -5
  186. package/dist/components/tooltip.d.ts.map +1 -1
  187. package/dist/components/tooltip.js +4 -6
  188. package/dist/hooks/use-mobile.d.ts.map +1 -1
  189. package/dist/hooks/use-mobile.js +0 -1
  190. package/docs/migration/base-ui-migration.md +33 -9
  191. package/package.json +3 -2
  192. package/dist/lib/base-render.d.ts +0 -14
  193. package/dist/lib/base-render.d.ts.map +0 -1
  194. package/dist/lib/base-render.js +0 -16
  195. package/dist/lib/slot.d.ts +0 -8
  196. package/dist/lib/slot.d.ts.map +0 -1
  197. package/dist/lib/slot.js +0 -17
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import * as React from "react";
3
2
  const MOBILE_BREAKPOINT = 768;
4
3
  export function useIsMobile() {
@@ -5,11 +5,11 @@
5
5
  Current invariants:
6
6
 
7
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.
8
+ - Package source must not import `radix-ui`, `@radix-ui/*`, or `vaul`.
9
+ - `cmdk` is allowed only for the stock shadcn Command component while the current `base-nova` registry declares it.
9
10
  - `@nadicodeai/ui/package.json` must not depend on `radix-ui`, `@radix-ui/react-use-controllable-state`, or `vaul`.
10
11
  - 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.
12
+ - Public shadcn primitive usage follows the current Base UI registry API. Base UI composition uses `render`; do not add package-local `asChild` adapters for registry-owned primitives.
13
13
  - AI Elements use the package-local `useControllableState` helper instead of Radix's hook.
14
14
 
15
15
  ## Migration Catalog
@@ -18,16 +18,13 @@ Direct Base-backed shadcn replacements:
18
18
 
19
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
20
 
21
- Manual compatibility helpers:
21
+ Package-owned helpers:
22
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.
23
+ - Wrapper-only components (`badge`, `breadcrumb`, `button-group`, `item`, `sidebar`, `form`) compose through Base UI's `useRender`/`mergeProps` directly; the transitional `src/lib/slot.tsx` and `src/lib/base-render.tsx` shims are removed.
27
24
 
28
25
  Removed non-shadcn Radix carriers:
29
26
 
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).
27
+ - `command` stays backed by shadcn's stock `cmdk` implementation while the `base-nova` registry declares that dependency.
31
28
  - `drawer` replaces `vaul` with Base UI Drawer.
32
29
  - AI Elements replace `@radix-ui/react-use-controllable-state` with `src/hooks/use-controllable-state.ts`.
33
30
 
@@ -40,6 +37,33 @@ AI Elements using the local controlled/uncontrolled helper:
40
37
  - `transcription`
41
38
  - `voice-selector`
42
39
 
40
+ ## Breaking in 0.5.0
41
+
42
+ `@nadicodeai/ui@0.5.0` removes the Radix-era compatibility layer that 0.4.x
43
+ carried. Consumers upgrading from 0.4.x must migrate:
44
+
45
+ - `asChild` is removed on every primitive (Button, triggers, closes, menu
46
+ items). Use Base UI's `render` prop instead; when the rendered element is
47
+ not a native `<button>`, also pass `nativeButton={false}` (for example
48
+ `<Button nativeButton={false} render={<a href="…" />}>`).
49
+ - `DropdownMenuItem` / `ContextMenuItem` / `MenubarItem` no longer accept
50
+ `onSelect`. Use `onClick`, and `closeOnClick={false}` to keep the menu open
51
+ (replaces the `onSelect` + `event.preventDefault()` pattern).
52
+ - `PromptInputActionAddScreenshot`'s `onSelect` prop is renamed `onClick`.
53
+ - `Accordion` and `ToggleGroup` drop `type="single" | "multiple"` and string
54
+ values. Values are always arrays; pass `multiple` for multi-select.
55
+ - `TooltipProvider` drops the `delayDuration` alias — use `delay`. HoverCard
56
+ open/close delays live on `HoverCardTrigger` (`delay` / `closeDelay`), not
57
+ the root.
58
+ - `Drawer` drops the vaul-era `direction` / `activeSnapPoint` /
59
+ `setActiveSnapPoint` aliases — use Base UI's `swipeDirection` /
60
+ `snapPoint` / `onSnapPointChange`.
61
+ - `DirectionProvider` drops the `dir` alias — use `direction`.
62
+ - `NavigationMenuViewport` and `PopoverAnchor` are no longer exported; they
63
+ have no stock base-nova equivalent.
64
+ - `CollapsibleContent` / disclosure panels drop the `forceMount` alias — use
65
+ Base UI's `keepMounted`.
66
+
43
67
  Verification:
44
68
 
45
69
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nadicodeai/ui",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -49,7 +49,7 @@
49
49
  },
50
50
  "dependencies": {
51
51
  "@base-ui/react": "^1.6.0",
52
- "@nadicodeai/design-system": "0.4.1",
52
+ "@nadicodeai/design-system": "0.5.0",
53
53
  "@rive-app/react-webgl2": "^4.29.1",
54
54
  "@streamdown/cjk": "^1.0.3",
55
55
  "@streamdown/code": "^1.1.1",
@@ -67,6 +67,7 @@
67
67
  "media-chrome": "^4.19.2",
68
68
  "motion": "^12.40.0",
69
69
  "nanoid": "^5.1.15",
70
+ "next-themes": "^0.4.6",
70
71
  "react-day-picker": "^10.0.1",
71
72
  "react-hook-form": "^7.80.0",
72
73
  "react-jsx-parser": "^2.4.1",
@@ -1,14 +0,0 @@
1
- import * as React from "react";
2
- type AsChildProps = {
3
- asChild?: boolean;
4
- children?: React.ReactNode;
5
- render?: unknown;
6
- };
7
- type WithoutAsChild<T> = Omit<T, "asChild">;
8
- declare function withAsChildRender<T extends AsChildProps>({ asChild, children, render, ...props }: T): WithoutAsChild<T>;
9
- type WithAsChild<T> = T & {
10
- asChild?: boolean;
11
- };
12
- export { withAsChildRender };
13
- export type { WithAsChild };
14
- //# sourceMappingURL=base-render.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-render.d.ts","sourceRoot":"","sources":["../../src/lib/base-render.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,KAAK,YAAY,GAAG;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,KAAK,cAAc,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;AAE3C,iBAAS,iBAAiB,CAAC,CAAC,SAAS,YAAY,EAAE,EACjD,OAAO,EACP,QAAQ,EACR,MAAM,EACN,GAAG,KAAK,EACT,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAavB;AAED,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAC5B,YAAY,EAAE,WAAW,EAAE,CAAA"}
@@ -1,16 +0,0 @@
1
- "use client";
2
- import * as React from "react";
3
- function withAsChildRender({ asChild, children, render, ...props }) {
4
- if (asChild && React.isValidElement(children)) {
5
- return {
6
- ...props,
7
- render: render ?? children,
8
- };
9
- }
10
- return {
11
- ...props,
12
- children,
13
- render,
14
- };
15
- }
16
- export { withAsChildRender };
@@ -1,8 +0,0 @@
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
@@ -1 +0,0 @@
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"}
package/dist/lib/slot.js DELETED
@@ -1,17 +0,0 @@
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 };