@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,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDownIcon } from "lucide-react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
function NativeSelect({ className, size = "default", ...props }) {
|
|
5
|
+
return (_jsxs("div", { className: "group/native-select relative w-fit has-[select:disabled]:opacity-50", "data-slot": "native-select-wrapper", children: [_jsx("select", { "data-slot": "native-select", "data-size": size, className: cn("h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1", "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50", "aria-invalid:border-destructive aria-invalid:ring-destructive/20", className), ...props }), _jsx(ChevronDownIcon, { className: "pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-muted-foreground opacity-50 select-none", "aria-hidden": "true", "data-slot": "native-select-icon" })] }));
|
|
6
|
+
}
|
|
7
|
+
function NativeSelectOption({ className, ...props }) {
|
|
8
|
+
return (_jsx("option", { "data-slot": "native-select-option", className: cn("bg-[Canvas] text-[CanvasText]", className), ...props }));
|
|
9
|
+
}
|
|
10
|
+
function NativeSelectOptGroup({ className, ...props }) {
|
|
11
|
+
return (_jsx("optgroup", { "data-slot": "native-select-optgroup", className: cn("bg-[Canvas] text-[CanvasText]", className), ...props }));
|
|
12
|
+
}
|
|
13
|
+
export { NativeSelect, NativeSelectOptGroup, NativeSelectOption };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* nav-bar — sticky top navigation chrome (replaces the retired `.nc-nav-bar`).
|
|
4
|
+
*
|
|
5
|
+
* A three-track grid (`1fr auto 1fr`): logo lockup leading, route links centered,
|
|
6
|
+
* CTA cluster trailing. SINGLE-OWNER SEAM: the only edge it owns is its bottom
|
|
7
|
+
* border (`border-b border-border`) — it draws no other line. The surface is the
|
|
8
|
+
* translucent canvas + blur (an 8% transparency mix of the brand canvas), so the
|
|
9
|
+
* chrome reads as one continuous bar. Below ~960px the centered links slot hides and
|
|
10
|
+
* the grid collapses to logo + CTA.
|
|
11
|
+
*
|
|
12
|
+
* A11y: links/triggers expose a `--ring` (link-green) focus outline; the consumer
|
|
13
|
+
* wraps this in a `<nav aria-label>`. Token-only; no `dark:` styling.
|
|
14
|
+
*/
|
|
15
|
+
declare function NavBar({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
16
|
+
declare function NavBarLogo({ className, ...props }: React.ComponentProps<"a">): React.JSX.Element;
|
|
17
|
+
declare function NavBarLinks({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
18
|
+
declare function NavBarCta({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
19
|
+
export { NavBar, NavBarLogo, NavBarLinks, NavBarCta };
|
|
20
|
+
//# sourceMappingURL=nav-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-bar.d.ts","sourceRoot":"","sources":["../../src/components/nav-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;;;;;;;GAYG;AAEH,iBAAS,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAYnE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAWrE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAexE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQtE;AAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* nav-bar — sticky top navigation chrome (replaces the retired `.nc-nav-bar`).
|
|
5
|
+
*
|
|
6
|
+
* A three-track grid (`1fr auto 1fr`): logo lockup leading, route links centered,
|
|
7
|
+
* CTA cluster trailing. SINGLE-OWNER SEAM: the only edge it owns is its bottom
|
|
8
|
+
* border (`border-b border-border`) — it draws no other line. The surface is the
|
|
9
|
+
* translucent canvas + blur (an 8% transparency mix of the brand canvas), so the
|
|
10
|
+
* chrome reads as one continuous bar. Below ~960px the centered links slot hides and
|
|
11
|
+
* the grid collapses to logo + CTA.
|
|
12
|
+
*
|
|
13
|
+
* A11y: links/triggers expose a `--ring` (link-green) focus outline; the consumer
|
|
14
|
+
* wraps this in a `<nav aria-label>`. Token-only; no `dark:` styling.
|
|
15
|
+
*/
|
|
16
|
+
function NavBar({ className, ...props }) {
|
|
17
|
+
return (_jsx("div", { "data-slot": "nav-bar", className: cn("sticky top-0 z-20 grid min-h-16 grid-cols-[1fr_auto] items-center gap-4 px-4 py-3 sm:px-6 lg:grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)]", "border-b border-border bg-[color-mix(in_srgb,var(--nc-canvas)_92%,transparent)] backdrop-blur-[18px]", className), ...props }));
|
|
18
|
+
}
|
|
19
|
+
function NavBarLogo({ className, ...props }) {
|
|
20
|
+
return (_jsx("a", { "data-slot": "nav-bar-logo", className: cn("inline-flex w-fit items-center gap-2.5 text-sm font-semibold text-foreground no-underline [&_img]:block [&_img]:h-7 [&_img]:w-auto [&_svg]:block [&_svg]:h-7 [&_svg]:w-auto", className), ...props }));
|
|
21
|
+
}
|
|
22
|
+
function NavBarLinks({ className, ...props }) {
|
|
23
|
+
return (_jsx("div", { "data-slot": "nav-bar-links", className: cn("hidden items-center justify-center gap-1 text-sm text-[var(--nc-body)] lg:inline-flex",
|
|
24
|
+
// each link reads as a flat, neutral pill with hover/focus affordance.
|
|
25
|
+
"[&_a]:rounded-[var(--nc-rounded-sm)] [&_a]:px-3 [&_a]:py-2 [&_a]:text-inherit [&_a]:no-underline", "[&_a:hover]:bg-[var(--nc-canvas-soft-2)] [&_a:hover]:text-foreground", "[&_a:focus-visible]:outline [&_a:focus-visible]:outline-1 [&_a:focus-visible]:[outline-color:var(--ring)] [&_a:focus-visible]:outline-offset-2", className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
function NavBarCta({ className, ...props }) {
|
|
28
|
+
return (_jsx("div", { "data-slot": "nav-bar-cta", className: cn("inline-flex items-center justify-self-end", className), ...props }));
|
|
29
|
+
}
|
|
30
|
+
export { NavBar, NavBarLogo, NavBarLinks, NavBarCta };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui";
|
|
3
|
+
declare function NavigationMenu({ className, children, viewport, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
|
|
4
|
+
viewport?: boolean;
|
|
5
|
+
}): React.JSX.Element;
|
|
6
|
+
declare function NavigationMenuList({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.List>): React.JSX.Element;
|
|
7
|
+
declare function NavigationMenuItem({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Item>): React.JSX.Element;
|
|
8
|
+
declare const navigationMenuTriggerStyle: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
9
|
+
declare function NavigationMenuTrigger({ className, children, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>): React.JSX.Element;
|
|
10
|
+
declare function NavigationMenuContent({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Content>): React.JSX.Element;
|
|
11
|
+
declare function NavigationMenuViewport({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>): React.JSX.Element;
|
|
12
|
+
declare function NavigationMenuLink({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Link>): React.JSX.Element;
|
|
13
|
+
declare function NavigationMenuIndicator({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>): React.JSX.Element;
|
|
14
|
+
export { NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuContent, NavigationMenuTrigger, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, navigationMenuTriggerStyle, };
|
|
15
|
+
//# sourceMappingURL=navigation-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-menu.d.ts","sourceRoot":"","sources":["../../src/components/navigation-menu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAIpE,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,QAAQ,EACR,QAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,GAAG;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,qBAeA;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,qBAW3D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,qBAQ3D;AAED,QAAA,MAAM,0BAA0B,oFAE/B,CAAA;AAED,iBAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,OAAO,CAAC,qBAc9D;AAED,iBAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,OAAO,CAAC,qBAY9D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,QAAQ,CAAC,qBAiB/D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,qBAW3D;AAED,iBAAS,uBAAuB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,SAAS,CAAC,qBAahE;AAED,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,GAC3B,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { ChevronDownIcon } from "lucide-react";
|
|
5
|
+
import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui";
|
|
6
|
+
import { cn } from "../lib/utils.js";
|
|
7
|
+
function NavigationMenu({ className, children, viewport = true, ...props }) {
|
|
8
|
+
return (_jsxs(NavigationMenuPrimitive.Root, { "data-slot": "navigation-menu", "data-viewport": viewport, className: cn("group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", className), ...props, children: [children, viewport && _jsx(NavigationMenuViewport, {})] }));
|
|
9
|
+
}
|
|
10
|
+
function NavigationMenuList({ className, ...props }) {
|
|
11
|
+
return (_jsx(NavigationMenuPrimitive.List, { "data-slot": "navigation-menu-list", className: cn("group flex flex-1 list-none items-center justify-center gap-1", className), ...props }));
|
|
12
|
+
}
|
|
13
|
+
function NavigationMenuItem({ className, ...props }) {
|
|
14
|
+
return (_jsx(NavigationMenuPrimitive.Item, { "data-slot": "navigation-menu-item", className: cn("relative", className), ...props }));
|
|
15
|
+
}
|
|
16
|
+
const navigationMenuTriggerStyle = cva("group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-[color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent");
|
|
17
|
+
function NavigationMenuTrigger({ className, children, ...props }) {
|
|
18
|
+
return (_jsxs(NavigationMenuPrimitive.Trigger, { "data-slot": "navigation-menu-trigger", className: cn(navigationMenuTriggerStyle(), "group", className), ...props, children: [children, " ", _jsx(ChevronDownIcon, { className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180", "aria-hidden": "true" })] }));
|
|
19
|
+
}
|
|
20
|
+
function NavigationMenuContent({ className, ...props }) {
|
|
21
|
+
return (_jsx(NavigationMenuPrimitive.Content, { "data-slot": "navigation-menu-content", className: cn("top-0 left-0 w-full p-2 pr-2.5 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out md:absolute md:w-auto", "group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95", className), ...props }));
|
|
22
|
+
}
|
|
23
|
+
function NavigationMenuViewport({ className, ...props }) {
|
|
24
|
+
return (_jsx("div", { className: cn("absolute top-full left-0 isolate z-50 flex justify-center"), children: _jsx(NavigationMenuPrimitive.Viewport, { "data-slot": "navigation-menu-viewport", className: cn("origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]", className), ...props }) }));
|
|
25
|
+
}
|
|
26
|
+
function NavigationMenuLink({ className, ...props }) {
|
|
27
|
+
return (_jsx(NavigationMenuPrimitive.Link, { "data-slot": "navigation-menu-link", className: cn("flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground data-[active=true]:hover:bg-accent data-[active=true]:focus:bg-accent [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground", className), ...props }));
|
|
28
|
+
}
|
|
29
|
+
function NavigationMenuIndicator({ className, ...props }) {
|
|
30
|
+
return (_jsx(NavigationMenuPrimitive.Indicator, { "data-slot": "navigation-menu-indicator", className: cn("top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in", className), ...props, children: _jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" }) }));
|
|
31
|
+
}
|
|
32
|
+
export { NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuContent, NavigationMenuTrigger, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, navigationMenuTriggerStyle, };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* newsletter — email-capture section (replaces the retired `sections/newsletter.css`
|
|
4
|
+
* + its coupled form control).
|
|
5
|
+
*
|
|
6
|
+
* Composition pattern: a centered intro over an inline email + submit row. It owns
|
|
7
|
+
* NO structural seam — the only visible borders are the caller's input control and
|
|
8
|
+
* the submit button's own edge. The frame/lane/row perimeter is owned by the kept
|
|
9
|
+
* geometry layer this composes inside. `surface="ink"` inverts the band onto the
|
|
10
|
+
* ink role; the note tint follows via a `data-slot` descendant selector (the
|
|
11
|
+
* retired CSS-cascade model), so the section stays server-renderable.
|
|
12
|
+
*
|
|
13
|
+
* Slots: `<NewsletterForm>` holds the input + button (the input grows, the button
|
|
14
|
+
* stays content-width on desktop, stacking under 640px); `<NewsletterNote>` is the
|
|
15
|
+
* consent line. The caller supplies the `Input` and `Button`. Token-only;
|
|
16
|
+
* no `dark:` styling.
|
|
17
|
+
*/
|
|
18
|
+
declare function Newsletter({ className, surface, ...props }: React.ComponentProps<"div"> & {
|
|
19
|
+
surface?: "canvas" | "ink";
|
|
20
|
+
}): React.JSX.Element;
|
|
21
|
+
declare function NewsletterForm({ className, ...props }: React.ComponentProps<"form">): React.JSX.Element;
|
|
22
|
+
declare function NewsletterNote({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
|
|
23
|
+
export { Newsletter, NewsletterForm, NewsletterNote };
|
|
24
|
+
//# sourceMappingURL=newsletter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newsletter.d.ts","sourceRoot":"","sources":["../../src/components/newsletter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;;;;;;;;;;GAeG;AAEH,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CAAE,qBAiB9D;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAY5E;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQzE;AAED,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* newsletter — email-capture section (replaces the retired `sections/newsletter.css`
|
|
5
|
+
* + its coupled form control).
|
|
6
|
+
*
|
|
7
|
+
* Composition pattern: a centered intro over an inline email + submit row. It owns
|
|
8
|
+
* NO structural seam — the only visible borders are the caller's input control and
|
|
9
|
+
* the submit button's own edge. The frame/lane/row perimeter is owned by the kept
|
|
10
|
+
* geometry layer this composes inside. `surface="ink"` inverts the band onto the
|
|
11
|
+
* ink role; the note tint follows via a `data-slot` descendant selector (the
|
|
12
|
+
* retired CSS-cascade model), so the section stays server-renderable.
|
|
13
|
+
*
|
|
14
|
+
* Slots: `<NewsletterForm>` holds the input + button (the input grows, the button
|
|
15
|
+
* stays content-width on desktop, stacking under 640px); `<NewsletterNote>` is the
|
|
16
|
+
* consent line. The caller supplies the `Input` and `Button`. Token-only;
|
|
17
|
+
* no `dark:` styling.
|
|
18
|
+
*/
|
|
19
|
+
function Newsletter({ className, surface = "canvas", ...props }) {
|
|
20
|
+
return (_jsx("div", { "data-slot": "newsletter", "data-surface": surface, className: cn("grid min-h-full min-w-0 content-center justify-items-center py-[clamp(40px,6vw,96px)] text-center", surface === "canvas" && "bg-card", surface === "ink" && [
|
|
21
|
+
"bg-primary text-primary-foreground",
|
|
22
|
+
"[&_[data-slot=newsletter-note]]:text-[color-mix(in_srgb,var(--nc-canvas)_56%,var(--nc-ink))]",
|
|
23
|
+
], className), ...props }));
|
|
24
|
+
}
|
|
25
|
+
function NewsletterForm({ className, ...props }) {
|
|
26
|
+
return (_jsx("form", { "data-slot": "newsletter-form", className: cn("mt-3 grid w-full max-w-[560px] grid-cols-1 gap-2 sm:grid-cols-[minmax(0,1fr)_auto] sm:items-center", "[&>button]:w-full sm:[&>button]:w-auto", className), ...props }));
|
|
27
|
+
}
|
|
28
|
+
function NewsletterNote({ className, ...props }) {
|
|
29
|
+
return (_jsx("p", { "data-slot": "newsletter-note", className: cn("mt-2 font-mono text-xs text-muted-foreground", className), ...props }));
|
|
30
|
+
}
|
|
31
|
+
export { Newsletter, NewsletterForm, NewsletterNote };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* page-frame — React shell for the kept design-system page geometry.
|
|
4
|
+
*
|
|
5
|
+
* The design-system owns the frame, row, lane, side-fill, rail, and marker CSS.
|
|
6
|
+
* This component gives website pages a small React vocabulary so they do not
|
|
7
|
+
* hand-author the same structure for every section. It intentionally does not
|
|
8
|
+
* replace the geometry layer; it only composes the approved classes.
|
|
9
|
+
*/
|
|
10
|
+
declare function PageSystem({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
11
|
+
declare function PageFrame({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
12
|
+
type PageMarkerPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
|
13
|
+
type PageRowProps = React.ComponentProps<"section"> & {
|
|
14
|
+
lane?: "active" | "full";
|
|
15
|
+
laneClassName?: string;
|
|
16
|
+
sideFills?: boolean;
|
|
17
|
+
marker?: PageMarkerPosition;
|
|
18
|
+
};
|
|
19
|
+
declare function PageRow({ lane, laneClassName, sideFills, marker, className, children, ...props }: PageRowProps): React.JSX.Element;
|
|
20
|
+
declare function PageLane({ lane, className, ...props }: React.ComponentProps<"div"> & {
|
|
21
|
+
lane?: "active" | "full";
|
|
22
|
+
}): React.JSX.Element;
|
|
23
|
+
declare function PageSideFill({ side, className, ...props }: React.ComponentProps<"div"> & {
|
|
24
|
+
side: "start" | "end";
|
|
25
|
+
}): React.JSX.Element;
|
|
26
|
+
declare function PageMarker({ position, className, ...props }: React.ComponentProps<"span"> & {
|
|
27
|
+
position: PageMarkerPosition;
|
|
28
|
+
}): React.JSX.Element;
|
|
29
|
+
export { PageSystem, PageFrame, PageRow, PageLane, PageSideFill, PageMarker };
|
|
30
|
+
//# sourceMappingURL=page-frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-frame.d.ts","sourceRoot":"","sources":["../../src/components/page-frame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;;GAOG;AAEH,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAEvE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQtE;AAED,KAAK,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAA;AAEnF,KAAK,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG;IACpD,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC5B,CAAA;AAED,iBAAS,OAAO,CAAC,EACf,IAAe,EACf,aAAa,EACb,SAAS,EACT,MAAM,EACN,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,YAAY,qBAiBd;AAED,iBAAS,QAAQ,CAAC,EAChB,IAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CAAE,qBAS5D;AAED,iBAAS,YAAY,CAAC,EACpB,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,EAAE,OAAO,GAAG,KAAK,CAAA;CAAE,qBASzD;AAED,iBAAS,UAAU,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IAAE,QAAQ,EAAE,kBAAkB,CAAA;CAAE,qBASjE;AAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* page-frame — React shell for the kept design-system page geometry.
|
|
5
|
+
*
|
|
6
|
+
* The design-system owns the frame, row, lane, side-fill, rail, and marker CSS.
|
|
7
|
+
* This component gives website pages a small React vocabulary so they do not
|
|
8
|
+
* hand-author the same structure for every section. It intentionally does not
|
|
9
|
+
* replace the geometry layer; it only composes the approved classes.
|
|
10
|
+
*/
|
|
11
|
+
function PageSystem({ className, ...props }) {
|
|
12
|
+
return _jsx("div", { className: cn("nc-page-system", className), ...props });
|
|
13
|
+
}
|
|
14
|
+
function PageFrame({ className, ...props }) {
|
|
15
|
+
return (_jsx("div", { "data-nc-component": "page-frame", className: cn("nc-page-frame", className), ...props }));
|
|
16
|
+
}
|
|
17
|
+
function PageRow({ lane = "active", laneClassName, sideFills, marker, className, children, ...props }) {
|
|
18
|
+
const showSideFills = sideFills ?? lane === "active";
|
|
19
|
+
return (_jsxs("section", { "data-nc-component": "page-row", className: cn("nc-page-row", className), ...props, children: [marker ? _jsx(PageMarker, { position: marker }) : null, showSideFills ? _jsx(PageSideFill, { side: "start" }) : null, _jsx(PageLane, { lane: lane, className: laneClassName, children: children }), showSideFills ? _jsx(PageSideFill, { side: "end" }) : null] }));
|
|
20
|
+
}
|
|
21
|
+
function PageLane({ lane = "active", className, ...props }) {
|
|
22
|
+
return (_jsx("div", { "data-lane": lane, "data-nc-component": lane === "active" ? "active-lane" : undefined, className: cn("nc-row-lane", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function PageSideFill({ side, className, ...props }) {
|
|
25
|
+
return (_jsx("div", { "data-side": side, className: cn("nc-side-fill", className), "aria-hidden": "true", ...props }));
|
|
26
|
+
}
|
|
27
|
+
function PageMarker({ position, className, ...props }) {
|
|
28
|
+
return (_jsx("span", { "data-position": position, className: cn("nc-marker", className), "aria-hidden": "true", ...props }));
|
|
29
|
+
}
|
|
30
|
+
export { PageSystem, PageFrame, PageRow, PageLane, PageSideFill, PageMarker };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type Button } from "./button";
|
|
3
|
+
declare function Pagination({ className, ...props }: React.ComponentProps<"nav">): React.JSX.Element;
|
|
4
|
+
declare function PaginationContent({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
|
|
5
|
+
declare function PaginationItem({ ...props }: React.ComponentProps<"li">): React.JSX.Element;
|
|
6
|
+
type PaginationLinkProps = {
|
|
7
|
+
isActive?: boolean;
|
|
8
|
+
} & Pick<React.ComponentProps<typeof Button>, "size"> & React.ComponentProps<"a">;
|
|
9
|
+
declare function PaginationLink({ className, isActive, size, ...props }: PaginationLinkProps): React.JSX.Element;
|
|
10
|
+
declare function PaginationPrevious({ className, ...props }: React.ComponentProps<typeof PaginationLink>): React.JSX.Element;
|
|
11
|
+
declare function PaginationNext({ className, ...props }: React.ComponentProps<typeof PaginationLink>): React.JSX.Element;
|
|
12
|
+
declare function PaginationEllipsis({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
13
|
+
export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, };
|
|
14
|
+
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjE,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAUvE;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ5B;AAED,iBAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAE/D;AAED,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,MAAM,CAAC,GACnD,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;AAE3B,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,QAAQ,EACR,IAAa,EACb,GAAG,KAAK,EACT,EAAE,mBAAmB,qBAgBrB;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,qBAY7C;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,qBAY7C;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAY9B;AAED,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,kBAAkB,GACnB,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon, } from "lucide-react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
import { buttonVariants } from "./button.js";
|
|
5
|
+
function Pagination({ className, ...props }) {
|
|
6
|
+
return (_jsx("nav", { role: "navigation", "aria-label": "pagination", "data-slot": "pagination", className: cn("mx-auto flex w-full justify-center", className), ...props }));
|
|
7
|
+
}
|
|
8
|
+
function PaginationContent({ className, ...props }) {
|
|
9
|
+
return (_jsx("ul", { "data-slot": "pagination-content", className: cn("flex flex-row items-center gap-1", className), ...props }));
|
|
10
|
+
}
|
|
11
|
+
function PaginationItem({ ...props }) {
|
|
12
|
+
return _jsx("li", { "data-slot": "pagination-item", ...props });
|
|
13
|
+
}
|
|
14
|
+
function PaginationLink({ className, isActive, size = "icon", ...props }) {
|
|
15
|
+
return (_jsx("a", { "aria-current": isActive ? "page" : undefined, "data-slot": "pagination-link", "data-active": isActive, className: cn(buttonVariants({
|
|
16
|
+
variant: isActive ? "outline" : "ghost",
|
|
17
|
+
size,
|
|
18
|
+
}), className), ...props }));
|
|
19
|
+
}
|
|
20
|
+
function PaginationPrevious({ className, ...props }) {
|
|
21
|
+
return (_jsxs(PaginationLink, { "aria-label": "Go to previous page", size: "default", className: cn("gap-1 px-2.5 sm:pl-2.5", className), ...props, children: [_jsx(ChevronLeftIcon, {}), _jsx("span", { className: "hidden sm:block", children: "Previous" })] }));
|
|
22
|
+
}
|
|
23
|
+
function PaginationNext({ className, ...props }) {
|
|
24
|
+
return (_jsxs(PaginationLink, { "aria-label": "Go to next page", size: "default", className: cn("gap-1 px-2.5 sm:pr-2.5", className), ...props, children: [_jsx("span", { className: "hidden sm:block", children: "Next" }), _jsx(ChevronRightIcon, {})] }));
|
|
25
|
+
}
|
|
26
|
+
function PaginationEllipsis({ className, ...props }) {
|
|
27
|
+
return (_jsxs("span", { "aria-hidden": true, "data-slot": "pagination-ellipsis", className: cn("flex size-9 items-center justify-center", className), ...props, children: [_jsx(MoreHorizontalIcon, { className: "size-4" }), _jsx("span", { className: "sr-only", children: "More pages" })] }));
|
|
28
|
+
}
|
|
29
|
+
export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type PluginSlotBoundaryStatus = "ready" | "warning" | "error" | "disabled";
|
|
3
|
+
type PluginPermissionLevel = "safe" | "review" | "risk" | "denied";
|
|
4
|
+
type PluginPermission = {
|
|
5
|
+
id: string;
|
|
6
|
+
label: React.ReactNode;
|
|
7
|
+
level?: PluginPermissionLevel;
|
|
8
|
+
description?: React.ReactNode;
|
|
9
|
+
};
|
|
10
|
+
type PluginSlotBoundaryProps = Omit<React.ComponentProps<"section">, "title"> & {
|
|
11
|
+
title: React.ReactNode;
|
|
12
|
+
description?: React.ReactNode;
|
|
13
|
+
status?: PluginSlotBoundaryStatus;
|
|
14
|
+
permissions?: PluginPermission[];
|
|
15
|
+
warning?: React.ReactNode;
|
|
16
|
+
error?: React.ReactNode;
|
|
17
|
+
redactionGuidance?: React.ReactNode;
|
|
18
|
+
actions?: React.ReactNode;
|
|
19
|
+
footer?: React.ReactNode;
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
contentLabel?: string;
|
|
22
|
+
contentClassName?: string;
|
|
23
|
+
};
|
|
24
|
+
declare function PluginSlotBoundary({ title, description, status, permissions, warning, error, redactionGuidance, actions, footer, children, contentLabel, className, contentClassName, ...props }: PluginSlotBoundaryProps): React.JSX.Element;
|
|
25
|
+
export { PluginSlotBoundary };
|
|
26
|
+
export type { PluginPermission, PluginPermissionLevel, PluginSlotBoundaryProps, PluginSlotBoundaryStatus, };
|
|
27
|
+
//# sourceMappingURL=plugin-slot-boundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-slot-boundary.d.ts","sourceRoot":"","sources":["../../src/components/plugin-slot-boundary.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAoB9B,KAAK,wBAAwB,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAA;AAC1E,KAAK,qBAAqB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAA;AAElE,KAAK,gBAAgB,GAAG;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC9B,CAAA;AAED,KAAK,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG;IAC9E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,MAAM,CAAC,EAAE,wBAAwB,CAAA;IACjC,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAChC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACnC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAeD,iBAAS,kBAAkB,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,MAAgB,EAChB,WAAgB,EAChB,OAAO,EACP,KAAK,EACL,iBAA4C,EAC5C,OAAO,EACP,MAAM,EACN,QAAQ,EACR,YAA+B,EAC/B,SAAS,EACT,gBAAgB,EAChB,GAAG,KAAK,EACT,EAAE,uBAAuB,qBA6GzB;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAC7B,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,GACzB,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { AlertTriangleIcon, LockKeyholeIcon, ShieldAlertIcon, ShieldCheckIcon, } from "lucide-react";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
import { Alert, AlertDescription, AlertTitle } from "./alert.js";
|
|
6
|
+
import { Badge } from "./badge.js";
|
|
7
|
+
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "./card.js";
|
|
8
|
+
const permissionBadgeVariants = {
|
|
9
|
+
safe: "secondary",
|
|
10
|
+
review: "outline",
|
|
11
|
+
risk: "default",
|
|
12
|
+
denied: "destructive",
|
|
13
|
+
};
|
|
14
|
+
const defaultRedactionGuidance = "Plugin content should be synthetic or redacted. Do not render secrets, environment variable values, raw terminal output, or hidden reasoning.";
|
|
15
|
+
function PluginSlotBoundary({ title, description, status = "ready", permissions = [], warning, error, redactionGuidance = defaultRedactionGuidance, actions, footer, children, contentLabel = "Plugin content", className, contentClassName, ...props }) {
|
|
16
|
+
const statusIcon = status === "error" ? (_jsx(ShieldAlertIcon, { "data-icon": true, className: "size-4" })) : status === "warning" ? (_jsx(AlertTriangleIcon, { "data-icon": true, className: "size-4" })) : status === "disabled" ? (_jsx(LockKeyholeIcon, { "data-icon": true, className: "size-4" })) : (_jsx(ShieldCheckIcon, { "data-icon": true, className: "size-4" }));
|
|
17
|
+
return (_jsx("section", { "data-slot": "plugin-slot-boundary", "data-status": status, className: className, ...props, children: _jsxs(Card, { className: "overflow-hidden", children: [_jsxs(CardHeader, { children: [_jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [_jsxs("div", { className: "grid min-w-0 gap-1", children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: [statusIcon, _jsx("span", { className: "min-w-0 truncate", children: title })] }), description && (_jsx(CardDescription, { children: description }))] }), actions && (_jsx("div", { "data-slot": "plugin-slot-boundary-actions", className: "flex shrink-0 items-center gap-2", children: actions }))] }), permissions.length > 0 && (_jsx("div", { "data-slot": "plugin-slot-boundary-permissions", className: "flex flex-wrap items-center gap-2", "aria-label": "Plugin permissions", children: permissions.map((permission) => {
|
|
18
|
+
const level = permission.level ?? "review";
|
|
19
|
+
return (_jsx(Badge, { "data-slot": "plugin-slot-boundary-permission", "data-level": level, variant: permissionBadgeVariants[level], title: typeof permission.description === "string"
|
|
20
|
+
? permission.description
|
|
21
|
+
: undefined, children: permission.label }, permission.id));
|
|
22
|
+
}) }))] }), _jsxs(CardContent, { className: "grid gap-4", children: [warning && (_jsxs(Alert, { "data-slot": "plugin-slot-boundary-warning", children: [_jsx(AlertTriangleIcon, { "data-icon": true }), _jsx(AlertTitle, { children: "Review before continuing" }), _jsx(AlertDescription, { children: warning })] })), error && (_jsxs(Alert, { "data-slot": "plugin-slot-boundary-error", variant: "destructive", children: [_jsx(ShieldAlertIcon, { "data-icon": true }), _jsx(AlertTitle, { children: "Plugin content unavailable" }), _jsx(AlertDescription, { children: error })] })), _jsx("div", { "data-slot": "plugin-slot-boundary-content", "aria-label": contentLabel, className: cn("max-h-96 min-w-0 overflow-auto rounded-md border bg-background p-4 text-sm break-words", "focus-within:ring-[3px] focus-within:ring-ring/50", status === "disabled" && "pointer-events-none opacity-60", contentClassName), children: children })] }), (redactionGuidance || footer) && (_jsxs(CardFooter, { className: "flex flex-col items-start gap-2 border-t text-sm text-muted-foreground", children: [redactionGuidance && (_jsx("p", { "data-slot": "plugin-slot-boundary-redaction", children: redactionGuidance })), footer && _jsx("div", { "data-slot": "plugin-slot-boundary-footer", children: footer })] }))] }) }));
|
|
23
|
+
}
|
|
24
|
+
export { PluginSlotBoundary };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Popover as PopoverPrimitive } from "radix-ui";
|
|
3
|
+
declare function Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>): React.JSX.Element;
|
|
4
|
+
declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>): React.JSX.Element;
|
|
5
|
+
declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof PopoverPrimitive.Content>): React.JSX.Element;
|
|
6
|
+
declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>): React.JSX.Element;
|
|
7
|
+
declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
8
|
+
declare function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">): React.JSX.Element;
|
|
9
|
+
declare function PopoverDescription({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
|
|
10
|
+
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverHeader, PopoverTitle, PopoverDescription, };
|
|
11
|
+
//# sourceMappingURL=popover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAItD,iBAAS,OAAO,CAAC,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,qBAEpD;AAED,iBAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,qBAEvD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,KAAgB,EAChB,UAAc,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,qBAevD;AAED,iBAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,qBAEtD;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ1E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQxE;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQ3B;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,kBAAkB,GACnB,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Popover as PopoverPrimitive } from "radix-ui";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
function Popover({ ...props }) {
|
|
6
|
+
return _jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
|
|
7
|
+
}
|
|
8
|
+
function PopoverTrigger({ ...props }) {
|
|
9
|
+
return _jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
10
|
+
}
|
|
11
|
+
function PopoverContent({ className, align = "center", sideOffset = 4, ...props }) {
|
|
12
|
+
return (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn("z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95", className), ...props }) }));
|
|
13
|
+
}
|
|
14
|
+
function PopoverAnchor({ ...props }) {
|
|
15
|
+
return _jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
|
|
16
|
+
}
|
|
17
|
+
function PopoverHeader({ className, ...props }) {
|
|
18
|
+
return (_jsx("div", { "data-slot": "popover-header", className: cn("flex flex-col gap-1 text-sm", className), ...props }));
|
|
19
|
+
}
|
|
20
|
+
function PopoverTitle({ className, ...props }) {
|
|
21
|
+
return (_jsx("div", { "data-slot": "popover-title", className: cn("font-medium", className), ...props }));
|
|
22
|
+
}
|
|
23
|
+
function PopoverDescription({ className, ...props }) {
|
|
24
|
+
return (_jsx("p", { "data-slot": "popover-description", className: cn("text-muted-foreground", className), ...props }));
|
|
25
|
+
}
|
|
26
|
+
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverHeader, PopoverTitle, PopoverDescription, };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* pricing-card — the brand pricing/package tier molecule (replaces the retired
|
|
4
|
+
* `.nc-pricing-card` / `.nc-pricing-card-featured` CSS).
|
|
5
|
+
*
|
|
6
|
+
* A seam-free canvas fill: it drops into the holding `Pricing` grid, which owns
|
|
7
|
+
* every hairline divider through its gap-as-seam (`gap-px bg-border`). The card
|
|
8
|
+
* therefore draws NO border and has square corners so the grid line never shows
|
|
9
|
+
* through a rounded edge — matching the retired stat-block / quote-card / logo-tile
|
|
10
|
+
* convention. `variant="featured"` flips the surface onto the ink/primary role; the
|
|
11
|
+
* red featured RAIL is NOT drawn here — it is a single-owner inset rail owned by the
|
|
12
|
+
* `Pricing` section (`emphasis="featured"`), so this molecule only carries the
|
|
13
|
+
* surface inversion and never double-draws a seam.
|
|
14
|
+
*
|
|
15
|
+
* Server-renderable (no client boundary): the featured polarity flip is applied by
|
|
16
|
+
* the parent card to its descendants via `data-slot` descendant selectors — the
|
|
17
|
+
* same cascade model the retired CSS used (`.nc-pricing-card-featured .nc-…`), so
|
|
18
|
+
* sub-components carry only their default (canvas) tone and the parent re-tints them
|
|
19
|
+
* when featured. Token-only; no `dark:` styling.
|
|
20
|
+
*/
|
|
21
|
+
declare function PricingCard({ className, variant, ...props }: React.ComponentProps<"div"> & {
|
|
22
|
+
variant?: "default" | "featured";
|
|
23
|
+
}): React.JSX.Element;
|
|
24
|
+
declare function PricingCardEyebrow({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
|
|
25
|
+
declare function PricingCardName({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
26
|
+
declare function PricingCardPrice({ className, children, amount, period, ...props }: React.ComponentProps<"div"> & {
|
|
27
|
+
amount: React.ReactNode;
|
|
28
|
+
period?: React.ReactNode;
|
|
29
|
+
}): React.JSX.Element;
|
|
30
|
+
declare function PricingCardNote({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
|
|
31
|
+
declare function PricingCardFeatures({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
|
|
32
|
+
declare function PricingCardFeature({ className, children, ...props }: React.ComponentProps<"li">): React.JSX.Element;
|
|
33
|
+
declare function PricingCardCta({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
34
|
+
export { PricingCard, PricingCardEyebrow, PricingCardName, PricingCardPrice, PricingCardNote, PricingCardFeatures, PricingCardFeature, PricingCardCta, };
|
|
35
|
+
//# sourceMappingURL=pricing-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing-card.d.ts","sourceRoot":"","sources":["../../src/components/pricing-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;;;;;;;;;;;;;GAkBG;AAEH,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;CAAE,qBAsBpE;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAW3B;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ5E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,MAAM,EACN,MAAM,EACN,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAmBrF;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQ1E;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ5B;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAoB5B;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ3E;AAED,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* pricing-card — the brand pricing/package tier molecule (replaces the retired
|
|
5
|
+
* `.nc-pricing-card` / `.nc-pricing-card-featured` CSS).
|
|
6
|
+
*
|
|
7
|
+
* A seam-free canvas fill: it drops into the holding `Pricing` grid, which owns
|
|
8
|
+
* every hairline divider through its gap-as-seam (`gap-px bg-border`). The card
|
|
9
|
+
* therefore draws NO border and has square corners so the grid line never shows
|
|
10
|
+
* through a rounded edge — matching the retired stat-block / quote-card / logo-tile
|
|
11
|
+
* convention. `variant="featured"` flips the surface onto the ink/primary role; the
|
|
12
|
+
* red featured RAIL is NOT drawn here — it is a single-owner inset rail owned by the
|
|
13
|
+
* `Pricing` section (`emphasis="featured"`), so this molecule only carries the
|
|
14
|
+
* surface inversion and never double-draws a seam.
|
|
15
|
+
*
|
|
16
|
+
* Server-renderable (no client boundary): the featured polarity flip is applied by
|
|
17
|
+
* the parent card to its descendants via `data-slot` descendant selectors — the
|
|
18
|
+
* same cascade model the retired CSS used (`.nc-pricing-card-featured .nc-…`), so
|
|
19
|
+
* sub-components carry only their default (canvas) tone and the parent re-tints them
|
|
20
|
+
* when featured. Token-only; no `dark:` styling.
|
|
21
|
+
*/
|
|
22
|
+
function PricingCard({ className, variant = "default", ...props }) {
|
|
23
|
+
return (_jsx("div", { "data-slot": "pricing-card", "data-variant": variant, className: cn("grid content-start gap-[18px] p-8", variant === "default" && "bg-card text-card-foreground",
|
|
24
|
+
// featured: ink surface + re-tint every descendant slot in one place.
|
|
25
|
+
variant === "featured" && [
|
|
26
|
+
"bg-primary text-primary-foreground",
|
|
27
|
+
"[&_[data-slot=pricing-card-eyebrow]]:text-primary-foreground/65",
|
|
28
|
+
"[&_[data-slot=pricing-card-period]]:text-primary-foreground/65",
|
|
29
|
+
"[&_[data-slot=pricing-card-note]]:text-primary-foreground/80",
|
|
30
|
+
"[&_[data-slot=pricing-card-feature]]:text-primary-foreground/80",
|
|
31
|
+
"[&_[data-slot=pricing-card-feature-mark]]:text-primary-foreground",
|
|
32
|
+
], className), ...props }));
|
|
33
|
+
}
|
|
34
|
+
function PricingCardEyebrow({ className, ...props }) {
|
|
35
|
+
return (_jsx("p", { "data-slot": "pricing-card-eyebrow", className: cn("font-mono text-xs font-medium uppercase text-muted-foreground", className), ...props }));
|
|
36
|
+
}
|
|
37
|
+
function PricingCardName({ className, ...props }) {
|
|
38
|
+
return (_jsx("div", { "data-slot": "pricing-card-name", className: cn("text-2xl font-semibold", className), ...props }));
|
|
39
|
+
}
|
|
40
|
+
function PricingCardPrice({ className, children, amount, period, ...props }) {
|
|
41
|
+
return (_jsxs("div", { "data-slot": "pricing-card-price", className: cn("flex items-baseline gap-1.5", className), ...props, children: [_jsx("span", { className: "text-[40px] leading-none font-semibold", children: amount }), period ? (_jsx("span", { "data-slot": "pricing-card-period", className: "font-mono text-xs uppercase text-muted-foreground", children: period })) : null, children] }));
|
|
42
|
+
}
|
|
43
|
+
function PricingCardNote({ className, ...props }) {
|
|
44
|
+
return (_jsx("p", { "data-slot": "pricing-card-note", className: cn("m-0 text-sm text-[var(--nc-body)]", className), ...props }));
|
|
45
|
+
}
|
|
46
|
+
function PricingCardFeatures({ className, ...props }) {
|
|
47
|
+
return (_jsx("ul", { "data-slot": "pricing-card-features", className: cn("m-0 grid list-none gap-2.5 p-0", className), ...props }));
|
|
48
|
+
}
|
|
49
|
+
function PricingCardFeature({ className, children, ...props }) {
|
|
50
|
+
return (_jsxs("li", { "data-slot": "pricing-card-feature", className: cn("grid grid-cols-[auto_minmax(0,1fr)] items-start gap-2.5 text-sm text-[var(--nc-body)]", className), ...props, children: [_jsx("span", { "data-slot": "pricing-card-feature-mark", "aria-hidden": "true", className: "font-mono text-sm leading-5 text-[var(--nc-link)]", children: "+" }), _jsx("span", { children: children })] }));
|
|
51
|
+
}
|
|
52
|
+
function PricingCardCta({ className, ...props }) {
|
|
53
|
+
return (_jsx("div", { "data-slot": "pricing-card-cta", className: cn("mt-1.5 [&>*]:w-full", className), ...props }));
|
|
54
|
+
}
|
|
55
|
+
export { PricingCard, PricingCardEyebrow, PricingCardName, PricingCardPrice, PricingCardNote, PricingCardFeatures, PricingCardFeature, PricingCardCta, };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* pricing — package/tier comparison row (replaces the retired `sections/pricing.css`
|
|
4
|
+
* + its coupled `pricing-card` / `pricing-card-featured` molecules).
|
|
5
|
+
*
|
|
6
|
+
* SINGLE-OWNER SEAM (preserved from the retired CSS, do not double-draw):
|
|
7
|
+
* - The DIVIDERS between tiers are owned once by the grid: `gap-px bg-border`
|
|
8
|
+
* paints the brand `line` behind the cards and leaves a 1px guide gap, exactly
|
|
9
|
+
* the retired `nc-row-grid[data-edges="inner"]` gap-as-seam. Each `PricingCard`
|
|
10
|
+
* is borderless and square-cornered, so it never repeats that coordinate.
|
|
11
|
+
* - The FEATURED RAIL (`emphasis="featured"`) is a 3px `flag-red` bar pinned to
|
|
12
|
+
* the leading inside edge of the featured card via an absolutely-positioned
|
|
13
|
+
* span — the retired inset-rail model (painted INSIDE the card padding, NOT a
|
|
14
|
+
* border), so it never stacks onto the grid gap-seam. The card establishes the
|
|
15
|
+
* positioning context (`relative`). The featured card's polarity flip lives in
|
|
16
|
+
* the `PricingCard variant="featured"` molecule, not here.
|
|
17
|
+
*
|
|
18
|
+
* The frame/lane/row geometry (perimeter + top/bottom seams) is owned by the kept
|
|
19
|
+
* structural-geometry layer the page composes this inside; `Pricing` owns no frame
|
|
20
|
+
* math, no marker, and no perimeter line. Token-only; no `dark:` styling.
|
|
21
|
+
*/
|
|
22
|
+
type PricingEmphasis = "none" | "featured";
|
|
23
|
+
declare function Pricing({ className, columns, emphasis, children, ...props }: React.ComponentProps<"div"> & {
|
|
24
|
+
columns?: 2 | 3;
|
|
25
|
+
emphasis?: PricingEmphasis;
|
|
26
|
+
}): React.JSX.Element;
|
|
27
|
+
export { Pricing };
|
|
28
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/components/pricing.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,KAAK,eAAe,GAAG,MAAM,GAAG,UAAU,CAAA;AAE1C,iBAAS,OAAO,CAAC,EACf,SAAS,EACT,OAAW,EACX,QAAiB,EACjB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACf,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B,qBA0CA;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
function Pricing({ className, columns = 3, emphasis = "none", children, ...props }) {
|
|
5
|
+
return (_jsx("div", { "data-slot": "pricing", "data-emphasis": emphasis, className: cn(
|
|
6
|
+
// gap-as-seam: the grid is the single owner of every divider between tiers.
|
|
7
|
+
"grid h-full gap-px bg-border", columns === 2
|
|
8
|
+
? "grid-cols-1 sm:grid-cols-2"
|
|
9
|
+
: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
10
|
+
// the featured card is the rail's positioning context and gets the rail span.
|
|
11
|
+
emphasis === "featured" &&
|
|
12
|
+
"[&_[data-variant=featured]]:relative", className), ...props, children: emphasis === "featured"
|
|
13
|
+
? React.Children.map(children, (child) => {
|
|
14
|
+
if (React.isValidElement(child) &&
|
|
15
|
+
child.props.variant === "featured") {
|
|
16
|
+
return React.cloneElement(child, undefined, (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-y-0 start-0 w-[3px] bg-[var(--nc-flag-red)]" }), child.props.children] })));
|
|
17
|
+
}
|
|
18
|
+
return child;
|
|
19
|
+
})
|
|
20
|
+
: children }));
|
|
21
|
+
}
|
|
22
|
+
export { Pricing };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Progress as ProgressPrimitive } from "radix-ui";
|
|
3
|
+
declare function Progress({ className, value, ...props }: React.ComponentProps<typeof ProgressPrimitive.Root>): React.JSX.Element;
|
|
4
|
+
export { Progress };
|
|
5
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAIxD,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,qBAiBrD;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|