@nadicodeai/ui 0.21.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +6 -7
- package/LICENSES/PAPER-SHADERS-APACHE-2.0.txt +186 -0
- package/NOTICE +12 -0
- package/README.md +14 -21
- package/dist/agents.d.ts +10 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +10 -0
- package/dist/components/agent-card.d.ts +13 -0
- package/dist/components/agent-card.d.ts.map +1 -0
- package/dist/components/agent-card.js +15 -0
- package/dist/components/agent-visual.d.ts +17 -0
- package/dist/components/agent-visual.d.ts.map +1 -0
- package/dist/components/agent-visual.js +59 -0
- package/dist/components/alert-dialog.js +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.d.ts.map +1 -1
- package/dist/components/badge.js +9 -0
- package/dist/components/button.d.ts +1 -1
- package/dist/components/card.d.ts +5 -3
- package/dist/components/card.d.ts.map +1 -1
- package/dist/components/card.js +7 -7
- package/dist/components/chart.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/context-menu.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/drawer.js +1 -1
- package/dist/components/dropdown-menu.js +1 -1
- package/dist/components/empty.d.ts +5 -2
- package/dist/components/empty.d.ts.map +1 -1
- package/dist/components/empty.js +3 -3
- package/dist/components/feedback-state.js +1 -1
- package/dist/components/glass-control.d.ts +7 -0
- package/dist/components/glass-control.d.ts.map +1 -0
- package/dist/components/glass-control.js +14 -0
- package/dist/components/hover-card.js +1 -1
- package/dist/components/label-system.d.ts +1 -10
- package/dist/components/label-system.d.ts.map +1 -1
- package/dist/components/label-system.js +1 -7
- package/dist/components/live-demo.js +1 -1
- package/dist/components/menubar.js +1 -1
- package/dist/components/nav-bar.d.ts +6 -8
- package/dist/components/nav-bar.d.ts.map +1 -1
- package/dist/components/nav-bar.js +8 -9
- package/dist/components/navigation-menu.js +2 -2
- package/dist/components/popover.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/sheet.js +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sonner.js +2 -2
- package/dist/components/testimonials.d.ts +1 -1
- package/dist/components/testimonials.js +2 -2
- package/dist/components/tooltip.js +1 -1
- package/dist/components/use-case-bento.d.ts +2 -4
- package/dist/components/use-case-bento.d.ts.map +1 -1
- package/dist/components/use-case-bento.js +2 -3
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +0 -1
- package/dist/index.d.ts +3 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -16
- package/dist/internal/agent-visual/color.d.ts +4 -0
- package/dist/internal/agent-visual/color.d.ts.map +1 -0
- package/dist/internal/agent-visual/color.js +39 -0
- package/dist/internal/agent-visual/poster.d.ts +6 -0
- package/dist/internal/agent-visual/poster.d.ts.map +1 -0
- package/dist/internal/agent-visual/poster.js +35 -0
- package/dist/internal/agent-visual/recipes.d.ts +15 -0
- package/dist/internal/agent-visual/recipes.d.ts.map +1 -0
- package/dist/internal/agent-visual/recipes.js +72 -0
- package/dist/internal/agent-visual/renderer.d.ts +10 -0
- package/dist/internal/agent-visual/renderer.d.ts.map +1 -0
- package/dist/internal/agent-visual/renderer.js +112 -0
- package/dist/internal/agent-visual/shader.d.ts +2 -0
- package/dist/internal/agent-visual/shader.d.ts.map +1 -0
- package/dist/internal/agent-visual/shader.js +158 -0
- package/dist/internal/assistant-ui/attachment.d.ts +5 -0
- package/dist/internal/assistant-ui/attachment.d.ts.map +1 -0
- package/dist/internal/assistant-ui/attachment.js +93 -0
- package/dist/internal/assistant-ui/follow-up-suggestions.d.ts +3 -0
- package/dist/internal/assistant-ui/follow-up-suggestions.d.ts.map +1 -0
- package/dist/internal/assistant-ui/follow-up-suggestions.js +8 -0
- package/dist/internal/assistant-ui/markdown-text.d.ts +2 -0
- package/dist/internal/assistant-ui/markdown-text.d.ts.map +1 -0
- package/dist/internal/assistant-ui/markdown-text.js +54 -0
- package/dist/internal/assistant-ui/reasoning.d.ts +31 -0
- package/dist/internal/assistant-ui/reasoning.d.ts.map +1 -0
- package/dist/internal/assistant-ui/reasoning.js +118 -0
- package/dist/internal/assistant-ui/thread.d.ts +26 -0
- package/dist/internal/assistant-ui/thread.d.ts.map +1 -0
- package/dist/internal/assistant-ui/thread.js +118 -0
- package/dist/internal/assistant-ui/tool-fallback.d.ts +10 -0
- package/dist/internal/assistant-ui/tool-fallback.d.ts.map +1 -0
- package/dist/internal/assistant-ui/tool-fallback.js +163 -0
- package/dist/internal/assistant-ui/tool-group.d.ts +18 -0
- package/dist/internal/assistant-ui/tool-group.d.ts.map +1 -0
- package/dist/internal/assistant-ui/tool-group.js +44 -0
- package/dist/internal/assistant-ui/tooltip-icon-button.d.ts +8 -0
- package/dist/internal/assistant-ui/tooltip-icon-button.d.ts.map +1 -0
- package/dist/internal/assistant-ui/tooltip-icon-button.js +10 -0
- package/dist/styles/globals.css +24 -209
- package/docs/agents/nadicodeai-ui.md +8 -8
- package/docs/component-classification.md +1 -1
- package/docs/consuming-cross-repo.md +12 -4
- package/docs/contract.md +83 -7
- package/docs/migration/1.0.0.md +75 -0
- package/docs/migration/base-ui-migration.md +0 -11
- package/docs/product-compositions.md +1 -1
- package/llms.txt +7 -6
- package/package.json +17 -29
- package/skills/nadicodeai-ui/SKILL.md +11 -7
- package/dist/ai-elements.d.ts +0 -49
- package/dist/ai-elements.d.ts.map +0 -1
- package/dist/ai-elements.js +0 -48
- package/dist/components/agent-avatar.d.ts +0 -7
- package/dist/components/agent-avatar.d.ts.map +0 -1
- package/dist/components/agent-avatar.js +0 -6
- package/dist/components/agent-chat.d.ts +0 -20
- package/dist/components/agent-chat.d.ts.map +0 -1
- package/dist/components/agent-chat.js +0 -10
- package/dist/components/agent-composer.d.ts +0 -56
- package/dist/components/agent-composer.d.ts.map +0 -1
- package/dist/components/agent-composer.js +0 -56
- package/dist/components/agent-message.d.ts +0 -117
- package/dist/components/agent-message.d.ts.map +0 -1
- package/dist/components/agent-message.js +0 -99
- package/dist/components/agent-thread.d.ts +0 -26
- package/dist/components/agent-thread.d.ts.map +0 -1
- package/dist/components/agent-thread.js +0 -63
- package/dist/components/agent-tool-approval.d.ts +0 -27
- package/dist/components/agent-tool-approval.d.ts.map +0 -1
- package/dist/components/agent-tool-approval.js +0 -43
- package/dist/components/ai-elements/agent.d.ts +0 -27
- package/dist/components/ai-elements/agent.d.ts.map +0 -1
- package/dist/components/ai-elements/agent.js +0 -25
- package/dist/components/ai-elements/artifact.d.ts +0 -24
- package/dist/components/ai-elements/artifact.d.ts.map +0 -1
- package/dist/components/ai-elements/artifact.js +0 -20
- package/dist/components/ai-elements/attachments.d.ts +0 -55
- package/dist/components/ai-elements/attachments.d.ts.map +0 -1
- package/dist/components/ai-elements/attachments.js +0 -125
- package/dist/components/ai-elements/audio-player.d.ts +0 -30
- package/dist/components/ai-elements/audio-player.d.ts.map +0 -1
- package/dist/components/ai-elements/audio-player.js +0 -41
- package/dist/components/ai-elements/canvas.d.ts +0 -8
- package/dist/components/ai-elements/canvas.d.ts.map +0 -1
- package/dist/components/ai-elements/canvas.js +0 -5
- package/dist/components/ai-elements/chain-of-thought.d.ts +0 -30
- package/dist/components/ai-elements/chain-of-thought.d.ts.map +0 -1
- package/dist/components/ai-elements/chain-of-thought.js +0 -49
- package/dist/components/ai-elements/checkpoint.d.ts +0 -12
- package/dist/components/ai-elements/checkpoint.d.ts.map +0 -1
- package/dist/components/ai-elements/checkpoint.js +0 -10
- package/dist/components/ai-elements/code-block.d.ts +0 -53
- package/dist/components/ai-elements/code-block.d.ts.map +0 -1
- package/dist/components/ai-elements/code-block.js +0 -239
- package/dist/components/ai-elements/commit.d.ts +0 -65
- package/dist/components/ai-elements/commit.d.ts.map +0 -1
- package/dist/components/ai-elements/commit.js +0 -83
- package/dist/components/ai-elements/confirmation.d.ts +0 -50
- package/dist/components/ai-elements/confirmation.d.ts.map +0 -1
- package/dist/components/ai-elements/confirmation.js +0 -57
- package/dist/components/ai-elements/connection.d.ts +0 -6
- package/dist/components/ai-elements/connection.d.ts.map +0 -1
- package/dist/components/ai-elements/connection.js +0 -10
- package/dist/components/ai-elements/context.d.ts +0 -33
- package/dist/components/ai-elements/context.d.ts.map +0 -1
- package/dist/components/ai-elements/context.js +0 -147
- package/dist/components/ai-elements/controls.d.ts +0 -5
- package/dist/components/ai-elements/controls.d.ts.map +0 -1
- package/dist/components/ai-elements/controls.js +0 -5
- package/dist/components/ai-elements/conversation.d.ts +0 -24
- package/dist/components/ai-elements/conversation.d.ts.map +0 -1
- package/dist/components/ai-elements/conversation.js +0 -41
- package/dist/components/ai-elements/edge.d.ts +0 -6
- package/dist/components/ai-elements/edge.d.ts.map +0 -1
- package/dist/components/ai-elements/edge.js +0 -88
- package/dist/components/ai-elements/environment-variables.d.ts +0 -39
- package/dist/components/ai-elements/environment-variables.d.ts.map +0 -1
- package/dist/components/ai-elements/environment-variables.js +0 -60
- package/dist/components/ai-elements/file-tree.d.ts +0 -27
- package/dist/components/ai-elements/file-tree.d.ts.map +0 -1
- package/dist/components/ai-elements/file-tree.js +0 -73
- package/dist/components/ai-elements/image.d.ts +0 -7
- package/dist/components/ai-elements/image.d.ts.map +0 -1
- package/dist/components/ai-elements/image.js +0 -3
- package/dist/components/ai-elements/inline-citation.d.ts +0 -39
- package/dist/components/ai-elements/inline-citation.d.ts.map +0 -1
- package/dist/components/ai-elements/inline-citation.js +0 -86
- package/dist/components/ai-elements/jsx-preview.d.ts +0 -30
- package/dist/components/ai-elements/jsx-preview.d.ts.map +0 -1
- package/dist/components/ai-elements/jsx-preview.js +0 -159
- package/dist/components/ai-elements/message.d.ts +0 -38
- package/dist/components/ai-elements/message.d.ts.map +0 -1
- package/dist/components/ai-elements/message.js +0 -91
- package/dist/components/ai-elements/mic-selector.d.ts +0 -46
- package/dist/components/ai-elements/mic-selector.d.ts.map +0 -1
- package/dist/components/ai-elements/mic-selector.js +0 -180
- package/dist/components/ai-elements/model-selector.d.ts +0 -36
- package/dist/components/ai-elements/model-selector.d.ts.map +0 -1
- package/dist/components/ai-elements/model-selector.js +0 -18
- package/dist/components/ai-elements/node.d.ts +0 -22
- package/dist/components/ai-elements/node.d.ts.map +0 -1
- package/dist/components/ai-elements/node.js +0 -12
- package/dist/components/ai-elements/open-in-chat.d.ts +0 -27
- package/dist/components/ai-elements/open-in-chat.d.ts.map +0 -1
- package/dist/components/ai-elements/open-in-chat.js +0 -81
- package/dist/components/ai-elements/package-info.d.ts +0 -30
- package/dist/components/ai-elements/package-info.d.ts.map +0 -1
- package/dist/components/ai-elements/package-info.js +0 -50
- package/dist/components/ai-elements/panel.d.ts +0 -6
- package/dist/components/ai-elements/panel.d.ts.map +0 -1
- package/dist/components/ai-elements/panel.js +0 -5
- package/dist/components/ai-elements/persona.d.ts +0 -49
- package/dist/components/ai-elements/persona.d.ts.map +0 -1
- package/dist/components/ai-elements/persona.js +0 -175
- package/dist/components/ai-elements/plan.d.ts +0 -27
- package/dist/components/ai-elements/plan.d.ts.map +0 -1
- package/dist/components/ai-elements/plan.js +0 -34
- package/dist/components/ai-elements/prompt-input.d.ts +0 -149
- package/dist/components/ai-elements/prompt-input.d.ts.map +0 -1
- package/dist/components/ai-elements/prompt-input.js +0 -704
- package/dist/components/ai-elements/queue.d.ts +0 -62
- package/dist/components/ai-elements/queue.d.ts.map +0 -1
- package/dist/components/ai-elements/queue.js +0 -24
- package/dist/components/ai-elements/reasoning.d.ts +0 -27
- package/dist/components/ai-elements/reasoning.d.ts.map +0 -1
- package/dist/components/ai-elements/reasoning.js +0 -92
- package/dist/components/ai-elements/sandbox.d.ts +0 -25
- package/dist/components/ai-elements/sandbox.d.ts.map +0 -1
- package/dist/components/ai-elements/sandbox.js +0 -15
- package/dist/components/ai-elements/schema-display.d.ts +0 -56
- package/dist/components/ai-elements/schema-display.d.ts.map +0 -1
- package/dist/components/ai-elements/schema-display.js +0 -90
- package/dist/components/ai-elements/shimmer.d.ts +0 -10
- package/dist/components/ai-elements/shimmer.d.ts.map +0 -1
- package/dist/components/ai-elements/shimmer.js +0 -11
- package/dist/components/ai-elements/snippet.d.ts +0 -19
- package/dist/components/ai-elements/snippet.d.ts.map +0 -1
- package/dist/components/ai-elements/snippet.js +0 -32
- package/dist/components/ai-elements/sources.d.ts +0 -13
- package/dist/components/ai-elements/sources.d.ts.map +0 -1
- package/dist/components/ai-elements/sources.js +0 -9
- package/dist/components/ai-elements/speech-input.d.ts +0 -55
- package/dist/components/ai-elements/speech-input.d.ts.map +0 -1
- package/dist/components/ai-elements/speech-input.js +0 -187
- package/dist/components/ai-elements/stack-trace.d.ts +0 -38
- package/dist/components/ai-elements/stack-trace.d.ts.map +0 -1
- package/dist/components/ai-elements/stack-trace.js +0 -181
- package/dist/components/ai-elements/suggestion.d.ts +0 -11
- package/dist/components/ai-elements/suggestion.d.ts.map +0 -1
- package/dist/components/ai-elements/suggestion.js +0 -13
- package/dist/components/ai-elements/task.d.ts +0 -15
- package/dist/components/ai-elements/task.d.ts.map +0 -1
- package/dist/components/ai-elements/task.js +0 -10
- package/dist/components/ai-elements/terminal.d.ts +0 -28
- package/dist/components/ai-elements/terminal.d.ts.map +0 -1
- package/dist/components/ai-elements/terminal.js +0 -55
- package/dist/components/ai-elements/test-results.d.ts +0 -59
- package/dist/components/ai-elements/test-results.d.ts.map +0 -1
- package/dist/components/ai-elements/test-results.js +0 -98
- package/dist/components/ai-elements/tool.d.ts +0 -32
- package/dist/components/ai-elements/tool.d.ts.map +0 -1
- package/dist/components/ai-elements/tool.js +0 -49
- package/dist/components/ai-elements/toolbar.d.ts +0 -6
- package/dist/components/ai-elements/toolbar.d.ts.map +0 -1
- package/dist/components/ai-elements/toolbar.js +0 -5
- package/dist/components/ai-elements/transcription.d.ts +0 -17
- package/dist/components/ai-elements/transcription.d.ts.map +0 -1
- package/dist/components/ai-elements/transcription.js +0 -36
- package/dist/components/ai-elements/voice-selector.d.ts +0 -65
- package/dist/components/ai-elements/voice-selector.d.ts.map +0 -1
- package/dist/components/ai-elements/voice-selector.js +0 -224
- package/dist/components/ai-elements/web-preview.d.ts +0 -35
- package/dist/components/ai-elements/web-preview.d.ts.map +0 -1
- package/dist/components/ai-elements/web-preview.js +0 -66
- package/dist/components/artifact-panel.d.ts +0 -130
- package/dist/components/artifact-panel.d.ts.map +0 -1
- package/dist/components/artifact-panel.js +0 -180
- package/dist/components/attachment.d.ts +0 -24
- package/dist/components/attachment.d.ts.map +0 -1
- package/dist/components/attachment.js +0 -68
- package/dist/components/bubble.d.ts +0 -17
- package/dist/components/bubble.d.ts.map +0 -1
- package/dist/components/bubble.js +0 -59
- package/dist/components/demo-surface.d.ts +0 -34
- package/dist/components/demo-surface.d.ts.map +0 -1
- package/dist/components/demo-surface.js +0 -21
- package/dist/components/files-preview.d.ts +0 -36
- package/dist/components/files-preview.d.ts.map +0 -1
- package/dist/components/files-preview.js +0 -85
- package/dist/components/marker.d.ts +0 -11
- package/dist/components/marker.d.ts.map +0 -1
- package/dist/components/marker.js +0 -34
- package/dist/components/message-scroller.d.ts +0 -17
- package/dist/components/message-scroller.d.ts.map +0 -1
- package/dist/components/message-scroller.js +0 -29
- package/dist/components/message.d.ts +0 -11
- package/dist/components/message.d.ts.map +0 -1
- package/dist/components/message.js +0 -21
- package/dist/components/state-notice.d.ts +0 -13
- package/dist/components/state-notice.d.ts.map +0 -1
- package/dist/components/state-notice.js +0 -8
- package/dist/components/watch-it-work-band.d.ts +0 -12
- package/dist/components/watch-it-work-band.d.ts.map +0 -1
- package/dist/components/watch-it-work-band.js +0 -8
- package/dist/hooks/use-controllable-state.d.ts +0 -9
- package/dist/hooks/use-controllable-state.d.ts.map +0 -1
- package/dist/hooks/use-controllable-state.js +0 -23
- package/dist/lib/agent-attachment.d.ts +0 -11
- package/dist/lib/agent-attachment.d.ts.map +0 -1
- package/dist/lib/agent-attachment.js +0 -19
- package/dist/lib/agent-contracts.d.ts +0 -132
- package/dist/lib/agent-contracts.d.ts.map +0 -1
- package/dist/lib/agent-contracts.js +0 -6
- package/dist/lib/agent-state.d.ts +0 -22
- package/dist/lib/agent-state.d.ts.map +0 -1
- package/dist/lib/agent-state.js +0 -96
- package/dist/lib/agent-work-state.d.ts +0 -36
- package/dist/lib/agent-work-state.d.ts.map +0 -1
- package/dist/lib/agent-work-state.js +0 -36
- package/dist/lib/message-scroller-primitive/components.d.ts +0 -17
- package/dist/lib/message-scroller-primitive/components.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/components.js +0 -204
- package/dist/lib/message-scroller-primitive/geometry.d.ts +0 -51
- package/dist/lib/message-scroller-primitive/geometry.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/geometry.js +0 -199
- package/dist/lib/message-scroller-primitive/index.d.ts +0 -12
- package/dist/lib/message-scroller-primitive/index.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/index.js +0 -12
- package/dist/lib/message-scroller-primitive/stores.d.ts +0 -6
- package/dist/lib/message-scroller-primitive/stores.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/stores.js +0 -53
- package/dist/lib/message-scroller-primitive/types.d.ts +0 -88
- package/dist/lib/message-scroller-primitive/types.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/types.js +0 -40
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts +0 -19
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.js +0 -188
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts +0 -7
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.js +0 -506
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts +0 -49
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.js +0 -90
- package/dist/lib/message-scroller-primitive/use-render.d.ts +0 -22
- package/dist/lib/message-scroller-primitive/use-render.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-render.js +0 -113
- package/dist/lib/message-scroller-primitive/utils.d.ts +0 -4
- package/dist/lib/message-scroller-primitive/utils.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/utils.js +0 -9
- package/docs/agent-work-surfaces.md +0 -132
- package/docs/migration/ai-elements-vendoring.md +0 -29
- package/docs/terminal-tui-semantics.md +0 -172
package/dist/index.d.ts
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
export * from "./components/accordion";
|
|
2
2
|
export * from "./components/action-band";
|
|
3
3
|
export * from "./components/action-status";
|
|
4
|
-
export * from "./components/agent-avatar";
|
|
5
|
-
export * from "./components/agent-chat";
|
|
6
|
-
export * from "./components/agent-composer";
|
|
7
|
-
export * from "./components/agent-message";
|
|
8
|
-
export * from "./components/agent-thread";
|
|
9
|
-
export * from "./components/agent-tool-approval";
|
|
10
4
|
export * from "./components/alert";
|
|
11
5
|
export * from "./components/alert-dialog";
|
|
12
|
-
export * from "./components/
|
|
6
|
+
export * from "./components/agent-card";
|
|
7
|
+
export * from "./components/agent-visual";
|
|
13
8
|
export * from "./components/aspect-ratio";
|
|
14
|
-
export * from "./components/attachment";
|
|
15
9
|
export * from "./components/automation-section";
|
|
16
10
|
export * from "./components/avatar";
|
|
17
11
|
export * from "./components/badge";
|
|
@@ -21,7 +15,6 @@ export * from "./components/brand";
|
|
|
21
15
|
export * from "./components/brand-field";
|
|
22
16
|
export * from "./components/brand-icons";
|
|
23
17
|
export * from "./components/breadcrumb";
|
|
24
|
-
export * from "./components/bubble";
|
|
25
18
|
export * from "./components/button";
|
|
26
19
|
export * from "./components/button-group";
|
|
27
20
|
export * from "./components/calendar";
|
|
@@ -47,7 +40,6 @@ export * from "./components/confirm-dialog";
|
|
|
47
40
|
export * from "./components/contact";
|
|
48
41
|
export * from "./components/context-menu";
|
|
49
42
|
export * from "./components/dashboard-shell";
|
|
50
|
-
export * from "./components/demo-surface";
|
|
51
43
|
export * from "./components/desktop-shell";
|
|
52
44
|
export * from "./components/dialog";
|
|
53
45
|
export * from "./components/diff-count";
|
|
@@ -65,10 +57,10 @@ export * from "./components/feature-rows";
|
|
|
65
57
|
export * from "./components/feedback-state";
|
|
66
58
|
export * from "./components/field";
|
|
67
59
|
export * from "./components/file-type-icon";
|
|
68
|
-
export * from "./components/files-preview";
|
|
69
60
|
export * from "./components/footer";
|
|
70
61
|
export * from "./components/form";
|
|
71
62
|
export * from "./components/glyph-spinner";
|
|
63
|
+
export * from "./components/glass-control";
|
|
72
64
|
export * from "./components/handoff-banner";
|
|
73
65
|
export * from "./components/hero";
|
|
74
66
|
export * from "./components/hero-split";
|
|
@@ -85,12 +77,9 @@ export * from "./components/label-system";
|
|
|
85
77
|
export * from "./components/live-demo";
|
|
86
78
|
export * from "./components/logo-band";
|
|
87
79
|
export * from "./components/logo-tile";
|
|
88
|
-
export * from "./components/marker";
|
|
89
80
|
export * from "./components/media-mount";
|
|
90
81
|
export * from "./components/memory-item";
|
|
91
82
|
export * from "./components/menubar";
|
|
92
|
-
export * from "./components/message";
|
|
93
|
-
export * from "./components/message-scroller";
|
|
94
83
|
export * from "./components/native-select";
|
|
95
84
|
export * from "./components/nav-bar";
|
|
96
85
|
export * from "./components/navigation-menu";
|
|
@@ -122,7 +111,6 @@ export * from "./components/slider";
|
|
|
122
111
|
export * from "./components/sonner";
|
|
123
112
|
export * from "./components/spinner";
|
|
124
113
|
export * from "./components/stat-block";
|
|
125
|
-
export * from "./components/state-notice";
|
|
126
114
|
export * from "./components/statement";
|
|
127
115
|
export * from "./components/stats-band";
|
|
128
116
|
export * from "./components/status-dot";
|
|
@@ -142,5 +130,4 @@ export * from "./components/tool-icon";
|
|
|
142
130
|
export * from "./components/tooltip";
|
|
143
131
|
export * from "./components/usage-meter";
|
|
144
132
|
export * from "./components/use-case-bento";
|
|
145
|
-
export * from "./components/watch-it-work-band";
|
|
146
133
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
export * from "./components/accordion.js";
|
|
2
2
|
export * from "./components/action-band.js";
|
|
3
3
|
export * from "./components/action-status.js";
|
|
4
|
-
export * from "./components/agent-avatar.js";
|
|
5
|
-
export * from "./components/agent-chat.js";
|
|
6
|
-
export * from "./components/agent-composer.js";
|
|
7
|
-
export * from "./components/agent-message.js";
|
|
8
|
-
export * from "./components/agent-thread.js";
|
|
9
|
-
export * from "./components/agent-tool-approval.js";
|
|
10
4
|
export * from "./components/alert.js";
|
|
11
5
|
export * from "./components/alert-dialog.js";
|
|
12
|
-
export * from "./components/
|
|
6
|
+
export * from "./components/agent-card.js";
|
|
7
|
+
export * from "./components/agent-visual.js";
|
|
13
8
|
export * from "./components/aspect-ratio.js";
|
|
14
|
-
export * from "./components/attachment.js";
|
|
15
9
|
export * from "./components/automation-section.js";
|
|
16
10
|
export * from "./components/avatar.js";
|
|
17
11
|
export * from "./components/badge.js";
|
|
@@ -21,7 +15,6 @@ export * from "./components/brand.js";
|
|
|
21
15
|
export * from "./components/brand-field.js";
|
|
22
16
|
export * from "./components/brand-icons.js";
|
|
23
17
|
export * from "./components/breadcrumb.js";
|
|
24
|
-
export * from "./components/bubble.js";
|
|
25
18
|
export * from "./components/button.js";
|
|
26
19
|
export * from "./components/button-group.js";
|
|
27
20
|
export * from "./components/calendar.js";
|
|
@@ -47,7 +40,6 @@ export * from "./components/confirm-dialog.js";
|
|
|
47
40
|
export * from "./components/contact.js";
|
|
48
41
|
export * from "./components/context-menu.js";
|
|
49
42
|
export * from "./components/dashboard-shell.js";
|
|
50
|
-
export * from "./components/demo-surface.js";
|
|
51
43
|
export * from "./components/desktop-shell.js";
|
|
52
44
|
export * from "./components/dialog.js";
|
|
53
45
|
export * from "./components/diff-count.js";
|
|
@@ -65,10 +57,10 @@ export * from "./components/feature-rows.js";
|
|
|
65
57
|
export * from "./components/feedback-state.js";
|
|
66
58
|
export * from "./components/field.js";
|
|
67
59
|
export * from "./components/file-type-icon.js";
|
|
68
|
-
export * from "./components/files-preview.js";
|
|
69
60
|
export * from "./components/footer.js";
|
|
70
61
|
export * from "./components/form.js";
|
|
71
62
|
export * from "./components/glyph-spinner.js";
|
|
63
|
+
export * from "./components/glass-control.js";
|
|
72
64
|
export * from "./components/handoff-banner.js";
|
|
73
65
|
export * from "./components/hero.js";
|
|
74
66
|
export * from "./components/hero-split.js";
|
|
@@ -85,12 +77,9 @@ export * from "./components/label-system.js";
|
|
|
85
77
|
export * from "./components/live-demo.js";
|
|
86
78
|
export * from "./components/logo-band.js";
|
|
87
79
|
export * from "./components/logo-tile.js";
|
|
88
|
-
export * from "./components/marker.js";
|
|
89
80
|
export * from "./components/media-mount.js";
|
|
90
81
|
export * from "./components/memory-item.js";
|
|
91
82
|
export * from "./components/menubar.js";
|
|
92
|
-
export * from "./components/message.js";
|
|
93
|
-
export * from "./components/message-scroller.js";
|
|
94
83
|
export * from "./components/native-select.js";
|
|
95
84
|
export * from "./components/nav-bar.js";
|
|
96
85
|
export * from "./components/navigation-menu.js";
|
|
@@ -122,7 +111,6 @@ export * from "./components/slider.js";
|
|
|
122
111
|
export * from "./components/sonner.js";
|
|
123
112
|
export * from "./components/spinner.js";
|
|
124
113
|
export * from "./components/stat-block.js";
|
|
125
|
-
export * from "./components/state-notice.js";
|
|
126
114
|
export * from "./components/statement.js";
|
|
127
115
|
export * from "./components/stats-band.js";
|
|
128
116
|
export * from "./components/status-dot.js";
|
|
@@ -142,4 +130,3 @@ export * from "./components/tool-icon.js";
|
|
|
142
130
|
export * from "./components/tooltip.js";
|
|
143
131
|
export * from "./components/usage-meter.js";
|
|
144
132
|
export * from "./components/use-case-bento.js";
|
|
145
|
-
export * from "./components/watch-it-work-band.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/internal/agent-visual/color.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAyCpD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAExF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const clamp = (value) => Math.min(Math.max(value, 0), 1);
|
|
2
|
+
function linearToSrgb(value) {
|
|
3
|
+
const channel = clamp(value);
|
|
4
|
+
return channel <= 0.0031308 ? channel * 12.92 : 1.055 * channel ** (1 / 2.4) - 0.055;
|
|
5
|
+
}
|
|
6
|
+
function parseOklch(value) {
|
|
7
|
+
if (!value.startsWith("oklch"))
|
|
8
|
+
return null;
|
|
9
|
+
const start = value.indexOf("(");
|
|
10
|
+
const end = value.lastIndexOf(")");
|
|
11
|
+
if (start < 0 || end <= start)
|
|
12
|
+
return null;
|
|
13
|
+
const [channels, alphaValue] = value.slice(start + 1, end).split("/");
|
|
14
|
+
const [lightnessValue, chromaValue, hueValue] = channels?.trim().split(/\s+/) ?? [];
|
|
15
|
+
const lightness = Number.parseFloat(lightnessValue ?? "");
|
|
16
|
+
const chroma = Number.parseFloat(chromaValue ?? "");
|
|
17
|
+
const hue = Number.parseFloat(hueValue ?? "");
|
|
18
|
+
const alpha = alphaValue ? Number.parseFloat(alphaValue.trim()) : 1;
|
|
19
|
+
if (![lightness, chroma, hue, alpha].every(Number.isFinite))
|
|
20
|
+
return null;
|
|
21
|
+
const radians = (hue * Math.PI) / 180;
|
|
22
|
+
const a = chroma * Math.cos(radians);
|
|
23
|
+
const b = chroma * Math.sin(radians);
|
|
24
|
+
const lPrime = lightness + 0.3963377774 * a + 0.2158037573 * b;
|
|
25
|
+
const mPrime = lightness - 0.1055613458 * a - 0.0638541728 * b;
|
|
26
|
+
const sPrime = lightness - 0.0894841775 * a - 1.291485548 * b;
|
|
27
|
+
const l = lPrime ** 3;
|
|
28
|
+
const m = mPrime ** 3;
|
|
29
|
+
const s = sPrime ** 3;
|
|
30
|
+
return [
|
|
31
|
+
linearToSrgb(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),
|
|
32
|
+
linearToSrgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),
|
|
33
|
+
linearToSrgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),
|
|
34
|
+
clamp(alpha),
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
export function resolveCampoColor(element, variable) {
|
|
38
|
+
return parseOklch(getComputedStyle(element).getPropertyValue(variable).trim());
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poster.d.ts","sourceRoot":"","sources":["../../../src/internal/agent-visual/poster.tsx"],"names":[],"mappings":"AAIA,OAAO,EAA4C,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAiH7F,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,MAAM,GACP,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;CAC3B,+BAgCA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from "react";
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
import { AGENT_VISUAL_RECIPE_SPECS, campoVariable } from "./recipes.js";
|
|
5
|
+
function Gradient({ id, recipe }) {
|
|
6
|
+
const colors = AGENT_VISUAL_RECIPE_SPECS[recipe].colors;
|
|
7
|
+
return (_jsx("linearGradient", { id: id, x1: "0", x2: "1", y1: "0", y2: "1", children: colors.map((color, index) => (_jsx("stop", { offset: `${(index / Math.max(colors.length - 1, 1)) * 100}%`, stopColor: `var(${campoVariable(color)})` }, color))) }));
|
|
8
|
+
}
|
|
9
|
+
function Surface({ clipId, gradientId, patternId, recipe, }) {
|
|
10
|
+
const { colors, material } = AGENT_VISUAL_RECIPE_SPECS[recipe];
|
|
11
|
+
if (material === "solid") {
|
|
12
|
+
return (_jsx("rect", { width: "160", height: "120", fill: `url(#${gradientId})`, clipPath: `url(#${clipId})` }));
|
|
13
|
+
}
|
|
14
|
+
if (material === "points") {
|
|
15
|
+
return (_jsx("g", { clipPath: `url(#${clipId})`, children: colors.map((color, index) => (_jsx("g", { transform: `translate(${index * 3} ${index * 2})`, children: Array.from({ length: 8 }, (_, row) => Array.from({ length: 11 }, (__, column) => (_jsx("circle", { cx: column * 16, cy: row * 16, fill: `var(${campoVariable(color)})`, r: 1.45 + ((row + column + index) % 3) * 0.35 }, `${row}-${column}`)))) }, color))) }));
|
|
16
|
+
}
|
|
17
|
+
if (material === "wire") {
|
|
18
|
+
return (_jsxs("g", { clipPath: `url(#${clipId})`, fill: "none", children: [Array.from({ length: 14 }, (_, index) => (_jsx("path", { d: `M ${-28 + index * 14} 0 L ${42 + index * 14} 120`, stroke: `var(${campoVariable(colors[index % colors.length])})`, strokeWidth: "1" }, `wire-a-${index}`))), Array.from({ length: 14 }, (_, index) => (_jsx("path", { d: `M ${-28 + index * 14} 120 L ${42 + index * 14} 0`, stroke: `var(${campoVariable(colors[(index + 1) % colors.length])})`, strokeWidth: "1" }, `wire-b-${index}`))), Array.from({ length: 9 }, (_, index) => (_jsx("path", { d: `M 0 ${index * 15} H 160`, stroke: `var(${campoVariable(colors[(index + 2) % colors.length])})`, strokeWidth: "0.8" }, `wire-c-${index}`)))] }));
|
|
19
|
+
}
|
|
20
|
+
return (_jsxs("g", { clipPath: `url(#${clipId})`, children: [_jsx("rect", { width: "160", height: "120", fill: `url(#${patternId})` }), Array.from({ length: 46 }, (_, index) => {
|
|
21
|
+
const color = colors[index % colors.length];
|
|
22
|
+
const x = 20 + ((index * 37) % 125);
|
|
23
|
+
const y = 12 + ((index * 53) % 98);
|
|
24
|
+
const radius = 0.8 + ((index * 7) % 8) * 0.28;
|
|
25
|
+
return (_jsx("circle", { cx: x, cy: y, fill: `var(${campoVariable(color)})`, opacity: 0.48 + (index % 5) * 0.12, r: radius }, `particle-${index}`));
|
|
26
|
+
})] }));
|
|
27
|
+
}
|
|
28
|
+
export function AgentVisualPoster({ className, recipe, }) {
|
|
29
|
+
const id = useId().replaceAll(":", "");
|
|
30
|
+
const clipId = `${id}-clip`;
|
|
31
|
+
const gradientId = `${id}-gradient`;
|
|
32
|
+
const patternId = `${id}-particles`;
|
|
33
|
+
const colors = AGENT_VISUAL_RECIPE_SPECS[recipe].colors;
|
|
34
|
+
return (_jsxs("svg", { "aria-hidden": "true", className: cn("size-full", className), "data-agent-visual-poster": "true", focusable: "false", preserveAspectRatio: "xMidYMid meet", viewBox: "0 0 160 120", children: [_jsxs("defs", { children: [_jsx("clipPath", { id: clipId, children: AGENT_VISUAL_RECIPE_SPECS[recipe].posterForm.map(([cx, cy, radius], index) => (_jsx("circle", { cx: cx, cy: cy, r: radius }, index))) }), _jsx(Gradient, { id: gradientId, recipe: recipe }), _jsxs("pattern", { id: patternId, width: "14", height: "14", patternUnits: "userSpaceOnUse", children: [_jsx("circle", { cx: "2", cy: "3", r: "1.1", fill: `var(${campoVariable(colors[0])})` }), _jsx("circle", { cx: "10", cy: "8", r: "2.1", fill: `var(${campoVariable(colors[1] ?? colors[0])})` }), _jsx("circle", { cx: "5", cy: "12", r: "0.7", fill: `var(${campoVariable(colors[2] ?? colors[0])})` })] })] }), _jsx(Surface, { clipId: clipId, gradientId: gradientId, patternId: patternId, recipe: recipe })] }));
|
|
35
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type AgentVisualRecipe = "general" | "reasoning" | "coordination" | "communication" | "execution";
|
|
2
|
+
export type AgentVisualMaterial = "solid" | "points" | "wire" | "particles";
|
|
3
|
+
type Campo = "arancio" | "cobalto" | "giallo" | "inchiostro" | "rosso" | "verde";
|
|
4
|
+
export type AgentVisualRecipeSpec = {
|
|
5
|
+
colors: readonly Campo[];
|
|
6
|
+
count: number;
|
|
7
|
+
frame: number;
|
|
8
|
+
material: AgentVisualMaterial;
|
|
9
|
+
posterForm: readonly (readonly [number, number, number])[];
|
|
10
|
+
size: number;
|
|
11
|
+
};
|
|
12
|
+
export declare const AGENT_VISUAL_RECIPE_SPECS: Record<AgentVisualRecipe, AgentVisualRecipeSpec>;
|
|
13
|
+
export declare function campoVariable(campo: Campo): string;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=recipes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../../src/internal/agent-visual/recipes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,WAAW,GACX,cAAc,GACd,eAAe,GACf,WAAW,CAAC;AAEhB,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE5E,KAAK,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAoEtF,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,UAEzC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export const AGENT_VISUAL_RECIPE_SPECS = {
|
|
2
|
+
general: {
|
|
3
|
+
colors: ["cobalto", "verde", "arancio", "giallo", "rosso"],
|
|
4
|
+
count: 10,
|
|
5
|
+
frame: 0,
|
|
6
|
+
material: "solid",
|
|
7
|
+
posterForm: [
|
|
8
|
+
[45, 64, 29],
|
|
9
|
+
[68, 42, 32],
|
|
10
|
+
[99, 45, 34],
|
|
11
|
+
[116, 71, 27],
|
|
12
|
+
[79, 80, 35],
|
|
13
|
+
],
|
|
14
|
+
size: 0.83,
|
|
15
|
+
},
|
|
16
|
+
reasoning: {
|
|
17
|
+
colors: ["cobalto", "verde", "giallo"],
|
|
18
|
+
count: 10,
|
|
19
|
+
frame: 0,
|
|
20
|
+
material: "points",
|
|
21
|
+
posterForm: [
|
|
22
|
+
[44, 61, 28],
|
|
23
|
+
[69, 39, 31],
|
|
24
|
+
[98, 44, 34],
|
|
25
|
+
[113, 71, 29],
|
|
26
|
+
[76, 80, 34],
|
|
27
|
+
],
|
|
28
|
+
size: 0.83,
|
|
29
|
+
},
|
|
30
|
+
coordination: {
|
|
31
|
+
colors: ["verde", "cobalto", "arancio"],
|
|
32
|
+
count: 8,
|
|
33
|
+
frame: 2_700,
|
|
34
|
+
material: "wire",
|
|
35
|
+
posterForm: [
|
|
36
|
+
[48, 61, 31],
|
|
37
|
+
[77, 40, 33],
|
|
38
|
+
[111, 58, 29],
|
|
39
|
+
[90, 82, 27],
|
|
40
|
+
],
|
|
41
|
+
size: 0.76,
|
|
42
|
+
},
|
|
43
|
+
communication: {
|
|
44
|
+
colors: ["giallo", "arancio", "rosso"],
|
|
45
|
+
count: 12,
|
|
46
|
+
frame: 5_400,
|
|
47
|
+
material: "solid",
|
|
48
|
+
posterForm: [
|
|
49
|
+
[51, 55, 29],
|
|
50
|
+
[79, 43, 35],
|
|
51
|
+
[107, 63, 30],
|
|
52
|
+
[77, 80, 28],
|
|
53
|
+
],
|
|
54
|
+
size: 0.69,
|
|
55
|
+
},
|
|
56
|
+
execution: {
|
|
57
|
+
colors: ["rosso", "arancio", "cobalto"],
|
|
58
|
+
count: 6,
|
|
59
|
+
frame: 8_100,
|
|
60
|
+
material: "particles",
|
|
61
|
+
posterForm: [
|
|
62
|
+
[48, 65, 28],
|
|
63
|
+
[78, 52, 39],
|
|
64
|
+
[109, 64, 32],
|
|
65
|
+
[82, 86, 24],
|
|
66
|
+
],
|
|
67
|
+
size: 0.92,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
export function campoVariable(campo) {
|
|
71
|
+
return `--nc-campo-${campo}`;
|
|
72
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type AgentVisualRecipe } from "./recipes";
|
|
2
|
+
type AgentVisualRendererProps = {
|
|
3
|
+
host: HTMLElement;
|
|
4
|
+
onReady: () => void;
|
|
5
|
+
onUnavailable: () => void;
|
|
6
|
+
recipe: AgentVisualRecipe;
|
|
7
|
+
};
|
|
8
|
+
export default function AgentVisualRenderer({ host, onReady, onUnavailable, recipe, }: AgentVisualRendererProps): import("react").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/internal/agent-visual/renderer.tsx"],"names":[],"mappings":"AAYA,OAAO,EAA4C,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAU7F,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,IAAI,EACJ,OAAO,EACP,aAAa,EACb,MAAM,GACP,EAAE,wBAAwB,+BA8G1B"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { defaultObjectSizing, getShaderNoiseTexture, metaballsFragmentShader, ShaderFitOptions, ShaderMount as PaperShaderMount, } from "@paper-design/shaders";
|
|
4
|
+
import { useEffect, useRef } from "react";
|
|
5
|
+
import { resolveCampoColor } from "./color.js";
|
|
6
|
+
import { AGENT_VISUAL_RECIPE_SPECS, campoVariable } from "./recipes.js";
|
|
7
|
+
import { AGENT_VISUAL_SHADER } from "./shader.js";
|
|
8
|
+
const MATERIAL_INDEX = {
|
|
9
|
+
particles: 3,
|
|
10
|
+
points: 1,
|
|
11
|
+
solid: 0,
|
|
12
|
+
wire: 2,
|
|
13
|
+
};
|
|
14
|
+
export default function AgentVisualRenderer({ host, onReady, onUnavailable, recipe, }) {
|
|
15
|
+
const mountRef = useRef(null);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
const mount = mountRef.current;
|
|
18
|
+
if (!mount)
|
|
19
|
+
return;
|
|
20
|
+
const spec = AGENT_VISUAL_RECIPE_SPECS[recipe];
|
|
21
|
+
const isSolid = spec.material === "solid";
|
|
22
|
+
const colors = spec.colors.map((color) => resolveCampoColor(host, campoVariable(color)));
|
|
23
|
+
const colorBack = resolveCampoColor(host, campoVariable("inchiostro"));
|
|
24
|
+
const hasPalette = colors.every((color) => color !== null) && colorBack !== null;
|
|
25
|
+
if (!hasPalette) {
|
|
26
|
+
onUnavailable();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
let cancelled = false;
|
|
30
|
+
let canvas = null;
|
|
31
|
+
let readyFrame = 0;
|
|
32
|
+
let shaderMount = null;
|
|
33
|
+
const clearMount = () => {
|
|
34
|
+
mount.replaceChildren();
|
|
35
|
+
mount.removeAttribute("data-paper-shader");
|
|
36
|
+
};
|
|
37
|
+
const disposeMount = () => {
|
|
38
|
+
try {
|
|
39
|
+
shaderMount?.dispose();
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// The deterministic poster remains visible even if vendor cleanup fails.
|
|
43
|
+
}
|
|
44
|
+
shaderMount = null;
|
|
45
|
+
clearMount();
|
|
46
|
+
};
|
|
47
|
+
const handleContextLost = (event) => {
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
cancelled = true;
|
|
50
|
+
cancelAnimationFrame(readyFrame);
|
|
51
|
+
readyFrame = 0;
|
|
52
|
+
canvas?.removeEventListener("webglcontextlost", handleContextLost);
|
|
53
|
+
canvas = null;
|
|
54
|
+
disposeMount();
|
|
55
|
+
onUnavailable();
|
|
56
|
+
};
|
|
57
|
+
const initialize = async () => {
|
|
58
|
+
try {
|
|
59
|
+
const noiseTexture = getShaderNoiseTexture();
|
|
60
|
+
if (noiseTexture && !noiseTexture.complete)
|
|
61
|
+
await noiseTexture.decode();
|
|
62
|
+
if (cancelled)
|
|
63
|
+
return;
|
|
64
|
+
shaderMount = new PaperShaderMount(mount, isSolid ? metaballsFragmentShader : AGENT_VISUAL_SHADER, {
|
|
65
|
+
u_colorBack: colorBack,
|
|
66
|
+
u_colors: colors,
|
|
67
|
+
u_colorsCount: colors.length,
|
|
68
|
+
u_count: spec.count,
|
|
69
|
+
u_fit: ShaderFitOptions[defaultObjectSizing.fit],
|
|
70
|
+
u_noiseTexture: noiseTexture,
|
|
71
|
+
u_offsetX: defaultObjectSizing.offsetX,
|
|
72
|
+
u_offsetY: defaultObjectSizing.offsetY,
|
|
73
|
+
u_originX: defaultObjectSizing.originX,
|
|
74
|
+
u_originY: defaultObjectSizing.originY,
|
|
75
|
+
u_rotation: defaultObjectSizing.rotation,
|
|
76
|
+
u_scale: 1.15,
|
|
77
|
+
u_size: spec.size,
|
|
78
|
+
u_worldHeight: defaultObjectSizing.worldHeight,
|
|
79
|
+
u_worldWidth: defaultObjectSizing.worldWidth,
|
|
80
|
+
...(isSolid
|
|
81
|
+
? {}
|
|
82
|
+
: {
|
|
83
|
+
u_detail: 0.55,
|
|
84
|
+
u_material: MATERIAL_INDEX[spec.material],
|
|
85
|
+
}),
|
|
86
|
+
}, undefined, 0.24, spec.frame, undefined, 720_000);
|
|
87
|
+
canvas = shaderMount.canvasElement;
|
|
88
|
+
canvas.addEventListener("webglcontextlost", handleContextLost);
|
|
89
|
+
readyFrame = requestAnimationFrame(() => {
|
|
90
|
+
readyFrame = 0;
|
|
91
|
+
if (!cancelled)
|
|
92
|
+
onReady();
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
canvas?.removeEventListener("webglcontextlost", handleContextLost);
|
|
97
|
+
canvas = null;
|
|
98
|
+
disposeMount();
|
|
99
|
+
if (!cancelled)
|
|
100
|
+
onUnavailable();
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
void initialize();
|
|
104
|
+
return () => {
|
|
105
|
+
cancelled = true;
|
|
106
|
+
cancelAnimationFrame(readyFrame);
|
|
107
|
+
canvas?.removeEventListener("webglcontextlost", handleContextLost);
|
|
108
|
+
disposeMount();
|
|
109
|
+
};
|
|
110
|
+
}, [host, onReady, onUnavailable, recipe]);
|
|
111
|
+
return _jsx("div", { className: "size-full", ref: mountRef });
|
|
112
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const AGENT_VISUAL_SHADER = "#version 300 es\nprecision mediump float;\n\nuniform float u_time;\nuniform sampler2D u_noiseTexture;\nuniform vec4 u_colorBack;\nuniform vec4 u_colors[8];\nuniform float u_colorsCount;\nuniform float u_size;\nuniform float u_count;\nuniform float u_material;\nuniform float u_detail;\nuniform vec2 u_resolution;\n\nin vec2 v_objectUV;\nout vec4 fragColor;\n\n#define TWO_PI 6.28318530718\n\nfloat randomR(vec2 p) {\n vec2 uv = floor(p) / 100. + .5;\n return texture(u_noiseTexture, fract(uv)).r;\n}\n\nfloat noise(float x) {\n float i = floor(x);\n float f = fract(x);\n float u = f * f * (3.0 - 2.0 * f);\n return mix(randomR(vec2(i, 0.0)), randomR(vec2(i + 1.0, 0.0)), u);\n}\n\nfloat getBallShape(vec2 uv, vec2 c, float p) {\n float s = .5 * length(uv - c);\n s = 1. - clamp(s, 0., 1.);\n return pow(s, p);\n}\n\nfloat hash21(vec2 p) {\n p = fract(p * vec2(123.34, 456.21));\n p += dot(p, p + 45.32);\n return fract(p.x * p.y);\n}\n\nfloat orderedPoints(vec2 surfaceUV, float depth) {\n float density = clamp(min(u_resolution.x, u_resolution.y) / 12.0 * u_detail, 6.0, 34.0);\n vec2 pointUV = fract(surfaceUV * density) - 0.5;\n float radius = mix(0.14, 0.23, depth);\n return 1.0 - smoothstep(radius * 0.7, radius, length(pointUV));\n}\n\nfloat triangularWire(vec2 surfaceUV, float depth) {\n float density = clamp(min(u_resolution.x, u_resolution.y) / 16.0 * u_detail, 5.0, 26.0);\n vec2 grid = surfaceUV * density;\n float horizontal = abs(fract(grid.y) - 0.5);\n float diagonalA = abs(fract(grid.x + grid.y * 0.5) - 0.5);\n float diagonalB = abs(fract(grid.x - grid.y * 0.5) - 0.5);\n float nearestLine = min(horizontal, min(diagonalA, diagonalB));\n float width = mix(0.032, 0.072, depth);\n return 1.0 - smoothstep(width * 0.55, width, nearestLine);\n}\n\nfloat particleLayer(vec2 surfaceUV, float density, float depth, float time, float layerSeed, float threshold) {\n vec2 gridUV = surfaceUV * density + layerSeed;\n vec2 cell = floor(gridUV);\n vec2 local = fract(gridUV) - 0.5;\n float seed = hash21(cell + layerSeed);\n vec2 jitter = vec2(hash21(cell + layerSeed + 3.17), hash21(cell + layerSeed + 8.41)) - 0.5;\n jitter *= 0.72;\n jitter += 0.08 * vec2(sin(time * 0.42 + seed * 18.0 + layerSeed), cos(time * 0.31 + seed * 14.0 - layerSeed));\n float radius = mix(0.055, 0.175, hash21(cell + layerSeed + 14.3)) * mix(0.78, 1.35, depth);\n float particle = 1.0 - smoothstep(radius * 0.68, radius, length(local - jitter));\n float brightness = mix(0.45, 1.0, hash21(cell + layerSeed + 24.7));\n return particle * step(threshold, seed) * brightness;\n}\n\nfloat livingParticles(vec2 surfaceUV, float depth, float time) {\n float density = clamp(min(u_resolution.x, u_resolution.y) / 6.5 * u_detail, 13.0, 68.0);\n float dust = particleLayer(surfaceUV, density, depth, time, 0.0, 0.16);\n float motes = particleLayer(surfaceUV, density * 0.46, depth, time * 0.72, 19.7, 0.62);\n return max(dust * 0.78, motes);\n}\n\nfloat surfacePattern(vec2 surfaceUV, float depth, float material, float time) {\n if (material < 0.5) return 1.0;\n if (material < 1.5) return orderedPoints(surfaceUV, depth);\n if (material < 2.5) return triangularWire(surfaceUV, depth);\n return livingParticles(surfaceUV, depth, time);\n}\n\nvoid main() {\n vec2 shape_uv = v_objectUV + .5;\n const float firstFrameOffset = 2503.4;\n float t = .2 * (u_time + firstFrameOffset);\n vec3 totalColor = vec3(0.);\n float totalShape = 0.;\n float totalOpacity = 0.;\n vec2 weightedCenter = vec2(0.);\n vec2 weightedOrientation = vec2(0.);\n float centerWeight = 0.;\n\n for (int i = 0; i < 20; i++) {\n if (i >= int(ceil(u_count))) break;\n float idxFract = float(i) / 20.0;\n float angle = TWO_PI * idxFract;\n float speed = 1. - .2 * idxFract;\n vec2 pos = vec2(.5) + 1e-4 + .9 * (vec2(noise(angle * 10. + float(i) + t * speed), noise(angle * 20. + float(i) - t * speed)) - .5);\n int safeIndex = i % int(u_colorsCount + 0.5);\n vec4 ballColor = u_colors[safeIndex];\n ballColor.rgb *= ballColor.a;\n float sizeFrac = 1.;\n if (float(i) > floor(u_count - 1.)) sizeFrac *= fract(u_count);\n float shape = getBallShape(shape_uv, pos, 45. - 30. * u_size * sizeFrac);\n shape *= pow(u_size, .2);\n shape = smoothstep(0., 1., shape);\n totalColor += ballColor.rgb * shape;\n totalShape += shape;\n totalOpacity += ballColor.a * shape;\n float centerContribution = shape * shape;\n weightedCenter += pos * centerContribution;\n weightedOrientation += vec2(cos(angle), sin(angle)) * centerContribution;\n centerWeight += centerContribution;\n }\n\n totalColor /= max(totalShape, 1e-4);\n totalOpacity /= max(totalShape, 1e-4);\n float edgeWidth = fwidth(totalShape);\n float finalShape = smoothstep(.4, .4 + edgeWidth, totalShape);\n vec2 fieldCenter = weightedCenter / max(centerWeight, 1e-4);\n vec2 fieldVector = shape_uv - fieldCenter;\n float depth = smoothstep(0.4, 1.45, totalShape);\n float fieldRotation = 0.18 * atan(weightedOrientation.y, weightedOrientation.x);\n float rotationCos = cos(fieldRotation);\n float rotationSin = sin(fieldRotation);\n vec2 surfaceUV = fieldCenter + mat2(rotationCos, rotationSin, -rotationSin, rotationCos) * fieldVector * (1.0 + 0.1 * depth);\n vec2 gradient = vec2(dFdx(totalShape), dFdy(totalShape));\n vec2 gradientDirection = gradient / max(length(gradient), 1e-4);\n surfaceUV += gradientDirection * 0.008 * sin(totalShape * 4.0);\n float feature = surfacePattern(surfaceUV, depth, u_material, t);\n vec3 normal = normalize(vec3(-gradient * 36.0, 1.0));\n vec3 lightDirection = normalize(vec3(-0.45, 0.65, 0.8));\n float surfaceLight = 0.62 + 0.38 * max(dot(normal, lightDirection), 0.0);\n float baseSurface = mix(0.012, 0.06, depth);\n float surface = u_material < 0.5 ? 1.0 : mix(baseSurface, surfaceLight, feature);\n vec3 color = totalColor * finalShape * surface;\n float opacity = totalOpacity * finalShape * surface;\n vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n color = color + bgColor * (1. - opacity);\n opacity = opacity + u_colorBack.a * (1. - opacity);\n color += 1. / 256. * (fract(sin(dot(.014 * gl_FragCoord.xy, vec2(12.9898, 78.233))) * 43758.5453123) - .5);\n fragColor = vec4(color, opacity);\n}\n";
|
|
2
|
+
//# sourceMappingURL=shader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader.d.ts","sourceRoot":"","sources":["../../../src/internal/agent-visual/shader.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mBAAmB,+oMAuJ/B,CAAC"}
|