@nadicodeai/ui 0.6.0 → 0.8.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 +12 -0
- package/dist/ai-elements.d.ts.map +1 -1
- package/dist/components/accordion.d.ts.map +1 -1
- package/dist/components/action-band.d.ts.map +1 -1
- package/dist/components/action-status.d.ts +11 -0
- package/dist/components/action-status.d.ts.map +1 -0
- package/dist/components/action-status.js +6 -0
- package/dist/components/agent-avatar.d.ts +7 -0
- package/dist/components/agent-avatar.d.ts.map +1 -0
- package/dist/components/agent-avatar.js +6 -0
- package/dist/components/agent-chat.d.ts.map +1 -1
- package/dist/components/agent-chat.js +2 -2
- package/dist/components/agent-composer.d.ts +1 -1
- package/dist/components/agent-composer.d.ts.map +1 -1
- package/dist/components/agent-composer.js +5 -9
- package/dist/components/agent-message.d.ts +1 -1
- package/dist/components/agent-message.d.ts.map +1 -1
- package/dist/components/agent-message.js +19 -23
- package/dist/components/agent-thread.d.ts +1 -1
- package/dist/components/agent-thread.d.ts.map +1 -1
- package/dist/components/agent-thread.js +5 -7
- package/dist/components/agent-tool-approval.d.ts +5 -10
- package/dist/components/agent-tool-approval.d.ts.map +1 -1
- package/dist/components/agent-tool-approval.js +10 -31
- package/dist/components/ai-elements/agent.d.ts.map +1 -1
- package/dist/components/ai-elements/agent.js +1 -3
- package/dist/components/ai-elements/artifact.d.ts.map +1 -1
- package/dist/components/ai-elements/artifact.js +1 -1
- package/dist/components/ai-elements/attachments.d.ts.map +1 -1
- package/dist/components/ai-elements/attachments.js +3 -3
- package/dist/components/ai-elements/audio-player.d.ts.map +1 -1
- package/dist/components/ai-elements/audio-player.js +2 -4
- package/dist/components/ai-elements/chain-of-thought.d.ts.map +1 -1
- package/dist/components/ai-elements/chain-of-thought.js +2 -2
- package/dist/components/ai-elements/checkpoint.d.ts.map +1 -1
- package/dist/components/ai-elements/checkpoint.js +2 -2
- package/dist/components/ai-elements/code-block.d.ts.map +1 -1
- package/dist/components/ai-elements/code-block.js +12 -24
- package/dist/components/ai-elements/commit.d.ts.map +1 -1
- package/dist/components/ai-elements/commit.js +2 -2
- package/dist/components/ai-elements/confirmation.d.ts +2 -2
- package/dist/components/ai-elements/confirmation.d.ts.map +1 -1
- package/dist/components/ai-elements/confirmation.js +4 -8
- package/dist/components/ai-elements/connection.d.ts.map +1 -1
- package/dist/components/ai-elements/connection.js +1 -1
- package/dist/components/ai-elements/context.d.ts.map +1 -1
- package/dist/components/ai-elements/context.js +4 -4
- package/dist/components/ai-elements/conversation.d.ts.map +1 -1
- package/dist/components/ai-elements/conversation.js +1 -1
- package/dist/components/ai-elements/edge.d.ts.map +1 -1
- package/dist/components/ai-elements/environment-variables.d.ts.map +1 -1
- package/dist/components/ai-elements/environment-variables.js +1 -3
- package/dist/components/ai-elements/file-tree.d.ts.map +1 -1
- package/dist/components/ai-elements/file-tree.js +3 -3
- package/dist/components/ai-elements/image.d.ts.map +1 -1
- package/dist/components/ai-elements/inline-citation.d.ts.map +1 -1
- package/dist/components/ai-elements/inline-citation.js +6 -6
- package/dist/components/ai-elements/jsx-preview.d.ts.map +1 -1
- package/dist/components/ai-elements/jsx-preview.js +2 -11
- package/dist/components/ai-elements/message.d.ts.map +1 -1
- package/dist/components/ai-elements/message.js +4 -5
- package/dist/components/ai-elements/mic-selector.d.ts.map +1 -1
- package/dist/components/ai-elements/mic-selector.js +3 -7
- package/dist/components/ai-elements/model-selector.d.ts.map +1 -1
- package/dist/components/ai-elements/model-selector.js +6 -6
- package/dist/components/ai-elements/node.d.ts.map +1 -1
- package/dist/components/ai-elements/node.js +1 -1
- package/dist/components/ai-elements/open-in-chat.d.ts.map +1 -1
- package/dist/components/ai-elements/open-in-chat.js +3 -3
- package/dist/components/ai-elements/package-info.d.ts.map +1 -1
- package/dist/components/ai-elements/package-info.js +1 -1
- package/dist/components/ai-elements/panel.d.ts.map +1 -1
- package/dist/components/ai-elements/persona.d.ts.map +1 -1
- package/dist/components/ai-elements/persona.js +1 -2
- package/dist/components/ai-elements/plan.d.ts.map +1 -1
- package/dist/components/ai-elements/plan.js +1 -1
- package/dist/components/ai-elements/prompt-input.d.ts.map +1 -1
- package/dist/components/ai-elements/prompt-input.js +22 -33
- package/dist/components/ai-elements/queue.d.ts.map +1 -1
- package/dist/components/ai-elements/queue.js +3 -7
- package/dist/components/ai-elements/reasoning.d.ts.map +1 -1
- package/dist/components/ai-elements/reasoning.js +2 -5
- package/dist/components/ai-elements/sandbox.d.ts.map +1 -1
- package/dist/components/ai-elements/sandbox.js +2 -2
- package/dist/components/ai-elements/schema-display.d.ts.map +1 -1
- package/dist/components/ai-elements/schema-display.js +7 -7
- package/dist/components/ai-elements/shimmer.d.ts.map +1 -1
- package/dist/components/ai-elements/snippet.d.ts.map +1 -1
- package/dist/components/ai-elements/snippet.js +1 -1
- package/dist/components/ai-elements/sources.d.ts.map +1 -1
- package/dist/components/ai-elements/sources.js +1 -1
- package/dist/components/ai-elements/speech-input.d.ts.map +1 -1
- package/dist/components/ai-elements/stack-trace.d.ts.map +1 -1
- package/dist/components/ai-elements/stack-trace.js +3 -5
- package/dist/components/ai-elements/suggestion.d.ts.map +1 -1
- package/dist/components/ai-elements/suggestion.js +1 -1
- package/dist/components/ai-elements/task.d.ts.map +1 -1
- package/dist/components/ai-elements/task.js +1 -1
- package/dist/components/ai-elements/terminal.d.ts.map +1 -1
- package/dist/components/ai-elements/test-results.d.ts.map +1 -1
- package/dist/components/ai-elements/test-results.js +2 -2
- package/dist/components/ai-elements/tool.d.ts.map +1 -1
- package/dist/components/ai-elements/tool.js +3 -5
- package/dist/components/ai-elements/toolbar.d.ts.map +1 -1
- package/dist/components/ai-elements/transcription.d.ts.map +1 -1
- package/dist/components/ai-elements/voice-selector.d.ts.map +1 -1
- package/dist/components/ai-elements/voice-selector.js +4 -4
- package/dist/components/ai-elements/web-preview.d.ts.map +1 -1
- package/dist/components/ai-elements/web-preview.js +3 -3
- package/dist/components/alert-dialog.d.ts.map +1 -1
- package/dist/components/alert-dialog.js +2 -2
- package/dist/components/alert.d.ts.map +1 -1
- package/dist/components/artifact-panel.d.ts +3 -4
- package/dist/components/artifact-panel.d.ts.map +1 -1
- package/dist/components/artifact-panel.js +19 -28
- package/dist/components/aspect-ratio.d.ts.map +1 -1
- package/dist/components/attachment.d.ts +24 -0
- package/dist/components/attachment.d.ts.map +1 -0
- package/dist/components/attachment.js +68 -0
- package/dist/components/automation-section.d.ts +1 -1
- package/dist/components/automation-section.d.ts.map +1 -1
- package/dist/components/automation-section.js +2 -2
- package/dist/components/avatar.d.ts +1 -1
- package/dist/components/avatar.d.ts.map +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.d.ts.map +1 -1
- package/dist/components/benefits-bento.d.ts.map +1 -1
- package/dist/components/bento.d.ts.map +1 -1
- package/dist/components/brand.d.ts.map +1 -1
- package/dist/components/brand.js +1 -3
- package/dist/components/breadcrumb.d.ts.map +1 -1
- package/dist/components/breadcrumb.js +1 -1
- package/dist/components/bubble.d.ts +17 -0
- package/dist/components/bubble.d.ts.map +1 -0
- package/dist/components/bubble.js +59 -0
- package/dist/components/button-group.d.ts +1 -1
- package/dist/components/button-group.d.ts.map +1 -1
- package/dist/components/button-group.js +1 -1
- package/dist/components/button.d.ts.map +1 -1
- package/dist/components/calendar.d.ts.map +1 -1
- package/dist/components/calendar.js +6 -6
- package/dist/components/card-marketing.d.ts.map +1 -1
- package/dist/components/card.d.ts +1 -1
- package/dist/components/card.d.ts.map +1 -1
- package/dist/components/card.js +1 -1
- package/dist/components/carousel.d.ts.map +1 -1
- package/dist/components/chart-breakdown-table.d.ts.map +1 -1
- package/dist/components/chart-breakdown-table.js +1 -3
- package/dist/components/chart-bullet-bar.d.ts.map +1 -1
- package/dist/components/chart-date-range-control.d.ts.map +1 -1
- package/dist/components/chart-date-range-control.js +2 -4
- package/dist/components/chart-date-range.d.ts +1 -1
- package/dist/components/chart-date-range.d.ts.map +1 -1
- package/dist/components/chart-date-range.js +2 -4
- package/dist/components/chart-delta.d.ts.map +1 -1
- package/dist/components/chart-delta.js +1 -1
- package/dist/components/chart-entity-colors.d.ts +1 -1
- package/dist/components/chart-entity-colors.d.ts.map +1 -1
- package/dist/components/chart-entity-colors.js +1 -1
- package/dist/components/chart-kpi-stat.d.ts.map +1 -1
- package/dist/components/chart-sparkline.d.ts.map +1 -1
- package/dist/components/chart-sparkline.js +2 -7
- package/dist/components/chart-time-series.d.ts.map +1 -1
- package/dist/components/chart-time-series.js +5 -10
- package/dist/components/chart.d.ts.map +1 -1
- package/dist/components/chart.js +5 -19
- package/dist/components/checkbox.d.ts.map +1 -1
- package/dist/components/code-editor-mockup.d.ts.map +1 -1
- package/dist/components/code-editor-mockup.js +1 -1
- package/dist/components/collapsible.d.ts.map +1 -1
- package/dist/components/collapsible.js +2 -2
- package/dist/components/combobox.d.ts.map +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command.d.ts.map +1 -1
- package/dist/components/command.js +1 -1
- package/dist/components/contact.d.ts.map +1 -1
- package/dist/components/context-menu.d.ts.map +1 -1
- package/dist/components/context-menu.js +4 -4
- package/dist/components/dashboard-shell.d.ts.map +1 -1
- package/dist/components/dashboard-shell.js +3 -5
- package/dist/components/demo-surface.d.ts.map +1 -1
- package/dist/components/desktop-shell.d.ts.map +1 -1
- package/dist/components/desktop-shell.js +2 -2
- package/dist/components/dialog.d.ts.map +1 -1
- package/dist/components/diff-count.d.ts +7 -0
- package/dist/components/diff-count.d.ts.map +1 -0
- package/dist/components/diff-count.js +18 -0
- package/dist/components/direction.d.ts.map +1 -1
- package/dist/components/disclosure-row.d.ts +12 -0
- package/dist/components/disclosure-row.d.ts.map +1 -0
- package/dist/components/disclosure-row.js +11 -0
- package/dist/components/drawer.d.ts.map +1 -1
- package/dist/components/drawer.js +1 -1
- package/dist/components/dropdown-menu.d.ts.map +1 -1
- package/dist/components/dropdown-menu.js +1 -1
- package/dist/components/empty.d.ts +1 -1
- package/dist/components/empty.d.ts.map +1 -1
- package/dist/components/empty.js +1 -1
- package/dist/components/expandable-block.d.ts +10 -0
- package/dist/components/expandable-block.d.ts.map +1 -0
- package/dist/components/expandable-block.js +22 -0
- package/dist/components/fact-cell.d.ts.map +1 -1
- package/dist/components/faq-item.d.ts.map +1 -1
- package/dist/components/faq.d.ts.map +1 -1
- package/dist/components/faq.js +1 -1
- package/dist/components/feedback-state.d.ts.map +1 -1
- package/dist/components/feedback-state.js +1 -4
- package/dist/components/field.d.ts.map +1 -1
- package/dist/components/field.js +1 -3
- package/dist/components/file-type-icon.d.ts +8 -0
- package/dist/components/file-type-icon.d.ts.map +1 -0
- package/dist/components/file-type-icon.js +90 -0
- package/dist/components/files-preview.d.ts.map +1 -1
- package/dist/components/files-preview.js +3 -6
- package/dist/components/footer.d.ts.map +1 -1
- package/dist/components/footer.js +1 -3
- package/dist/components/form.d.ts.map +1 -1
- package/dist/components/glyph-spinner.d.ts +10 -0
- package/dist/components/glyph-spinner.d.ts.map +1 -0
- package/dist/components/glyph-spinner.js +101 -0
- package/dist/components/handoff-banner.d.ts +9 -0
- package/dist/components/handoff-banner.d.ts.map +1 -0
- package/dist/components/handoff-banner.js +6 -0
- package/dist/components/hero-split.d.ts.map +1 -1
- package/dist/components/hover-card.d.ts.map +1 -1
- package/dist/components/hover-card.js +1 -1
- package/dist/components/input-group.d.ts.map +1 -1
- package/dist/components/input-otp.d.ts.map +1 -1
- package/dist/components/input.d.ts.map +1 -1
- package/dist/components/installer-shell.d.ts.map +1 -1
- package/dist/components/installer-shell.js +2 -2
- package/dist/components/item.d.ts.map +1 -1
- package/dist/components/kbd.d.ts.map +1 -1
- package/dist/components/label-system.d.ts +6 -2
- package/dist/components/label-system.d.ts.map +1 -1
- package/dist/components/label-system.js +4 -1
- package/dist/components/label.d.ts.map +1 -1
- package/dist/components/logo-band.d.ts.map +1 -1
- package/dist/components/logo-tile.d.ts.map +1 -1
- package/dist/components/logo-tile.js +1 -3
- package/dist/components/marker.d.ts +11 -0
- package/dist/components/marker.d.ts.map +1 -0
- package/dist/components/marker.js +34 -0
- package/dist/components/media-mount.d.ts.map +1 -1
- package/dist/components/media-mount.js +1 -3
- package/dist/components/memory-item.d.ts +9 -0
- package/dist/components/memory-item.d.ts.map +1 -0
- package/dist/components/memory-item.js +6 -0
- package/dist/components/menubar.d.ts.map +1 -1
- package/dist/components/message-scroller.d.ts +17 -0
- package/dist/components/message-scroller.d.ts.map +1 -0
- package/dist/components/message-scroller.js +29 -0
- package/dist/components/message.d.ts +11 -0
- package/dist/components/message.d.ts.map +1 -0
- package/dist/components/message.js +21 -0
- package/dist/components/native-select.d.ts.map +1 -1
- package/dist/components/nav-bar.d.ts.map +1 -1
- package/dist/components/navigation-menu.d.ts.map +1 -1
- package/dist/components/newsletter.d.ts.map +1 -1
- package/dist/components/page-frame.d.ts.map +1 -1
- package/dist/components/pagination.d.ts.map +1 -1
- package/dist/components/plugin-slot-boundary.d.ts.map +1 -1
- package/dist/components/plugin-slot-boundary.js +2 -2
- package/dist/components/popover.d.ts +1 -1
- package/dist/components/popover.d.ts.map +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/pricing-card.d.ts.map +1 -1
- package/dist/components/pricing.d.ts.map +1 -1
- package/dist/components/pricing.js +3 -6
- package/dist/components/progress.d.ts +1 -1
- package/dist/components/progress.d.ts.map +1 -1
- package/dist/components/progress.js +1 -1
- package/dist/components/proof-slot.d.ts.map +1 -1
- package/dist/components/quote-card.d.ts +1 -1
- package/dist/components/quote-card.d.ts.map +1 -1
- package/dist/components/quote-card.js +1 -1
- package/dist/components/radio-group.d.ts.map +1 -1
- package/dist/components/resizable.d.ts.map +1 -1
- package/dist/components/resizable.js +1 -1
- package/dist/components/run-timeline.d.ts +16 -0
- package/dist/components/run-timeline.d.ts.map +1 -0
- package/dist/components/run-timeline.js +9 -0
- package/dist/components/scroll-area.d.ts.map +1 -1
- package/dist/components/seam-grid.d.ts.map +1 -1
- package/dist/components/section-intro.d.ts.map +1 -1
- package/dist/components/select.d.ts.map +1 -1
- package/dist/components/separator.d.ts.map +1 -1
- package/dist/components/settings-section.d.ts.map +1 -1
- package/dist/components/settings-section.js +2 -2
- package/dist/components/sheet.d.ts.map +1 -1
- package/dist/components/shift-band.d.ts.map +1 -1
- package/dist/components/shift-band.js +1 -1
- package/dist/components/sidebar.d.ts.map +1 -1
- package/dist/components/sidebar.js +4 -5
- package/dist/components/skeleton.d.ts.map +1 -1
- package/dist/components/slider.d.ts.map +1 -1
- package/dist/components/sonner.d.ts.map +1 -1
- package/dist/components/sonner.js +6 -6
- package/dist/components/spinner.d.ts.map +1 -1
- package/dist/components/stat-block.d.ts.map +1 -1
- package/dist/components/state-notice.d.ts.map +1 -1
- package/dist/components/state-notice.js +1 -1
- package/dist/components/stats-band.d.ts.map +1 -1
- package/dist/components/status-dot.d.ts +9 -0
- package/dist/components/status-dot.d.ts.map +1 -0
- package/dist/components/status-dot.js +12 -0
- package/dist/components/status-row.d.ts +18 -0
- package/dist/components/status-row.d.ts.map +1 -0
- package/dist/components/status-row.js +21 -0
- package/dist/components/switch.d.ts.map +1 -1
- package/dist/components/table.d.ts +1 -1
- package/dist/components/table.d.ts.map +1 -1
- package/dist/components/table.js +2 -2
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/testimonials.d.ts.map +1 -1
- package/dist/components/testimonials.js +1 -3
- package/dist/components/textarea.d.ts.map +1 -1
- package/dist/components/theme-mode-switcher.d.ts.map +1 -1
- package/dist/components/theme-mode-switcher.js +1 -1
- package/dist/components/toggle-group.d.ts.map +1 -1
- package/dist/components/toggle.d.ts.map +1 -1
- package/dist/components/tool-icon.d.ts +8 -0
- package/dist/components/tool-icon.d.ts.map +1 -0
- package/dist/components/tool-icon.js +23 -0
- package/dist/components/tooltip.d.ts.map +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/usage-meter.d.ts +9 -0
- package/dist/components/usage-meter.d.ts.map +1 -0
- package/dist/components/usage-meter.js +10 -0
- package/dist/components/use-case-bento.d.ts.map +1 -1
- package/dist/components/use-case-bento.js +1 -1
- package/dist/components/watch-it-work-band.d.ts.map +1 -1
- package/dist/components/watch-it-work-band.js +2 -2
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/use-controllable-state.d.ts +1 -1
- package/dist/hooks/use-controllable-state.d.ts.map +1 -1
- package/dist/hooks/use-controllable-state.js +2 -4
- package/dist/index.d.ts +26 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -7
- package/dist/lib/agent-attachment.d.ts.map +1 -1
- package/dist/lib/agent-contracts.d.ts +132 -0
- package/dist/lib/agent-contracts.d.ts.map +1 -0
- package/dist/lib/agent-contracts.js +6 -0
- package/dist/lib/agent-state.d.ts +22 -0
- package/dist/lib/agent-state.d.ts.map +1 -0
- package/dist/lib/agent-state.js +96 -0
- package/dist/lib/agent-work-state.d.ts.map +1 -1
- package/dist/lib/message-scroller-primitive/components.d.ts +17 -0
- package/dist/lib/message-scroller-primitive/components.d.ts.map +1 -0
- package/dist/lib/message-scroller-primitive/components.js +204 -0
- package/dist/lib/message-scroller-primitive/geometry.d.ts +55 -0
- package/dist/lib/message-scroller-primitive/geometry.d.ts.map +1 -0
- package/dist/lib/message-scroller-primitive/geometry.js +199 -0
- package/dist/lib/message-scroller-primitive/index.d.ts +12 -0
- package/dist/lib/message-scroller-primitive/index.d.ts.map +1 -0
- package/dist/lib/message-scroller-primitive/index.js +12 -0
- package/dist/lib/message-scroller-primitive/stores.d.ts +7 -0
- package/dist/lib/message-scroller-primitive/stores.d.ts.map +1 -0
- package/dist/lib/message-scroller-primitive/stores.js +53 -0
- package/dist/lib/message-scroller-primitive/types.d.ts +89 -0
- package/dist/lib/message-scroller-primitive/types.d.ts.map +1 -0
- package/dist/lib/message-scroller-primitive/types.js +40 -0
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts +19 -0
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts.map +1 -0
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.js +188 -0
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts +7 -0
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts.map +1 -0
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.js +506 -0
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts +49 -0
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts.map +1 -0
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.js +90 -0
- package/dist/lib/message-scroller-primitive/use-render.d.ts +22 -0
- package/dist/lib/message-scroller-primitive/use-render.d.ts.map +1 -0
- package/dist/lib/message-scroller-primitive/use-render.js +113 -0
- package/dist/lib/message-scroller-primitive/utils.d.ts +4 -0
- package/dist/lib/message-scroller-primitive/utils.d.ts.map +1 -0
- package/dist/lib/message-scroller-primitive/utils.js +9 -0
- package/dist/lib/seam.d.ts.map +1 -1
- package/dist/lib/theme-mode.d.ts.map +1 -1
- package/dist/styles/globals.css +32 -29
- package/docs/agent-work-surfaces.md +36 -3
- package/docs/consuming-cross-repo.md +72 -0
- package/docs/migration/ai-elements-vendoring.md +29 -0
- package/package.json +14 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-render.d.ts","sourceRoot":"","sources":["../../../src/lib/message-scroller-primitive/use-render.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,KAAK,cAAc,CAAC,MAAM,SAAS,WAAW,IAAI,CAChD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,KACV,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAE/B,KAAK,UAAU,CAAC,MAAM,SAAS,WAAW,IAAI,KAAK,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAE1F,KAAK,sBAAsB,CAAC,MAAM,SAAS,WAAW,IAAI,OAAO,CAAC;KAC/D,CAAC,IAAI,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS;CACjG,CAAC,CAAC;AAEH,KAAK,uBAAuB,CAC1B,QAAQ,SAAS,KAAK,CAAC,WAAW,EAClC,MAAM,SAAS,WAAW,GAAG,WAAW,IACtC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG;IAC1C,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,KAAK,gBAAgB,CAAC,QAAQ,SAAS,KAAK,CAAC,WAAW,EAAE,MAAM,SAAS,WAAW,IAAI;IACtF,cAAc,EAAE,QAAQ,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;CACzD,CAAC;AAEF,iBAAS,SAAS,CAAC,QAAQ,SAAS,KAAK,CAAC,WAAW,EAAE,MAAM,SAAS,WAAW,GAAG,WAAW,EAAE,EAC/F,cAAc,EACd,KAAK,EACL,MAAM,EACN,KAAoB,EACpB,sBAAsB,GACvB,EAAE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,6EA6BpC;AAED,iBAAS,UAAU,CAAC,QAAQ,SAAS,KAAK,CAAC,WAAW,EACpD,GAAG,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,GA4C7E,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CACvD;AAqDD,iBAAS,WAAW,CAAC,CAAC,EACpB,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GACvC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAgBlC;AAED,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Vendored from @shadcn/react 0.2.1 (upstream github.com/shadcn-ui).
|
|
2
|
+
// Adapted only for repo import paths and formatting; not added as an npm dependency.
|
|
3
|
+
// A poor man's version of base-ui useRender.
|
|
4
|
+
// see https://base-ui.com/react/utils/use-render.
|
|
5
|
+
// TODO: Replace if base-ui useRender is published as a package.
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
function useRender({ defaultTagName, props, render, state = {}, stateAttributesMapping, }) {
|
|
8
|
+
const elementProps = mergeProps(getStateAttributes(state, stateAttributesMapping), props);
|
|
9
|
+
if (!render) {
|
|
10
|
+
return React.createElement(defaultTagName, elementProps);
|
|
11
|
+
}
|
|
12
|
+
if (typeof render === "function") {
|
|
13
|
+
return render(elementProps, state);
|
|
14
|
+
}
|
|
15
|
+
if (!React.isValidElement(render)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const renderProps = render.props;
|
|
19
|
+
const propsWithRenderProps = mergeProps(elementProps, renderProps);
|
|
20
|
+
const propsWithRef = {
|
|
21
|
+
...propsWithRenderProps,
|
|
22
|
+
ref: composeRefs(elementProps.ref, renderProps.ref),
|
|
23
|
+
};
|
|
24
|
+
return React.cloneElement(render, propsWithRef);
|
|
25
|
+
}
|
|
26
|
+
function mergeProps(...sources) {
|
|
27
|
+
const result = {};
|
|
28
|
+
for (const source of sources) {
|
|
29
|
+
if (!source) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const sourceProps = source;
|
|
33
|
+
for (const key of Object.keys(sourceProps)) {
|
|
34
|
+
const value = sourceProps[key];
|
|
35
|
+
if (value === undefined) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
const current = result[key];
|
|
39
|
+
if (key === "className") {
|
|
40
|
+
result[key] = [current, value].filter(Boolean).join(" ");
|
|
41
|
+
}
|
|
42
|
+
else if (key === "style") {
|
|
43
|
+
result[key] = {
|
|
44
|
+
...current,
|
|
45
|
+
...value,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
else if (key === "ref") {
|
|
49
|
+
result[key] = composeRefs(current, value);
|
|
50
|
+
}
|
|
51
|
+
else if (isEventHandler(key) &&
|
|
52
|
+
typeof current === "function" &&
|
|
53
|
+
typeof value === "function") {
|
|
54
|
+
result[key] = composeEventHandlers(value, current);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
result[key] = value;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
function getStateAttributes(state, mapping) {
|
|
64
|
+
const props = {};
|
|
65
|
+
for (const key of Object.keys(state)) {
|
|
66
|
+
const value = state[key];
|
|
67
|
+
const attributes = mapping?.[key]?.(value);
|
|
68
|
+
if (attributes) {
|
|
69
|
+
Object.assign(props, attributes);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (key === "slot") {
|
|
73
|
+
props["data-slot"] = value;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const attribute = `data-${String(key).replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)}`;
|
|
77
|
+
if (typeof value === "boolean") {
|
|
78
|
+
props[attribute] = value ? "" : undefined;
|
|
79
|
+
}
|
|
80
|
+
else if (value !== null && value !== undefined) {
|
|
81
|
+
props[attribute] = String(value);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return props;
|
|
85
|
+
}
|
|
86
|
+
function composeEventHandlers(theirs, ours) {
|
|
87
|
+
return function handleEvent(event) {
|
|
88
|
+
theirs(event);
|
|
89
|
+
if (!event.defaultPrevented) {
|
|
90
|
+
ours(event);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function isEventHandler(key) {
|
|
95
|
+
return /^on[A-Z]/.test(key);
|
|
96
|
+
}
|
|
97
|
+
function composeRefs(...refs) {
|
|
98
|
+
const validRefs = refs.filter(Boolean);
|
|
99
|
+
if (validRefs.length === 0) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
return (value) => {
|
|
103
|
+
for (const ref of validRefs) {
|
|
104
|
+
if (typeof ref === "function") {
|
|
105
|
+
ref(value);
|
|
106
|
+
}
|
|
107
|
+
else if (ref) {
|
|
108
|
+
ref.current = value;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export { composeRefs, mergeProps, useRender };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/message-scroller-primitive/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,iBAAS,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,sBAM7B;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Vendored from @shadcn/react 0.2.1 (upstream github.com/shadcn-ui).
|
|
2
|
+
// Adapted only for repo import paths and formatting; not added as an npm dependency.
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
function useLatest(value) {
|
|
5
|
+
const ref = React.useRef(value);
|
|
6
|
+
ref.current = value;
|
|
7
|
+
return ref;
|
|
8
|
+
}
|
|
9
|
+
export { useLatest };
|
package/dist/lib/seam.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seam.d.ts","sourceRoot":"","sources":["../../src/lib/seam.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,KAAK,WAAW,GAAG,QAAQ,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"seam.d.ts","sourceRoot":"","sources":["../../src/lib/seam.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,KAAK,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEpC;;;;GAIG;AACH,iBAAS,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAItD;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-mode.d.ts","sourceRoot":"","sources":["../../src/lib/theme-mode.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,sCAAuC,
|
|
1
|
+
{"version":3,"file":"theme-mode.d.ts","sourceRoot":"","sources":["../../src/lib/theme-mode.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,sCAAuC,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,SAAS,CAEzE"}
|
package/dist/styles/globals.css
CHANGED
|
@@ -46,11 +46,11 @@
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/*
|
|
49
|
-
* Raw --nc-* dark remaps (state/selection/cross/chart) are
|
|
50
|
-
* :root.dark specificity inside the design-system theme import
|
|
51
|
-
* package-local copy that used to live here is gone so the
|
|
52
|
-
* stays the single owner. tests/dark-token-cascade.test.ts
|
|
53
|
-
* resolved cascade across this file's import order.
|
|
49
|
+
* Raw --nc-* dark remaps (surface palette/state/selection/cross/chart) are
|
|
50
|
+
* generated at :root.dark specificity inside the design-system theme import
|
|
51
|
+
* above; the package-local copy that used to live here is gone so the
|
|
52
|
+
* generated theme stays the single owner. tests/guards/dark-token-cascade.test.ts
|
|
53
|
+
* guards the resolved cascade across this file's import order.
|
|
54
54
|
*/
|
|
55
55
|
|
|
56
56
|
@theme inline {
|
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
--nc-app-surface-elevated: var(--popover);
|
|
225
225
|
--nc-app-surface-overlay: var(--popover);
|
|
226
226
|
--nc-app-border: var(--border);
|
|
227
|
-
--nc-app-border-subtle: var(--nc-
|
|
227
|
+
--nc-app-border-subtle: var(--nc-dark-line);
|
|
228
228
|
--nc-app-ring: var(--ring);
|
|
229
229
|
--nc-app-text-primary: var(--foreground);
|
|
230
230
|
--nc-app-text-secondary: var(--nc-cross);
|
|
@@ -233,7 +233,7 @@
|
|
|
233
233
|
--nc-app-text-link: var(--nc-dark-cyan-soft);
|
|
234
234
|
--nc-app-text-code: var(--nc-on-primary);
|
|
235
235
|
--nc-app-text-placeholder: var(--nc-cross);
|
|
236
|
-
--nc-app-text-disabled: var(--nc-
|
|
236
|
+
--nc-app-text-disabled: var(--nc-dark-muted);
|
|
237
237
|
|
|
238
238
|
--nc-chat-surface: var(--background);
|
|
239
239
|
--nc-chat-user-surface: var(--primary);
|
|
@@ -242,7 +242,7 @@
|
|
|
242
242
|
--nc-chat-tool-surface: var(--secondary);
|
|
243
243
|
--nc-chat-reasoning-surface: var(--accent);
|
|
244
244
|
--nc-chat-artifact-surface: var(--popover);
|
|
245
|
-
--nc-chat-inline-ref-surface: var(--nc-link-
|
|
245
|
+
--nc-chat-inline-ref-surface: var(--nc-dark-link-bg-soft);
|
|
246
246
|
--nc-chat-directive-command: var(--nc-dark-cyan);
|
|
247
247
|
--nc-chat-directive-skill: var(--nc-dark-cyan-soft);
|
|
248
248
|
--nc-chat-directive-theme: var(--nc-warning);
|
|
@@ -273,16 +273,16 @@
|
|
|
273
273
|
--nc-status-offline: var(--nc-cross);
|
|
274
274
|
--nc-status-online: var(--nc-dark-cyan-soft);
|
|
275
275
|
|
|
276
|
-
--nc-diff-added-line: var(--nc-link-
|
|
276
|
+
--nc-diff-added-line: var(--nc-dark-link-bg-soft);
|
|
277
277
|
--nc-diff-added-word: var(--nc-dark-cyan-soft);
|
|
278
278
|
--nc-diff-removed-line: var(--nc-error-deep);
|
|
279
279
|
--nc-diff-removed-word: var(--nc-error-soft);
|
|
280
280
|
--nc-diff-hunk: var(--muted);
|
|
281
281
|
--nc-diff-file-header: var(--muted-foreground);
|
|
282
|
-
/*
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
--nc-code-surface: var(--nc-
|
|
282
|
+
/* Code/terminal chrome must stay near-black in dark mode. --nc-ink flips
|
|
283
|
+
light at :root.dark (generated surface-palette remap), so these ink-as-
|
|
284
|
+
surface aliases re-pin to the dark canvas tokens explicitly. */
|
|
285
|
+
--nc-code-surface: var(--nc-dark-canvas-soft);
|
|
286
286
|
--nc-code-border: var(--nc-body);
|
|
287
287
|
/* cyan family retired per Italia color contract §6. dark-cyan/-soft/-deep
|
|
288
288
|
were kept unchanged in DESIGN.md specifically for this dark-mode "electric"
|
|
@@ -293,12 +293,12 @@
|
|
|
293
293
|
--nc-code-token-comment: var(--nc-cross);
|
|
294
294
|
--nc-code-token-function: var(--nc-dark-cyan-soft);
|
|
295
295
|
|
|
296
|
-
--nc-terminal-bg: var(--nc-
|
|
296
|
+
--nc-terminal-bg: var(--nc-dark-canvas-soft);
|
|
297
297
|
--nc-terminal-fg: var(--nc-on-primary);
|
|
298
298
|
--nc-terminal-muted: var(--nc-cross);
|
|
299
299
|
--nc-terminal-cursor: var(--nc-dark-cyan);
|
|
300
|
-
--nc-terminal-selection-bg: var(--nc-link-
|
|
301
|
-
--nc-terminal-ansi-black: var(--nc-
|
|
300
|
+
--nc-terminal-selection-bg: var(--nc-dark-link-bg-soft);
|
|
301
|
+
--nc-terminal-ansi-black: var(--nc-dark-line);
|
|
302
302
|
--nc-terminal-ansi-red: var(--nc-error-soft);
|
|
303
303
|
--nc-terminal-ansi-green: var(--nc-dark-cyan-soft);
|
|
304
304
|
--nc-terminal-ansi-yellow: var(--nc-warning);
|
|
@@ -309,7 +309,7 @@
|
|
|
309
309
|
--nc-terminal-ansi-bright-black: var(--nc-cross);
|
|
310
310
|
--nc-terminal-ansi-bright-red: var(--nc-error-soft);
|
|
311
311
|
--nc-terminal-ansi-bright-green: var(--nc-dark-cyan-soft);
|
|
312
|
-
--nc-terminal-ansi-bright-yellow: var(--nc-warning
|
|
312
|
+
--nc-terminal-ansi-bright-yellow: var(--nc-warning);
|
|
313
313
|
--nc-terminal-ansi-bright-blue: var(--nc-dark-cyan);
|
|
314
314
|
--nc-terminal-ansi-bright-magenta: var(--nc-flag-red);
|
|
315
315
|
--nc-terminal-ansi-bright-cyan: var(--nc-dark-cyan-soft);
|
|
@@ -330,6 +330,18 @@
|
|
|
330
330
|
--nc-plugin-permission-foreground: var(--foreground);
|
|
331
331
|
}
|
|
332
332
|
|
|
333
|
+
/*
|
|
334
|
+
* The design-system CSS components (.nc-chat-thread, .nc-chat-bubble-*,
|
|
335
|
+
* .nc-artifact-preview, .nc-approval-gate, .nc-tool-call-trace,
|
|
336
|
+
* .nc-usage-meter, .nc-run-timeline, .nc-memory-item, .nc-handoff-banner, …)
|
|
337
|
+
* paint from the raw --nc-canvas/ink/body/line/canvas-soft/muted/warning
|
|
338
|
+
* palette. The generated theme remaps that surface palette (alongside the
|
|
339
|
+
* state/selection/cross/chart families) at :root.dark, so every nc-* CSS
|
|
340
|
+
* component is dark-correct with no per-component selector list here.
|
|
341
|
+
* Ink-as-surface aliases (code/terminal chrome) re-pin to explicit dark
|
|
342
|
+
* canvas tokens in the .dark block above, since --nc-ink flips light.
|
|
343
|
+
*/
|
|
344
|
+
|
|
333
345
|
[data-nc-code-block-body] {
|
|
334
346
|
background-color: var(--shiki-code-block-light-bg, var(--background));
|
|
335
347
|
color: var(--shiki-code-block-light-fg, var(--foreground));
|
|
@@ -340,10 +352,7 @@
|
|
|
340
352
|
--shiki-code-block-dark-bg,
|
|
341
353
|
var(--shiki-code-block-light-bg, var(--background))
|
|
342
354
|
);
|
|
343
|
-
color: var(
|
|
344
|
-
--shiki-code-block-dark-fg,
|
|
345
|
-
var(--shiki-code-block-light-fg, var(--foreground))
|
|
346
|
-
);
|
|
355
|
+
color: var(--shiki-code-block-dark-fg, var(--shiki-code-block-light-fg, var(--foreground)));
|
|
347
356
|
}
|
|
348
357
|
|
|
349
358
|
[data-nc-code-token] {
|
|
@@ -355,14 +364,8 @@
|
|
|
355
364
|
}
|
|
356
365
|
|
|
357
366
|
.dark [data-nc-code-token] {
|
|
358
|
-
background-color: var(
|
|
359
|
-
|
|
360
|
-
var(--shiki-code-token-light-bg, transparent)
|
|
361
|
-
);
|
|
362
|
-
color: var(
|
|
363
|
-
--shiki-code-token-dark-color,
|
|
364
|
-
var(--shiki-code-token-light-color, var(--foreground))
|
|
365
|
-
);
|
|
367
|
+
background-color: var(--shiki-code-token-dark-bg, var(--shiki-code-token-light-bg, transparent));
|
|
368
|
+
color: var(--shiki-code-token-dark-color, var(--shiki-code-token-light-color, var(--foreground)));
|
|
366
369
|
font-style: var(
|
|
367
370
|
--shiki-code-token-dark-font-style,
|
|
368
371
|
var(--shiki-code-token-light-font-style, normal)
|
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
# Agent Work Surfaces
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
artifact, file, preview, diff, and terminal summary UI
|
|
5
|
-
|
|
3
|
+
Presentational agent surfaces for Nadia-flavored chat, composer, approval,
|
|
4
|
+
artifact, file, preview, diff, and terminal summary UI, plus the identity slots
|
|
5
|
+
they compose from. These components render serializable state models and leave
|
|
6
|
+
runtime behavior to the consuming app.
|
|
7
|
+
|
|
8
|
+
## Design-System Family Convergence
|
|
9
|
+
|
|
10
|
+
The React agent layer is the React face of the design-system Agentic Work
|
|
11
|
+
Surface CSS families (`design-system/DESIGN.md`). Each component consumes its
|
|
12
|
+
`nc-*` family class for identity — surface, border, chrome — and adds Tailwind
|
|
13
|
+
only for layout and spacing; the CSS family owns any value it already sets. The
|
|
14
|
+
families come from `@nadicodeai/design-system/css`, which the consuming app
|
|
15
|
+
imports alongside `@nadicodeai/ui/globals.css`.
|
|
16
|
+
|
|
17
|
+
- `AgentThread` -> `nc-chat-thread`.
|
|
18
|
+
- `AgentMessage` text bubbles -> `nc-chat-bubble-user` / `nc-chat-bubble-agent`;
|
|
19
|
+
the tool row -> `nc-tool-call-trace`.
|
|
20
|
+
- `AgentToolApproval` -> `nc-approval-gate`.
|
|
21
|
+
- `ArtifactPanel` -> `nc-artifact-preview`.
|
|
22
|
+
- `AgentAvatar` -> `nc-agent-avatar`, `UsageMeter` -> `nc-usage-meter`,
|
|
23
|
+
`RunTimeline` -> `nc-run-timeline`, `MemoryItem` -> `nc-memory-item`,
|
|
24
|
+
`HandoffBanner` -> `nc-handoff-banner`.
|
|
6
25
|
|
|
7
26
|
## Components
|
|
8
27
|
|
|
@@ -20,6 +39,20 @@ serializable state models and leave runtime behavior to the consuming app.
|
|
|
20
39
|
stack-trace, and test-result artifacts.
|
|
21
40
|
- `FilesPreview` and `ProjectFileTree` render a serializable project tree and
|
|
22
41
|
file preview without desktop IPC.
|
|
42
|
+
- `AgentAvatar` renders an agent identity slot with an optional accent ring; the
|
|
43
|
+
chrome is reusable and the initials, image, or generated asset are slotted.
|
|
44
|
+
- `UsageMeter` renders a token, cost, latency, or run-count meta row from
|
|
45
|
+
serializable `fields` and `trailing` strings over an optional progress track
|
|
46
|
+
driven by `usage`, with a `children` slot for custom meta content.
|
|
47
|
+
- `RunTimeline` renders a vertical step thread for a run, handoff, or workflow
|
|
48
|
+
from serializable steps (`title`, `label`, `detail`) with `ready`, `running`,
|
|
49
|
+
`review`, `blocked`, and `complete` step states and a per-step `detailSlot`
|
|
50
|
+
escape hatch.
|
|
51
|
+
- `MemoryItem` renders a remembered-fact row from a serializable `label` and
|
|
52
|
+
`fact`, with a `children` slot that replaces the fact.
|
|
53
|
+
- `HandoffBanner` renders an agent-to-agent or human-to-agent handoff surface
|
|
54
|
+
from a serializable `reason` and `destination`, with a `children` slot that
|
|
55
|
+
replaces the model.
|
|
23
56
|
|
|
24
57
|
## State Models
|
|
25
58
|
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Consuming `@nadicodeai/ui` Cross-Repo
|
|
2
|
+
|
|
3
|
+
This is the contract for an external repo — nadia-core, sibling Nadia web,
|
|
4
|
+
desktop, or any consumer outside this monorepo — installing `@nadicodeai/ui`
|
|
5
|
+
from published npm rather than the workspace source.
|
|
6
|
+
|
|
7
|
+
## Version pinning
|
|
8
|
+
|
|
9
|
+
Pin both packages to an exact version, never `latest` or a caret/tilde range:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm view @nadicodeai/ui version
|
|
13
|
+
npm view @nadicodeai/design-system version
|
|
14
|
+
npm install @nadicodeai/design-system@<exact-version> @nadicodeai/ui@<exact-version> react@^19 react-dom@^19 tailwindcss@^4 @tailwindcss/postcss@^4
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
`@nadicodeai/ui` pins its `@nadicodeai/design-system` dependency exactly; the
|
|
18
|
+
consumer's own `package.json` must match that same version for both packages.
|
|
19
|
+
A version bump in either package requires re-pinning both together.
|
|
20
|
+
|
|
21
|
+
## CSS import order
|
|
22
|
+
|
|
23
|
+
Import order is load-bearing. Import both `@nadicodeai/design-system` CSS
|
|
24
|
+
entrypoints before `@nadicodeai/ui/globals.css`: the fonts, so the
|
|
25
|
+
`Geist`/`Geist Mono` `@font-face` declarations that the generated theme's
|
|
26
|
+
`--font-*` roles reference are already registered, and `@nadicodeai/design-system/css`
|
|
27
|
+
itself, which owns the kept `nc-*` geometry, type scale, chat CSS components,
|
|
28
|
+
motion, and display components that `@nadicodeai/ui` components render
|
|
29
|
+
against. `@nadicodeai/ui/globals.css` pulls in the generated theme and
|
|
30
|
+
tokens but not this `nc-*` layer, so skipping it leaves package components
|
|
31
|
+
unstyled:
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
import "@nadicodeai/design-system/assets/fonts/geist.css";
|
|
35
|
+
import "@nadicodeai/design-system/css";
|
|
36
|
+
import "@nadicodeai/ui/globals.css";
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Both `@nadicodeai/design-system` and `@nadicodeai/ui` are required
|
|
40
|
+
dependencies of every consumer, not just `@nadicodeai/ui` — see the version
|
|
41
|
+
pinning section above.
|
|
42
|
+
|
|
43
|
+
## Tailwind v4 source scanning
|
|
44
|
+
|
|
45
|
+
Tailwind v4's automatic content detection does not scan `node_modules`. Add an
|
|
46
|
+
explicit `@source` directive in the consumer's Tailwind entry CSS (wherever
|
|
47
|
+
`@import "tailwindcss"` lives) pointing at the package's built `dist`:
|
|
48
|
+
|
|
49
|
+
```css
|
|
50
|
+
@source "../node_modules/@nadicodeai/ui/dist";
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Adjust the relative path to match the consumer's directory depth from its
|
|
54
|
+
Tailwind entry file to `node_modules`.
|
|
55
|
+
|
|
56
|
+
## Base UI API breaks (migrating from Radix-era components)
|
|
57
|
+
|
|
58
|
+
`@nadicodeai/ui@0.5.0+` is Base UI only; the Radix-era compatibility layer is
|
|
59
|
+
gone. Full catalog and rationale: `docs/migration/base-ui-migration.md`. What
|
|
60
|
+
a consumer actually hits when porting call sites:
|
|
61
|
+
|
|
62
|
+
- No `asChild`. Use Base UI's `render` prop; when the rendered element isn't
|
|
63
|
+
a native `<button>`, also pass `nativeButton={false}`.
|
|
64
|
+
- Menu items (`DropdownMenuItem`, `ContextMenuItem`, `MenubarItem`) use
|
|
65
|
+
`onClick`, not `onSelect`.
|
|
66
|
+
- State attributes are `data-checked`/`data-unchecked` and
|
|
67
|
+
`data-open`/`data-closed`, not a single `data-state` value.
|
|
68
|
+
- `Accordion` and `ToggleGroup` values are always arrays — pass `multiple`
|
|
69
|
+
for multi-select instead of `type="single" | "multiple"`.
|
|
70
|
+
- `TooltipProvider` takes `delay`, not `delayDuration`.
|
|
71
|
+
- Disclosure panels (`CollapsibleContent`, etc.) take `keepMounted`, not
|
|
72
|
+
`forceMount`.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# AI Elements Vendoring
|
|
2
|
+
|
|
3
|
+
`@nadicodeai/ui/src/components/ai-elements/*` is vendored source, not a
|
|
4
|
+
dependency. It was pulled from
|
|
5
|
+
[github.com/vercel/ai-elements](https://github.com/vercel/ai-elements) on
|
|
6
|
+
2026-06-22 in monorepo commit `c2b97003` ("feat(ui): package shadcn and ai
|
|
7
|
+
elements") — 48 components. The upstream ref at vendor time was not recorded;
|
|
8
|
+
every re-vendor from now on records the upstream ref it checked in the log
|
|
9
|
+
below. Since vendoring, the components have been adapted
|
|
10
|
+
in place: the Base UI migration (`docs/migration/base-ui-migration.md`),
|
|
11
|
+
`src/hooks/use-controllable-state.ts` replacing
|
|
12
|
+
`@radix-ui/react-use-controllable-state`, and theming onto brand tokens.
|
|
13
|
+
|
|
14
|
+
Upstream `ai-elements` is still Radix-based. Re-vendoring an item is a diff,
|
|
15
|
+
not a copy:
|
|
16
|
+
|
|
17
|
+
1. Fetch the upstream item's current source (`shadcn` CLI against the
|
|
18
|
+
`@ai-elements` registry, or the upstream repo directly).
|
|
19
|
+
2. Diff it against our adapted file in
|
|
20
|
+
`@nadicodeai/ui/src/components/ai-elements/`.
|
|
21
|
+
3. Re-apply the Base UI migration and token adaptations to whatever upstream
|
|
22
|
+
changed — do not reintroduce Radix imports or raw palette values.
|
|
23
|
+
4. Record the upstream ref checked below.
|
|
24
|
+
|
|
25
|
+
## Re-vendor log
|
|
26
|
+
|
|
27
|
+
| Date | Upstream ref checked | Notes |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| 2026-06-22 | not recorded | Initial vendor, 48 components (monorepo commit `c2b97003`). |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nadicodeai/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -19,6 +19,18 @@
|
|
|
19
19
|
"types": "./dist/ai-elements.d.ts",
|
|
20
20
|
"import": "./dist/ai-elements.js"
|
|
21
21
|
},
|
|
22
|
+
"./hooks": {
|
|
23
|
+
"types": "./dist/hooks/index.d.ts",
|
|
24
|
+
"import": "./dist/hooks/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./lib/agent-contracts": {
|
|
27
|
+
"types": "./dist/lib/agent-contracts.d.ts",
|
|
28
|
+
"import": "./dist/lib/agent-contracts.js"
|
|
29
|
+
},
|
|
30
|
+
"./lib/agent-state": {
|
|
31
|
+
"types": "./dist/lib/agent-state.d.ts",
|
|
32
|
+
"import": "./dist/lib/agent-state.js"
|
|
33
|
+
},
|
|
22
34
|
"./lib/utils": {
|
|
23
35
|
"types": "./dist/lib/utils.d.ts",
|
|
24
36
|
"import": "./dist/lib/utils.js"
|
|
@@ -51,7 +63,7 @@
|
|
|
51
63
|
},
|
|
52
64
|
"dependencies": {
|
|
53
65
|
"@base-ui/react": "^1.6.0",
|
|
54
|
-
"@nadicodeai/design-system": "0.
|
|
66
|
+
"@nadicodeai/design-system": "0.8.0",
|
|
55
67
|
"@rive-app/react-webgl2": "^4.29.1",
|
|
56
68
|
"@streamdown/cjk": "^1.0.3",
|
|
57
69
|
"@streamdown/code": "^1.1.1",
|