@nadicodeai/ui 0.21.0 → 1.0.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.
- package/AGENTS.md +6 -7
- package/LICENSES/PAPER-SHADERS-APACHE-2.0.txt +186 -0
- package/NOTICE +12 -0
- package/README.md +14 -21
- package/dist/agents.d.ts +10 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +10 -0
- package/dist/components/agent-card.d.ts +13 -0
- package/dist/components/agent-card.d.ts.map +1 -0
- package/dist/components/agent-card.js +15 -0
- package/dist/components/agent-visual.d.ts +17 -0
- package/dist/components/agent-visual.d.ts.map +1 -0
- package/dist/components/agent-visual.js +59 -0
- package/dist/components/alert-dialog.js +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.d.ts.map +1 -1
- package/dist/components/badge.js +9 -0
- package/dist/components/button.d.ts +1 -1
- package/dist/components/card.d.ts +5 -3
- package/dist/components/card.d.ts.map +1 -1
- package/dist/components/card.js +7 -7
- package/dist/components/chart.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/context-menu.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/drawer.js +1 -1
- package/dist/components/dropdown-menu.js +1 -1
- package/dist/components/empty.d.ts +5 -2
- package/dist/components/empty.d.ts.map +1 -1
- package/dist/components/empty.js +3 -3
- package/dist/components/feedback-state.js +1 -1
- package/dist/components/glass-control.d.ts +7 -0
- package/dist/components/glass-control.d.ts.map +1 -0
- package/dist/components/glass-control.js +14 -0
- package/dist/components/hover-card.js +1 -1
- package/dist/components/label-system.d.ts +1 -10
- package/dist/components/label-system.d.ts.map +1 -1
- package/dist/components/label-system.js +1 -7
- package/dist/components/live-demo.js +1 -1
- package/dist/components/menubar.js +1 -1
- package/dist/components/nav-bar.d.ts +6 -8
- package/dist/components/nav-bar.d.ts.map +1 -1
- package/dist/components/nav-bar.js +8 -9
- package/dist/components/navigation-menu.js +2 -2
- package/dist/components/popover.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/sheet.js +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sonner.js +2 -2
- package/dist/components/testimonials.d.ts +1 -1
- package/dist/components/testimonials.js +2 -2
- package/dist/components/tooltip.js +1 -1
- package/dist/components/use-case-bento.d.ts +2 -4
- package/dist/components/use-case-bento.d.ts.map +1 -1
- package/dist/components/use-case-bento.js +2 -3
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +0 -1
- package/dist/index.d.ts +3 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -16
- package/dist/internal/agent-visual/color.d.ts +4 -0
- package/dist/internal/agent-visual/color.d.ts.map +1 -0
- package/dist/internal/agent-visual/color.js +39 -0
- package/dist/internal/agent-visual/poster.d.ts +6 -0
- package/dist/internal/agent-visual/poster.d.ts.map +1 -0
- package/dist/internal/agent-visual/poster.js +35 -0
- package/dist/internal/agent-visual/recipes.d.ts +15 -0
- package/dist/internal/agent-visual/recipes.d.ts.map +1 -0
- package/dist/internal/agent-visual/recipes.js +72 -0
- package/dist/internal/agent-visual/renderer.d.ts +10 -0
- package/dist/internal/agent-visual/renderer.d.ts.map +1 -0
- package/dist/internal/agent-visual/renderer.js +112 -0
- package/dist/internal/agent-visual/shader.d.ts +2 -0
- package/dist/internal/agent-visual/shader.d.ts.map +1 -0
- package/dist/internal/agent-visual/shader.js +158 -0
- package/dist/internal/assistant-ui/attachment.d.ts +5 -0
- package/dist/internal/assistant-ui/attachment.d.ts.map +1 -0
- package/dist/internal/assistant-ui/attachment.js +93 -0
- package/dist/internal/assistant-ui/follow-up-suggestions.d.ts +3 -0
- package/dist/internal/assistant-ui/follow-up-suggestions.d.ts.map +1 -0
- package/dist/internal/assistant-ui/follow-up-suggestions.js +8 -0
- package/dist/internal/assistant-ui/markdown-text.d.ts +2 -0
- package/dist/internal/assistant-ui/markdown-text.d.ts.map +1 -0
- package/dist/internal/assistant-ui/markdown-text.js +54 -0
- package/dist/internal/assistant-ui/reasoning.d.ts +31 -0
- package/dist/internal/assistant-ui/reasoning.d.ts.map +1 -0
- package/dist/internal/assistant-ui/reasoning.js +118 -0
- package/dist/internal/assistant-ui/thread.d.ts +26 -0
- package/dist/internal/assistant-ui/thread.d.ts.map +1 -0
- package/dist/internal/assistant-ui/thread.js +118 -0
- package/dist/internal/assistant-ui/tool-fallback.d.ts +10 -0
- package/dist/internal/assistant-ui/tool-fallback.d.ts.map +1 -0
- package/dist/internal/assistant-ui/tool-fallback.js +163 -0
- package/dist/internal/assistant-ui/tool-group.d.ts +18 -0
- package/dist/internal/assistant-ui/tool-group.d.ts.map +1 -0
- package/dist/internal/assistant-ui/tool-group.js +44 -0
- package/dist/internal/assistant-ui/tooltip-icon-button.d.ts +8 -0
- package/dist/internal/assistant-ui/tooltip-icon-button.d.ts.map +1 -0
- package/dist/internal/assistant-ui/tooltip-icon-button.js +10 -0
- package/dist/styles/globals.css +24 -209
- package/docs/agents/nadicodeai-ui.md +8 -8
- package/docs/component-classification.md +1 -1
- package/docs/consuming-cross-repo.md +12 -4
- package/docs/contract.md +83 -7
- package/docs/migration/1.0.0.md +75 -0
- package/docs/migration/base-ui-migration.md +0 -11
- package/docs/product-compositions.md +1 -1
- package/llms.txt +7 -6
- package/package.json +17 -29
- package/skills/nadicodeai-ui/SKILL.md +11 -7
- package/dist/ai-elements.d.ts +0 -49
- package/dist/ai-elements.d.ts.map +0 -1
- package/dist/ai-elements.js +0 -48
- package/dist/components/agent-avatar.d.ts +0 -7
- package/dist/components/agent-avatar.d.ts.map +0 -1
- package/dist/components/agent-avatar.js +0 -6
- package/dist/components/agent-chat.d.ts +0 -20
- package/dist/components/agent-chat.d.ts.map +0 -1
- package/dist/components/agent-chat.js +0 -10
- package/dist/components/agent-composer.d.ts +0 -56
- package/dist/components/agent-composer.d.ts.map +0 -1
- package/dist/components/agent-composer.js +0 -56
- package/dist/components/agent-message.d.ts +0 -117
- package/dist/components/agent-message.d.ts.map +0 -1
- package/dist/components/agent-message.js +0 -99
- package/dist/components/agent-thread.d.ts +0 -26
- package/dist/components/agent-thread.d.ts.map +0 -1
- package/dist/components/agent-thread.js +0 -63
- package/dist/components/agent-tool-approval.d.ts +0 -27
- package/dist/components/agent-tool-approval.d.ts.map +0 -1
- package/dist/components/agent-tool-approval.js +0 -43
- package/dist/components/ai-elements/agent.d.ts +0 -27
- package/dist/components/ai-elements/agent.d.ts.map +0 -1
- package/dist/components/ai-elements/agent.js +0 -25
- package/dist/components/ai-elements/artifact.d.ts +0 -24
- package/dist/components/ai-elements/artifact.d.ts.map +0 -1
- package/dist/components/ai-elements/artifact.js +0 -20
- package/dist/components/ai-elements/attachments.d.ts +0 -55
- package/dist/components/ai-elements/attachments.d.ts.map +0 -1
- package/dist/components/ai-elements/attachments.js +0 -125
- package/dist/components/ai-elements/audio-player.d.ts +0 -30
- package/dist/components/ai-elements/audio-player.d.ts.map +0 -1
- package/dist/components/ai-elements/audio-player.js +0 -41
- package/dist/components/ai-elements/canvas.d.ts +0 -8
- package/dist/components/ai-elements/canvas.d.ts.map +0 -1
- package/dist/components/ai-elements/canvas.js +0 -5
- package/dist/components/ai-elements/chain-of-thought.d.ts +0 -30
- package/dist/components/ai-elements/chain-of-thought.d.ts.map +0 -1
- package/dist/components/ai-elements/chain-of-thought.js +0 -49
- package/dist/components/ai-elements/checkpoint.d.ts +0 -12
- package/dist/components/ai-elements/checkpoint.d.ts.map +0 -1
- package/dist/components/ai-elements/checkpoint.js +0 -10
- package/dist/components/ai-elements/code-block.d.ts +0 -53
- package/dist/components/ai-elements/code-block.d.ts.map +0 -1
- package/dist/components/ai-elements/code-block.js +0 -239
- package/dist/components/ai-elements/commit.d.ts +0 -65
- package/dist/components/ai-elements/commit.d.ts.map +0 -1
- package/dist/components/ai-elements/commit.js +0 -83
- package/dist/components/ai-elements/confirmation.d.ts +0 -50
- package/dist/components/ai-elements/confirmation.d.ts.map +0 -1
- package/dist/components/ai-elements/confirmation.js +0 -57
- package/dist/components/ai-elements/connection.d.ts +0 -6
- package/dist/components/ai-elements/connection.d.ts.map +0 -1
- package/dist/components/ai-elements/connection.js +0 -10
- package/dist/components/ai-elements/context.d.ts +0 -33
- package/dist/components/ai-elements/context.d.ts.map +0 -1
- package/dist/components/ai-elements/context.js +0 -147
- package/dist/components/ai-elements/controls.d.ts +0 -5
- package/dist/components/ai-elements/controls.d.ts.map +0 -1
- package/dist/components/ai-elements/controls.js +0 -5
- package/dist/components/ai-elements/conversation.d.ts +0 -24
- package/dist/components/ai-elements/conversation.d.ts.map +0 -1
- package/dist/components/ai-elements/conversation.js +0 -41
- package/dist/components/ai-elements/edge.d.ts +0 -6
- package/dist/components/ai-elements/edge.d.ts.map +0 -1
- package/dist/components/ai-elements/edge.js +0 -88
- package/dist/components/ai-elements/environment-variables.d.ts +0 -39
- package/dist/components/ai-elements/environment-variables.d.ts.map +0 -1
- package/dist/components/ai-elements/environment-variables.js +0 -60
- package/dist/components/ai-elements/file-tree.d.ts +0 -27
- package/dist/components/ai-elements/file-tree.d.ts.map +0 -1
- package/dist/components/ai-elements/file-tree.js +0 -73
- package/dist/components/ai-elements/image.d.ts +0 -7
- package/dist/components/ai-elements/image.d.ts.map +0 -1
- package/dist/components/ai-elements/image.js +0 -3
- package/dist/components/ai-elements/inline-citation.d.ts +0 -39
- package/dist/components/ai-elements/inline-citation.d.ts.map +0 -1
- package/dist/components/ai-elements/inline-citation.js +0 -86
- package/dist/components/ai-elements/jsx-preview.d.ts +0 -30
- package/dist/components/ai-elements/jsx-preview.d.ts.map +0 -1
- package/dist/components/ai-elements/jsx-preview.js +0 -159
- package/dist/components/ai-elements/message.d.ts +0 -38
- package/dist/components/ai-elements/message.d.ts.map +0 -1
- package/dist/components/ai-elements/message.js +0 -91
- package/dist/components/ai-elements/mic-selector.d.ts +0 -46
- package/dist/components/ai-elements/mic-selector.d.ts.map +0 -1
- package/dist/components/ai-elements/mic-selector.js +0 -180
- package/dist/components/ai-elements/model-selector.d.ts +0 -36
- package/dist/components/ai-elements/model-selector.d.ts.map +0 -1
- package/dist/components/ai-elements/model-selector.js +0 -18
- package/dist/components/ai-elements/node.d.ts +0 -22
- package/dist/components/ai-elements/node.d.ts.map +0 -1
- package/dist/components/ai-elements/node.js +0 -12
- package/dist/components/ai-elements/open-in-chat.d.ts +0 -27
- package/dist/components/ai-elements/open-in-chat.d.ts.map +0 -1
- package/dist/components/ai-elements/open-in-chat.js +0 -81
- package/dist/components/ai-elements/package-info.d.ts +0 -30
- package/dist/components/ai-elements/package-info.d.ts.map +0 -1
- package/dist/components/ai-elements/package-info.js +0 -50
- package/dist/components/ai-elements/panel.d.ts +0 -6
- package/dist/components/ai-elements/panel.d.ts.map +0 -1
- package/dist/components/ai-elements/panel.js +0 -5
- package/dist/components/ai-elements/persona.d.ts +0 -49
- package/dist/components/ai-elements/persona.d.ts.map +0 -1
- package/dist/components/ai-elements/persona.js +0 -175
- package/dist/components/ai-elements/plan.d.ts +0 -27
- package/dist/components/ai-elements/plan.d.ts.map +0 -1
- package/dist/components/ai-elements/plan.js +0 -34
- package/dist/components/ai-elements/prompt-input.d.ts +0 -149
- package/dist/components/ai-elements/prompt-input.d.ts.map +0 -1
- package/dist/components/ai-elements/prompt-input.js +0 -704
- package/dist/components/ai-elements/queue.d.ts +0 -62
- package/dist/components/ai-elements/queue.d.ts.map +0 -1
- package/dist/components/ai-elements/queue.js +0 -24
- package/dist/components/ai-elements/reasoning.d.ts +0 -27
- package/dist/components/ai-elements/reasoning.d.ts.map +0 -1
- package/dist/components/ai-elements/reasoning.js +0 -92
- package/dist/components/ai-elements/sandbox.d.ts +0 -25
- package/dist/components/ai-elements/sandbox.d.ts.map +0 -1
- package/dist/components/ai-elements/sandbox.js +0 -15
- package/dist/components/ai-elements/schema-display.d.ts +0 -56
- package/dist/components/ai-elements/schema-display.d.ts.map +0 -1
- package/dist/components/ai-elements/schema-display.js +0 -90
- package/dist/components/ai-elements/shimmer.d.ts +0 -10
- package/dist/components/ai-elements/shimmer.d.ts.map +0 -1
- package/dist/components/ai-elements/shimmer.js +0 -11
- package/dist/components/ai-elements/snippet.d.ts +0 -19
- package/dist/components/ai-elements/snippet.d.ts.map +0 -1
- package/dist/components/ai-elements/snippet.js +0 -32
- package/dist/components/ai-elements/sources.d.ts +0 -13
- package/dist/components/ai-elements/sources.d.ts.map +0 -1
- package/dist/components/ai-elements/sources.js +0 -9
- package/dist/components/ai-elements/speech-input.d.ts +0 -55
- package/dist/components/ai-elements/speech-input.d.ts.map +0 -1
- package/dist/components/ai-elements/speech-input.js +0 -187
- package/dist/components/ai-elements/stack-trace.d.ts +0 -38
- package/dist/components/ai-elements/stack-trace.d.ts.map +0 -1
- package/dist/components/ai-elements/stack-trace.js +0 -181
- package/dist/components/ai-elements/suggestion.d.ts +0 -11
- package/dist/components/ai-elements/suggestion.d.ts.map +0 -1
- package/dist/components/ai-elements/suggestion.js +0 -13
- package/dist/components/ai-elements/task.d.ts +0 -15
- package/dist/components/ai-elements/task.d.ts.map +0 -1
- package/dist/components/ai-elements/task.js +0 -10
- package/dist/components/ai-elements/terminal.d.ts +0 -28
- package/dist/components/ai-elements/terminal.d.ts.map +0 -1
- package/dist/components/ai-elements/terminal.js +0 -55
- package/dist/components/ai-elements/test-results.d.ts +0 -59
- package/dist/components/ai-elements/test-results.d.ts.map +0 -1
- package/dist/components/ai-elements/test-results.js +0 -98
- package/dist/components/ai-elements/tool.d.ts +0 -32
- package/dist/components/ai-elements/tool.d.ts.map +0 -1
- package/dist/components/ai-elements/tool.js +0 -49
- package/dist/components/ai-elements/toolbar.d.ts +0 -6
- package/dist/components/ai-elements/toolbar.d.ts.map +0 -1
- package/dist/components/ai-elements/toolbar.js +0 -5
- package/dist/components/ai-elements/transcription.d.ts +0 -17
- package/dist/components/ai-elements/transcription.d.ts.map +0 -1
- package/dist/components/ai-elements/transcription.js +0 -36
- package/dist/components/ai-elements/voice-selector.d.ts +0 -65
- package/dist/components/ai-elements/voice-selector.d.ts.map +0 -1
- package/dist/components/ai-elements/voice-selector.js +0 -224
- package/dist/components/ai-elements/web-preview.d.ts +0 -35
- package/dist/components/ai-elements/web-preview.d.ts.map +0 -1
- package/dist/components/ai-elements/web-preview.js +0 -66
- package/dist/components/artifact-panel.d.ts +0 -130
- package/dist/components/artifact-panel.d.ts.map +0 -1
- package/dist/components/artifact-panel.js +0 -180
- package/dist/components/attachment.d.ts +0 -24
- package/dist/components/attachment.d.ts.map +0 -1
- package/dist/components/attachment.js +0 -68
- package/dist/components/bubble.d.ts +0 -17
- package/dist/components/bubble.d.ts.map +0 -1
- package/dist/components/bubble.js +0 -59
- package/dist/components/demo-surface.d.ts +0 -34
- package/dist/components/demo-surface.d.ts.map +0 -1
- package/dist/components/demo-surface.js +0 -21
- package/dist/components/files-preview.d.ts +0 -36
- package/dist/components/files-preview.d.ts.map +0 -1
- package/dist/components/files-preview.js +0 -85
- package/dist/components/marker.d.ts +0 -11
- package/dist/components/marker.d.ts.map +0 -1
- package/dist/components/marker.js +0 -34
- package/dist/components/message-scroller.d.ts +0 -17
- package/dist/components/message-scroller.d.ts.map +0 -1
- package/dist/components/message-scroller.js +0 -29
- package/dist/components/message.d.ts +0 -11
- package/dist/components/message.d.ts.map +0 -1
- package/dist/components/message.js +0 -21
- package/dist/components/state-notice.d.ts +0 -13
- package/dist/components/state-notice.d.ts.map +0 -1
- package/dist/components/state-notice.js +0 -8
- package/dist/components/watch-it-work-band.d.ts +0 -12
- package/dist/components/watch-it-work-band.d.ts.map +0 -1
- package/dist/components/watch-it-work-band.js +0 -8
- package/dist/hooks/use-controllable-state.d.ts +0 -9
- package/dist/hooks/use-controllable-state.d.ts.map +0 -1
- package/dist/hooks/use-controllable-state.js +0 -23
- package/dist/lib/agent-attachment.d.ts +0 -11
- package/dist/lib/agent-attachment.d.ts.map +0 -1
- package/dist/lib/agent-attachment.js +0 -19
- package/dist/lib/agent-contracts.d.ts +0 -132
- package/dist/lib/agent-contracts.d.ts.map +0 -1
- package/dist/lib/agent-contracts.js +0 -6
- package/dist/lib/agent-state.d.ts +0 -22
- package/dist/lib/agent-state.d.ts.map +0 -1
- package/dist/lib/agent-state.js +0 -96
- package/dist/lib/agent-work-state.d.ts +0 -36
- package/dist/lib/agent-work-state.d.ts.map +0 -1
- package/dist/lib/agent-work-state.js +0 -36
- package/dist/lib/message-scroller-primitive/components.d.ts +0 -17
- package/dist/lib/message-scroller-primitive/components.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/components.js +0 -204
- package/dist/lib/message-scroller-primitive/geometry.d.ts +0 -51
- package/dist/lib/message-scroller-primitive/geometry.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/geometry.js +0 -199
- package/dist/lib/message-scroller-primitive/index.d.ts +0 -12
- package/dist/lib/message-scroller-primitive/index.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/index.js +0 -12
- package/dist/lib/message-scroller-primitive/stores.d.ts +0 -6
- package/dist/lib/message-scroller-primitive/stores.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/stores.js +0 -53
- package/dist/lib/message-scroller-primitive/types.d.ts +0 -88
- package/dist/lib/message-scroller-primitive/types.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/types.js +0 -40
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts +0 -19
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.js +0 -188
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts +0 -7
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.js +0 -506
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts +0 -49
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.js +0 -90
- package/dist/lib/message-scroller-primitive/use-render.d.ts +0 -22
- package/dist/lib/message-scroller-primitive/use-render.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-render.js +0 -113
- package/dist/lib/message-scroller-primitive/utils.d.ts +0 -4
- package/dist/lib/message-scroller-primitive/utils.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/utils.js +0 -9
- package/docs/agent-work-surfaces.md +0 -132
- package/docs/migration/ai-elements-vendoring.md +0 -29
- package/docs/terminal-tui-semantics.md +0 -172
package/dist/styles/globals.css
CHANGED
|
@@ -14,10 +14,12 @@
|
|
|
14
14
|
@layer tokens, theme, reset, base, foundation, motion, layout, primitives, components, utilities;
|
|
15
15
|
|
|
16
16
|
@import "tailwindcss";
|
|
17
|
+
@import "shadow-plugin";
|
|
17
18
|
@import "tw-animate-css";
|
|
19
|
+
@import "tw-shimmer";
|
|
20
|
+
@import "@assistant-ui/react-markdown/styles/dot.css";
|
|
18
21
|
@import "./shadcn.tailwind.css";
|
|
19
22
|
@import "@nadicodeai/design-system/css";
|
|
20
|
-
@import "@xyflow/react/dist/style.css" layer(components);
|
|
21
23
|
|
|
22
24
|
/*
|
|
23
25
|
* Tailwind v4's dark: variant defaults to an OS media query. Match shadcn's
|
|
@@ -52,218 +54,30 @@
|
|
|
52
54
|
}
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
/*
|
|
63
|
-
* The design-system CSS components (.nc-chat-thread, .nc-chat-bubble-*,
|
|
64
|
-
* .nc-artifact-preview, .nc-approval-gate, .nc-tool-call-trace,
|
|
65
|
-
* .nc-usage-meter, .nc-run-timeline, .nc-memory-item, .nc-handoff-banner, …)
|
|
66
|
-
* paint from the raw --nc-canvas/ink/body/line/canvas-soft/muted/warning
|
|
67
|
-
* palette. The generated mode layer remaps that surface palette alongside every
|
|
68
|
-
* other authored dark pair, so nc-* CSS components need no local mode selectors.
|
|
69
|
-
*/
|
|
70
|
-
|
|
71
|
-
/*
|
|
72
|
-
* ansi-to-react emits stable classes when Terminal enables `useClasses`.
|
|
73
|
-
* Terminal is an intentionally fixed-dark technology surface, so this adapter
|
|
74
|
-
* maps those protocol classes directly to canonical dark design tokens. It does
|
|
75
|
-
* not declare a parallel product-token hierarchy.
|
|
76
|
-
*/
|
|
77
|
-
[data-slot="terminal"] .ansi-black-fg {
|
|
78
|
-
color: var(--nc-dark-muted);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
[data-slot="terminal"] .ansi-red-fg {
|
|
82
|
-
color: var(--nc-dark-error);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
[data-slot="terminal"] .ansi-green-fg {
|
|
86
|
-
color: var(--nc-dark-success);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
[data-slot="terminal"] .ansi-yellow-fg {
|
|
90
|
-
color: var(--nc-dark-warning);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
[data-slot="terminal"] .ansi-blue-fg {
|
|
94
|
-
color: var(--nc-dark-info);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
[data-slot="terminal"] .ansi-magenta-fg {
|
|
98
|
-
color: var(--nc-dark-chart-6);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
[data-slot="terminal"] .ansi-cyan-fg {
|
|
102
|
-
color: var(--nc-dark-cyan);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
[data-slot="terminal"] .ansi-white-fg {
|
|
106
|
-
color: var(--nc-dark-body);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
[data-slot="terminal"] .ansi-bright-black-fg {
|
|
110
|
-
color: var(--nc-dark-body);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
[data-slot="terminal"] .ansi-bright-red-fg {
|
|
114
|
-
color: var(--nc-dark-error-deep);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
[data-slot="terminal"] .ansi-bright-green-fg {
|
|
118
|
-
color: var(--nc-dark-link-deep);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
[data-slot="terminal"] .ansi-bright-yellow-fg {
|
|
122
|
-
color: var(--nc-dark-warning-deep);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
[data-slot="terminal"] .ansi-bright-blue-fg {
|
|
126
|
-
color: var(--nc-dark-info-deep);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
[data-slot="terminal"] .ansi-bright-magenta-fg {
|
|
130
|
-
color: var(--nc-dark-chart-seq-3);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
[data-slot="terminal"] .ansi-bright-cyan-fg {
|
|
134
|
-
color: var(--nc-dark-cyan-soft);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
[data-slot="terminal"] .ansi-bright-white-fg {
|
|
138
|
-
color: var(--nc-dark-ink);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
[data-slot="terminal"] .ansi-black-bg {
|
|
142
|
-
background-color: var(--nc-dark-canvas);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
[data-slot="terminal"] .ansi-red-bg {
|
|
146
|
-
background-color: var(--nc-dark-error);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
[data-slot="terminal"] .ansi-green-bg {
|
|
150
|
-
background-color: var(--nc-dark-success);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
[data-slot="terminal"] .ansi-yellow-bg {
|
|
154
|
-
background-color: var(--nc-dark-warning);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
[data-slot="terminal"] .ansi-blue-bg {
|
|
158
|
-
background-color: var(--nc-dark-info);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
[data-slot="terminal"] .ansi-magenta-bg {
|
|
162
|
-
background-color: var(--nc-dark-chart-6);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
[data-slot="terminal"] .ansi-cyan-bg {
|
|
166
|
-
background-color: var(--nc-dark-cyan);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
[data-slot="terminal"] .ansi-white-bg {
|
|
170
|
-
background-color: var(--nc-dark-body);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
[data-slot="terminal"] .ansi-bright-black-bg {
|
|
174
|
-
background-color: var(--nc-dark-body);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
[data-slot="terminal"] .ansi-bright-red-bg {
|
|
178
|
-
background-color: var(--nc-dark-error-deep);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
[data-slot="terminal"] .ansi-bright-green-bg {
|
|
182
|
-
background-color: var(--nc-dark-link-deep);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
[data-slot="terminal"] .ansi-bright-yellow-bg {
|
|
186
|
-
background-color: var(--nc-dark-warning-deep);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
[data-slot="terminal"] .ansi-bright-blue-bg {
|
|
190
|
-
background-color: var(--nc-dark-info-deep);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
[data-slot="terminal"] .ansi-bright-magenta-bg {
|
|
194
|
-
background-color: var(--nc-dark-chart-seq-3);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
[data-slot="terminal"] .ansi-bright-cyan-bg {
|
|
198
|
-
background-color: var(--nc-dark-cyan-soft);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
[data-slot="terminal"] .ansi-bright-white-bg {
|
|
202
|
-
background-color: var(--nc-dark-ink);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
[data-slot="terminal"] .ansi-black-bg:not([class*="-fg"]) {
|
|
206
|
-
color: var(--nc-dark-ink);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
[data-slot="terminal"]
|
|
210
|
-
:is(
|
|
211
|
-
.ansi-red-bg,
|
|
212
|
-
.ansi-green-bg,
|
|
213
|
-
.ansi-yellow-bg,
|
|
214
|
-
.ansi-blue-bg,
|
|
215
|
-
.ansi-magenta-bg,
|
|
216
|
-
.ansi-cyan-bg,
|
|
217
|
-
.ansi-white-bg,
|
|
218
|
-
.ansi-bright-black-bg,
|
|
219
|
-
.ansi-bright-red-bg,
|
|
220
|
-
.ansi-bright-green-bg,
|
|
221
|
-
.ansi-bright-yellow-bg,
|
|
222
|
-
.ansi-bright-blue-bg,
|
|
223
|
-
.ansi-bright-magenta-bg,
|
|
224
|
-
.ansi-bright-cyan-bg,
|
|
225
|
-
.ansi-bright-white-bg
|
|
226
|
-
):not([class*="-fg"]) {
|
|
227
|
-
color: var(--nc-dark-canvas);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
[data-nc-code-block-body] {
|
|
231
|
-
background-color: var(--shiki-code-block-light-bg, var(--background));
|
|
232
|
-
color: var(--shiki-code-block-light-fg, var(--foreground));
|
|
233
|
-
}
|
|
57
|
+
@layer components {
|
|
58
|
+
.nc-glass-control {
|
|
59
|
+
background: color-mix(in srgb, var(--popover) var(--nc-material-glass-opacity), transparent);
|
|
60
|
+
backdrop-filter: blur(var(--nc-material-glass-blur))
|
|
61
|
+
saturate(var(--nc-material-glass-saturation));
|
|
62
|
+
}
|
|
234
63
|
|
|
235
|
-
.
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
var(--shiki-code-block-light-bg, var(--background))
|
|
239
|
-
);
|
|
240
|
-
color: var(--shiki-code-block-dark-fg, var(--shiki-code-block-light-fg, var(--foreground)));
|
|
241
|
-
}
|
|
64
|
+
.nc-toast {
|
|
65
|
+
border: 0 !important;
|
|
66
|
+
}
|
|
242
67
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
68
|
+
@media (prefers-reduced-transparency: reduce) {
|
|
69
|
+
.nc-glass-control {
|
|
70
|
+
background: var(--popover);
|
|
71
|
+
backdrop-filter: none;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
249
74
|
}
|
|
250
75
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
var(--shiki-code-token-light-font-style, normal)
|
|
257
|
-
);
|
|
258
|
-
font-weight: var(
|
|
259
|
-
--shiki-code-token-dark-font-weight,
|
|
260
|
-
var(--shiki-code-token-light-font-weight, normal)
|
|
261
|
-
);
|
|
262
|
-
text-decoration: var(
|
|
263
|
-
--shiki-code-token-dark-text-decoration,
|
|
264
|
-
var(--shiki-code-token-light-text-decoration, none)
|
|
265
|
-
);
|
|
266
|
-
}
|
|
76
|
+
/*
|
|
77
|
+
* The canonical design-system module owns raw --nc-* mode aliases, semantic
|
|
78
|
+
* roles, and their Tailwind utility bridge for both root and scoped `.dark`
|
|
79
|
+
* surfaces.
|
|
80
|
+
*/
|
|
267
81
|
|
|
268
82
|
.toaster [data-sonner-toast][data-styled="true"] [data-description] {
|
|
269
83
|
color: var(--muted-foreground);
|
|
@@ -292,4 +106,5 @@
|
|
|
292
106
|
}
|
|
293
107
|
|
|
294
108
|
@source "../components";
|
|
109
|
+
@source "../internal";
|
|
295
110
|
@source "../lib";
|
|
@@ -10,22 +10,20 @@ authoritative interfaces without carrying a second copy of them.
|
|
|
10
10
|
- Package/consumer boundary, styling invariants, admission rules, and
|
|
11
11
|
accessibility: [`../contract.md`](../contract.md).
|
|
12
12
|
- Current component modules and named exports: `src/components/`,
|
|
13
|
-
`src/index.ts
|
|
13
|
+
`src/index.ts` and `package.json` in a source checkout;
|
|
14
14
|
package exports and declarations in an installed package.
|
|
15
|
-
- Import examples, form-stack guidance, `SeamGrid` usage, and live shadcn
|
|
16
|
-
|
|
15
|
+
- Import examples, form-stack guidance, `SeamGrid` usage, and live shadcn and
|
|
16
|
+
assistant-ui discovery commands: [`../../README.md`](../../README.md).
|
|
17
17
|
|
|
18
18
|
Do not maintain component, chart, form, section, export, or registry inventories
|
|
19
19
|
in agent prose. Follow the owning source or document above.
|
|
20
20
|
|
|
21
21
|
## Product work
|
|
22
22
|
|
|
23
|
-
- Agent
|
|
23
|
+
- Agent UI ownership: [`../contract.md`](../contract.md).
|
|
24
24
|
- Product compositions and sections:
|
|
25
25
|
[`../product-compositions.md`](../product-compositions.md) and
|
|
26
26
|
[`../product-sections.md`](../product-sections.md).
|
|
27
|
-
- Terminal and TUI semantics:
|
|
28
|
-
[`../terminal-tui-semantics.md`](../terminal-tui-semantics.md).
|
|
29
27
|
|
|
30
28
|
Routes, persistence, authentication, server state, runtime adapters,
|
|
31
29
|
permissions, analytics, and product-specific copy stay in the consuming app.
|
|
@@ -38,5 +36,7 @@ Use shadcn MCP or the CLI live; never commit an upstream registry inventory.
|
|
|
38
36
|
the committed package surface. Preview upstream changes before applying them;
|
|
39
37
|
do not overwrite maintained source without explicit maintainer direction.
|
|
40
38
|
|
|
41
|
-
The package [`AGENTS.md`](../../AGENTS.md) maps scoped commands.
|
|
42
|
-
|
|
39
|
+
The package [`AGENTS.md`](../../AGENTS.md) maps scoped commands. Proof escalates
|
|
40
|
+
by the ladder in the repository's root `AGENTS.md` "Commands": this workspace's
|
|
41
|
+
`check` and `test`, then the root `npm run check` and `npm run test` when the
|
|
42
|
+
diff reaches other workspaces.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This file records the ownership class for U4 product compositions. The package may render standard product UI, but consuming apps own app behavior, data, persistence, and product-specific promises.
|
|
4
4
|
|
|
5
|
-
If first-party shadcn or
|
|
5
|
+
If first-party shadcn or assistant-ui registry source already covers the same
|
|
6
6
|
generic product UI, do not add a parallel NadicodeAI package API. Use the
|
|
7
7
|
registry item in the consuming app and adapt it there with app-owned data,
|
|
8
8
|
copy, and behavior.
|
|
@@ -17,10 +17,16 @@ npm install @nadicodeai/ui@<exact-version> react@^19 react-dom@^19 tailwindcss@^
|
|
|
17
17
|
dependency exactly. A React consumer does not declare that dependency directly
|
|
18
18
|
just to use UI components or the UI stylesheet.
|
|
19
19
|
|
|
20
|
+
The package installs its Agent UI implementation exactly. Consumers import
|
|
21
|
+
presentation, runtime primitives, providers, hooks, and types through
|
|
22
|
+
`@nadicodeai/ui/agents`; they do not install or import assistant-ui packages
|
|
23
|
+
directly. A protocol-specific runtime adapter remains a direct consumer
|
|
24
|
+
dependency because the application owns transport and message state.
|
|
25
|
+
|
|
20
26
|
Declare `@nadicodeai/design-system` directly only when the app intentionally
|
|
21
|
-
uses a separate public design-system API, such as a font/logo asset
|
|
22
|
-
CSS interface for a separate non-React surface
|
|
23
|
-
|
|
27
|
+
uses a separate public design-system API, such as a font/logo asset or the
|
|
28
|
+
static CSS interface for a separate non-React surface. Pin that direct
|
|
29
|
+
dependency to the version required by the installed
|
|
24
30
|
UI release:
|
|
25
31
|
|
|
26
32
|
```bash
|
|
@@ -36,7 +42,9 @@ import "@nadicodeai/ui/globals.css";
|
|
|
36
42
|
```
|
|
37
43
|
|
|
38
44
|
`@nadicodeai/ui/globals.css` is the complete React style interface. It composes
|
|
39
|
-
Tailwind v4, shadcn,
|
|
45
|
+
Tailwind v4, shadcn, the exact smooth-shadow plugin, and the complete
|
|
46
|
+
design-system CSS module. Consumers do not import `shadow-plugin`, restyle its
|
|
47
|
+
optical ring, or add a second border/ring to package-owned elevated roots.
|
|
40
48
|
Do not import `@nadicodeai/design-system/css`, generated theme files, or CSS
|
|
41
49
|
partials beside it. The package declares its own built component sources; Tailwind's
|
|
42
50
|
normal automatic detection covers the consumer application. The app still owns
|
package/docs/contract.md
CHANGED
|
@@ -9,20 +9,96 @@ The normative invariants for the `@nadicodeai/ui` package: what may live here, h
|
|
|
9
9
|
- **Components inherit one complete React style interface.** `@nadicodeai/ui/globals.css` composes every style dependency owned by this package, including the complete design-system CSS module. Components carry no theme of their own, and React callers do not compose design-system stylesheets or partials beside it. Installation and source-scanning setup live in the [consumer setup guide](consuming-cross-repo.md).
|
|
10
10
|
- **Design-system geometry remains the foundation.** React components compose the kept `nc-*` page grammar and display CSS components; they do not redefine frame math, marker placement, token values, or raw CSS geometry. Use parent-paints-plus-gap for bordered cell grids and keep every visible seam single-owner (doctrine home: `design-system/DESIGN.md` "## Layout").
|
|
11
11
|
|
|
12
|
+
### Material surfaces
|
|
13
|
+
|
|
14
|
+
`shadow-plugin@1.2.7` enters once through `@nadicodeai/ui/globals.css`. Its
|
|
15
|
+
integrated optical ring is part of every elevated shadow and remains at the
|
|
16
|
+
vendor default, including the 18% white dark-mode ring. Never pair a
|
|
17
|
+
`smooth-shadow-ring-*` root with `border-*`, a separate `ring-*`,
|
|
18
|
+
`smooth-ring-*`, or a local `--smooth-ring-color` override.
|
|
19
|
+
|
|
20
|
+
Physical role, not content importance, chooses depth:
|
|
21
|
+
|
|
22
|
+
- `Card surface="resting"` (the default) uses `smooth-shadow-ring-md`.
|
|
23
|
+
- `Card surface="raised"` uses `smooth-shadow-ring-lg`; active or selected
|
|
24
|
+
work chooses it explicitly.
|
|
25
|
+
- `Card surface="plain"` is the explicit structural/auth/website escape and
|
|
26
|
+
carries no elevation.
|
|
27
|
+
- Tooltip, menu, popover, select, combobox, navigation popup, hover card,
|
|
28
|
+
chart tooltip, and toast roots own `smooth-shadow-ring-xl` internally.
|
|
29
|
+
- Dialog, alert dialog, drawer, and sheet roots own
|
|
30
|
+
`smooth-shadow-ring-2xl` internally.
|
|
31
|
+
|
|
32
|
+
All solid surfaces use the one semantic fill. Dark mode therefore stays true
|
|
33
|
+
black; depth never comes from progressively greyer cards. Because the plugin
|
|
34
|
+
owns `box-shadow` with `!important`, focus on an elevated root uses the
|
|
35
|
+
canonical outline rather than another box-shadow ring.
|
|
36
|
+
|
|
37
|
+
`GlassControl` is the only shared glass material. It is control chrome,
|
|
38
|
+
using `shape="control"` for compact floating controls and `shape="bar"` for
|
|
39
|
+
full-width header chrome. Cards and modal primitives continue to own page
|
|
40
|
+
content, KPIs, tables, inspectors, and dialog bodies. Reduced transparency
|
|
41
|
+
falls back to the same solid floating surface.
|
|
42
|
+
|
|
43
|
+
`Empty` makes containment explicit with `scope="page" | "region" | "card"`.
|
|
44
|
+
Page and region states own one opaque dashed boundary. A Card-scoped Empty is
|
|
45
|
+
transparent and unframed because the Card already owns containment.
|
|
46
|
+
|
|
47
|
+
## Status Vocabulary
|
|
48
|
+
|
|
49
|
+
`Badge` is the product's only status carrier. It ships five semantic tone
|
|
50
|
+
variants — `gray`, `green`, `red`, `amber`, `blue` — each one soft/deep pair
|
|
51
|
+
from the generated tokens (`--nc-canvas-soft-2`/`--nc-body`,
|
|
52
|
+
`--nc-link-bg-soft`/`--nc-link-deep`, `--nc-error-soft`/`--nc-error-deep`,
|
|
53
|
+
`--nc-warning-soft`/`--nc-warning-deep`, `--nc-info-soft`/`--nc-info-deep`), so
|
|
54
|
+
a status clears AA in both modes without a call site painting anything. A status
|
|
55
|
+
badge carries a mark in the existing icon slot beside its word, because colour
|
|
56
|
+
must never be the only thing that says what the status is; the mark is
|
|
57
|
+
`aria-hidden`, and the word is the accessible status. The tones are variants,
|
|
58
|
+
not utilities, precisely so `nadicodeai/no-shadcn-appearance-override` and
|
|
59
|
+
`nadicodeai/no-raw-color-utility` can keep them here.
|
|
60
|
+
|
|
61
|
+
What this package does not own: which statuses exist, which tone and which mark
|
|
62
|
+
each value takes, and the words. Those are the consuming app's domain — the
|
|
63
|
+
Portal maps them in one kit module and nothing else picks a status colour. The
|
|
64
|
+
design-system side of the decision, and why the retired CSS status grammars are
|
|
65
|
+
gone, is [`design-system/DESIGN.md`, "## Status Vocabulary"](../../../design-system/DESIGN.md#status-vocabulary).
|
|
66
|
+
|
|
12
67
|
## Package Shape Invariants
|
|
13
68
|
|
|
14
69
|
- **Source-authored, built package.** Components are authored as shadcn-style source in `src/`, then emitted to `dist/` for consumption by other apps. Package exports must point at built JS, declarations, and CSS, never raw `src/*.tsx`, and `npm pack --dry-run` must include only intentional consumer artifacts.
|
|
15
|
-
- **Package surface is source-backed.**
|
|
16
|
-
- **
|
|
70
|
+
- **Package surface is source-backed.** Public components stay flat under `src/components/`. Reviewed registry source under `src/internal/` is implementation, not a package namespace. Do not add top-level exports for recipes, blocks, agent, terminal, or vendor groupings unless a later package API decision adds concrete public source, built files, docs, and tests in the same change.
|
|
71
|
+
- **Agents is the client-only conversation interface.** `@nadicodeai/ui/agents` re-exports the complete `@assistant-ui/react` runtime and primitive API plus the reviewed, branded registry composition held under `src/internal/assistant-ui/`. Its built entry retains `"use client"`. Consumers receive Thread, attachments, Markdown, reasoning, tools, suggestions, providers, runtimes, hooks, and types from that one domain namespace. Agent identity components use their direct component subpaths so server compositions do not import the conversation runtime. The vendor name is not a public NadicodeAI subpath, and the package does not rename, wrap, or rebuild assistant-ui behavior.
|
|
17
72
|
- **Base UI is the active primitive base.** `components.json` must resolve through a Base style, currently `base-nova`, and `npx shadcn@latest info --json` must report `base: "base"`. Do not reintroduce `radix-ui`, `@radix-ui/*`, or `vaul` to package source, dependencies, or app optimizer configuration. Registry-owned shadcn primitives stay aligned with current `shadcn@latest` Base UI output; use Base UI `render` composition instead of Radix `asChild`. `cmdk` is allowed only for the stock shadcn Command component while the current `base-nova` registry declares that dependency; do not use it elsewhere or replace it without a shadcn/compatibility decision and tests.
|
|
18
73
|
- **Named shadcn blocks stay named.** When a user, plan, or issue selects a shadcn block/example such as `login-02`, `signup-02`, `dashboard-01`, or `sidebar-*`, use that registry item as the source of truth through shadcn CLI/MCP. Do not replace it with a package-authored abstraction unless the plan explicitly records the substitution, the reason, and the true consumer route that proves it.
|
|
19
|
-
- **Public surface changes require a release decision.** Any change to exported components, `src/index.ts`,
|
|
74
|
+
- **Public surface changes require a release decision.** Any change to exported components, `src/index.ts`, package `exports`, `globals.css`, theme behavior, package docs, package skills, or design-system token/CSS/theme output consumed by this package must end with an explicit npm release decision before handoff: bump the relevant version(s) and run `npm pack --dry-run -w @nadicodeai/ui` per `../../../docs/internal/npm-publishing.md`, or include a `[no-publish]` commit marker with the reason in the commit body. The pre-push gate requires one of the two. When the UI change depends on modified `@nadicodeai/design-system` output, bump and publish `@nadicodeai/design-system` first, then update this package's dependency and publish UI. Never claim a UI package change is shipped until `npm view @nadicodeai/ui version` reports the intended version.
|
|
20
75
|
|
|
21
76
|
## Admission Rules
|
|
22
77
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
78
|
+
Assistant conversation and runtime APIs enter through `@nadicodeai/ui/agents`; Agent identity enters through `@nadicodeai/ui/components/agent-card` and `@nadicodeai/ui/components/agent-visual`. The consuming application still constructs the runtime and owns transport, persistence, permissions, tools, approvals, and failure policy. Shared non-Agent product components (a shell, a settings surface, a generic section, a diff, or a file preview) are admitted only with a named consuming surface landing in the same change. App-bespoke UI and behavior (window chrome, boot/install overlays, mascots, PTY/xterm embeds, queues, approvals, and persistence) stay in the consuming app; they never become package abstractions. A component left unconsumed after its target migration ships gets removed.
|
|
79
|
+
|
|
80
|
+
### Agent identity presentation
|
|
81
|
+
|
|
82
|
+
`AgentVisual` is the shared branded identity renderer. Its public degrees of
|
|
83
|
+
freedom are deliberately closed: one of `general`, `reasoning`,
|
|
84
|
+
`coordination`, `communication`, or `execution`, plus the structural
|
|
85
|
+
presentation `registry`, `card`, or `detail`. Consumers cannot supply colours,
|
|
86
|
+
shader code, speed, count, density, frame, or material. Registry and Card
|
|
87
|
+
presentations are deterministic posters. Detail may mount the Paper Metaballs
|
|
88
|
+
renderer only after WebGL2 and reduced-motion checks; SSR, reduced motion,
|
|
89
|
+
missing WebGL, initialization failure, and context loss retain the same poster.
|
|
90
|
+
The visual is decorative by default. A meaningful selectable image opts into
|
|
91
|
+
`decorative={false}` and supplies `label`.
|
|
92
|
+
|
|
93
|
+
`AgentCard` composes the fundamental `Card` with explicit `visual`, `name`,
|
|
94
|
+
`job`, `status`, `meta`, and `action` slots. It owns presentation only. The app
|
|
95
|
+
still owns Agent data, recipe assignment, status grammar, routing, actions, and
|
|
96
|
+
heading hierarchy; when the Card is the page identity, the `name` slot carries
|
|
97
|
+
that page's `h1`.
|
|
98
|
+
There is no `AgentGlyph`, `AgentRow`, `KpiCard`, or product-domain `agent`
|
|
99
|
+
object prop in the shared package.
|
|
100
|
+
|
|
101
|
+
- **Standard components, not app-owned product features.** This package ships primitives, standard UI components, assistant-ui compositions, brand adapters, React adapters, reusable sections, and presentational product components. It must not ship app-specific feature/use-case screens or names such as operator-login, portal activation, customer credential control, or customer management. Generic data tables, command palettes, and chart cards are app-owned shadcn registry adaptations. The source-backed `chart-*` package surface is the plan-approved exception per issue #166 and ADR 0010; chart cards remain app-owned. Every data-shaped chart exposes an equivalent non-visual data alternative. A component whose complete value is already available in visible text or `aria-valuetext` does not add a redundant table.
|
|
26
102
|
- **Auth routes are consumer-owned shadcn block work.** Login, signup, OTP, two-factor, magic-link, and provider-button flows start from the selected shadcn block/example in the consuming app, with app-owned Better Auth behavior. Do not ship generic auth, signup, OTP, federated-login, or provider abstractions from this package unless a later explicit boundary decision replaces the selected shadcn block.
|
|
27
103
|
- **Reusable sections and compositions live here after proof.** Bento grids, media mounts, demo surfaces, page frames, section intros, CTA bands, proof slots, benefits grids, generic shells, and homepage/use-case sections belong in `@nadicodeai/ui` when a second concrete consumer, a plan-approved shared component, or a named validation slice proves the package boundary. Website, portal, and sibling Nadia routes pass data and media children into existing compositions instead of rebuilding layout locally.
|
|
28
104
|
- **Brand renderers live here for React consumers.** Logo geometry, asset generation, and usage semantics are owned by [`design-system/DESIGN.md`, "Brand media authority"](../../../design-system/DESIGN.md#brand-media-authority). `BrandLockup` supplies the approved horizontal lockup. `BrandMark` serves tight spaces and `BrandWordmark` serves placements where the name must read by itself. All three render the package's public neutral geometry seam with React-scoped SVG ids, dynamic theme paint, and accessible names. Consuming routes use these adapters; they never import raw logo assets, draw brand SVG inline, mask or recolor assets, or create another lockup rule.
|
|
@@ -39,7 +115,7 @@ The source tree, barrels, and package exports own the current reusable section v
|
|
|
39
115
|
|
|
40
116
|
## Consumer Boundary
|
|
41
117
|
|
|
42
|
-
Consumers own routing, auth, app data, server actions, runtime adapters, permission decisions, analytics, and app-specific copy. The package owns
|
|
118
|
+
Consumers own routing, auth, app data, server actions, runtime construction and adapters, permission decisions, analytics, and app-specific copy. The package owns reusable React presentation and the public Agent UI dependency boundary. Agent state and behavior come through the Agents interface; non-React and TUI contracts belong to their consuming products.
|
|
43
119
|
|
|
44
120
|
App source composes layout, data, behavior, and semantic content around package components. It does not restyle an imported component root: appearance changes enter through the component's typed variant or are added to the owning package component. App `className` values on package components are limited to structural layout and sizing. App source uses semantic roles such as `bg-background` and `text-foreground`; raw Tailwind palette colors and canonical `nc-*` color utilities stay behind package-owned primitives such as `BrandField`. Visible controls come from `@nadicodeai/ui`, while hidden inputs remain valid form transport. The root ESLint rules `nadicodeai/no-shadcn-appearance-override`, `nadicodeai/no-raw-color-utility`, and `nadicodeai/no-native-visible-control` enforce this boundary.
|
|
45
121
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Migrating to `@nadicodeai/ui` 1.0.0
|
|
2
|
+
|
|
3
|
+
This release makes material hierarchy and Agent identity package-owned. It
|
|
4
|
+
also publishes the previously held status-vocabulary break.
|
|
5
|
+
|
|
6
|
+
## Status
|
|
7
|
+
|
|
8
|
+
`StatusTag` and `StateTag` are removed. Use `Badge` with one of its five
|
|
9
|
+
semantic tones. The consuming app owns the status word, icon, and tone mapping.
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
import { Badge } from "@nadicodeai/ui/components/badge";
|
|
13
|
+
|
|
14
|
+
<Badge variant="green">Ready</Badge>;
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The retired `.nc-status-tag`, `.nc-state-tag`, and `.nc-state-row` CSS classes
|
|
18
|
+
have no replacement CSS API.
|
|
19
|
+
|
|
20
|
+
## Material and Card
|
|
21
|
+
|
|
22
|
+
Import `@nadicodeai/ui/globals.css` once. It now composes
|
|
23
|
+
`shadow-plugin@1.2.7`; consumers do not install its classes or override its
|
|
24
|
+
ring.
|
|
25
|
+
|
|
26
|
+
`Card` defaults to `surface="resting"`. Use `surface="raised"` only for work
|
|
27
|
+
that is physically raised or selected, and `surface="plain"` for the explicit
|
|
28
|
+
structural/auth/website escape. `variant` continues to describe interaction.
|
|
29
|
+
Replace the removed `variant="borderless"` with `surface="plain"`.
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
<Card>Resting content</Card>
|
|
33
|
+
<Card surface="raised">Selected work</Card>
|
|
34
|
+
<Card surface="plain">Structural content</Card>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Overlay primitives now own floating or modal elevation internally. Remove
|
|
38
|
+
caller `border-*`, `ring-*`, `shadow-*`, and `smooth-shadow-*` appearance
|
|
39
|
+
classes from their content roots.
|
|
40
|
+
|
|
41
|
+
## Empty and glass control
|
|
42
|
+
|
|
43
|
+
Set Empty containment explicitly when nesting matters:
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
<Empty scope="region">No agents</Empty>
|
|
47
|
+
<Card><Empty scope="card">No runs</Empty></Card>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Use `GlassControl shape="control"` for compact controls and `shape="bar"` for
|
|
51
|
+
full-width header chrome. Both float over legible content. Cards and modal
|
|
52
|
+
primitives continue to contain page content and dialog bodies.
|
|
53
|
+
|
|
54
|
+
## Agent identity
|
|
55
|
+
|
|
56
|
+
Agent identity is available from direct component subpaths. The
|
|
57
|
+
`@nadicodeai/ui/agents` entry remains the client-only assistant conversation
|
|
58
|
+
and runtime interface.
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
import { AgentCard } from "@nadicodeai/ui/components/agent-card";
|
|
62
|
+
import { AgentVisual } from "@nadicodeai/ui/components/agent-visual";
|
|
63
|
+
|
|
64
|
+
<AgentCard
|
|
65
|
+
name={agent.name}
|
|
66
|
+
job={agent.job}
|
|
67
|
+
status={<Badge variant="blue">Running</Badge>}
|
|
68
|
+
visual={<AgentVisual recipe={agent.recipe} presentation="card" />}
|
|
69
|
+
/>;
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Recipe assignment is app-owned and explicit. Do not infer it from a free-form
|
|
73
|
+
role, hash an identifier, or randomize it. `AgentVisual` accepts only the five
|
|
74
|
+
closed recipes and three presentations; raw shader controls are intentionally
|
|
75
|
+
not public. `AgentGlyph` and `AgentRow` do not exist in the 1.0.0 API.
|
|
@@ -10,7 +10,6 @@ Current invariants:
|
|
|
10
10
|
- `@nadicodeai/ui/package.json` must not depend on `radix-ui`, `@radix-ui/react-use-controllable-state`, or `vaul`.
|
|
11
11
|
- Website and portal Next config must optimize `@base-ui/react`, not `radix-ui`.
|
|
12
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
|
-
- AI Elements use the package-local `useControllableState` helper instead of Radix's hook.
|
|
14
13
|
|
|
15
14
|
## Migration Catalog
|
|
16
15
|
|
|
@@ -26,16 +25,6 @@ Removed non-shadcn Radix carriers:
|
|
|
26
25
|
|
|
27
26
|
- `command` stays backed by shadcn's stock `cmdk` implementation while the `base-nova` registry declares that dependency.
|
|
28
27
|
- `drawer` replaces `vaul` with Base UI Drawer.
|
|
29
|
-
- AI Elements replace `@radix-ui/react-use-controllable-state` with `src/hooks/use-controllable-state.ts`.
|
|
30
|
-
|
|
31
|
-
AI Elements using the local controlled/uncontrolled helper:
|
|
32
|
-
|
|
33
|
-
- `chain-of-thought`
|
|
34
|
-
- `mic-selector`
|
|
35
|
-
- `reasoning`
|
|
36
|
-
- `stack-trace`
|
|
37
|
-
- `transcription`
|
|
38
|
-
- `voice-selector`
|
|
39
28
|
|
|
40
29
|
## Breaking in 0.5.0
|
|
41
30
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
U4 adds the first shared product compositions for NadicodeAI admin, settings, and agent-work surfaces. These components are presentational only: consumers own routing, persistence, server actions, mutations, analytics, auth providers, permissions, and product-specific page copy.
|
|
4
4
|
|
|
5
|
-
When first-party shadcn or
|
|
5
|
+
When first-party shadcn or assistant-ui registry source already covers the same
|
|
6
6
|
generic product UI, use that registry item in the consuming app instead of
|
|
7
7
|
adding a parallel NadicodeAI package API. Data tables, command palettes, and
|
|
8
8
|
chart cards follow this rule: use `@shadcn/data-table-demo`,
|
package/llms.txt
CHANGED
|
@@ -12,11 +12,13 @@ Use this file as a map; read the owning document before changing behavior.
|
|
|
12
12
|
- Current component modules: `src/components/**/*.tsx` in the repository.
|
|
13
13
|
- Current published subpaths: `package.json` `exports` plus the generated
|
|
14
14
|
`dist/components/**/*.d.ts` declarations in an installed package.
|
|
15
|
-
- Agent
|
|
15
|
+
- Public Agent UI interface: `src/agents.ts`, exported as `@nadicodeai/ui/agents`.
|
|
16
|
+
- Material, Card, Empty, glass-control, AgentVisual, and AgentCard semantics:
|
|
17
|
+
`docs/contract.md`; 1.0 adoption steps: `docs/migration/1.0.0.md`.
|
|
18
|
+
- Maintained conversation implementation: `src/internal/assistant-ui/`.
|
|
16
19
|
- Product compositions and sections: `docs/product-compositions.md` and
|
|
17
20
|
`docs/product-sections.md`.
|
|
18
|
-
-
|
|
19
|
-
- Maintenance workflow and live shadcn or AI Elements discovery:
|
|
21
|
+
- Maintenance workflow and live shadcn or assistant-ui discovery:
|
|
20
22
|
`docs/agents/nadicodeai-ui.md`.
|
|
21
23
|
|
|
22
24
|
The component inventory is source-backed and is not repeated in prose. Use the
|
|
@@ -29,14 +31,13 @@ Prefer explicit component subpaths:
|
|
|
29
31
|
|
|
30
32
|
```tsx
|
|
31
33
|
import { Button } from "@nadicodeai/ui/components/button";
|
|
32
|
-
import {
|
|
34
|
+
import { AssistantRuntimeProvider, Thread } from "@nadicodeai/ui/agents";
|
|
33
35
|
```
|
|
34
36
|
|
|
35
|
-
Use the root
|
|
37
|
+
Use the root barrel when it is more useful:
|
|
36
38
|
|
|
37
39
|
```tsx
|
|
38
40
|
import { Button } from "@nadicodeai/ui";
|
|
39
|
-
import { Message, PromptInput } from "@nadicodeai/ui/ai-elements";
|
|
40
41
|
```
|
|
41
42
|
|
|
42
43
|
Read the generated declaration for the current export names and props. Do not
|