@nadicodeai/ui 0.1.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 +114 -0
- package/README.md +211 -0
- package/dist/ai-elements.d.ts +49 -0
- package/dist/ai-elements.d.ts.map +1 -0
- package/dist/ai-elements.js +48 -0
- package/dist/components/accordion.d.ts +8 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +18 -0
- package/dist/components/action-band.d.ts +10 -0
- package/dist/components/action-band.d.ts.map +1 -0
- package/dist/components/action-band.js +33 -0
- package/dist/components/agent-chat.d.ts +20 -0
- package/dist/components/agent-chat.d.ts.map +1 -0
- package/dist/components/agent-chat.js +10 -0
- package/dist/components/agent-composer.d.ts +56 -0
- package/dist/components/agent-composer.d.ts.map +1 -0
- package/dist/components/agent-composer.js +60 -0
- package/dist/components/agent-message.d.ts +116 -0
- package/dist/components/agent-message.d.ts.map +1 -0
- package/dist/components/agent-message.js +110 -0
- package/dist/components/agent-thread.d.ts +26 -0
- package/dist/components/agent-thread.d.ts.map +1 -0
- package/dist/components/agent-thread.js +72 -0
- package/dist/components/agent-tool-approval.d.ts +32 -0
- package/dist/components/agent-tool-approval.d.ts.map +1 -0
- package/dist/components/agent-tool-approval.js +61 -0
- package/dist/components/ai-elements/agent.d.ts +27 -0
- package/dist/components/ai-elements/agent.d.ts.map +1 -0
- package/dist/components/ai-elements/agent.js +27 -0
- package/dist/components/ai-elements/artifact.d.ts +24 -0
- package/dist/components/ai-elements/artifact.d.ts.map +1 -0
- package/dist/components/ai-elements/artifact.js +20 -0
- package/dist/components/ai-elements/attachments.d.ts +55 -0
- package/dist/components/ai-elements/attachments.d.ts.map +1 -0
- package/dist/components/ai-elements/attachments.js +125 -0
- package/dist/components/ai-elements/audio-player.d.ts +30 -0
- package/dist/components/ai-elements/audio-player.d.ts.map +1 -0
- package/dist/components/ai-elements/audio-player.js +43 -0
- package/dist/components/ai-elements/canvas.d.ts +8 -0
- package/dist/components/ai-elements/canvas.d.ts.map +1 -0
- package/dist/components/ai-elements/canvas.js +5 -0
- package/dist/components/ai-elements/chain-of-thought.d.ts +30 -0
- package/dist/components/ai-elements/chain-of-thought.d.ts.map +1 -0
- package/dist/components/ai-elements/chain-of-thought.js +49 -0
- package/dist/components/ai-elements/checkpoint.d.ts +12 -0
- package/dist/components/ai-elements/checkpoint.d.ts.map +1 -0
- package/dist/components/ai-elements/checkpoint.js +10 -0
- package/dist/components/ai-elements/code-block.d.ts +46 -0
- package/dist/components/ai-elements/code-block.d.ts.map +1 -0
- package/dist/components/ai-elements/code-block.js +207 -0
- package/dist/components/ai-elements/commit.d.ts +65 -0
- package/dist/components/ai-elements/commit.d.ts.map +1 -0
- package/dist/components/ai-elements/commit.js +95 -0
- package/dist/components/ai-elements/confirmation.d.ts +50 -0
- package/dist/components/ai-elements/confirmation.d.ts.map +1 -0
- package/dist/components/ai-elements/confirmation.js +61 -0
- package/dist/components/ai-elements/connection.d.ts +6 -0
- package/dist/components/ai-elements/connection.d.ts.map +1 -0
- package/dist/components/ai-elements/connection.js +10 -0
- package/dist/components/ai-elements/context.d.ts +33 -0
- package/dist/components/ai-elements/context.d.ts.map +1 -0
- package/dist/components/ai-elements/context.js +164 -0
- package/dist/components/ai-elements/controls.d.ts +5 -0
- package/dist/components/ai-elements/controls.d.ts.map +1 -0
- package/dist/components/ai-elements/controls.js +5 -0
- package/dist/components/ai-elements/conversation.d.ts +24 -0
- package/dist/components/ai-elements/conversation.d.ts.map +1 -0
- package/dist/components/ai-elements/conversation.js +41 -0
- package/dist/components/ai-elements/edge.d.ts +6 -0
- package/dist/components/ai-elements/edge.d.ts.map +1 -0
- package/dist/components/ai-elements/edge.js +88 -0
- package/dist/components/ai-elements/environment-variables.d.ts +39 -0
- package/dist/components/ai-elements/environment-variables.d.ts.map +1 -0
- package/dist/components/ai-elements/environment-variables.js +87 -0
- package/dist/components/ai-elements/file-tree.d.ts +27 -0
- package/dist/components/ai-elements/file-tree.d.ts.map +1 -0
- package/dist/components/ai-elements/file-tree.js +71 -0
- package/dist/components/ai-elements/image.d.ts +7 -0
- package/dist/components/ai-elements/image.d.ts.map +1 -0
- package/dist/components/ai-elements/image.js +3 -0
- package/dist/components/ai-elements/inline-citation.d.ts +39 -0
- package/dist/components/ai-elements/inline-citation.d.ts.map +1 -0
- package/dist/components/ai-elements/inline-citation.js +86 -0
- package/dist/components/ai-elements/jsx-preview.d.ts +30 -0
- package/dist/components/ai-elements/jsx-preview.d.ts.map +1 -0
- package/dist/components/ai-elements/jsx-preview.js +168 -0
- package/dist/components/ai-elements/message.d.ts +38 -0
- package/dist/components/ai-elements/message.d.ts.map +1 -0
- package/dist/components/ai-elements/message.js +92 -0
- package/dist/components/ai-elements/mic-selector.d.ts +46 -0
- package/dist/components/ai-elements/mic-selector.d.ts.map +1 -0
- package/dist/components/ai-elements/mic-selector.js +184 -0
- package/dist/components/ai-elements/model-selector.d.ts +36 -0
- package/dist/components/ai-elements/model-selector.d.ts.map +1 -0
- package/dist/components/ai-elements/model-selector.js +18 -0
- package/dist/components/ai-elements/node.d.ts +22 -0
- package/dist/components/ai-elements/node.d.ts.map +1 -0
- package/dist/components/ai-elements/node.js +12 -0
- package/dist/components/ai-elements/open-in-chat.d.ts +29 -0
- package/dist/components/ai-elements/open-in-chat.d.ts.map +1 -0
- package/dist/components/ai-elements/open-in-chat.js +100 -0
- package/dist/components/ai-elements/package-info.d.ts +30 -0
- package/dist/components/ai-elements/package-info.d.ts.map +1 -0
- package/dist/components/ai-elements/package-info.js +50 -0
- package/dist/components/ai-elements/panel.d.ts +6 -0
- package/dist/components/ai-elements/panel.d.ts.map +1 -0
- package/dist/components/ai-elements/panel.js +5 -0
- package/dist/components/ai-elements/persona.d.ts +49 -0
- package/dist/components/ai-elements/persona.d.ts.map +1 -0
- package/dist/components/ai-elements/persona.js +176 -0
- package/dist/components/ai-elements/plan.d.ts +26 -0
- package/dist/components/ai-elements/plan.d.ts.map +1 -0
- package/dist/components/ai-elements/plan.js +34 -0
- package/dist/components/ai-elements/prompt-input.d.ts +149 -0
- package/dist/components/ai-elements/prompt-input.d.ts.map +1 -0
- package/dist/components/ai-elements/prompt-input.js +715 -0
- package/dist/components/ai-elements/queue.d.ts +62 -0
- package/dist/components/ai-elements/queue.d.ts.map +1 -0
- package/dist/components/ai-elements/queue.js +28 -0
- package/dist/components/ai-elements/reasoning.d.ts +27 -0
- package/dist/components/ai-elements/reasoning.d.ts.map +1 -0
- package/dist/components/ai-elements/reasoning.js +95 -0
- package/dist/components/ai-elements/sandbox.d.ts +25 -0
- package/dist/components/ai-elements/sandbox.d.ts.map +1 -0
- package/dist/components/ai-elements/sandbox.js +15 -0
- package/dist/components/ai-elements/schema-display.d.ts +56 -0
- package/dist/components/ai-elements/schema-display.d.ts.map +1 -0
- package/dist/components/ai-elements/schema-display.js +90 -0
- package/dist/components/ai-elements/shimmer.d.ts +10 -0
- package/dist/components/ai-elements/shimmer.d.ts.map +1 -0
- package/dist/components/ai-elements/shimmer.js +28 -0
- package/dist/components/ai-elements/snippet.d.ts +19 -0
- package/dist/components/ai-elements/snippet.d.ts.map +1 -0
- package/dist/components/ai-elements/snippet.js +46 -0
- package/dist/components/ai-elements/sources.d.ts +13 -0
- package/dist/components/ai-elements/sources.d.ts.map +1 -0
- package/dist/components/ai-elements/sources.js +9 -0
- package/dist/components/ai-elements/speech-input.d.ts +55 -0
- package/dist/components/ai-elements/speech-input.d.ts.map +1 -0
- package/dist/components/ai-elements/speech-input.js +187 -0
- package/dist/components/ai-elements/stack-trace.d.ts +38 -0
- package/dist/components/ai-elements/stack-trace.d.ts.map +1 -0
- package/dist/components/ai-elements/stack-trace.js +194 -0
- package/dist/components/ai-elements/suggestion.d.ts +11 -0
- package/dist/components/ai-elements/suggestion.d.ts.map +1 -0
- package/dist/components/ai-elements/suggestion.js +13 -0
- package/dist/components/ai-elements/task.d.ts +15 -0
- package/dist/components/ai-elements/task.d.ts.map +1 -0
- package/dist/components/ai-elements/task.js +10 -0
- package/dist/components/ai-elements/terminal.d.ts +28 -0
- package/dist/components/ai-elements/terminal.d.ts.map +1 -0
- package/dist/components/ai-elements/terminal.js +68 -0
- package/dist/components/ai-elements/test-results.d.ts +59 -0
- package/dist/components/ai-elements/test-results.d.ts.map +1 -0
- package/dist/components/ai-elements/test-results.js +98 -0
- package/dist/components/ai-elements/tool.d.ts +32 -0
- package/dist/components/ai-elements/tool.d.ts.map +1 -0
- package/dist/components/ai-elements/tool.js +49 -0
- package/dist/components/ai-elements/toolbar.d.ts +6 -0
- package/dist/components/ai-elements/toolbar.d.ts.map +1 -0
- package/dist/components/ai-elements/toolbar.js +5 -0
- package/dist/components/ai-elements/transcription.d.ts +17 -0
- package/dist/components/ai-elements/transcription.d.ts.map +1 -0
- package/dist/components/ai-elements/transcription.js +36 -0
- package/dist/components/ai-elements/voice-selector.d.ts +64 -0
- package/dist/components/ai-elements/voice-selector.d.ts.map +1 -0
- package/dist/components/ai-elements/voice-selector.js +224 -0
- package/dist/components/ai-elements/web-preview.d.ts +35 -0
- package/dist/components/ai-elements/web-preview.d.ts.map +1 -0
- package/dist/components/ai-elements/web-preview.js +66 -0
- package/dist/components/alert-dialog.d.ts +19 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +42 -0
- package/dist/components/alert.d.ts +10 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +24 -0
- package/dist/components/artifact-panel.d.ts +131 -0
- package/dist/components/artifact-panel.d.ts.map +1 -0
- package/dist/components/artifact-panel.js +189 -0
- package/dist/components/aspect-ratio.d.ts +4 -0
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/aspect-ratio.js +7 -0
- package/dist/components/automation-section.d.ts +76 -0
- package/dist/components/automation-section.d.ts.map +1 -0
- package/dist/components/automation-section.js +80 -0
- package/dist/components/avatar.d.ts +12 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +23 -0
- package/dist/components/badge.d.ts +10 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +25 -0
- package/dist/components/benefits-bento.d.ts +15 -0
- package/dist/components/benefits-bento.d.ts.map +1 -0
- package/dist/components/benefits-bento.js +6 -0
- package/dist/components/bento.d.ts +28 -0
- package/dist/components/bento.d.ts.map +1 -0
- package/dist/components/bento.js +48 -0
- package/dist/components/brand.d.ts +9 -0
- package/dist/components/brand.d.ts.map +1 -0
- package/dist/components/brand.js +16 -0
- package/dist/components/breadcrumb.d.ts +12 -0
- package/dist/components/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb.js +28 -0
- package/dist/components/button-group.d.ts +12 -0
- package/dist/components/button-group.d.ts.map +1 -0
- package/dist/components/button-group.js +28 -0
- package/dist/components/button.d.ts +11 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +36 -0
- package/dist/components/calendar.d.ts +9 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +76 -0
- package/dist/components/card-marketing.d.ts +30 -0
- package/dist/components/card-marketing.d.ts.map +1 -0
- package/dist/components/card-marketing.js +48 -0
- package/dist/components/card.d.ts +10 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +24 -0
- package/dist/components/carousel.d.ts +20 -0
- package/dist/components/carousel.d.ts.map +1 -0
- package/dist/components/carousel.js +91 -0
- package/dist/components/chart.d.ts +44 -0
- package/dist/components/chart.d.ts.map +1 -0
- package/dist/components/chart.js +132 -0
- package/dist/components/checkbox.d.ts +5 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +9 -0
- package/dist/components/code-editor-mockup.d.ts +25 -0
- package/dist/components/code-editor-mockup.d.ts.map +1 -0
- package/dist/components/code-editor-mockup.js +47 -0
- package/dist/components/collapsible.d.ts +6 -0
- package/dist/components/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible.js +13 -0
- package/dist/components/combobox.d.ts +25 -0
- package/dist/components/combobox.d.ts.map +1 -0
- package/dist/components/combobox.js +58 -0
- package/dist/components/command.d.ts +19 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +34 -0
- package/dist/components/contact.d.ts +20 -0
- package/dist/components/contact.d.ts.map +1 -0
- package/dist/components/contact.js +24 -0
- package/dist/components/context-menu.d.ts +26 -0
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu.js +51 -0
- package/dist/components/dashboard-shell.d.ts +24 -0
- package/dist/components/dashboard-shell.d.ts.map +1 -0
- package/dist/components/dashboard-shell.js +8 -0
- package/dist/components/demo-surface.d.ts +26 -0
- package/dist/components/demo-surface.d.ts.map +1 -0
- package/dist/components/demo-surface.js +14 -0
- package/dist/components/desktop-shell.d.ts +28 -0
- package/dist/components/desktop-shell.d.ts.map +1 -0
- package/dist/components/desktop-shell.js +8 -0
- package/dist/components/dialog.d.ts +18 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +37 -0
- package/dist/components/direction.d.ts +8 -0
- package/dist/components/direction.d.ts.map +1 -0
- package/dist/components/direction.js +8 -0
- package/dist/components/drawer.d.ts +14 -0
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +34 -0
- package/dist/components/dropdown-menu.d.ts +26 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +51 -0
- package/dist/components/empty.d.ts +12 -0
- package/dist/components/empty.d.ts.map +1 -0
- package/dist/components/empty.js +33 -0
- package/dist/components/fact-cell.d.ts +21 -0
- package/dist/components/fact-cell.d.ts.map +1 -0
- package/dist/components/fact-cell.js +29 -0
- package/dist/components/faq-item.d.ts +25 -0
- package/dist/components/faq-item.d.ts.map +1 -0
- package/dist/components/faq-item.js +25 -0
- package/dist/components/faq.d.ts +16 -0
- package/dist/components/faq.d.ts.map +1 -0
- package/dist/components/faq.js +18 -0
- package/dist/components/feedback-state.d.ts +14 -0
- package/dist/components/feedback-state.d.ts.map +1 -0
- package/dist/components/feedback-state.js +70 -0
- package/dist/components/field.d.ts +25 -0
- package/dist/components/field.d.ts.map +1 -0
- package/dist/components/field.js +76 -0
- package/dist/components/files-preview.d.ts +36 -0
- package/dist/components/files-preview.d.ts.map +1 -0
- package/dist/components/files-preview.js +96 -0
- package/dist/components/footer.d.ts +32 -0
- package/dist/components/footer.d.ts.map +1 -0
- package/dist/components/footer.js +53 -0
- package/dist/components/form.d.ts +25 -0
- package/dist/components/form.d.ts.map +1 -0
- package/dist/components/form.js +59 -0
- package/dist/components/hero-split.d.ts +23 -0
- package/dist/components/hero-split.d.ts.map +1 -0
- package/dist/components/hero-split.js +34 -0
- package/dist/components/hover-card.d.ts +7 -0
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +14 -0
- package/dist/components/input-group.d.ts +17 -0
- package/dist/components/input-group.d.ts.map +1 -0
- package/dist/components/input-group.js +63 -0
- package/dist/components/input-otp.d.ts +12 -0
- package/dist/components/input-otp.d.ts.map +1 -0
- package/dist/components/input-otp.js +21 -0
- package/dist/components/input.d.ts +4 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +6 -0
- package/dist/components/installer-shell.d.ts +25 -0
- package/dist/components/installer-shell.d.ts.map +1 -0
- package/dist/components/installer-shell.js +36 -0
- package/dist/components/item.d.ts +24 -0
- package/dist/components/item.d.ts.map +1 -0
- package/dist/components/item.js +67 -0
- package/dist/components/kbd.d.ts +4 -0
- package/dist/components/kbd.d.ts.map +1 -0
- package/dist/components/kbd.js +9 -0
- package/dist/components/label.d.ts +5 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +8 -0
- package/dist/components/logo-band.d.ts +23 -0
- package/dist/components/logo-band.d.ts.map +1 -0
- package/dist/components/logo-band.js +35 -0
- package/dist/components/logo-tile.d.ts +21 -0
- package/dist/components/logo-tile.d.ts.map +1 -0
- package/dist/components/logo-tile.js +27 -0
- package/dist/components/media-mount.d.ts +13 -0
- package/dist/components/media-mount.d.ts.map +1 -0
- package/dist/components/media-mount.js +17 -0
- package/dist/components/menubar.d.ts +27 -0
- package/dist/components/menubar.d.ts.map +1 -0
- package/dist/components/menubar.js +54 -0
- package/dist/components/native-select.d.ts +8 -0
- package/dist/components/native-select.d.ts.map +1 -0
- package/dist/components/native-select.js +13 -0
- package/dist/components/nav-bar.d.ts +20 -0
- package/dist/components/nav-bar.d.ts.map +1 -0
- package/dist/components/nav-bar.js +30 -0
- package/dist/components/navigation-menu.d.ts +15 -0
- package/dist/components/navigation-menu.d.ts.map +1 -0
- package/dist/components/navigation-menu.js +32 -0
- package/dist/components/newsletter.d.ts +24 -0
- package/dist/components/newsletter.d.ts.map +1 -0
- package/dist/components/newsletter.js +31 -0
- package/dist/components/page-frame.d.ts +30 -0
- package/dist/components/page-frame.d.ts.map +1 -0
- package/dist/components/page-frame.js +30 -0
- package/dist/components/pagination.d.ts +14 -0
- package/dist/components/pagination.d.ts.map +1 -0
- package/dist/components/pagination.js +29 -0
- package/dist/components/plugin-slot-boundary.d.ts +27 -0
- package/dist/components/plugin-slot-boundary.d.ts.map +1 -0
- package/dist/components/plugin-slot-boundary.js +24 -0
- package/dist/components/popover.d.ts +11 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +26 -0
- package/dist/components/pricing-card.d.ts +35 -0
- package/dist/components/pricing-card.d.ts.map +1 -0
- package/dist/components/pricing-card.js +55 -0
- package/dist/components/pricing.d.ts +28 -0
- package/dist/components/pricing.d.ts.map +1 -0
- package/dist/components/pricing.js +22 -0
- package/dist/components/progress.d.ts +5 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +8 -0
- package/dist/components/proof-slot.d.ts +8 -0
- package/dist/components/proof-slot.d.ts.map +1 -0
- package/dist/components/proof-slot.js +8 -0
- package/dist/components/quote-card.d.ts +23 -0
- package/dist/components/quote-card.d.ts.map +1 -0
- package/dist/components/quote-card.js +36 -0
- package/dist/components/radio-group.d.ts +6 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +12 -0
- package/dist/components/resizable.d.ts +8 -0
- package/dist/components/resizable.d.ts.map +1 -0
- package/dist/components/resizable.js +14 -0
- package/dist/components/scroll-area.d.ts +6 -0
- package/dist/components/scroll-area.d.ts.map +1 -0
- package/dist/components/scroll-area.js +13 -0
- package/dist/components/section-intro.d.ts +18 -0
- package/dist/components/section-intro.d.ts.map +1 -0
- package/dist/components/section-intro.js +22 -0
- package/dist/components/select.d.ts +16 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +38 -0
- package/dist/components/separator.d.ts +5 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +8 -0
- package/dist/components/settings-section.d.ts +31 -0
- package/dist/components/settings-section.d.ts.map +1 -0
- package/dist/components/settings-section.js +37 -0
- package/dist/components/sheet.d.ts +15 -0
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +40 -0
- package/dist/components/shift-band.d.ts +14 -0
- package/dist/components/shift-band.d.ts.map +1 -0
- package/dist/components/shift-band.js +10 -0
- package/dist/components/sidebar.d.ts +70 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar.js +212 -0
- package/dist/components/skeleton.d.ts +3 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +6 -0
- package/dist/components/slider.d.ts +5 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +14 -0
- package/dist/components/sonner.d.ts +4 -0
- package/dist/components/sonner.d.ts.map +1 -0
- package/dist/components/sonner.js +19 -0
- package/dist/components/spinner.d.ts +3 -0
- package/dist/components/spinner.d.ts.map +1 -0
- package/dist/components/spinner.js +7 -0
- package/dist/components/stat-block.d.ts +20 -0
- package/dist/components/stat-block.d.ts.map +1 -0
- package/dist/components/stat-block.js +20 -0
- package/dist/components/stats-band.d.ts +18 -0
- package/dist/components/stats-band.d.ts.map +1 -0
- package/dist/components/stats-band.js +28 -0
- package/dist/components/switch.d.ts +7 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +8 -0
- package/dist/components/table.d.ts +11 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +28 -0
- package/dist/components/tabs.d.ts +12 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +29 -0
- package/dist/components/testimonials.d.ts +21 -0
- package/dist/components/testimonials.d.ts.map +1 -0
- package/dist/components/testimonials.js +28 -0
- package/dist/components/textarea.d.ts +4 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +6 -0
- package/dist/components/toggle-group.d.ts +10 -0
- package/dist/components/toggle-group.d.ts.map +1 -0
- package/dist/components/toggle-group.js +22 -0
- package/dist/components/toggle.d.ts +10 -0
- package/dist/components/toggle.d.ts.map +1 -0
- package/dist/components/toggle.js +26 -0
- package/dist/components/tooltip.d.ts +8 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +17 -0
- package/dist/components/use-case-bento.d.ts +13 -0
- package/dist/components/use-case-bento.d.ts.map +1 -0
- package/dist/components/use-case-bento.js +9 -0
- package/dist/components/watch-it-work-band.d.ts +11 -0
- package/dist/components/watch-it-work-band.d.ts.map +1 -0
- package/dist/components/watch-it-work-band.js +8 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +16 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +100 -0
- package/dist/lib/agent-attachment.d.ts +11 -0
- package/dist/lib/agent-attachment.d.ts.map +1 -0
- package/dist/lib/agent-attachment.js +19 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +5 -0
- package/dist/styles/globals.css +362 -0
- package/docs/agent-work-surfaces.md +98 -0
- package/docs/agents/nadicodeai-ui.md +229 -0
- package/docs/component-classification.md +44 -0
- package/docs/migration/nadia-consumer-readiness.md +85 -0
- package/docs/product-compositions.md +77 -0
- package/docs/product-sections.md +200 -0
- package/docs/terminal-tui-semantics.md +211 -0
- package/llms.txt +75 -0
- package/package.json +95 -0
- package/skills/nadicodeai-ui/SKILL.md +80 -0
package/AGENTS.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# @nadicodeai/ui - Agent Rules
|
|
2
|
+
|
|
3
|
+
The `@nadicodeai/ui` npm workspace: the shared NadicodeAI React UI package on brand tokens (Tailwind v4, semantic light/dark roles), per ADR 0007. It ships shadcn primitives, AI Elements, React adapters over the design-system grammar, reusable marketing/section compositions, and plan-approved product components once their source/export/tests/docs exist. It is source-authored in `src/` and published from built `dist` JavaScript, declarations, and CSS. Read this file before working in the component library. For website page assembly, also read **`../website/AGENTS.md`**; for portal screens, read **`../portal/AGENTS.md`**.
|
|
4
|
+
|
|
5
|
+
When this file is read from an installed package, use it as the consumer agent
|
|
6
|
+
contract: import `@nadicodeai/ui/globals.css` and
|
|
7
|
+
`@nadicodeai/design-system/css` once at the app root, import components from
|
|
8
|
+
`@nadicodeai/ui/components/*` or `@nadicodeai/ui/ai-elements`, and keep all
|
|
9
|
+
new UI token-only. Dark mode is a `.dark` selector remap of semantic roles and
|
|
10
|
+
UI-local product aliases in `globals.css`; components must not add `dark:` utilities,
|
|
11
|
+
OS dark-mode branching, or raw palette values. The package also ships `llms.txt`,
|
|
12
|
+
`docs/agents/nadicodeai-ui.md`, `docs/migration/`, and
|
|
13
|
+
`skills/nadicodeai-ui/SKILL.md` for agents that index package documentation or
|
|
14
|
+
skills.
|
|
15
|
+
|
|
16
|
+
## Invariants
|
|
17
|
+
|
|
18
|
+
- **Token-only, no raw literals.** Components style through brand tokens only — the `nadicode.theme.css` role vars bridged into Tailwind utilities (`bg-background`, `text-foreground`, `border-input`, …) plus UI-local product aliases defined in `globals.css` such as `--nc-app-surface`, `--nc-chat-tool-surface`, and `--nc-terminal-bg`. No raw `#hex` / `rgb()` / `hsl()` in any `.tsx`; a new source value goes to `design-system/DESIGN.md` first and flows through generated tokens. Enforced by `tests/no-raw-literal.test.ts` and `tests/token-reference-integrity.test.ts`.
|
|
19
|
+
- **Dark-ready roles, no component `dark:` styling.** `globals.css` owns the `:root` and `.dark` remaps for shadcn roles and UI-local product aliases. Components consume semantic utilities or product aliases such as `var(--nc-app-surface)`; they must not ship `dark:` Tailwind utilities, OS dark-mode branching, or raw dark palette utilities such as `dark:bg-slate-950` / `dark:text-white`. Enforced by `tests/no-dark.test.ts` and `tests/dark-semantic-roles.test.ts`.
|
|
20
|
+
- **Components inherit the brand theme.** Consumers import `@nadicodeai/ui/globals.css` (Tailwind + the generated brand `@theme` + semantic role/alias maps) and `@nadicodeai/design-system/css` (kept `nc-*` geometry, type scale, chat CSS components, motion, and display components). Components carry no theme of their own — they resolve every color/radius from bridged brand tokens, UI-local aliases, and design-system CSS.
|
|
21
|
+
- **Source-authored, built package.** Components are authored as shadcn-style source in this workspace, then emitted to `dist/` for consumption by other apps. Package exports must point at built JS/declarations/CSS, not raw `src/*.tsx`, and `npm pack --dry-run` must include only intentional consumer artifacts.
|
|
22
|
+
- **shadcn and AI Elements are package surface.** The installed shadcn source components under `src/components/` and all 48 Vercel AI Elements under `src/components/ai-elements/` are intentional ready-to-use exports. Keep `src/index.ts`, `src/ai-elements.ts`, package `exports`, README/agent docs, and `website/app/ui-check/elements` synchronized whenever this surface changes.
|
|
23
|
+
- **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.
|
|
24
|
+
- **Package surface is source-backed.** `src/components/` is intentionally flat shadcn-style source. Do not document folders or package namespaces that do not exist. Do not add top-level exports for recipes, blocks, agent, or terminal groupings unless a later package API decision adds concrete source, built files, docs, and tests in the same change.
|
|
25
|
+
- **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.
|
|
26
|
+
- **Standard components, not app-owned product features.** This package ships primitives, standard UI components, AI Elements, brand adapters, React adapters, reusable sections, and presentational product components such as settings, shells, plugin boundaries, installer states, agent chat, artifacts, files, diffs, and redacted terminal summaries. It must not ship app-specific feature/use-case screens or names such as operator-login, portal activation, customer credential control, customer management, or other product-domain use cases. Generic data tables, command palettes, and chart cards are app-owned shadcn registry adaptations, not NadicodeAI package abstractions. Those screens live in the consuming app and are built from `@nadicodeai/ui` components and first-party shadcn blocks/examples.
|
|
27
|
+
- **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.
|
|
28
|
+
- **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 should pass data and media children into existing compositions instead of rebuilding layout locally.
|
|
29
|
+
- **Brand renderers live here for React consumers.** `BrandMark` is the logo mark, and `BrandWordmark` is the text-only wordmark. A full lockup is exactly one `BrandMark` followed by one `BrandWordmark`; compact mark-only usage uses `BrandMark` alone. These adapters are the only place React code imports the raw `@nadicodeai/design-system/assets/*` logo SVG exports. Website, portal, and sibling routes use these adapters instead of importing logo assets directly, drawing brand SVG inline, masking/recoloring assets, or embedding the mark inside the wordmark.
|
|
30
|
+
- **No fake proof APIs.** Components may support future testimonials, logos, stats, and proof slots, but they must render nothing public when the proof is absent. Do not ship placeholder customer names, metrics, or logos.
|
|
31
|
+
|
|
32
|
+
## Reusable Section Vocabulary
|
|
33
|
+
|
|
34
|
+
The soft-launch homepage relies on this reusable vocabulary, and future reusable
|
|
35
|
+
marketing/product sections should extend the same model:
|
|
36
|
+
|
|
37
|
+
- `PageFrame` / `PageRow` wrappers for the kept page system.
|
|
38
|
+
- `SectionIntro` for section headers.
|
|
39
|
+
- `Bento` compound components for bordered marketing grids.
|
|
40
|
+
- `MediaMount` for image, video, poster, and artifact mounts.
|
|
41
|
+
- `DemoSurface` for chat, artifact, approval, tool-trace, image, and video demos.
|
|
42
|
+
- `ShiftBand`, `UseCaseBento`, `WatchItWorkBand`, `BenefitsBento`, and
|
|
43
|
+
`ProofSlot` for homepage-level compositions.
|
|
44
|
+
- Existing reusable sections/compositions such as `HeroSplit`, `ActionBand`, `Faq`, `Footer`, `NavBar`,
|
|
45
|
+
`LogoBand`, `Testimonials`, and `StatsBand` when their proof/content is real.
|
|
46
|
+
|
|
47
|
+
When a page needs a variation, extend these source components with a small,
|
|
48
|
+
typed prop or slot. Do not fork the same layout in `website/`.
|
|
49
|
+
|
|
50
|
+
## shadcn / AI Elements Discovery
|
|
51
|
+
|
|
52
|
+
Use live shadcn MCP or CLI discovery while maintaining this package. MCP/CLI is
|
|
53
|
+
for browsing, searching, viewing docs, previewing diffs, and installing current
|
|
54
|
+
registry source during implementation. `@nadicodeai/ui` does not maintain a
|
|
55
|
+
committed upstream registry inventory, registry snapshot, or inventory update
|
|
56
|
+
script.
|
|
57
|
+
|
|
58
|
+
From `@nadicodeai/ui`, initialize Codex MCP only when the local runtime supports
|
|
59
|
+
it:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npx shadcn@latest mcp init --client codex
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
CLI fallbacks:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npx shadcn@latest info --json
|
|
69
|
+
npx shadcn@latest search @shadcn -q "select" --json
|
|
70
|
+
npx shadcn@latest search @ai-elements -q "message" --json
|
|
71
|
+
npx shadcn@latest docs button select dialog --json
|
|
72
|
+
npx shadcn@latest view @shadcn/button
|
|
73
|
+
npx shadcn@latest add @shadcn/button --dry-run
|
|
74
|
+
npx shadcn@latest add @ai-elements/message --dry-run
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Use `info --json` for project-aware aliases, Tailwind version, base primitive
|
|
78
|
+
library, icon library, resolved source paths, and configured registries. Use
|
|
79
|
+
`search`, `docs`, and `view` before adding source; use `add --dry-run` or
|
|
80
|
+
`add --diff` before changing files. Do not use `--overwrite` unless the
|
|
81
|
+
maintainer explicitly asks for an upstream refresh and the diff is reviewed.
|
|
82
|
+
|
|
83
|
+
## Product Components And Consumer Readiness
|
|
84
|
+
|
|
85
|
+
Use public component subpaths for product UI:
|
|
86
|
+
|
|
87
|
+
- `@nadicodeai/ui/components/agent-chat`
|
|
88
|
+
- `@nadicodeai/ui/components/agent-composer`
|
|
89
|
+
- `@nadicodeai/ui/components/agent-message`
|
|
90
|
+
- `@nadicodeai/ui/components/agent-thread`
|
|
91
|
+
- `@nadicodeai/ui/components/agent-tool-approval`
|
|
92
|
+
- `@nadicodeai/ui/components/artifact-panel`
|
|
93
|
+
- `@nadicodeai/ui/components/automation-section`
|
|
94
|
+
- `@nadicodeai/ui/components/dashboard-shell`
|
|
95
|
+
- `@nadicodeai/ui/components/desktop-shell`
|
|
96
|
+
- `@nadicodeai/ui/components/feedback-state`
|
|
97
|
+
- `@nadicodeai/ui/components/files-preview`
|
|
98
|
+
- `@nadicodeai/ui/components/installer-shell`
|
|
99
|
+
- `@nadicodeai/ui/components/plugin-slot-boundary`
|
|
100
|
+
- `@nadicodeai/ui/components/settings-section`
|
|
101
|
+
|
|
102
|
+
Consumers own routing, auth, app data, server actions, runtime adapters,
|
|
103
|
+
permission decisions, analytics, and app-specific copy. The package owns the
|
|
104
|
+
presentational structure and state vocabulary only. Follow
|
|
105
|
+
`docs/migration/nadia-consumer-readiness.md`: validate a web/admin or portal
|
|
106
|
+
slice first, installer second, desktop shell third, desktop chat last, and TUI
|
|
107
|
+
through `docs/terminal-tui-semantics.md`.
|
|
108
|
+
|
|
109
|
+
## Commands
|
|
110
|
+
|
|
111
|
+
| Command | When |
|
|
112
|
+
| --- | --- |
|
|
113
|
+
| `npm run build -w @nadicodeai/ui` | Emit the consumable `dist/` package surface before packing or app builds |
|
|
114
|
+
| `npm run test -w @nadicodeai/ui` | Run this workspace's guards (browser-free; also runs inside the root `npm run test` gate) |
|
package/README.md
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# @nadicodeai/ui
|
|
2
|
+
|
|
3
|
+
Shared React UI for NadicodeAI ecosystem apps, authored as shadcn-style source
|
|
4
|
+
and published as a built package.
|
|
5
|
+
|
|
6
|
+
The package exports ESM JavaScript, TypeScript declarations, and the Tailwind v4
|
|
7
|
+
entry stylesheet needed by consuming apps. It is intentionally coupled to
|
|
8
|
+
`@nadicodeai/design-system`: the design-system package owns brand tokens,
|
|
9
|
+
framework-agnostic geometry, fonts, assets, and CSS components; this package owns
|
|
10
|
+
React components and reusable section compositions on those tokens. Shared
|
|
11
|
+
product compositions from
|
|
12
|
+
`../docs/plans/2026-06-23-001-feat-nadia-product-ui-package-plan.md` now ship
|
|
13
|
+
when their source, public subpath export, docs, and tests exist.
|
|
14
|
+
|
|
15
|
+
The package ships:
|
|
16
|
+
|
|
17
|
+
- shadcn source components under `@nadicodeai/ui/components/*`
|
|
18
|
+
- all 48 Vercel AI Elements under `@nadicodeai/ui/components/ai-elements/*`
|
|
19
|
+
- an AI Elements barrel at `@nadicodeai/ui/ai-elements`
|
|
20
|
+
- React adapters over the design-system grammar and assets
|
|
21
|
+
- reusable marketing/section compositions
|
|
22
|
+
- presentational product components such as `SettingsSection`,
|
|
23
|
+
`DashboardShell`, `AgentChat`, `InstallerShell`, and `PluginSlotBoundary`
|
|
24
|
+
- package-local agent guidance: `AGENTS.md`, `llms.txt`,
|
|
25
|
+
`docs/agents/nadicodeai-ui.md`, `docs/migration/`, and
|
|
26
|
+
`skills/nadicodeai-ui/SKILL.md`
|
|
27
|
+
|
|
28
|
+
The package surface is source-backed. `src/components/` is a flat shadcn-style
|
|
29
|
+
source surface; do not document folders or package namespaces that do not exist.
|
|
30
|
+
Do not add top-level exports for recipes, blocks, agent, or terminal groupings
|
|
31
|
+
until a concrete package API decision adds source, built files, docs, and tests
|
|
32
|
+
together. Routes, persistence, auth behavior, server state, runtime adapters,
|
|
33
|
+
and app-owned product features/use cases stay in consuming apps such as
|
|
34
|
+
`website/`, `portal/`, and sibling Nadia apps. Product-specific names such as
|
|
35
|
+
`operator-login`, portal activation, and customer credential control stay out of
|
|
36
|
+
package components.
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
Install both NadicodeAI packages and the required peers in the consuming app:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm install @nadicodeai/design-system @nadicodeai/ui react react-dom tailwindcss @tailwindcss/postcss
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The package is scoped for public npm registry publishing.
|
|
47
|
+
|
|
48
|
+
## CSS
|
|
49
|
+
|
|
50
|
+
Import the UI Tailwind entry and the design-system CSS once at the app root:
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
import "@nadicodeai/ui/globals.css";
|
|
54
|
+
import "@nadicodeai/design-system/css";
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
`@nadicodeai/ui/globals.css` imports Tailwind v4, the generated NadicodeAI
|
|
58
|
+
Tailwind theme, the shadcn role bridge, and the package-local semantic
|
|
59
|
+
`:root`/`.dark` maps. The `.dark` selector remaps shadcn roles plus UI-local
|
|
60
|
+
product aliases for app shell/surface, chat/tool/composer, approval, diff/code,
|
|
61
|
+
terminal/ANSI, trace/status, provider/model, and plugin permission UI. Those
|
|
62
|
+
aliases reference generated `--nc-*` tokens or semantic roles; they are not a
|
|
63
|
+
new source-token group. `@nadicodeai/design-system/css` provides the kept
|
|
64
|
+
`nc-*` page grammar, type scale, geometry, chat CSS components, motion, and
|
|
65
|
+
brand display components that many UI components compose.
|
|
66
|
+
|
|
67
|
+
Components should consume semantic utilities such as `bg-background`,
|
|
68
|
+
`text-foreground`, and `border-border`, or product aliases such as
|
|
69
|
+
`var(--nc-app-surface)` and `var(--nc-terminal-bg)` where a product role is
|
|
70
|
+
needed. Do not add component-level Tailwind `dark:` utilities, OS dark-mode
|
|
71
|
+
branching, raw color literals, or raw palette utilities.
|
|
72
|
+
|
|
73
|
+
For Next.js App Router apps, place both imports in the root layout. The app still
|
|
74
|
+
owns its PostCSS setup; this package does not export a PostCSS config.
|
|
75
|
+
|
|
76
|
+
## Imports
|
|
77
|
+
|
|
78
|
+
Prefer direct subpath imports in app code:
|
|
79
|
+
|
|
80
|
+
```tsx
|
|
81
|
+
import { Button } from "@nadicodeai/ui/components/button";
|
|
82
|
+
import { PageFrame } from "@nadicodeai/ui/components/page-frame";
|
|
83
|
+
import { Message } from "@nadicodeai/ui/components/ai-elements/message";
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The root export is available for tooling and DX, but direct component subpaths
|
|
87
|
+
keep package use explicit and friendly to bundlers.
|
|
88
|
+
|
|
89
|
+
AI Elements can also be imported from the dedicated barrel:
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
import { Message, PromptInput, Reasoning, Tool } from "@nadicodeai/ui/ai-elements";
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Product components use the same public component subpaths:
|
|
96
|
+
|
|
97
|
+
```tsx
|
|
98
|
+
import { DashboardShell } from "@nadicodeai/ui/components/dashboard-shell";
|
|
99
|
+
import { AgentChat } from "@nadicodeai/ui/components/agent-chat";
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Product components
|
|
103
|
+
|
|
104
|
+
Product components are presentational. The package owns shared layout,
|
|
105
|
+
state-display, shell, plugin-boundary, installer, settings, chat, artifact,
|
|
106
|
+
diff, and redacted terminal summary UI. Consuming apps own
|
|
107
|
+
routes, app data, auth, server actions, persistence, permission decisions,
|
|
108
|
+
runtime adapters, analytics, and product-specific copy.
|
|
109
|
+
|
|
110
|
+
Generic product widgets that shadcn already ships as first-party registry
|
|
111
|
+
source, such as data tables, command palettes, and chart cards, are app-owned
|
|
112
|
+
shadcn block/example adaptations. Do not add a second package abstraction over
|
|
113
|
+
those registry items.
|
|
114
|
+
|
|
115
|
+
Current product subpaths:
|
|
116
|
+
|
|
117
|
+
- `@nadicodeai/ui/components/agent-chat`
|
|
118
|
+
- `@nadicodeai/ui/components/agent-composer`
|
|
119
|
+
- `@nadicodeai/ui/components/agent-message`
|
|
120
|
+
- `@nadicodeai/ui/components/agent-thread`
|
|
121
|
+
- `@nadicodeai/ui/components/agent-tool-approval`
|
|
122
|
+
- `@nadicodeai/ui/components/artifact-panel`
|
|
123
|
+
- `@nadicodeai/ui/components/automation-section`
|
|
124
|
+
- `@nadicodeai/ui/components/dashboard-shell`
|
|
125
|
+
- `@nadicodeai/ui/components/desktop-shell`
|
|
126
|
+
- `@nadicodeai/ui/components/feedback-state`
|
|
127
|
+
- `@nadicodeai/ui/components/files-preview`
|
|
128
|
+
- `@nadicodeai/ui/components/installer-shell`
|
|
129
|
+
- `@nadicodeai/ui/components/plugin-slot-boundary`
|
|
130
|
+
- `@nadicodeai/ui/components/settings-section`
|
|
131
|
+
|
|
132
|
+
Recommended migration order is documented in
|
|
133
|
+
`docs/migration/nadia-consumer-readiness.md`: web admin or portal first,
|
|
134
|
+
installer second, desktop shell third, desktop chat last, and terminal/TUI
|
|
135
|
+
consumers through `docs/terminal-tui-semantics.md`.
|
|
136
|
+
|
|
137
|
+
## shadcn and AI Elements discovery
|
|
138
|
+
|
|
139
|
+
Use shadcn MCP or the CLI for live discovery and install guidance while working
|
|
140
|
+
in this package. Do not maintain a committed upstream registry inventory,
|
|
141
|
+
registry snapshot, or inventory update script in `@nadicodeai/ui`; the source
|
|
142
|
+
files and package exports are the committed surface.
|
|
143
|
+
|
|
144
|
+
From `@nadicodeai/ui`, Codex-capable environments can initialize the shadcn MCP
|
|
145
|
+
client configuration when the local runtime supports MCP:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
npx shadcn@latest mcp init --client codex
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
When MCP is unavailable, use the CLI directly:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npx shadcn@latest info --json
|
|
155
|
+
npx shadcn@latest search @shadcn -q "select" --json
|
|
156
|
+
npx shadcn@latest search @ai-elements -q "message" --json
|
|
157
|
+
npx shadcn@latest docs button select dialog --json
|
|
158
|
+
npx shadcn@latest view @shadcn/button
|
|
159
|
+
npx shadcn@latest add @shadcn/button --dry-run
|
|
160
|
+
npx shadcn@latest add @ai-elements/message --dry-run
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
`info --json` is the project-aware source of truth for aliases, Tailwind version,
|
|
164
|
+
base primitive library, icon library, resolved source paths, and configured
|
|
165
|
+
registries. Use `search`, `docs`, and `view` to inspect current registry items
|
|
166
|
+
before adding or refreshing source. Review `add --dry-run` or `add --diff`
|
|
167
|
+
output before changing files, and do not use `--overwrite` unless the maintainer
|
|
168
|
+
explicitly asks for an upstream refresh.
|
|
169
|
+
|
|
170
|
+
## Forms
|
|
171
|
+
|
|
172
|
+
Use one form model:
|
|
173
|
+
|
|
174
|
+
- `Input`, `Textarea`, `Select`, `Checkbox`, and similar files are controls.
|
|
175
|
+
- `FieldGroup`, `Field`, `FieldLabel`, `FieldDescription`, and `FieldError`
|
|
176
|
+
provide field layout and accessible label/error structure.
|
|
177
|
+
- `Form`, `FormField`, `FormItem`, `FormControl`, `FormLabel`,
|
|
178
|
+
`FormDescription`, and `FormMessage` are the React Hook Form integration.
|
|
179
|
+
|
|
180
|
+
Do not add or import a separate `FormInput`/`FormTextarea` control family. If a
|
|
181
|
+
new input size or behavior is needed, add it to the canonical shadcn control or
|
|
182
|
+
field primitive instead of creating a parallel form-control API.
|
|
183
|
+
|
|
184
|
+
## Agent instructions
|
|
185
|
+
|
|
186
|
+
The npm package includes agent-facing files on purpose. Agents should read:
|
|
187
|
+
|
|
188
|
+
- `AGENTS.md` for the package contract
|
|
189
|
+
- `llms.txt` for a concise import/setup index
|
|
190
|
+
- `docs/agents/nadicodeai-ui.md` for detailed usage and maintenance guidance
|
|
191
|
+
- `docs/migration/nadia-consumer-readiness.md` for consumer migration order
|
|
192
|
+
and readiness gates
|
|
193
|
+
- `skills/nadicodeai-ui/SKILL.md` when the agent runtime supports skills
|
|
194
|
+
|
|
195
|
+
These files are packaged through npm `files`; they are not runtime module
|
|
196
|
+
exports.
|
|
197
|
+
|
|
198
|
+
## Build
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
npm run build -w @nadicodeai/ui
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
The build emits:
|
|
205
|
+
|
|
206
|
+
- `dist/**/*.js`
|
|
207
|
+
- `dist/**/*.d.ts`
|
|
208
|
+
- `dist/styles/globals.css`
|
|
209
|
+
|
|
210
|
+
`dist`, this README, package docs, and the package agent-instruction files are
|
|
211
|
+
packed.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export * from "./components/ai-elements/agent";
|
|
2
|
+
export * from "./components/ai-elements/artifact";
|
|
3
|
+
export * from "./components/ai-elements/attachments";
|
|
4
|
+
export * from "./components/ai-elements/audio-player";
|
|
5
|
+
export * from "./components/ai-elements/canvas";
|
|
6
|
+
export * from "./components/ai-elements/chain-of-thought";
|
|
7
|
+
export * from "./components/ai-elements/checkpoint";
|
|
8
|
+
export * from "./components/ai-elements/code-block";
|
|
9
|
+
export * from "./components/ai-elements/commit";
|
|
10
|
+
export * from "./components/ai-elements/confirmation";
|
|
11
|
+
export * from "./components/ai-elements/connection";
|
|
12
|
+
export * from "./components/ai-elements/context";
|
|
13
|
+
export * from "./components/ai-elements/controls";
|
|
14
|
+
export * from "./components/ai-elements/conversation";
|
|
15
|
+
export * from "./components/ai-elements/edge";
|
|
16
|
+
export * from "./components/ai-elements/environment-variables";
|
|
17
|
+
export * from "./components/ai-elements/file-tree";
|
|
18
|
+
export * from "./components/ai-elements/image";
|
|
19
|
+
export * from "./components/ai-elements/inline-citation";
|
|
20
|
+
export * from "./components/ai-elements/jsx-preview";
|
|
21
|
+
export * from "./components/ai-elements/message";
|
|
22
|
+
export * from "./components/ai-elements/mic-selector";
|
|
23
|
+
export * from "./components/ai-elements/model-selector";
|
|
24
|
+
export * from "./components/ai-elements/node";
|
|
25
|
+
export * from "./components/ai-elements/open-in-chat";
|
|
26
|
+
export * from "./components/ai-elements/package-info";
|
|
27
|
+
export * from "./components/ai-elements/panel";
|
|
28
|
+
export * from "./components/ai-elements/persona";
|
|
29
|
+
export * from "./components/ai-elements/plan";
|
|
30
|
+
export * from "./components/ai-elements/prompt-input";
|
|
31
|
+
export * from "./components/ai-elements/queue";
|
|
32
|
+
export * from "./components/ai-elements/reasoning";
|
|
33
|
+
export * from "./components/ai-elements/sandbox";
|
|
34
|
+
export * from "./components/ai-elements/schema-display";
|
|
35
|
+
export * from "./components/ai-elements/shimmer";
|
|
36
|
+
export * from "./components/ai-elements/snippet";
|
|
37
|
+
export * from "./components/ai-elements/sources";
|
|
38
|
+
export * from "./components/ai-elements/speech-input";
|
|
39
|
+
export * from "./components/ai-elements/stack-trace";
|
|
40
|
+
export * from "./components/ai-elements/suggestion";
|
|
41
|
+
export * from "./components/ai-elements/task";
|
|
42
|
+
export * from "./components/ai-elements/terminal";
|
|
43
|
+
export * from "./components/ai-elements/test-results";
|
|
44
|
+
export * from "./components/ai-elements/tool";
|
|
45
|
+
export * from "./components/ai-elements/toolbar";
|
|
46
|
+
export * from "./components/ai-elements/transcription";
|
|
47
|
+
export * from "./components/ai-elements/voice-selector";
|
|
48
|
+
export * from "./components/ai-elements/web-preview";
|
|
49
|
+
//# sourceMappingURL=ai-elements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-elements.d.ts","sourceRoot":"","sources":["../src/ai-elements.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,sCAAsC,CAAA;AACpD,cAAc,uCAAuC,CAAA;AACrD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,2CAA2C,CAAA;AACzD,cAAc,qCAAqC,CAAA;AACnD,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uCAAuC,CAAA;AACrD,cAAc,qCAAqC,CAAA;AACnD,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,uCAAuC,CAAA;AACrD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gDAAgD,CAAA;AAC9D,cAAc,oCAAoC,CAAA;AAClD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,yCAAyC,CAAA;AACvD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uCAAuC,CAAA;AACrD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oCAAoC,CAAA;AAClD,cAAc,kCAAkC,CAAA;AAChD,cAAc,yCAAyC,CAAA;AACvD,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,uCAAuC,CAAA;AACrD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kCAAkC,CAAA;AAChD,cAAc,wCAAwC,CAAA;AACtD,cAAc,yCAAyC,CAAA;AACvD,cAAc,sCAAsC,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export * from "./components/ai-elements/agent.js";
|
|
2
|
+
export * from "./components/ai-elements/artifact.js";
|
|
3
|
+
export * from "./components/ai-elements/attachments.js";
|
|
4
|
+
export * from "./components/ai-elements/audio-player.js";
|
|
5
|
+
export * from "./components/ai-elements/canvas.js";
|
|
6
|
+
export * from "./components/ai-elements/chain-of-thought.js";
|
|
7
|
+
export * from "./components/ai-elements/checkpoint.js";
|
|
8
|
+
export * from "./components/ai-elements/code-block.js";
|
|
9
|
+
export * from "./components/ai-elements/commit.js";
|
|
10
|
+
export * from "./components/ai-elements/confirmation.js";
|
|
11
|
+
export * from "./components/ai-elements/connection.js";
|
|
12
|
+
export * from "./components/ai-elements/context.js";
|
|
13
|
+
export * from "./components/ai-elements/controls.js";
|
|
14
|
+
export * from "./components/ai-elements/conversation.js";
|
|
15
|
+
export * from "./components/ai-elements/edge.js";
|
|
16
|
+
export * from "./components/ai-elements/environment-variables.js";
|
|
17
|
+
export * from "./components/ai-elements/file-tree.js";
|
|
18
|
+
export * from "./components/ai-elements/image.js";
|
|
19
|
+
export * from "./components/ai-elements/inline-citation.js";
|
|
20
|
+
export * from "./components/ai-elements/jsx-preview.js";
|
|
21
|
+
export * from "./components/ai-elements/message.js";
|
|
22
|
+
export * from "./components/ai-elements/mic-selector.js";
|
|
23
|
+
export * from "./components/ai-elements/model-selector.js";
|
|
24
|
+
export * from "./components/ai-elements/node.js";
|
|
25
|
+
export * from "./components/ai-elements/open-in-chat.js";
|
|
26
|
+
export * from "./components/ai-elements/package-info.js";
|
|
27
|
+
export * from "./components/ai-elements/panel.js";
|
|
28
|
+
export * from "./components/ai-elements/persona.js";
|
|
29
|
+
export * from "./components/ai-elements/plan.js";
|
|
30
|
+
export * from "./components/ai-elements/prompt-input.js";
|
|
31
|
+
export * from "./components/ai-elements/queue.js";
|
|
32
|
+
export * from "./components/ai-elements/reasoning.js";
|
|
33
|
+
export * from "./components/ai-elements/sandbox.js";
|
|
34
|
+
export * from "./components/ai-elements/schema-display.js";
|
|
35
|
+
export * from "./components/ai-elements/shimmer.js";
|
|
36
|
+
export * from "./components/ai-elements/snippet.js";
|
|
37
|
+
export * from "./components/ai-elements/sources.js";
|
|
38
|
+
export * from "./components/ai-elements/speech-input.js";
|
|
39
|
+
export * from "./components/ai-elements/stack-trace.js";
|
|
40
|
+
export * from "./components/ai-elements/suggestion.js";
|
|
41
|
+
export * from "./components/ai-elements/task.js";
|
|
42
|
+
export * from "./components/ai-elements/terminal.js";
|
|
43
|
+
export * from "./components/ai-elements/test-results.js";
|
|
44
|
+
export * from "./components/ai-elements/tool.js";
|
|
45
|
+
export * from "./components/ai-elements/toolbar.js";
|
|
46
|
+
export * from "./components/ai-elements/transcription.js";
|
|
47
|
+
export * from "./components/ai-elements/voice-selector.js";
|
|
48
|
+
export * from "./components/ai-elements/web-preview.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Accordion as AccordionPrimitive } from "radix-ui";
|
|
3
|
+
declare function Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>): React.JSX.Element;
|
|
4
|
+
declare function AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>): React.JSX.Element;
|
|
5
|
+
declare function AccordionTrigger({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Trigger>): React.JSX.Element;
|
|
6
|
+
declare function AccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>): React.JSX.Element;
|
|
7
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
8
|
+
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/components/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI1D,iBAAS,SAAS,CAAC,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAEtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAQtD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAgBzD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAUzD;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronDownIcon } from "lucide-react";
|
|
4
|
+
import { Accordion as AccordionPrimitive } from "radix-ui";
|
|
5
|
+
import { cn } from "../lib/utils.js";
|
|
6
|
+
function Accordion({ ...props }) {
|
|
7
|
+
return _jsx(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
|
|
8
|
+
}
|
|
9
|
+
function AccordionItem({ className, ...props }) {
|
|
10
|
+
return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn("border-b last:border-b-0", className), ...props }));
|
|
11
|
+
}
|
|
12
|
+
function AccordionTrigger({ className, children, ...props }) {
|
|
13
|
+
return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", className), ...props, children: [children, _jsx(ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200" })] }) }));
|
|
14
|
+
}
|
|
15
|
+
function AccordionContent({ className, children, ...props }) {
|
|
16
|
+
return (_jsx(AccordionPrimitive.Content, { "data-slot": "accordion-content", className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down", ...props, children: _jsx("div", { className: cn("pt-0 pb-4", className), children: children }) }));
|
|
17
|
+
}
|
|
18
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type ActionBandProps = React.ComponentProps<"div"> & {
|
|
3
|
+
active?: "inset" | "full";
|
|
4
|
+
};
|
|
5
|
+
declare function ActionBand({ active, className, children, style, ...props }: ActionBandProps): React.JSX.Element;
|
|
6
|
+
declare function ActionBandContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
7
|
+
declare function ActionBandCopy({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
8
|
+
declare function ActionBandVisual({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
9
|
+
export { ActionBand, ActionBandContent, ActionBandCopy, ActionBandVisual };
|
|
10
|
+
//# sourceMappingURL=action-band.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-band.d.ts","sourceRoot":"","sources":["../../src/components/action-band.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAsC9B,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IACnD,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAC1B,CAAA;AAED,iBAAS,UAAU,CAAC,EAClB,MAAgB,EAChB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,eAAe,qBAsBjB;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW3E;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7E;AAED,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* action-band — full-lane conversion stage for a final CTA or page-level ask.
|
|
5
|
+
*
|
|
6
|
+
* Replaces the retired recipe-specific `action-stage` CSS with the kept stage
|
|
7
|
+
* grammar: `nc-stage-frame`, `nc-stage-fill`, `nc-stage-grid`,
|
|
8
|
+
* `nc-stage-active`, and connector strips. The component owns the conversion
|
|
9
|
+
* band structure, while the page supplies copy, controls, and media. The outer
|
|
10
|
+
* stage spans the full lane; the active band is a bounded 12-column cell grid
|
|
11
|
+
* with a single internal seam owner (`bg-border` + `gap-px`). The page/frame/rail
|
|
12
|
+
* geometry owns the perimeter. Token-only; no
|
|
13
|
+
* raw color values and no `dark:` styling.
|
|
14
|
+
*/
|
|
15
|
+
function ActionBandConnector({ edge }) {
|
|
16
|
+
return (_jsx("div", { className: "nc-stage-grid nc-connector-strip", "data-edge": edge, "aria-hidden": "true", children: _jsxs("div", { className: "nc-stage-active nc-connector-track", children: [_jsx("div", { children: _jsx("svg", { width: "1", height: "100%", focusable: "false", children: _jsx("line", { x1: "0.5", y1: "0", x2: "0.5", y2: "100%" }) }) }), _jsx("svg", { width: "1", height: "100%", focusable: "false", children: _jsx("line", { x1: "0.5", y1: "0", x2: "0.5", y2: "100%" }) })] }) }));
|
|
17
|
+
}
|
|
18
|
+
function ActionBand({ active = "inset", className, children, style, ...props }) {
|
|
19
|
+
return (_jsxs("div", { "data-slot": "action-band", "data-frame-lines": "true", className: cn("nc-stage-frame relative", className), style: {
|
|
20
|
+
...(active === "full" ? { "--nc-stage-active-column": "1 / -1" } : {}),
|
|
21
|
+
...style,
|
|
22
|
+
}, ...props, children: [_jsx("div", { className: "nc-stage-fill", "aria-hidden": "true" }), _jsx(ActionBandConnector, { edge: "start" }), _jsx("div", { className: "nc-stage-grid", children: _jsx("div", { className: "nc-stage-active", children: children }) }), _jsx(ActionBandConnector, { edge: "end" })] }));
|
|
23
|
+
}
|
|
24
|
+
function ActionBandContent({ className, ...props }) {
|
|
25
|
+
return (_jsx("div", { "data-slot": "action-band-content", className: cn("grid min-w-0 gap-px bg-border lg:h-[var(--nc-h-action-band)] lg:grid-cols-12", className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
function ActionBandCopy({ className, ...props }) {
|
|
28
|
+
return (_jsx("div", { "data-slot": "action-band-copy", className: cn("nc-panel-cell relative overflow-hidden !bg-[var(--nc-ink)] !text-[var(--nc-canvas)] lg:col-span-6", className), ...props }));
|
|
29
|
+
}
|
|
30
|
+
function ActionBandVisual({ className, ...props }) {
|
|
31
|
+
return (_jsx("div", { "data-slot": "action-band-visual", className: cn("nc-panel-cell items-stretch !p-0 ![align-content:stretch] ![grid-template-rows:minmax(0,1fr)] lg:col-span-6", className), ...props }));
|
|
32
|
+
}
|
|
33
|
+
export { ActionBand, ActionBandContent, ActionBandCopy, ActionBandVisual };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type AgentComposerProps } from "./agent-composer";
|
|
3
|
+
import { type AgentThreadStateCopy } from "./agent-thread";
|
|
4
|
+
import { type AgentMessageModel, type AgentToolApprovalDecisionHandler, type AgentWorkState } from "./agent-message";
|
|
5
|
+
declare function AgentChat({ messages, state, stateCopy, emptyState, composer, composerProps, toolActions, retryAction, onToolApprovalChoice, maxMessages, header, className, threadClassName, ...props }: React.ComponentProps<"section"> & {
|
|
6
|
+
messages: AgentMessageModel[];
|
|
7
|
+
state?: AgentWorkState;
|
|
8
|
+
stateCopy?: Partial<Record<Exclude<AgentWorkState, "idle">, AgentThreadStateCopy>>;
|
|
9
|
+
emptyState?: AgentThreadStateCopy;
|
|
10
|
+
composer?: React.ReactNode;
|
|
11
|
+
composerProps?: AgentComposerProps;
|
|
12
|
+
toolActions?: Record<string, React.ReactNode>;
|
|
13
|
+
retryAction?: React.ReactNode;
|
|
14
|
+
onToolApprovalChoice?: AgentToolApprovalDecisionHandler;
|
|
15
|
+
maxMessages?: number;
|
|
16
|
+
header?: React.ReactNode;
|
|
17
|
+
threadClassName?: string;
|
|
18
|
+
}): React.JSX.Element;
|
|
19
|
+
export { AgentChat };
|
|
20
|
+
//# sourceMappingURL=agent-chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/components/agent-chat.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,EACrC,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAA;AAGnC,iBAAS,SAAS,CAAC,EACjB,QAAQ,EACR,KAAc,EACd,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,MAAM,EACN,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG;IACnC,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAClF,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,aAAa,CAAC,EAAE,kBAAkB,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,oBAAoB,CAAC,EAAE,gCAAgC,CAAA;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,qBAgCA;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { AgentComposer, } from "./agent-composer.js";
|
|
4
|
+
import { AgentThread, } from "./agent-thread.js";
|
|
5
|
+
import { cn } from "../lib/utils.js";
|
|
6
|
+
function AgentChat({ messages, state = "idle", stateCopy, emptyState, composer, composerProps, toolActions, retryAction, onToolApprovalChoice, maxMessages, header, className, threadClassName, ...props }) {
|
|
7
|
+
return (_jsxs("section", { "data-slot": "agent-chat", "data-agent-state": state, className: cn("flex min-h-0 flex-col gap-4 rounded-lg border bg-[var(--nc-app-surface-panel)] p-3", className), ...props, children: [header && _jsx("div", { "data-slot": "agent-chat-header", children: header }), _jsx(AgentThread, { messages: messages, state: state, stateCopy: stateCopy, emptyState: emptyState, toolActions: toolActions, retryAction: retryAction, onToolApprovalChoice: onToolApprovalChoice, maxMessages: maxMessages, className: cn("flex-1", threadClassName) }), composer ??
|
|
8
|
+
(composerProps ? (_jsx(AgentComposer, { ...composerProps, state: state === "streaming" ? "streaming" : composerProps.state })) : null)] }));
|
|
9
|
+
}
|
|
10
|
+
export { AgentChat };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { PromptInput } from "./ai-elements/prompt-input";
|
|
3
|
+
import { type AgentRedactionRule } from "./artifact-panel";
|
|
4
|
+
import { type AgentAttachmentModel } from "./agent-message";
|
|
5
|
+
export type AgentComposerState = "idle" | "disabled" | "submitting" | "streaming" | "error";
|
|
6
|
+
export type AgentQueueStatus = "queued" | "running" | "blocked" | "complete" | "interrupted";
|
|
7
|
+
export type AgentQueueItemModel = {
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
status?: AgentQueueStatus;
|
|
12
|
+
attachments?: AgentAttachmentModel[];
|
|
13
|
+
redaction?: AgentRedactionRule;
|
|
14
|
+
};
|
|
15
|
+
export type AgentQueueModel = {
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
items: AgentQueueItemModel[];
|
|
19
|
+
};
|
|
20
|
+
export type AgentComposerSubmit = {
|
|
21
|
+
value: string;
|
|
22
|
+
attachments: AgentAttachmentModel[];
|
|
23
|
+
queue?: AgentQueueModel;
|
|
24
|
+
};
|
|
25
|
+
export type AgentComposerProps = Omit<React.ComponentProps<typeof PromptInput>, "children" | "onSubmit"> & {
|
|
26
|
+
value?: string;
|
|
27
|
+
defaultValue?: string;
|
|
28
|
+
placeholder?: string;
|
|
29
|
+
attachments?: AgentAttachmentModel[];
|
|
30
|
+
queue?: AgentQueueModel;
|
|
31
|
+
state?: AgentComposerState;
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
slashMenu?: React.ReactNode;
|
|
34
|
+
mentionMenu?: React.ReactNode;
|
|
35
|
+
tools?: React.ReactNode;
|
|
36
|
+
submitLabel?: string;
|
|
37
|
+
stopLabel?: string;
|
|
38
|
+
onValueChange?: (value: string) => void;
|
|
39
|
+
onSubmit?: (payload: AgentComposerSubmit, event: React.FormEvent<HTMLFormElement>) => void | Promise<void>;
|
|
40
|
+
onStop?: () => void;
|
|
41
|
+
onRemoveAttachment?: (attachment: AgentAttachmentModel) => void;
|
|
42
|
+
queueActions?: Record<string, React.ReactNode>;
|
|
43
|
+
footer?: React.ReactNode;
|
|
44
|
+
};
|
|
45
|
+
declare function AgentComposerAttachments({ attachments, onRemoveAttachment, }: {
|
|
46
|
+
attachments?: AgentAttachmentModel[];
|
|
47
|
+
onRemoveAttachment?: (attachment: AgentAttachmentModel) => void;
|
|
48
|
+
}): React.JSX.Element | null;
|
|
49
|
+
declare function AgentQueuePanel({ queue, actions, className, }: {
|
|
50
|
+
queue: AgentQueueModel;
|
|
51
|
+
actions?: Record<string, React.ReactNode>;
|
|
52
|
+
className?: string;
|
|
53
|
+
}): React.JSX.Element | null;
|
|
54
|
+
declare function AgentComposer({ value, defaultValue, placeholder, attachments, queue, state, disabled, slashMenu, mentionMenu, tools, submitLabel, stopLabel, onValueChange, onSubmit, onStop, onRemoveAttachment, queueActions, footer, className, ...props }: AgentComposerProps): React.JSX.Element;
|
|
55
|
+
export { AgentComposer, AgentComposerAttachments, AgentQueuePanel, };
|
|
56
|
+
//# sourceMappingURL=agent-composer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-composer.d.ts","sourceRoot":"","sources":["../../src/components/agent-composer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,OAAO,EACL,WAAW,EAOZ,MAAM,uCAAuC,CAAA;AAa9C,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAA;AAGpC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAItE,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,UAAU,GACV,YAAY,GACZ,WAAW,GACX,OAAO,CAAA;AAEX,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,aAAa,CAAA;AAEjB,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACpC,SAAS,CAAC,EAAE,kBAAkB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,mBAAmB,EAAE,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,oBAAoB,EAAE,CAAA;IACnC,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,KAAK,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EACxC,UAAU,GAAG,UAAU,CACxB,GAAG;IACF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACpC,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,QAAQ,CAAC,EAAE,CACT,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KACpC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB,CAAA;AA0BD,iBAAS,wBAAwB,CAAC,EAChC,WAAW,EACX,kBAAkB,GACnB,EAAE;IACD,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACpC,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI,CAAA;CAChE,4BAsCA;AAED,iBAAS,eAAe,CAAC,EACvB,KAAK,EACL,OAAO,EACP,SAAS,GACV,EAAE;IACD,KAAK,EAAE,eAAe,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,4BA6DA;AAED,iBAAS,aAAa,CAAC,EACrB,KAAK,EACL,YAAY,EACZ,WAA4C,EAC5C,WAAgB,EAChB,KAAK,EACL,KAAc,EACd,QAAgB,EAChB,SAAS,EACT,WAAW,EACX,KAAK,EACL,WAAsB,EACtB,SAAkB,EAClB,aAAa,EACb,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,kBAAkB,qBA8FpB;AAED,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,eAAe,GAChB,CAAA"}
|