@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
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { AlertTriangleIcon, Code2Icon, FileTextIcon, GlobeIcon, TerminalIcon, } from "lucide-react";
|
|
4
|
+
import { Artifact, ArtifactActions, ArtifactContent, ArtifactDescription, ArtifactHeader, ArtifactTitle, } from "./ai-elements/artifact.js";
|
|
5
|
+
import { CodeBlock } from "./ai-elements/code-block.js";
|
|
6
|
+
import { StackTrace, StackTraceContent, StackTraceError, StackTraceErrorMessage, StackTraceErrorType, StackTraceExpandButton, StackTraceFrames, StackTraceHeader, } from "./ai-elements/stack-trace.js";
|
|
7
|
+
import { Terminal, TerminalActions, TerminalContent, TerminalHeader, TerminalTitle, } from "./ai-elements/terminal.js";
|
|
8
|
+
import { Test, TestResults, TestResultsContent, TestResultsDuration, TestResultsHeader, TestResultsProgress, TestResultsSummary, TestSuite, TestSuiteContent, TestSuiteName, TestSuiteStats, } from "./ai-elements/test-results.js";
|
|
9
|
+
import { WebPreview, WebPreviewBody, WebPreviewNavigation, WebPreviewUrl, } from "./ai-elements/web-preview.js";
|
|
10
|
+
import { Badge } from "./badge.js";
|
|
11
|
+
import { FeedbackState } from "./feedback-state.js";
|
|
12
|
+
import { cn } from "../lib/utils.js";
|
|
13
|
+
export const agentRedactionLabels = {
|
|
14
|
+
environment: "Environment value redacted",
|
|
15
|
+
"private-reasoning": "Private reasoning redacted",
|
|
16
|
+
secret: "Secret redacted",
|
|
17
|
+
"terminal-output": "Terminal output redacted",
|
|
18
|
+
"user-memory": "User memory redacted",
|
|
19
|
+
};
|
|
20
|
+
export function getAgentRedactionText(redaction) {
|
|
21
|
+
if (!redaction) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
return (redaction.replacement ??
|
|
25
|
+
redaction.label ??
|
|
26
|
+
agentRedactionLabels[redaction.category]);
|
|
27
|
+
}
|
|
28
|
+
const defaultCodeLanguage = "plaintext";
|
|
29
|
+
const artifactIcons = {
|
|
30
|
+
code: Code2Icon,
|
|
31
|
+
custom: FileTextIcon,
|
|
32
|
+
diff: FileTextIcon,
|
|
33
|
+
preview: GlobeIcon,
|
|
34
|
+
"stack-trace": AlertTriangleIcon,
|
|
35
|
+
terminal: TerminalIcon,
|
|
36
|
+
"test-results": FileTextIcon,
|
|
37
|
+
text: FileTextIcon,
|
|
38
|
+
};
|
|
39
|
+
const artifactStatusLabels = {
|
|
40
|
+
complete: "Complete",
|
|
41
|
+
failed: "Failed",
|
|
42
|
+
idle: "Idle",
|
|
43
|
+
interrupted: "Interrupted",
|
|
44
|
+
"permission-denied": "Permission denied",
|
|
45
|
+
redacted: "Redacted",
|
|
46
|
+
running: "Running",
|
|
47
|
+
};
|
|
48
|
+
export const defaultAgentArtifactRenderLimits = {
|
|
49
|
+
codeChars: 12_000,
|
|
50
|
+
diffLines: 300,
|
|
51
|
+
terminalChars: 16_000,
|
|
52
|
+
textChars: 12_000,
|
|
53
|
+
};
|
|
54
|
+
function normalizeRenderLimits(renderLimits) {
|
|
55
|
+
return {
|
|
56
|
+
...defaultAgentArtifactRenderLimits,
|
|
57
|
+
...renderLimits,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function normalizeLimit(limit) {
|
|
61
|
+
if (!Number.isFinite(limit)) {
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
return Math.max(0, Math.floor(limit));
|
|
65
|
+
}
|
|
66
|
+
function getBoundedText(value, limit, direction = "head") {
|
|
67
|
+
const maxLength = normalizeLimit(limit);
|
|
68
|
+
if (value.length <= maxLength) {
|
|
69
|
+
return { omitted: 0, value };
|
|
70
|
+
}
|
|
71
|
+
if (maxLength === 0) {
|
|
72
|
+
return { omitted: value.length, value: "" };
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
omitted: value.length - maxLength,
|
|
76
|
+
value: direction === "tail"
|
|
77
|
+
? value.slice(value.length - maxLength)
|
|
78
|
+
: value.slice(0, maxLength),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function getBoundedLines(lines, limit) {
|
|
82
|
+
const maxLines = normalizeLimit(limit);
|
|
83
|
+
if (lines.length <= maxLines) {
|
|
84
|
+
return { omitted: 0, value: lines };
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
omitted: lines.length - maxLines,
|
|
88
|
+
value: lines.slice(0, maxLines),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function OverflowSummary({ children, className, }) {
|
|
92
|
+
return (_jsx("div", { "data-slot": "agent-overflow-summary", className: cn("rounded-md border bg-muted/30 px-3 py-2 text-xs text-muted-foreground", className), children: children }));
|
|
93
|
+
}
|
|
94
|
+
function RedactedNotice({ redaction, className, }) {
|
|
95
|
+
return (_jsx("div", { "data-slot": "agent-redaction-notice", "data-redaction-category": redaction.category, className: cn("rounded-md border border-dashed bg-muted/30 px-3 py-2 text-sm text-muted-foreground", className), children: getAgentRedactionText(redaction) }));
|
|
96
|
+
}
|
|
97
|
+
function TerminalPanel({ transcript, status, renderLimits, className, ...props }) {
|
|
98
|
+
const limits = normalizeRenderLimits(renderLimits);
|
|
99
|
+
const rawOutput = getAgentRedactionText(transcript.redaction) ??
|
|
100
|
+
transcript.output ??
|
|
101
|
+
transcript.summary ??
|
|
102
|
+
"No terminal transcript supplied.";
|
|
103
|
+
const output = transcript.redaction
|
|
104
|
+
? { omitted: 0, value: rawOutput }
|
|
105
|
+
: getBoundedText(rawOutput, limits.terminalChars, "tail");
|
|
106
|
+
const terminalStatus = status ??
|
|
107
|
+
transcript.status ??
|
|
108
|
+
(transcript.redaction
|
|
109
|
+
? "redacted"
|
|
110
|
+
: transcript.isStreaming
|
|
111
|
+
? "running"
|
|
112
|
+
: "idle");
|
|
113
|
+
const isRunning = terminalStatus === "running";
|
|
114
|
+
return (_jsxs("div", { "data-slot": "terminal-panel", className: cn("grid gap-2", className), ...props, children: [output.omitted > 0 && (_jsxs(OverflowSummary, { children: [output.omitted, " earlier terminal characters not shown."] })), _jsxs(Terminal, { output: output.value, isStreaming: isRunning, className: "bg-[var(--nc-terminal-bg)] text-[var(--nc-terminal-fg)]", children: [_jsxs(TerminalHeader, { children: [_jsx(TerminalTitle, { children: transcript.title ?? "Terminal" }), _jsx(TerminalActions, { children: _jsx("div", { "data-slot": "terminal-panel-status", "data-terminal-status": terminalStatus, className: "flex items-center gap-2 text-primary-foreground/70 text-xs", children: artifactStatusLabels[terminalStatus] }) })] }), _jsx(TerminalContent, {})] })] }));
|
|
115
|
+
}
|
|
116
|
+
function PreviewPane({ preview, className, ...props }) {
|
|
117
|
+
return (_jsxs("div", { "data-slot": "preview-pane", className: cn("min-h-64", className), ...props, children: [_jsxs(WebPreview, { defaultUrl: preview.url ?? "", className: "min-h-64", children: [_jsx(WebPreviewNavigation, { children: _jsx(WebPreviewUrl, { "aria-label": preview.title ?? "Preview URL", readOnly: true, value: preview.url ?? "" }) }), _jsx(WebPreviewBody, {}), preview.loadingLabel && (_jsx("span", { className: "sr-only", children: preview.loadingLabel }))] }), preview.description && (_jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: preview.description }))] }));
|
|
118
|
+
}
|
|
119
|
+
function getDiffLineClass(kind) {
|
|
120
|
+
if (kind === "added") {
|
|
121
|
+
return "bg-[var(--nc-diff-added-line)]";
|
|
122
|
+
}
|
|
123
|
+
if (kind === "removed") {
|
|
124
|
+
return "bg-[var(--nc-diff-removed-line)]";
|
|
125
|
+
}
|
|
126
|
+
if (kind === "hunk") {
|
|
127
|
+
return "bg-[var(--nc-diff-hunk)] text-muted-foreground";
|
|
128
|
+
}
|
|
129
|
+
return "bg-background";
|
|
130
|
+
}
|
|
131
|
+
function getDiffPrefix(kind) {
|
|
132
|
+
if (kind === "added") {
|
|
133
|
+
return "+";
|
|
134
|
+
}
|
|
135
|
+
if (kind === "removed") {
|
|
136
|
+
return "-";
|
|
137
|
+
}
|
|
138
|
+
return " ";
|
|
139
|
+
}
|
|
140
|
+
function DiffViewer({ lines, filePath, renderLimits, className, ...props }) {
|
|
141
|
+
const boundedLines = getBoundedLines(lines, normalizeRenderLimits(renderLimits).diffLines);
|
|
142
|
+
return (_jsxs("div", { "data-slot": "diff-viewer", className: cn("overflow-hidden rounded-md border bg-background font-mono text-sm", className), ...props, children: [filePath && (_jsx("div", { "data-slot": "diff-viewer-header", className: "border-b bg-muted/50 px-3 py-2 text-xs text-muted-foreground", children: filePath })), _jsx("div", { "data-slot": "diff-viewer-lines", className: "overflow-auto", children: boundedLines.value.map((line) => (_jsxs("div", { "data-slot": "diff-viewer-line", "data-diff-kind": line.kind, className: cn("grid grid-cols-[auto_auto_1fr]", getDiffLineClass(line.kind)), children: [_jsx("span", { className: "select-none px-3 py-1 text-right text-muted-foreground", children: line.oldLine ?? "" }), _jsx("span", { className: "select-none px-3 py-1 text-right text-muted-foreground", children: line.newLine ?? "" }), _jsx("span", { className: "min-w-0 whitespace-pre-wrap px-3 py-1", children: line.redaction
|
|
143
|
+
? getAgentRedactionText(line.redaction)
|
|
144
|
+
: `${getDiffPrefix(line.kind)}${line.content}` })] }, line.id))) }), boundedLines.omitted > 0 && (_jsxs(OverflowSummary, { className: "m-3", children: [boundedLines.omitted, " diff lines not shown."] }))] }));
|
|
145
|
+
}
|
|
146
|
+
function StackTraceDisclosure({ trace, className, }) {
|
|
147
|
+
return (_jsxs(StackTrace, { trace: trace, className: className, children: [_jsxs(StackTraceHeader, { children: [_jsxs(StackTraceError, { children: [_jsx(StackTraceErrorType, {}), _jsx(StackTraceErrorMessage, {})] }), _jsx(StackTraceExpandButton, {})] }), _jsx(StackTraceContent, { children: _jsx(StackTraceFrames, { showInternalFrames: false }) })] }));
|
|
148
|
+
}
|
|
149
|
+
function TestResultsPanel({ results, }) {
|
|
150
|
+
return (_jsxs(TestResults, { summary: results.summary, children: [_jsxs(TestResultsHeader, { children: [_jsx(TestResultsSummary, {}), _jsx(TestResultsDuration, {})] }), _jsxs(TestResultsContent, { children: [_jsx(TestResultsProgress, {}), results.suites?.map((suite) => (_jsxs(TestSuite, { name: suite.name, status: suite.status, children: [_jsxs(TestSuiteName, { children: [suite.name, _jsx(TestSuiteStats, { passed: suite.passed, failed: suite.failed, skipped: suite.skipped })] }), suite.tests && (_jsx(TestSuiteContent, { children: suite.tests.map((test) => (_jsx(Test, { name: test.name, status: test.status, duration: test.duration, children: test.redaction ? (_jsx(RedactedNotice, { redaction: test.redaction })) : undefined }, test.id))) }))] }, suite.id)))] })] }));
|
|
151
|
+
}
|
|
152
|
+
function ArtifactBody({ artifact, renderLimits, children, }) {
|
|
153
|
+
const limits = normalizeRenderLimits(renderLimits);
|
|
154
|
+
if (children) {
|
|
155
|
+
return children;
|
|
156
|
+
}
|
|
157
|
+
if (artifact.redaction) {
|
|
158
|
+
return _jsx(RedactedNotice, { redaction: artifact.redaction });
|
|
159
|
+
}
|
|
160
|
+
if (artifact.kind === "code") {
|
|
161
|
+
const code = getBoundedText(artifact.content ?? "", limits.codeChars);
|
|
162
|
+
return (_jsxs("div", { className: "grid gap-2", children: [_jsx(CodeBlock, { code: code.value, language: artifact.language ?? defaultCodeLanguage, showLineNumbers: true }), code.omitted > 0 && (_jsxs(OverflowSummary, { children: [code.omitted, " code characters not shown."] }))] }));
|
|
163
|
+
}
|
|
164
|
+
if (artifact.kind === "diff") {
|
|
165
|
+
return (_jsx(DiffViewer, { lines: artifact.diff ?? [], filePath: artifact.path, renderLimits: limits }));
|
|
166
|
+
}
|
|
167
|
+
if (artifact.kind === "terminal") {
|
|
168
|
+
return (_jsx(TerminalPanel, { transcript: artifact.terminal ?? {}, status: artifact.status, renderLimits: limits }));
|
|
169
|
+
}
|
|
170
|
+
if (artifact.kind === "preview") {
|
|
171
|
+
return _jsx(PreviewPane, { preview: artifact.preview ?? {} });
|
|
172
|
+
}
|
|
173
|
+
if (artifact.kind === "stack-trace" && artifact.stackTrace) {
|
|
174
|
+
return _jsx(StackTraceDisclosure, { trace: artifact.stackTrace });
|
|
175
|
+
}
|
|
176
|
+
if (artifact.kind === "test-results" && artifact.testResults) {
|
|
177
|
+
return _jsx(TestResultsPanel, { results: artifact.testResults });
|
|
178
|
+
}
|
|
179
|
+
if (artifact.content) {
|
|
180
|
+
const content = getBoundedText(artifact.content, limits.textChars);
|
|
181
|
+
return (_jsxs("div", { className: "grid gap-2", children: [_jsx("div", { className: "whitespace-pre-wrap text-sm text-foreground", children: content.value }), content.omitted > 0 && (_jsxs(OverflowSummary, { children: [content.omitted, " text characters not shown."] }))] }));
|
|
182
|
+
}
|
|
183
|
+
return (_jsx(FeedbackState, { status: "empty", title: "No artifact content", compact: true, className: "rounded-md border-0 bg-transparent" }));
|
|
184
|
+
}
|
|
185
|
+
function ArtifactPanel({ artifact, actions, renderLimits, children, className, ...props }) {
|
|
186
|
+
const Icon = artifactIcons[artifact.kind];
|
|
187
|
+
return (_jsxs(Artifact, { "data-slot": "artifact-panel", "data-artifact-kind": artifact.kind, "data-artifact-status": artifact.status, className: className, ...props, children: [_jsxs(ArtifactHeader, { children: [_jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [_jsxs(ArtifactTitle, { className: "flex items-center gap-2", children: [_jsx(Icon, { className: "size-4 text-muted-foreground" }), _jsx("span", { className: "truncate", children: artifact.title }), artifact.status && (_jsx(Badge, { variant: "secondary", children: artifactStatusLabels[artifact.status] }))] }), (artifact.description || artifact.path) && (_jsx(ArtifactDescription, { children: artifact.description ?? artifact.path }))] }), actions && _jsx(ArtifactActions, { children: actions })] }), _jsx(ArtifactContent, { children: _jsx(ArtifactBody, { artifact: artifact, renderLimits: renderLimits, children: children }) })] }));
|
|
188
|
+
}
|
|
189
|
+
export { ArtifactPanel, DiffViewer, PreviewPane, RedactedNotice, StackTraceDisclosure, TerminalPanel, TestResultsPanel, };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aspect-ratio.d.ts","sourceRoot":"","sources":["../../src/components/aspect-ratio.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE9D,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,+BAExD;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { AspectRatio as AspectRatioPrimitive } from "radix-ui";
|
|
4
|
+
function AspectRatio({ ...props }) {
|
|
5
|
+
return _jsx(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
|
|
6
|
+
}
|
|
7
|
+
export { AspectRatio };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Input } from "./input";
|
|
3
|
+
import { SettingsField, SettingsSection } from "./settings-section";
|
|
4
|
+
type AutomationStatus = "ready" | "running" | "paused" | "error" | "disabled";
|
|
5
|
+
type AutomationItem = {
|
|
6
|
+
id: string;
|
|
7
|
+
title: React.ReactNode;
|
|
8
|
+
description?: React.ReactNode;
|
|
9
|
+
status?: AutomationStatus;
|
|
10
|
+
enabled?: boolean;
|
|
11
|
+
meta?: React.ReactNode;
|
|
12
|
+
actions?: React.ReactNode;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
toggleLabel?: string;
|
|
15
|
+
};
|
|
16
|
+
type AutomationSectionProps = Omit<React.ComponentProps<"section">, "title"> & {
|
|
17
|
+
title?: React.ReactNode;
|
|
18
|
+
description?: React.ReactNode;
|
|
19
|
+
actions?: React.ReactNode;
|
|
20
|
+
automations?: AutomationItem[];
|
|
21
|
+
emptyTitle?: React.ReactNode;
|
|
22
|
+
emptyDescription?: React.ReactNode;
|
|
23
|
+
onAutomationEnabledChange?: (automationId: string, enabled: boolean) => void;
|
|
24
|
+
children?: React.ReactNode;
|
|
25
|
+
};
|
|
26
|
+
type AutomationSettingsField = {
|
|
27
|
+
id: string;
|
|
28
|
+
label: React.ReactNode;
|
|
29
|
+
description?: React.ReactNode;
|
|
30
|
+
error?: React.ReactNode;
|
|
31
|
+
invalid?: boolean;
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
required?: boolean;
|
|
34
|
+
value?: string;
|
|
35
|
+
placeholder?: string;
|
|
36
|
+
type?: React.ComponentProps<typeof Input>["type"];
|
|
37
|
+
control?: React.ComponentProps<typeof SettingsField>["children"];
|
|
38
|
+
};
|
|
39
|
+
type ProviderSettingsProps = Omit<React.ComponentProps<typeof SettingsSection>, "children"> & {
|
|
40
|
+
fields: AutomationSettingsField[];
|
|
41
|
+
};
|
|
42
|
+
type McpServerStatus = "connected" | "review" | "error" | "disabled";
|
|
43
|
+
type McpServerSetting = {
|
|
44
|
+
id: string;
|
|
45
|
+
label: React.ReactNode;
|
|
46
|
+
description?: React.ReactNode;
|
|
47
|
+
status?: McpServerStatus;
|
|
48
|
+
enabled?: boolean;
|
|
49
|
+
disabled?: boolean;
|
|
50
|
+
error?: React.ReactNode;
|
|
51
|
+
actions?: React.ReactNode;
|
|
52
|
+
};
|
|
53
|
+
type McpServerSettingsProps = Omit<React.ComponentProps<typeof SettingsSection>, "children"> & {
|
|
54
|
+
servers: McpServerSetting[];
|
|
55
|
+
onServerEnabledChange?: (serverId: string, enabled: boolean) => void;
|
|
56
|
+
};
|
|
57
|
+
type EnvironmentVariableState = "configured" | "missing" | "invalid";
|
|
58
|
+
type EnvironmentVariableSetting = {
|
|
59
|
+
id: string;
|
|
60
|
+
name: string;
|
|
61
|
+
description?: React.ReactNode;
|
|
62
|
+
state?: EnvironmentVariableState;
|
|
63
|
+
required?: boolean;
|
|
64
|
+
error?: React.ReactNode;
|
|
65
|
+
actions?: React.ReactNode;
|
|
66
|
+
};
|
|
67
|
+
type EnvironmentVariablesSettingsProps = Omit<React.ComponentProps<typeof SettingsSection>, "children"> & {
|
|
68
|
+
variables: EnvironmentVariableSetting[];
|
|
69
|
+
};
|
|
70
|
+
declare function AutomationSection({ title, description, actions, automations, emptyTitle, emptyDescription, onAutomationEnabledChange, children, className, ...props }: AutomationSectionProps): React.JSX.Element;
|
|
71
|
+
declare function ProviderSettings({ fields, title, description, ...props }: ProviderSettingsProps): React.JSX.Element;
|
|
72
|
+
declare function McpServerSettings({ servers, title, description, onServerEnabledChange, ...props }: McpServerSettingsProps): React.JSX.Element;
|
|
73
|
+
declare function EnvironmentVariablesSettings({ variables, title, description, ...props }: EnvironmentVariablesSettingsProps): React.JSX.Element;
|
|
74
|
+
export { AutomationSection, EnvironmentVariablesSettings, McpServerSettings, ProviderSettings, };
|
|
75
|
+
export type { AutomationItem, AutomationSectionProps, AutomationSettingsField, AutomationStatus, EnvironmentVariableSetting, EnvironmentVariableState, EnvironmentVariablesSettingsProps, McpServerSetting, McpServerSettingsProps, McpServerStatus, ProviderSettingsProps, };
|
|
76
|
+
//# sourceMappingURL=automation-section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation-section.d.ts","sourceRoot":"","sources":["../../src/components/automation-section.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { AlertTriangleIcon, CheckCircleIcon, LoaderCircleIcon, PauseCircleIcon, } from "lucide-react";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
import { Badge } from "./badge.js";
|
|
6
|
+
import { FeedbackState } from "./feedback-state.js";
|
|
7
|
+
import { Input } from "./input.js";
|
|
8
|
+
import { Item, ItemActions, ItemContent, ItemDescription, ItemGroup, ItemMedia, ItemTitle, } from "./item.js";
|
|
9
|
+
import { SettingsField, SettingsSection } from "./settings-section.js";
|
|
10
|
+
import { Switch } from "./switch.js";
|
|
11
|
+
const automationStatusLabels = {
|
|
12
|
+
ready: "Ready",
|
|
13
|
+
running: "Running",
|
|
14
|
+
paused: "Paused",
|
|
15
|
+
error: "Needs review",
|
|
16
|
+
disabled: "Disabled",
|
|
17
|
+
};
|
|
18
|
+
const automationStatusVariants = {
|
|
19
|
+
ready: "secondary",
|
|
20
|
+
running: "default",
|
|
21
|
+
paused: "outline",
|
|
22
|
+
error: "destructive",
|
|
23
|
+
disabled: "outline",
|
|
24
|
+
};
|
|
25
|
+
const automationStatusIcons = {
|
|
26
|
+
ready: _jsx(CheckCircleIcon, { className: "size-4" }),
|
|
27
|
+
running: _jsx(LoaderCircleIcon, { className: "size-4 animate-spin" }),
|
|
28
|
+
paused: _jsx(PauseCircleIcon, { className: "size-4" }),
|
|
29
|
+
error: _jsx(AlertTriangleIcon, { className: "size-4" }),
|
|
30
|
+
disabled: _jsx(PauseCircleIcon, { className: "size-4" }),
|
|
31
|
+
};
|
|
32
|
+
const mcpStatusLabels = {
|
|
33
|
+
connected: "Connected",
|
|
34
|
+
review: "Review",
|
|
35
|
+
error: "Error",
|
|
36
|
+
disabled: "Disabled",
|
|
37
|
+
};
|
|
38
|
+
const mcpStatusVariants = {
|
|
39
|
+
connected: "secondary",
|
|
40
|
+
review: "outline",
|
|
41
|
+
error: "destructive",
|
|
42
|
+
disabled: "outline",
|
|
43
|
+
};
|
|
44
|
+
const environmentStateLabels = {
|
|
45
|
+
configured: "Configured",
|
|
46
|
+
missing: "Missing",
|
|
47
|
+
invalid: "Needs review",
|
|
48
|
+
};
|
|
49
|
+
const environmentStateVariants = {
|
|
50
|
+
configured: "secondary",
|
|
51
|
+
missing: "outline",
|
|
52
|
+
invalid: "destructive",
|
|
53
|
+
};
|
|
54
|
+
function AutomationSection({ title, description, actions, automations = [], emptyTitle = "No automations configured", emptyDescription = "Add automation rows from the consuming app when there is work to run.", onAutomationEnabledChange, children, className, ...props }) {
|
|
55
|
+
return (_jsxs("section", { "data-slot": "automation-section", className: cn("grid gap-5 rounded-lg border bg-background p-5", className), ...props, children: [(title || description || actions) && (_jsxs("div", { "data-slot": "automation-section-header", className: "flex flex-wrap items-start justify-between gap-3", children: [_jsxs("div", { className: "grid gap-1", children: [title && (_jsx("h2", { "data-slot": "automation-section-title", className: "text-base font-semibold", children: title })), description && (_jsx("p", { "data-slot": "automation-section-description", className: "text-sm text-muted-foreground", children: description }))] }), actions && (_jsx("div", { "data-slot": "automation-section-actions", children: actions }))] })), automations.length > 0 ? (_jsx(ItemGroup, { "data-slot": "automation-section-items", className: "gap-2", children: automations.map((automation) => {
|
|
56
|
+
const status = automation.status ?? "ready";
|
|
57
|
+
return (_jsxs(Item, { "data-slot": "automation-section-item", "data-status": status, "data-enabled": automation.enabled, "data-disabled": automation.disabled ? true : undefined, variant: "outline", children: [_jsx(ItemMedia, { variant: "icon", "aria-hidden": "true", children: automationStatusIcons[status] }), _jsxs(ItemContent, { children: [_jsx(ItemTitle, { children: automation.title }), automation.description && (_jsx(ItemDescription, { children: automation.description })), automation.meta && (_jsx("div", { className: "text-sm text-muted-foreground", children: automation.meta }))] }), _jsxs(ItemActions, { children: [_jsx(Badge, { variant: automationStatusVariants[status], children: automationStatusLabels[status] }), _jsx(Switch, { "aria-label": automation.toggleLabel ?? "Toggle automation", checked: Boolean(automation.enabled), disabled: automation.disabled, onCheckedChange: (enabled) => onAutomationEnabledChange?.(automation.id, enabled) }), automation.actions] })] }, automation.id));
|
|
58
|
+
}) })) : (_jsx(FeedbackState, { "data-slot": "automation-section-empty", status: "empty", title: emptyTitle, description: emptyDescription, compact: true, className: "rounded-md" })), children] }));
|
|
59
|
+
}
|
|
60
|
+
function renderAutomationSettingsField(field) {
|
|
61
|
+
return (_jsx(SettingsField, { id: field.id, label: field.label, description: field.description, error: field.error, invalid: field.invalid, disabled: field.disabled, required: field.required, children: field.control ??
|
|
62
|
+
(({ controlProps }) => (_jsx(Input, { ...controlProps, type: field.type, value: field.value ?? "", placeholder: field.placeholder, readOnly: true }))) }, field.id));
|
|
63
|
+
}
|
|
64
|
+
function ProviderSettings({ fields, title = "Provider settings", description = "Provider choices and limits are supplied by the consuming app.", ...props }) {
|
|
65
|
+
return (_jsx("div", { "data-slot": "provider-settings", children: _jsx(SettingsSection, { title: title, description: description, ...props, children: fields.map(renderAutomationSettingsField) }) }));
|
|
66
|
+
}
|
|
67
|
+
function McpServerSettings({ servers, title = "MCP servers", description = "Server availability and permission state are controlled by the consuming app.", onServerEnabledChange, ...props }) {
|
|
68
|
+
return (_jsx("div", { "data-slot": "mcp-server-settings", children: _jsx(SettingsSection, { title: title, description: description, ...props, children: servers.map((server) => {
|
|
69
|
+
const status = server.status ?? "review";
|
|
70
|
+
return (_jsx(SettingsField, { id: server.id, label: server.label, description: server.description, error: server.error, invalid: status === "error" || Boolean(server.error), disabled: server.disabled, controlClassName: "gap-2", children: ({ controlProps }) => (_jsxs(_Fragment, { children: [_jsx(Badge, { variant: mcpStatusVariants[status], children: mcpStatusLabels[status] }), _jsx(Switch, { ...controlProps, checked: Boolean(server.enabled), onCheckedChange: (enabled) => onServerEnabledChange?.(server.id, enabled) }), server.actions] })) }, server.id));
|
|
71
|
+
}) }) }));
|
|
72
|
+
}
|
|
73
|
+
function EnvironmentVariablesSettings({ variables, title = "Environment variables", description = "Only variable names and redacted state are shown here.", ...props }) {
|
|
74
|
+
return (_jsx("div", { "data-slot": "environment-variables-settings", children: _jsx(SettingsSection, { title: title, description: description, ...props, children: variables.map((variable) => {
|
|
75
|
+
const state = variable.state ?? "missing";
|
|
76
|
+
const valueLabel = state === "configured" ? "Value redacted" : "No value shown";
|
|
77
|
+
return (_jsx(SettingsField, { id: variable.id, label: variable.name, description: variable.description, error: variable.error, invalid: state === "invalid" || Boolean(variable.error), required: variable.required, controlClassName: "gap-2", children: ({ controlProps }) => (_jsxs(_Fragment, { children: [_jsx(Input, { ...controlProps, value: valueLabel, readOnly: true, "aria-label": `${variable.name} redacted value state` }), _jsx(Badge, { variant: environmentStateVariants[state], children: environmentStateLabels[state] }), variable.actions] })) }, variable.id));
|
|
78
|
+
}) }) }));
|
|
79
|
+
}
|
|
80
|
+
export { AutomationSection, EnvironmentVariablesSettings, McpServerSettings, ProviderSettings, };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Avatar as AvatarPrimitive } from "radix-ui";
|
|
3
|
+
declare function Avatar({ className, size, ...props }: React.ComponentProps<typeof AvatarPrimitive.Root> & {
|
|
4
|
+
size?: "default" | "sm" | "lg";
|
|
5
|
+
}): React.JSX.Element;
|
|
6
|
+
declare function AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>): React.JSX.Element;
|
|
7
|
+
declare function AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>): React.JSX.Element;
|
|
8
|
+
declare function AvatarBadge({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
9
|
+
declare function AvatarGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
10
|
+
declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
11
|
+
export { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount, };
|
|
12
|
+
//# sourceMappingURL=avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/components/avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AAIpD,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;CAC/B,qBAYA;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,qBAQpD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,QAAQ,CAAC,qBAWvD;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAczE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWxE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAgB,GACjB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Avatar as AvatarPrimitive } from "radix-ui";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
function Avatar({ className, size = "default", ...props }) {
|
|
6
|
+
return (_jsx(AvatarPrimitive.Root, { "data-slot": "avatar", "data-size": size, className: cn("group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6", className), ...props }));
|
|
7
|
+
}
|
|
8
|
+
function AvatarImage({ className, ...props }) {
|
|
9
|
+
return (_jsx(AvatarPrimitive.Image, { "data-slot": "avatar-image", className: cn("aspect-square size-full", className), ...props }));
|
|
10
|
+
}
|
|
11
|
+
function AvatarFallback({ className, ...props }) {
|
|
12
|
+
return (_jsx(AvatarPrimitive.Fallback, { "data-slot": "avatar-fallback", className: cn("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs", className), ...props }));
|
|
13
|
+
}
|
|
14
|
+
function AvatarBadge({ className, ...props }) {
|
|
15
|
+
return (_jsx("span", { "data-slot": "avatar-badge", className: cn("absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", className), ...props }));
|
|
16
|
+
}
|
|
17
|
+
function AvatarGroup({ className, ...props }) {
|
|
18
|
+
return (_jsx("div", { "data-slot": "avatar-group", className: cn("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background", className), ...props }));
|
|
19
|
+
}
|
|
20
|
+
function AvatarGroupCount({ className, ...props }) {
|
|
21
|
+
return (_jsx("div", { "data-slot": "avatar-group-count", className: cn("relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3", className), ...props }));
|
|
22
|
+
}
|
|
23
|
+
export { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount, };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const badgeVariants: (props?: ({
|
|
4
|
+
variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
declare function Badge({ className, variant, asChild, ...props }: React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
|
|
7
|
+
asChild?: boolean;
|
|
8
|
+
}): React.JSX.Element;
|
|
9
|
+
export { Badge, badgeVariants };
|
|
10
|
+
//# sourceMappingURL=badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/components/badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAKjE,QAAA,MAAM,aAAa;;8EAoBlB,CAAA;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAmB,EACnB,OAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAC7B,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qBAW3D;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { Slot } from "radix-ui";
|
|
5
|
+
import { cn } from "../lib/utils.js";
|
|
6
|
+
const badgeVariants = cva("inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&>svg]:pointer-events-none [&>svg]:size-3", {
|
|
7
|
+
variants: {
|
|
8
|
+
variant: {
|
|
9
|
+
default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
10
|
+
secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
11
|
+
destructive: "bg-destructive text-destructive-foreground focus-visible:ring-destructive/20 [a&]:hover:bg-destructive/90",
|
|
12
|
+
outline: "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
|
13
|
+
ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
|
14
|
+
link: "text-primary underline-offset-4 [a&]:hover:underline",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
defaultVariants: {
|
|
18
|
+
variant: "default",
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
function Badge({ className, variant = "default", asChild = false, ...props }) {
|
|
22
|
+
const Comp = asChild ? Slot.Root : "span";
|
|
23
|
+
return (_jsx(Comp, { "data-slot": "badge", "data-variant": variant, className: cn(badgeVariants({ variant }), className), ...props }));
|
|
24
|
+
}
|
|
25
|
+
export { Badge, badgeVariants };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type BenefitItem = {
|
|
3
|
+
title: string;
|
|
4
|
+
body: string;
|
|
5
|
+
};
|
|
6
|
+
declare function BenefitsBento({ kicker, title, body, image, benefits, ...props }: React.ComponentProps<"div"> & {
|
|
7
|
+
kicker: string;
|
|
8
|
+
title: string;
|
|
9
|
+
body: string;
|
|
10
|
+
image: React.ReactNode;
|
|
11
|
+
benefits: BenefitItem[];
|
|
12
|
+
}): React.JSX.Element;
|
|
13
|
+
export { BenefitsBento };
|
|
14
|
+
export type { BenefitItem };
|
|
15
|
+
//# sourceMappingURL=benefits-bento.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benefits-bento.d.ts","sourceRoot":"","sources":["../../src/components/benefits-bento.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,iBAAS,aAAa,CAAC,EACrB,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAA;CACxB,qBA6BA;AAED,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB,YAAY,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Bento, BentoItem } from "./bento.js";
|
|
3
|
+
function BenefitsBento({ kicker, title, body, image, benefits, ...props }) {
|
|
4
|
+
return (_jsx("div", { "data-slot": "benefits-bento", ...props, children: _jsxs(Bento, { columns: 2, children: [_jsx(BentoItem, { flush: true, stretch: true, children: image }), _jsxs(BentoItem, { children: [_jsx("p", { className: "nc-type-caption-mono text-muted-foreground uppercase", children: kicker }), _jsx("h2", { className: "nc-type-title-md text-foreground", children: title }), _jsx("p", { className: "nc-type-body-md text-muted-foreground", children: body }), _jsx("div", { className: "grid gap-4 pt-2 sm:grid-cols-2", children: benefits.map((benefit) => (_jsxs("div", { className: "grid gap-1", children: [_jsx("h3", { className: "nc-type-body-md-strong text-foreground", children: benefit.title }), _jsx("p", { className: "nc-type-body-sm text-muted-foreground", children: benefit.body })] }, benefit.title))) })] })] }) }));
|
|
5
|
+
}
|
|
6
|
+
export { BenefitsBento };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* bento — NadicodeAI's bordered marketing grid grammar.
|
|
4
|
+
*
|
|
5
|
+
* This is the reusable shadcn-style source component for bento sections. The
|
|
6
|
+
* grid owns seams once (`gap-px bg-border`); cells are borderless fills. Pages
|
|
7
|
+
* choose content and spans, not border math.
|
|
8
|
+
*/
|
|
9
|
+
declare const spanClasses: Record<number, string>;
|
|
10
|
+
declare const columnClasses: Record<number, string>;
|
|
11
|
+
declare function Bento({ className, height, columns, ...props }: React.ComponentProps<"div"> & {
|
|
12
|
+
height?: "auto" | "primary" | "secondary";
|
|
13
|
+
columns?: keyof typeof columnClasses;
|
|
14
|
+
}): React.JSX.Element;
|
|
15
|
+
declare function BentoItem({ className, span, surface, flush, stretch, ...props }: React.ComponentProps<"div"> & {
|
|
16
|
+
span?: keyof typeof spanClasses;
|
|
17
|
+
surface?: "card" | "soft" | "transparent";
|
|
18
|
+
flush?: boolean;
|
|
19
|
+
stretch?: boolean;
|
|
20
|
+
}): React.JSX.Element;
|
|
21
|
+
declare function BentoCopy({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
22
|
+
declare function BentoMedia({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
23
|
+
declare function BentoDemo({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
24
|
+
declare function BentoDivider({ label, className, ...props }: React.ComponentProps<"div"> & {
|
|
25
|
+
label?: string;
|
|
26
|
+
}): React.JSX.Element;
|
|
27
|
+
export { Bento, BentoItem, BentoCopy, BentoMedia, BentoDemo, BentoDivider };
|
|
28
|
+
//# sourceMappingURL=bento.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bento.d.ts","sourceRoot":"","sources":["../../src/components/bento.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;GAMG;AAEH,QAAA,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAavC,CAAA;AAED,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKzC,CAAA;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,MAAe,EACf,OAAY,EACZ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAA;IACzC,OAAO,CAAC,EAAE,MAAM,OAAO,aAAa,CAAA;CACrC,qBAeA;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,IAAI,EACJ,OAAgB,EAChB,KAAa,EACb,OAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,OAAO,WAAW,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAA;IACzC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,qBAiBA;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQtE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQvE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQtE;AAED,iBAAS,YAAY,CAAC,EACpB,KAAK,EACL,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,qBAgBlD;AAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* bento — NadicodeAI's bordered marketing grid grammar.
|
|
5
|
+
*
|
|
6
|
+
* This is the reusable shadcn-style source component for bento sections. The
|
|
7
|
+
* grid owns seams once (`gap-px bg-border`); cells are borderless fills. Pages
|
|
8
|
+
* choose content and spans, not border math.
|
|
9
|
+
*/
|
|
10
|
+
const spanClasses = {
|
|
11
|
+
1: "lg:col-span-1",
|
|
12
|
+
2: "lg:col-span-2",
|
|
13
|
+
3: "lg:col-span-3",
|
|
14
|
+
4: "lg:col-span-4",
|
|
15
|
+
5: "lg:col-span-5",
|
|
16
|
+
6: "lg:col-span-6",
|
|
17
|
+
7: "lg:col-span-7",
|
|
18
|
+
8: "lg:col-span-8",
|
|
19
|
+
9: "lg:col-span-9",
|
|
20
|
+
10: "lg:col-span-10",
|
|
21
|
+
11: "lg:col-span-11",
|
|
22
|
+
12: "lg:col-span-12",
|
|
23
|
+
};
|
|
24
|
+
const columnClasses = {
|
|
25
|
+
2: "grid-cols-1 md:grid-cols-2",
|
|
26
|
+
3: "grid-cols-1 md:grid-cols-3",
|
|
27
|
+
4: "grid-cols-1 md:grid-cols-4",
|
|
28
|
+
12: "grid-cols-1 lg:grid-cols-12",
|
|
29
|
+
};
|
|
30
|
+
function Bento({ className, height = "auto", columns = 12, ...props }) {
|
|
31
|
+
return (_jsx("div", { "data-slot": "bento", "data-height": height, className: cn("grid items-stretch gap-px bg-border", columnClasses[columns], height === "primary" && "lg:h-[var(--nc-h-bento-primary)]", height === "secondary" && "lg:h-[var(--nc-h-bento-secondary)]", className), ...props }));
|
|
32
|
+
}
|
|
33
|
+
function BentoItem({ className, span, surface = "card", flush = false, stretch = false, ...props }) {
|
|
34
|
+
return (_jsx("div", { "data-slot": "bento-item", "data-surface": surface, className: cn("nc-panel-cell relative min-w-0 overflow-hidden", span ? spanClasses[span] : null, surface === "card" && "bg-card", surface === "soft" && "bg-[var(--nc-canvas-soft)]", flush && "!p-0", stretch && "items-stretch ![align-content:stretch] ![grid-template-rows:minmax(0,1fr)]", className), ...props }));
|
|
35
|
+
}
|
|
36
|
+
function BentoCopy({ className, ...props }) {
|
|
37
|
+
return (_jsx("div", { "data-slot": "bento-copy", className: cn("relative z-10 grid gap-4", className), ...props }));
|
|
38
|
+
}
|
|
39
|
+
function BentoMedia({ className, ...props }) {
|
|
40
|
+
return (_jsx("div", { "data-slot": "bento-media", className: cn("grid min-h-0 items-stretch", className), ...props }));
|
|
41
|
+
}
|
|
42
|
+
function BentoDemo({ className, ...props }) {
|
|
43
|
+
return (_jsx("div", { "data-slot": "bento-demo", className: cn("grid min-h-0 items-stretch", className), ...props }));
|
|
44
|
+
}
|
|
45
|
+
function BentoDivider({ label, className, ...props }) {
|
|
46
|
+
return (_jsx("div", { "data-slot": "bento-divider", className: cn("grid bg-card", className), ...props, children: _jsx("div", { className: "nc-dotted-field grid min-h-[calc(var(--nc-h-bento-strip)*2)] place-items-center bg-card", children: label ? (_jsx("span", { className: "nc-type-caption-mono text-muted-foreground uppercase", children: label })) : null }) }));
|
|
47
|
+
}
|
|
48
|
+
export { Bento, BentoItem, BentoCopy, BentoMedia, BentoDemo, BentoDivider };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type BrandLogoProps = Omit<React.ComponentProps<"svg">, "aria-hidden" | "aria-label" | "children" | "role"> & {
|
|
3
|
+
alt?: string;
|
|
4
|
+
decoding?: React.ComponentProps<"img">["decoding"];
|
|
5
|
+
};
|
|
6
|
+
declare function BrandMark({ alt, className, width, height, decoding, ...props }: BrandLogoProps): React.JSX.Element;
|
|
7
|
+
declare function BrandWordmark({ alt, className, width, height, decoding, ...props }: BrandLogoProps): React.JSX.Element;
|
|
8
|
+
export { BrandMark, BrandWordmark };
|
|
9
|
+
//# sourceMappingURL=brand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/components/brand.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,cAAc,GAAG,IAAI,CACxB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAC3B,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CACnD,GAAG;IACF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAA;CACnD,CAAA;AAWD,iBAAS,SAAS,CAAC,EACjB,GAAkB,EAClB,SAAS,EACT,KAAU,EACV,MAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,qBAyBhB;AAED,iBAAS,aAAa,CAAC,EACrB,GAAkB,EAClB,SAAS,EACT,KAAU,EACV,MAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,qBAqChB;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
function accessibilityProps(alt) {
|
|
4
|
+
return alt
|
|
5
|
+
? { role: "img", "aria-label": alt }
|
|
6
|
+
: { "aria-hidden": true };
|
|
7
|
+
}
|
|
8
|
+
function BrandMark({ alt = "NadicodeAI", className, width = 32, height = 32, decoding, ...props }) {
|
|
9
|
+
void decoding;
|
|
10
|
+
return (_jsxs("svg", { "data-slot": "brand-mark", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 160 160", width: width, height: height, className: cn("block size-6", className), ...accessibilityProps(alt), ...props, children: [_jsx("defs", { children: _jsxs("linearGradient", { id: "nc-agent", x1: "0", y1: "0", x2: "1", y2: "1", children: [_jsx("stop", { offset: "0", stopColor: "var(--nc-link-deep)" }), _jsx("stop", { offset: "0.55", stopColor: "var(--nc-link)" }), _jsx("stop", { offset: "1", stopColor: "var(--nc-success)" })] }) }), _jsx("path", { d: "M 65.8 46 H 100 V 104.3 Z", fill: "currentColor" }), _jsx("path", { d: "M 60 55.9 V 114 H 94.2 Z", fill: "url(#nc-agent)" })] }));
|
|
11
|
+
}
|
|
12
|
+
function BrandWordmark({ alt = "NadicodeAI", className, width = 96, height = 30, decoding, ...props }) {
|
|
13
|
+
void decoding;
|
|
14
|
+
return (_jsxs("svg", { "data-slot": "brand-wordmark", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 320 100", width: width, height: height, className: cn("block h-6 w-auto", className), ...accessibilityProps(alt), ...props, children: [_jsx("defs", { children: _jsxs("linearGradient", { id: "nc-agent-w", x1: "0", y1: "0", x2: "1", y2: "1", children: [_jsx("stop", { offset: "0", stopColor: "var(--nc-link-deep)" }), _jsx("stop", { offset: "0.55", stopColor: "var(--nc-link)" }), _jsx("stop", { offset: "1", stopColor: "var(--nc-success)" })] }) }), _jsxs("g", { fill: "currentColor", transform: "translate(0 76) scale(0.06 -0.06)", children: [_jsx("path", { transform: "translate(0 0)", d: "M74 0L74 710L242 710L524 220L524 710L676 710L676 0L506 0L226 473L226 0Z" }), _jsx("path", { transform: "translate(706.867 0)", d: "M225 -12Q142 -12 89.5 26.5Q37 65 37 134Q37 205 81.5 243.5Q126 282 213 300L386 334Q386 386 362.5 412.5Q339 439 295 439Q252 439 228 419.5Q204 400 197 362L46 369Q61 457 125.5 502.5Q190 548 295 548Q415 548 475.5 491Q536 434 536 324L536 141Q536 118 543.5 110.5Q551 103 566 103L581 103L581 0Q574 -2 558.5 -4Q543 -6 528 -6Q496 -6 468.5 5Q441 16 424 42.5Q407 69 407 118L420 108Q410 72 384.5 45Q359 18 318.5 3Q278 -12 225 -12ZM261 91Q298 91 326 105.5Q354 120 370 148Q386 176 386 214L386 240L264 214Q228 207 209.5 190.5Q191 174 191 148Q191 121 209 106Q227 91 261 91Z" }), _jsx("path", { transform: "translate(1258.133 0)", d: "M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z" }), _jsx("path", { transform: "translate(1844.8 0)", d: "M66 0L66 536L216 536L216 0ZM63 602L63 722L218 722L218 602Z" }), _jsx("path", { transform: "translate(2082.667 0)", d: "M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q380 548 436.5 523Q493 498 528 451Q563 404 571 338L416 331Q409 381 380.5 406.5Q352 432 309 432Q253 432 222 389Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Q352 103 381 129.5Q410 156 416 210L571 204Q564 138 529.5 89.5Q495 41 438.5 14.5Q382 -12 309 -12Z" }), _jsx("path", { transform: "translate(2636.933 0)", d: "M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q391 548 452 513Q513 478 547 415.5Q581 353 581 268Q581 183 547 120Q513 57 452 22.5Q391 -12 309 -12ZM309 103Q365 103 396 146.5Q427 190 427 268Q427 346 396 389.5Q365 433 309 433Q253 433 222 389.5Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Z" }), _jsx("path", { transform: "translate(3211.6 0)", d: "M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z" }), _jsx("path", { transform: "translate(3802.267 0)", d: "M307 -12Q225 -12 164.5 22.5Q104 57 70.5 120Q37 183 37 268Q37 353 70.5 415.5Q104 478 164 513Q224 548 306 548Q386 548 445 513Q504 478 536.5 413Q569 348 569 258L569 228L192 228Q195 164 226.5 133Q258 102 310 102Q348 102 373.5 118Q399 134 410 167L561 158Q540 78 472 33Q404 -12 307 -12ZM192 320L415 320Q412 379 382.5 408Q353 437 306 437Q259 437 228.5 406.5Q198 376 192 320Z" })] }), _jsxs("g", { fill: "url(#nc-agent-w)", transform: "translate(259 76) scale(0.06 -0.06)", children: [_jsx("path", { transform: "translate(0 0)", d: "M19 0L275 710L455 710L711 0L553 0L501 151L228 151L176 0ZM271 276L459 276L365 550Z" }), _jsx("path", { transform: "translate(670.467 0)", d: "M74 0L74 710L226 710L226 0Z" })] })] }));
|
|
15
|
+
}
|
|
16
|
+
export { BrandMark, BrandWordmark };
|