@nadicodeai/ui 0.20.0 → 0.22.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 +4 -3
- package/README.md +14 -21
- package/dist/agents.d.ts +10 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +9 -0
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/brand-icons/apple.d.ts +18 -0
- package/dist/components/brand-icons/apple.d.ts.map +1 -0
- package/dist/components/brand-icons/apple.js +22 -0
- package/dist/components/brand-icons/brand-icon.d.ts +22 -0
- package/dist/components/brand-icons/brand-icon.d.ts.map +1 -0
- package/dist/components/brand-icons/brand-icon.js +26 -0
- package/dist/components/brand-icons/linux.d.ts +18 -0
- package/dist/components/brand-icons/linux.d.ts.map +1 -0
- package/dist/components/brand-icons/linux.js +25 -0
- package/dist/components/brand-icons/windows.d.ts +18 -0
- package/dist/components/brand-icons/windows.d.ts.map +1 -0
- package/dist/components/brand-icons/windows.js +22 -0
- package/dist/components/brand-icons.d.ts +5 -0
- package/dist/components/brand-icons.d.ts.map +1 -0
- package/dist/components/brand-icons.js +10 -0
- package/dist/components/button.d.ts +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/card-marketing.js +2 -2
- package/dist/components/card.d.ts +4 -3
- package/dist/components/card.d.ts.map +1 -1
- package/dist/components/card.js +12 -2
- package/dist/components/chart-breakdown-table.js +1 -1
- package/dist/components/chart-bullet-bar.d.ts +18 -2
- package/dist/components/chart-bullet-bar.d.ts.map +1 -1
- package/dist/components/chart-bullet-bar.js +62 -9
- package/dist/components/chart-date-range-control.d.ts +11 -1
- package/dist/components/chart-date-range-control.d.ts.map +1 -1
- package/dist/components/chart-date-range-control.js +13 -3
- package/dist/components/chart-entity-colors.d.ts +7 -1
- package/dist/components/chart-entity-colors.d.ts.map +1 -1
- package/dist/components/chart-entity-colors.js +7 -1
- package/dist/components/chart-kpi-stat.d.ts.map +1 -1
- package/dist/components/chart-kpi-stat.js +1 -1
- package/dist/components/chart-time-series.d.ts.map +1 -1
- package/dist/components/chart-time-series.js +62 -4
- package/dist/components/chart.js +2 -2
- package/dist/components/code-editor-mockup.js +1 -1
- package/dist/components/nav-bar.js +1 -1
- package/dist/components/radio-group.d.ts +1 -1
- package/dist/components/radio-group.d.ts.map +1 -1
- package/dist/components/radio-group.js +2 -2
- package/dist/components/theme-mode-switcher.d.ts +10 -3
- package/dist/components/theme-mode-switcher.d.ts.map +1 -1
- package/dist/components/theme-mode-switcher.js +14 -7
- 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/eslint/index.js +91 -0
- package/dist/eslint/rules/jsx-class-utility.js +231 -0
- package/dist/eslint/rules/no-deprecated-zod-api.js +156 -0
- package/dist/eslint/rules/no-design-system-src-import.js +11 -0
- package/dist/eslint/rules/no-invalid-token-utility.js +46 -0
- package/dist/eslint/rules/no-native-visible-control.js +86 -0
- package/dist/eslint/rules/no-raw-color-utility.js +109 -0
- package/dist/eslint/rules/no-raw-focus-ring-width.js +30 -0
- package/dist/eslint/rules/no-raw-logo-import.js +41 -0
- package/dist/eslint/rules/no-shadcn-appearance-override.js +191 -0
- package/dist/eslint/rules/no-token-category-bypass.js +53 -0
- package/dist/eslint/rules/no-ui-src-import.js +10 -0
- package/dist/eslint/rules/no-unpinned-vercel-functions-import.js +100 -0
- package/dist/eslint/rules/src-import-boundary.js +207 -0
- 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 +1 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -16
- 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 +3 -209
- package/docs/agents/nadicodeai-ui.md +4 -6
- package/docs/component-classification.md +1 -1
- package/docs/consuming-cross-repo.md +32 -3
- package/docs/contract.md +16 -6
- package/docs/migration/base-ui-migration.md +0 -11
- package/docs/product-compositions.md +1 -1
- package/llms.txt +5 -6
- package/package.json +17 -29
- package/skills/nadicodeai-ui/SKILL.md +5 -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
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared machinery for the source-import boundary rules
|
|
3
|
+
* (`no-ui-src-import`, `no-design-system-src-import`). Both resolve a module
|
|
4
|
+
* specifier — static string, template/concatenation, const-propagated
|
|
5
|
+
* identifier, TS type assertion — and report when a banned package source
|
|
6
|
+
* path appears in it, across static imports, dynamic `import()`,
|
|
7
|
+
* `require()`/`module.require()`, and TypeScript `import type`/`import =`.
|
|
8
|
+
* Factoring it here keeps the two rules from drifting apart.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Match a banned source root anywhere in the specifier, at a path boundary:
|
|
13
|
+
* the root followed by `/` (a deep import) or at the end of the string (the
|
|
14
|
+
* root itself). Substring-anywhere so relative paths (`../../@scope/pkg/src/x`),
|
|
15
|
+
* node_modules paths, and loader-prefixed specifiers (`!!raw-loader!…/src/x`)
|
|
16
|
+
* are all caught.
|
|
17
|
+
* @param {string} root
|
|
18
|
+
* @returns {(value: string) => boolean}
|
|
19
|
+
*/
|
|
20
|
+
export function bannedSourceRootMatcher(root) {
|
|
21
|
+
return (value) => {
|
|
22
|
+
const index = value.indexOf(root);
|
|
23
|
+
if (index === -1) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const nextChar = value[index + root.length];
|
|
27
|
+
return nextChar === undefined || nextChar === "/";
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @param {object} options
|
|
33
|
+
* @param {string} options.description
|
|
34
|
+
* @param {string} options.bannedMessage
|
|
35
|
+
* @param {(value: string) => boolean} options.isBanned
|
|
36
|
+
* @returns {import('eslint').Rule.RuleModule}
|
|
37
|
+
*/
|
|
38
|
+
export function createSrcImportRule({ description, bannedMessage, isBanned }) {
|
|
39
|
+
return {
|
|
40
|
+
meta: {
|
|
41
|
+
type: "problem",
|
|
42
|
+
docs: { description },
|
|
43
|
+
messages: { banned: bannedMessage },
|
|
44
|
+
schema: [],
|
|
45
|
+
},
|
|
46
|
+
create(context) {
|
|
47
|
+
const sourceCode = context.sourceCode;
|
|
48
|
+
|
|
49
|
+
function findVariable(node, name) {
|
|
50
|
+
for (let scope = sourceCode.getScope(node); scope; scope = scope.upper) {
|
|
51
|
+
const variable = scope.set.get(name);
|
|
52
|
+
if (variable) {
|
|
53
|
+
return variable;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function isUnshadowed(node, name) {
|
|
60
|
+
const variable = findVariable(node, name);
|
|
61
|
+
return !variable || variable.defs.length === 0;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// `const require = createRequire(import.meta.url)` is the only real
|
|
65
|
+
// require in this all-ESM repo, so it must not be treated as a shadow.
|
|
66
|
+
function isCreateRequireInit(init) {
|
|
67
|
+
if (init?.type !== "CallExpression") {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
const callee = init.callee;
|
|
71
|
+
if (callee.type === "Identifier") {
|
|
72
|
+
return callee.name === "createRequire";
|
|
73
|
+
}
|
|
74
|
+
return (
|
|
75
|
+
callee.type === "MemberExpression" &&
|
|
76
|
+
!callee.computed &&
|
|
77
|
+
callee.property.type === "Identifier" &&
|
|
78
|
+
callee.property.name === "createRequire"
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function isRequire(node, name) {
|
|
83
|
+
const variable = findVariable(node, name);
|
|
84
|
+
if (!variable || variable.defs.length === 0) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
if (variable.defs.length === 1) {
|
|
88
|
+
const definition = variable.defs[0];
|
|
89
|
+
if (
|
|
90
|
+
definition.type === "Variable" &&
|
|
91
|
+
definition.parent?.kind === "const" &&
|
|
92
|
+
definition.node.id?.type === "Identifier" &&
|
|
93
|
+
isCreateRequireInit(definition.node.init)
|
|
94
|
+
) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function staticSpecifier(node, seenVariables = new Set()) {
|
|
102
|
+
if (node?.type === "Literal" && typeof node.value === "string") {
|
|
103
|
+
return node.value;
|
|
104
|
+
}
|
|
105
|
+
if (node?.type === "TemplateLiteral") {
|
|
106
|
+
let value = node.quasis[0]?.value.cooked ?? "";
|
|
107
|
+
for (let index = 0; index < node.expressions.length; index += 1) {
|
|
108
|
+
const expressionValue = staticSpecifier(node.expressions[index], seenVariables);
|
|
109
|
+
const followingText = node.quasis[index + 1]?.value.cooked;
|
|
110
|
+
if (expressionValue === undefined || followingText === undefined) {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
value += expressionValue + followingText;
|
|
114
|
+
}
|
|
115
|
+
return value;
|
|
116
|
+
}
|
|
117
|
+
if (node?.type === "BinaryExpression" && node.operator === "+") {
|
|
118
|
+
const left = staticSpecifier(node.left, seenVariables);
|
|
119
|
+
const right = staticSpecifier(node.right, seenVariables);
|
|
120
|
+
return left === undefined || right === undefined ? undefined : left + right;
|
|
121
|
+
}
|
|
122
|
+
if (node?.type === "Identifier") {
|
|
123
|
+
const variable = findVariable(node, node.name);
|
|
124
|
+
const definition = variable?.defs.length === 1 ? variable.defs[0] : undefined;
|
|
125
|
+
if (
|
|
126
|
+
!variable ||
|
|
127
|
+
seenVariables.has(variable) ||
|
|
128
|
+
definition?.type !== "Variable" ||
|
|
129
|
+
definition.parent?.kind !== "const" ||
|
|
130
|
+
definition.node.id?.type !== "Identifier" ||
|
|
131
|
+
!definition.node.init
|
|
132
|
+
) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const nextSeenVariables = new Set(seenVariables);
|
|
137
|
+
nextSeenVariables.add(variable);
|
|
138
|
+
return staticSpecifier(definition.node.init, nextSeenVariables);
|
|
139
|
+
}
|
|
140
|
+
if (
|
|
141
|
+
node?.type === "TSAsExpression" ||
|
|
142
|
+
node?.type === "TSSatisfiesExpression" ||
|
|
143
|
+
node?.type === "TSNonNullExpression"
|
|
144
|
+
) {
|
|
145
|
+
return staticSpecifier(node.expression, seenVariables);
|
|
146
|
+
}
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function checkValue(node, value) {
|
|
151
|
+
if (typeof value === "string" && isBanned(value)) {
|
|
152
|
+
context.report({
|
|
153
|
+
node,
|
|
154
|
+
messageId: "banned",
|
|
155
|
+
data: { value },
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function check(node) {
|
|
161
|
+
checkValue(node, staticSpecifier(node.source));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function memberPropertyName(node) {
|
|
165
|
+
if (!node.computed && node.property.type === "Identifier") {
|
|
166
|
+
return node.property.name;
|
|
167
|
+
}
|
|
168
|
+
return staticSpecifier(node.property);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function checkRequire(node) {
|
|
172
|
+
const isBareRequire =
|
|
173
|
+
node.callee.type === "Identifier" &&
|
|
174
|
+
node.callee.name === "require" &&
|
|
175
|
+
isRequire(node.callee, "require");
|
|
176
|
+
const isModuleRequire =
|
|
177
|
+
node.callee.type === "MemberExpression" &&
|
|
178
|
+
node.callee.object.type === "Identifier" &&
|
|
179
|
+
node.callee.object.name === "module" &&
|
|
180
|
+
isUnshadowed(node.callee.object, "module") &&
|
|
181
|
+
memberPropertyName(node.callee) === "require";
|
|
182
|
+
|
|
183
|
+
if (isBareRequire || isModuleRequire) {
|
|
184
|
+
checkValue(node, staticSpecifier(node.arguments[0]));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function checkTypeScriptImportEquals(node) {
|
|
189
|
+
if (node.moduleReference.type === "TSExternalModuleReference") {
|
|
190
|
+
checkValue(node, staticSpecifier(node.moduleReference.expression));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return {
|
|
195
|
+
ImportDeclaration: check,
|
|
196
|
+
ImportExpression: check,
|
|
197
|
+
CallExpression: checkRequire,
|
|
198
|
+
// `export { X } from "…/src/…"` and `export * from …` are consumer deep
|
|
199
|
+
// imports too; a source-less `export {}` has no node.source.
|
|
200
|
+
ExportNamedDeclaration: check,
|
|
201
|
+
ExportAllDeclaration: check,
|
|
202
|
+
TSImportType: check,
|
|
203
|
+
TSImportEqualsDeclaration: checkTypeScriptImportEquals,
|
|
204
|
+
};
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,cAAc,cAAc,CAAC"}
|
package/dist/hooks/index.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
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/artifact-panel";
|
|
13
6
|
export * from "./components/aspect-ratio";
|
|
14
|
-
export * from "./components/attachment";
|
|
15
7
|
export * from "./components/automation-section";
|
|
16
8
|
export * from "./components/avatar";
|
|
17
9
|
export * from "./components/badge";
|
|
@@ -19,8 +11,8 @@ export * from "./components/benefits-bento";
|
|
|
19
11
|
export * from "./components/bento";
|
|
20
12
|
export * from "./components/brand";
|
|
21
13
|
export * from "./components/brand-field";
|
|
14
|
+
export * from "./components/brand-icons";
|
|
22
15
|
export * from "./components/breadcrumb";
|
|
23
|
-
export * from "./components/bubble";
|
|
24
16
|
export * from "./components/button";
|
|
25
17
|
export * from "./components/button-group";
|
|
26
18
|
export * from "./components/calendar";
|
|
@@ -46,7 +38,6 @@ export * from "./components/confirm-dialog";
|
|
|
46
38
|
export * from "./components/contact";
|
|
47
39
|
export * from "./components/context-menu";
|
|
48
40
|
export * from "./components/dashboard-shell";
|
|
49
|
-
export * from "./components/demo-surface";
|
|
50
41
|
export * from "./components/desktop-shell";
|
|
51
42
|
export * from "./components/dialog";
|
|
52
43
|
export * from "./components/diff-count";
|
|
@@ -64,7 +55,6 @@ export * from "./components/feature-rows";
|
|
|
64
55
|
export * from "./components/feedback-state";
|
|
65
56
|
export * from "./components/field";
|
|
66
57
|
export * from "./components/file-type-icon";
|
|
67
|
-
export * from "./components/files-preview";
|
|
68
58
|
export * from "./components/footer";
|
|
69
59
|
export * from "./components/form";
|
|
70
60
|
export * from "./components/glyph-spinner";
|
|
@@ -84,12 +74,9 @@ export * from "./components/label-system";
|
|
|
84
74
|
export * from "./components/live-demo";
|
|
85
75
|
export * from "./components/logo-band";
|
|
86
76
|
export * from "./components/logo-tile";
|
|
87
|
-
export * from "./components/marker";
|
|
88
77
|
export * from "./components/media-mount";
|
|
89
78
|
export * from "./components/memory-item";
|
|
90
79
|
export * from "./components/menubar";
|
|
91
|
-
export * from "./components/message";
|
|
92
|
-
export * from "./components/message-scroller";
|
|
93
80
|
export * from "./components/native-select";
|
|
94
81
|
export * from "./components/nav-bar";
|
|
95
82
|
export * from "./components/navigation-menu";
|
|
@@ -121,7 +108,6 @@ export * from "./components/slider";
|
|
|
121
108
|
export * from "./components/sonner";
|
|
122
109
|
export * from "./components/spinner";
|
|
123
110
|
export * from "./components/stat-block";
|
|
124
|
-
export * from "./components/state-notice";
|
|
125
111
|
export * from "./components/statement";
|
|
126
112
|
export * from "./components/stats-band";
|
|
127
113
|
export * from "./components/status-dot";
|
|
@@ -141,5 +127,4 @@ export * from "./components/tool-icon";
|
|
|
141
127
|
export * from "./components/tooltip";
|
|
142
128
|
export * from "./components/usage-meter";
|
|
143
129
|
export * from "./components/use-case-bento";
|
|
144
|
-
export * from "./components/watch-it-work-band";
|
|
145
130
|
//# 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,9 @@
|
|
|
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/artifact-panel.js";
|
|
13
6
|
export * from "./components/aspect-ratio.js";
|
|
14
|
-
export * from "./components/attachment.js";
|
|
15
7
|
export * from "./components/automation-section.js";
|
|
16
8
|
export * from "./components/avatar.js";
|
|
17
9
|
export * from "./components/badge.js";
|
|
@@ -19,8 +11,8 @@ export * from "./components/benefits-bento.js";
|
|
|
19
11
|
export * from "./components/bento.js";
|
|
20
12
|
export * from "./components/brand.js";
|
|
21
13
|
export * from "./components/brand-field.js";
|
|
14
|
+
export * from "./components/brand-icons.js";
|
|
22
15
|
export * from "./components/breadcrumb.js";
|
|
23
|
-
export * from "./components/bubble.js";
|
|
24
16
|
export * from "./components/button.js";
|
|
25
17
|
export * from "./components/button-group.js";
|
|
26
18
|
export * from "./components/calendar.js";
|
|
@@ -46,7 +38,6 @@ export * from "./components/confirm-dialog.js";
|
|
|
46
38
|
export * from "./components/contact.js";
|
|
47
39
|
export * from "./components/context-menu.js";
|
|
48
40
|
export * from "./components/dashboard-shell.js";
|
|
49
|
-
export * from "./components/demo-surface.js";
|
|
50
41
|
export * from "./components/desktop-shell.js";
|
|
51
42
|
export * from "./components/dialog.js";
|
|
52
43
|
export * from "./components/diff-count.js";
|
|
@@ -64,7 +55,6 @@ export * from "./components/feature-rows.js";
|
|
|
64
55
|
export * from "./components/feedback-state.js";
|
|
65
56
|
export * from "./components/field.js";
|
|
66
57
|
export * from "./components/file-type-icon.js";
|
|
67
|
-
export * from "./components/files-preview.js";
|
|
68
58
|
export * from "./components/footer.js";
|
|
69
59
|
export * from "./components/form.js";
|
|
70
60
|
export * from "./components/glyph-spinner.js";
|
|
@@ -84,12 +74,9 @@ export * from "./components/label-system.js";
|
|
|
84
74
|
export * from "./components/live-demo.js";
|
|
85
75
|
export * from "./components/logo-band.js";
|
|
86
76
|
export * from "./components/logo-tile.js";
|
|
87
|
-
export * from "./components/marker.js";
|
|
88
77
|
export * from "./components/media-mount.js";
|
|
89
78
|
export * from "./components/memory-item.js";
|
|
90
79
|
export * from "./components/menubar.js";
|
|
91
|
-
export * from "./components/message.js";
|
|
92
|
-
export * from "./components/message-scroller.js";
|
|
93
80
|
export * from "./components/native-select.js";
|
|
94
81
|
export * from "./components/nav-bar.js";
|
|
95
82
|
export * from "./components/navigation-menu.js";
|
|
@@ -121,7 +108,6 @@ export * from "./components/slider.js";
|
|
|
121
108
|
export * from "./components/sonner.js";
|
|
122
109
|
export * from "./components/spinner.js";
|
|
123
110
|
export * from "./components/stat-block.js";
|
|
124
|
-
export * from "./components/state-notice.js";
|
|
125
111
|
export * from "./components/statement.js";
|
|
126
112
|
export * from "./components/stats-band.js";
|
|
127
113
|
export * from "./components/status-dot.js";
|
|
@@ -141,4 +127,3 @@ export * from "./components/tool-icon.js";
|
|
|
141
127
|
export * from "./components/tooltip.js";
|
|
142
128
|
export * from "./components/usage-meter.js";
|
|
143
129
|
export * from "./components/use-case-bento.js";
|
|
144
|
-
export * from "./components/watch-it-work-band.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../src/internal/assistant-ui/attachment.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+C,KAAK,EAAE,EAAkB,MAAM,OAAO,CAAC;AAkN7F,eAAO,MAAM,sBAAsB,EAAE,EAMpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,EAMjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,EAiBnC,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useState, isValidElement } from "react";
|
|
4
|
+
import { XIcon, PlusIcon, FileText, Loader2Icon, AlertCircleIcon } from "lucide-react";
|
|
5
|
+
import { AttachmentPrimitive, ComposerPrimitive, MessagePrimitive, useAuiState, useAui, } from "@assistant-ui/react";
|
|
6
|
+
import { useShallow } from "zustand/shallow";
|
|
7
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../../components/tooltip.js";
|
|
8
|
+
import { Dialog, DialogTitle, DialogContent, DialogTrigger } from "../../components/dialog.js";
|
|
9
|
+
import { Avatar, AvatarImage, AvatarFallback } from "../../components/avatar.js";
|
|
10
|
+
import { TooltipIconButton } from "./tooltip-icon-button.js";
|
|
11
|
+
import { cn } from "../../lib/utils.js";
|
|
12
|
+
const useFileSrc = (file) => {
|
|
13
|
+
const [src, setSrc] = useState(undefined);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (!file) {
|
|
16
|
+
setSrc(undefined);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const objectUrl = URL.createObjectURL(file);
|
|
20
|
+
setSrc(objectUrl);
|
|
21
|
+
return () => {
|
|
22
|
+
URL.revokeObjectURL(objectUrl);
|
|
23
|
+
};
|
|
24
|
+
}, [file]);
|
|
25
|
+
return src;
|
|
26
|
+
};
|
|
27
|
+
const useAttachmentSrc = () => {
|
|
28
|
+
const { file, src } = useAuiState(useShallow((s) => {
|
|
29
|
+
if (s.attachment.type !== "image")
|
|
30
|
+
return {};
|
|
31
|
+
if (s.attachment.file)
|
|
32
|
+
return { file: s.attachment.file };
|
|
33
|
+
const src = s.attachment.content?.filter((c) => c.type === "image")[0]?.image;
|
|
34
|
+
if (!src)
|
|
35
|
+
return {};
|
|
36
|
+
return { src };
|
|
37
|
+
}));
|
|
38
|
+
return useFileSrc(file) ?? src;
|
|
39
|
+
};
|
|
40
|
+
const AttachmentPreview = ({ src }) => {
|
|
41
|
+
return (_jsx("img", { src: src, alt: "Attachment preview", className: "aui-attachment-preview-image block h-auto max-h-[80vh] w-auto max-w-full rounded-sm object-contain" }));
|
|
42
|
+
};
|
|
43
|
+
const AttachmentPreviewDialog = ({ children }) => {
|
|
44
|
+
const src = useAttachmentSrc();
|
|
45
|
+
if (!src)
|
|
46
|
+
return children;
|
|
47
|
+
return (_jsxs(Dialog, { children: [_jsx(DialogTrigger, { nativeButton: false, className: "aui-attachment-preview-trigger", render: isValidElement(children) ? children : _jsx("button", { type: "button" }) }), _jsxs(DialogContent, { className: "aui-attachment-preview-dialog-content [&>button]:bg-foreground/60 [&>button]:hover:bg-foreground/80 [&_svg]:text-background p-2 sm:max-w-3xl [&>button]:rounded-full [&>button]:p-1 [&>button]:opacity-100 [&>button]:ring-0!", children: [_jsx(DialogTitle, { className: "aui-sr-only sr-only", children: "Image Attachment Preview" }), _jsx("div", { className: "aui-attachment-preview bg-background relative mx-auto flex max-h-[80dvh] w-full items-center justify-center overflow-hidden rounded-sm", children: _jsx(AttachmentPreview, { src: src }) })] })] }));
|
|
48
|
+
};
|
|
49
|
+
const AttachmentThumb = () => {
|
|
50
|
+
const src = useAttachmentSrc();
|
|
51
|
+
return (_jsxs(Avatar, { className: "aui-attachment-tile-avatar h-full w-full rounded-none after:hidden", children: [_jsx(AvatarImage, { src: src, alt: "Attachment preview", className: "aui-attachment-tile-image object-cover" }), _jsx(AvatarFallback, { children: _jsx(FileText, { className: "aui-attachment-tile-fallback-icon text-muted-foreground/80 size-6 stroke-[1.5]" }) })] }));
|
|
52
|
+
};
|
|
53
|
+
const AttachmentUI = () => {
|
|
54
|
+
const aui = useAui();
|
|
55
|
+
const isComposer = aui.attachment.source !== "message";
|
|
56
|
+
const isImage = useAuiState((s) => s.attachment.type === "image");
|
|
57
|
+
const typeLabel = useAuiState((s) => {
|
|
58
|
+
const type = s.attachment.type;
|
|
59
|
+
switch (type) {
|
|
60
|
+
case "image":
|
|
61
|
+
return "Image";
|
|
62
|
+
case "document":
|
|
63
|
+
return "Document";
|
|
64
|
+
case "file":
|
|
65
|
+
return "File";
|
|
66
|
+
default:
|
|
67
|
+
return type;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
const uploadState = useAuiState((s) => s.attachment.status.type === "running"
|
|
71
|
+
? "uploading"
|
|
72
|
+
: s.attachment.status.type === "incomplete" && s.attachment.status.reason === "error"
|
|
73
|
+
? "error"
|
|
74
|
+
: undefined);
|
|
75
|
+
const isUploading = uploadState === "uploading";
|
|
76
|
+
const isError = uploadState === "error";
|
|
77
|
+
const errorMessage = useAuiState((s) => s.attachment.status.type === "incomplete" && s.attachment.status.reason === "error"
|
|
78
|
+
? (s.attachment.status.message ?? "Upload failed")
|
|
79
|
+
: undefined);
|
|
80
|
+
return (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsxs(AttachmentPrimitive.Root, { className: cn("aui-attachment-root relative", isComposer && "nc-transition-opacity", isImage && !isComposer && "aui-attachment-root-message only:*:first:size-24"), children: [_jsx(AttachmentPreviewDialog, { children: _jsxs(TooltipTrigger, { render: _jsx("div", { className: cn("aui-attachment-tile nc-transition-transform relative size-14 cursor-pointer overflow-hidden rounded-[calc(var(--composer-radius)-var(--composer-padding))] bg-muted outline-none after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:ring-1 after:ring-border after:ring-inset focus-visible:ring-[length:var(--ring-width-focus)] focus-visible:ring-ring/50 hover:after:bg-foreground/10", isError && "after:ring-destructive/60"), role: "button", tabIndex: 0, "aria-label": `${typeLabel} attachment${isError ? ", upload failed" : isUploading ? ", uploading" : ""}` }), children: [_jsx(AttachmentThumb, {}), isUploading && (_jsx("div", { "aria-hidden": "true", className: "aui-attachment-tile-uploading nc-transition-opacity absolute inset-0 flex items-center justify-center bg-background/60 backdrop-blur-[2px]", children: _jsx(Loader2Icon, { className: "size-4 text-muted-foreground motion-safe:animate-spin motion-reduce:animate-pulse" }) })), isError && (_jsx("div", { "aria-hidden": "true", className: "aui-attachment-tile-error nc-transition-opacity absolute inset-0 flex items-center justify-center bg-background/70 backdrop-blur-[2px]", children: _jsx(AlertCircleIcon, { className: "text-destructive size-4" }) }))] }) }), isComposer && _jsx(AttachmentRemove, {})] }), _jsxs(TooltipContent, { side: "top", children: [_jsx(AttachmentPrimitive.Name, {}), errorMessage && _jsx("p", { className: "aui-attachment-error-message", children: errorMessage })] })] }) }));
|
|
81
|
+
};
|
|
82
|
+
const AttachmentRemove = () => {
|
|
83
|
+
return (_jsx(AttachmentPrimitive.Remove, { render: _jsx(TooltipIconButton, { tooltip: "Remove file", className: "aui-attachment-tile-remove absolute end-1 top-1 size-5 rounded-full bg-foreground/70! text-background! backdrop-blur-sm after:absolute after:-inset-1.5 hover:bg-foreground/85!", side: "top" }), children: _jsx(XIcon, { className: "aui-attachment-remove-icon size-3 stroke-[2.5]" }) }));
|
|
84
|
+
};
|
|
85
|
+
export const UserMessageAttachments = () => {
|
|
86
|
+
return (_jsx("div", { className: "aui-user-message-attachments-end col-span-full col-start-1 row-start-1 flex w-full flex-row justify-end gap-2", children: _jsx(MessagePrimitive.Attachments, { children: () => _jsx(AttachmentUI, {}) }) }));
|
|
87
|
+
};
|
|
88
|
+
export const ComposerAttachments = () => {
|
|
89
|
+
return (_jsx("div", { className: "aui-composer-attachments flex w-full flex-row items-center gap-2 overflow-x-auto empty:hidden", children: _jsx(ComposerPrimitive.Attachments, { children: () => _jsx(AttachmentUI, {}) }) }));
|
|
90
|
+
};
|
|
91
|
+
export const ComposerAddAttachment = () => {
|
|
92
|
+
return (_jsx(ComposerPrimitive.AddAttachment, { render: _jsx(TooltipIconButton, { tooltip: "Add Attachment", side: "bottom", variant: "ghost", size: "icon", className: "aui-composer-add-attachment size-7 rounded-full p-1 text-xs font-semibold hover:bg-muted", "aria-label": "Add Attachment" }), children: _jsx(PlusIcon, { className: "aui-attachment-add-icon size-4.5 stroke-[1.5px]" }) }));
|
|
93
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"follow-up-suggestions.d.ts","sourceRoot":"","sources":["../../../src/internal/assistant-ui/follow-up-suggestions.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAwBhC,eAAO,MAAM,yBAAyB,EAAE,EAMvC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { AuiIf, ThreadPrimitive, useAuiState } from "@assistant-ui/react";
|
|
4
|
+
const FollowupSuggestionsRow = () => {
|
|
5
|
+
const suggestions = useAuiState((s) => s.thread.suggestions);
|
|
6
|
+
return (_jsx("div", { className: "aui-thread-followup-suggestions -my-1 w-full overflow-x-auto py-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden", children: _jsx("div", { className: "mx-auto flex min-h-8 w-max items-center gap-2 px-0.5", children: suggestions.map((suggestion, index) => (_jsx(ThreadPrimitive.Suggestion, { className: "aui-thread-followup-suggestion nc-transition-paint rounded-full border bg-background px-3 py-1 text-sm whitespace-nowrap hover:bg-muted/80", prompt: suggestion.prompt, method: "replace", autoSend: true, children: suggestion.prompt }, index))) }) }));
|
|
7
|
+
};
|
|
8
|
+
export const ThreadFollowupSuggestions = () => (_jsx(AuiIf, { condition: (s) => !s.thread.isEmpty && !s.thread.isRunning && s.thread.suggestions.length > 0, children: _jsx(FollowupSuggestionsRow, {}) }));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-text.d.ts","sourceRoot":"","sources":["../../../src/internal/assistant-ui/markdown-text.tsx"],"names":[],"mappings":"AA2BA,eAAO,MAAM,YAAY,wEAAyB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { MarkdownTextPrimitive, unstable_memoizeMarkdownComponents as memoizeMarkdownComponents, useIsMarkdownCodeBlock, } from "@assistant-ui/react-markdown";
|
|
4
|
+
import remarkGfm from "remark-gfm";
|
|
5
|
+
import { memo } from "react";
|
|
6
|
+
import { CheckIcon, CopyIcon } from "lucide-react";
|
|
7
|
+
import { TooltipIconButton } from "./tooltip-icon-button.js";
|
|
8
|
+
import { useCopyToClipboard } from "../../lib/use-copy-to-clipboard.js";
|
|
9
|
+
import { cn } from "../../lib/utils.js";
|
|
10
|
+
const MarkdownTextImpl = () => {
|
|
11
|
+
return (_jsx(MarkdownTextPrimitive, { remarkPlugins: [remarkGfm], className: "aui-md", components: defaultComponents, defer: true }));
|
|
12
|
+
};
|
|
13
|
+
export const MarkdownText = memo(MarkdownTextImpl);
|
|
14
|
+
const CodeHeader = ({ language, code }) => {
|
|
15
|
+
const { isCopied, copyToClipboard } = useCopyToClipboard({
|
|
16
|
+
text: code,
|
|
17
|
+
timeout: 3000,
|
|
18
|
+
skipWhileCopied: true,
|
|
19
|
+
});
|
|
20
|
+
const onCopy = () => {
|
|
21
|
+
if (!code || isCopied)
|
|
22
|
+
return;
|
|
23
|
+
void copyToClipboard();
|
|
24
|
+
};
|
|
25
|
+
return (_jsxs("div", { className: "aui-code-header-root border-border/50 bg-muted/50 mt-3 flex items-center justify-between rounded-t-xl border border-b-0 px-3.5 py-1.5 text-xs", children: [_jsx("span", { className: "aui-code-header-language text-muted-foreground font-medium lowercase", children: language }), _jsxs(TooltipIconButton, { tooltip: "Copy", onClick: onCopy, children: [!isCopied && _jsx(CopyIcon, {}), isCopied && _jsx(CheckIcon, {})] })] }));
|
|
26
|
+
};
|
|
27
|
+
const defaultComponents = memoizeMarkdownComponents({
|
|
28
|
+
h1: ({ className, ...props }) => (_jsx("h1", { className: cn("aui-md-h1 mt-5 mb-2 scroll-m-20 text-xl font-semibold first:mt-0 last:mb-0", className), ...props })),
|
|
29
|
+
h2: ({ className, ...props }) => (_jsx("h2", { className: cn("aui-md-h2 mt-5 mb-2 scroll-m-20 text-lg font-semibold first:mt-0 last:mb-0", className), ...props })),
|
|
30
|
+
h3: ({ className, ...props }) => (_jsx("h3", { className: cn("aui-md-h3 mt-4 mb-1.5 scroll-m-20 text-base font-semibold first:mt-0 last:mb-0", className), ...props })),
|
|
31
|
+
h4: ({ className, ...props }) => (_jsx("h4", { className: cn("aui-md-h4 mt-3.5 mb-1 scroll-m-20 text-base font-medium first:mt-0 last:mb-0", className), ...props })),
|
|
32
|
+
h5: ({ className, ...props }) => (_jsx("h5", { className: cn("aui-md-h5 mt-3 mb-1 text-sm font-semibold first:mt-0 last:mb-0", className), ...props })),
|
|
33
|
+
h6: ({ className, ...props }) => (_jsx("h6", { className: cn("aui-md-h6 mt-3 mb-1 text-sm font-medium first:mt-0 last:mb-0", className), ...props })),
|
|
34
|
+
p: ({ className, ...props }) => (_jsx("p", { className: cn("aui-md-p my-3 leading-relaxed first:mt-0 last:mb-0", className), ...props })),
|
|
35
|
+
a: ({ className, ...props }) => (_jsx("a", { className: cn("aui-md-a text-primary hover:text-primary/80 underline underline-offset-2", className), ...props })),
|
|
36
|
+
blockquote: ({ className, ...props }) => (_jsx("blockquote", { className: cn("aui-md-blockquote border-muted-foreground/30 text-muted-foreground my-3 border-s-2 ps-4", className), ...props })),
|
|
37
|
+
ul: ({ className, ...props }) => (_jsx("ul", { className: cn("aui-md-ul marker:text-muted-foreground my-3 ms-5 list-disc [&>li]:mt-1", className), ...props })),
|
|
38
|
+
ol: ({ className, ...props }) => (_jsx("ol", { className: cn("aui-md-ol marker:text-muted-foreground my-3 ms-5 list-decimal [&>li]:mt-1", className), ...props })),
|
|
39
|
+
hr: ({ className, ...props }) => (_jsx("hr", { className: cn("aui-md-hr border-muted-foreground/20 my-3", className), ...props })),
|
|
40
|
+
table: ({ className, ...props }) => (_jsx("table", { className: cn("aui-md-table my-3 w-full border-separate border-spacing-0 overflow-y-auto", className), ...props })),
|
|
41
|
+
th: ({ className, ...props }) => (_jsx("th", { className: cn("aui-md-th bg-muted px-3 py-1.5 text-start font-medium first:rounded-ss-lg last:rounded-se-lg [[align=center]]:text-center [[align=right]]:text-right", className), ...props })),
|
|
42
|
+
td: ({ className, ...props }) => (_jsx("td", { className: cn("aui-md-td border-muted-foreground/20 border-s border-b px-3 py-1.5 text-start last:border-e [[align=center]]:text-center [[align=right]]:text-right", className), ...props })),
|
|
43
|
+
tr: ({ className, ...props }) => (_jsx("tr", { className: cn("aui-md-tr m-0 border-b p-0 first:border-t [&:last-child>td:first-child]:rounded-es-lg [&:last-child>td:last-child]:rounded-ee-lg", className), ...props })),
|
|
44
|
+
li: ({ className, ...props }) => (_jsx("li", { className: cn("aui-md-li leading-relaxed", className), ...props })),
|
|
45
|
+
strong: ({ className, ...props }) => (_jsx("strong", { className: cn("aui-md-strong font-semibold", className), ...props })),
|
|
46
|
+
sup: ({ className, ...props }) => (_jsx("sup", { className: cn("aui-md-sup [&>a]:text-xs [&>a]:no-underline", className), ...props })),
|
|
47
|
+
pre: ({ className, ...props }) => (_jsx("pre", { className: cn("aui-md-pre border-border/50 bg-muted/30 overflow-x-auto rounded-t-none rounded-b-xl border border-t-0 p-3.5 text-[13px] leading-relaxed", className), ...props })),
|
|
48
|
+
code: function Code({ className, ...props }) {
|
|
49
|
+
const isCodeBlock = useIsMarkdownCodeBlock();
|
|
50
|
+
return (_jsx("code", { className: cn(!isCodeBlock &&
|
|
51
|
+
"aui-md-inline-code bg-muted rounded-md px-1.5 py-0.5 font-mono text-[0.85em]", className), ...props }));
|
|
52
|
+
},
|
|
53
|
+
CodeHeader,
|
|
54
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
import { type ReasoningMessagePartComponent } from "@assistant-ui/react";
|
|
3
|
+
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../components/collapsible";
|
|
4
|
+
declare const reasoningVariants: (props?: ({
|
|
5
|
+
variant?: "outline" | "ghost" | "muted" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export type ReasoningRootProps = Omit<React.ComponentProps<typeof Collapsible>, "open" | "onOpenChange"> & VariantProps<typeof reasoningVariants> & {
|
|
8
|
+
open?: boolean;
|
|
9
|
+
onOpenChange?: (open: boolean) => void;
|
|
10
|
+
defaultOpen?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Whether the reasoning is currently streaming. While `true` the
|
|
13
|
+
* disclosure is held open with a bottom-pinned live preview; when
|
|
14
|
+
* streaming ends it returns to `defaultOpen`, and the first manual
|
|
15
|
+
* toggle takes over the open/close state permanently. The live preview
|
|
16
|
+
* keeps following the newest tokens while the disclosure is open during
|
|
17
|
+
* streaming, even after a manual toggle, and pauses while the reader is
|
|
18
|
+
* scrolled up.
|
|
19
|
+
*/
|
|
20
|
+
streaming?: boolean;
|
|
21
|
+
};
|
|
22
|
+
declare function ReasoningRoot({ className, variant, open: controlledOpen, onOpenChange: controlledOnOpenChange, defaultOpen, streaming, children, ...props }: ReasoningRootProps): import("react").JSX.Element;
|
|
23
|
+
declare function ReasoningTrigger({ active, duration, className, ...props }: React.ComponentProps<typeof CollapsibleTrigger> & {
|
|
24
|
+
active?: boolean;
|
|
25
|
+
duration?: number;
|
|
26
|
+
}): import("react").JSX.Element;
|
|
27
|
+
declare function ReasoningContent({ className, children, ...props }: React.ComponentProps<typeof CollapsibleContent>): import("react").JSX.Element;
|
|
28
|
+
declare function ReasoningText({ className, children, ...props }: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
29
|
+
declare const Reasoning: ReasoningMessagePartComponent;
|
|
30
|
+
export { Reasoning, ReasoningRoot, ReasoningTrigger, ReasoningContent, ReasoningText };
|
|
31
|
+
//# sourceMappingURL=reasoning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning.d.ts","sourceRoot":"","sources":["../../../src/internal/assistant-ui/reasoning.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAiB,KAAK,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAO/F,QAAA,MAAM,iBAAiB;;8EAWrB,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,KAAK,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EACxC,MAAM,GAAG,cAAc,CACxB,GACC,YAAY,CAAC,OAAO,iBAAiB,CAAC,GAAG;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEJ,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,OAAO,EACP,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,sBAAsB,EACpC,WAAmB,EACnB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,+BAsDpB;AAkCD,iBAAS,gBAAgB,CAAC,EACxB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,GAAG;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,+BA2CA;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,+BAmBjD;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,+BA6DpF;AAID,QAAA,MAAM,SAAS,EAAqC,6BAA6B,CAAC;AAIlF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC"}
|