@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
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Button } from "../button.js";
|
|
4
|
-
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../collapsible.js";
|
|
5
|
-
import { Input } from "../input.js";
|
|
6
|
-
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../tooltip.js";
|
|
7
|
-
import { cn } from "../../lib/utils.js";
|
|
8
|
-
import { ChevronDownIcon } from "lucide-react";
|
|
9
|
-
import { createContext, useCallback, useContext, useMemo, useState } from "react";
|
|
10
|
-
const WebPreviewContext = createContext(null);
|
|
11
|
-
const useWebPreview = () => {
|
|
12
|
-
const context = useContext(WebPreviewContext);
|
|
13
|
-
if (!context) {
|
|
14
|
-
throw new Error("WebPreview components must be used within a WebPreview");
|
|
15
|
-
}
|
|
16
|
-
return context;
|
|
17
|
-
};
|
|
18
|
-
export const WebPreview = ({ className, children, defaultUrl = "", onUrlChange, ...props }) => {
|
|
19
|
-
const [url, setUrl] = useState(defaultUrl);
|
|
20
|
-
const [consoleOpen, setConsoleOpen] = useState(false);
|
|
21
|
-
const handleUrlChange = useCallback((newUrl) => {
|
|
22
|
-
setUrl(newUrl);
|
|
23
|
-
onUrlChange?.(newUrl);
|
|
24
|
-
}, [onUrlChange]);
|
|
25
|
-
const contextValue = useMemo(() => ({
|
|
26
|
-
consoleOpen,
|
|
27
|
-
setConsoleOpen,
|
|
28
|
-
setUrl: handleUrlChange,
|
|
29
|
-
url,
|
|
30
|
-
}), [consoleOpen, handleUrlChange, url]);
|
|
31
|
-
return (_jsx(WebPreviewContext.Provider, { value: contextValue, children: _jsx("div", { className: cn("flex size-full flex-col rounded-lg border bg-card", className), ...props, children: children }) }));
|
|
32
|
-
};
|
|
33
|
-
export const WebPreviewNavigation = ({ className, children, ...props }) => (_jsx("div", { className: cn("flex items-center gap-1 border-b p-2", className), ...props, children: children }));
|
|
34
|
-
export const WebPreviewNavigationButton = ({ onClick, disabled, tooltip, children, ...props }) => (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { render: _jsx(Button, { className: "h-8 w-8 p-0 hover:text-foreground", disabled: disabled, onClick: onClick, size: "sm", variant: "ghost", ...props, children: children }) }), _jsx(TooltipContent, { children: _jsx("p", { children: tooltip }) })] }) }));
|
|
35
|
-
export const WebPreviewUrl = ({ value, onChange, onKeyDown, ...props }) => {
|
|
36
|
-
const { url, setUrl } = useWebPreview();
|
|
37
|
-
const [prevUrl, setPrevUrl] = useState(url);
|
|
38
|
-
const [inputValue, setInputValue] = useState(url);
|
|
39
|
-
// Sync input value with context URL when it changes externally (derived state pattern)
|
|
40
|
-
if (url !== prevUrl) {
|
|
41
|
-
setPrevUrl(url);
|
|
42
|
-
setInputValue(url);
|
|
43
|
-
}
|
|
44
|
-
const handleChange = (event) => {
|
|
45
|
-
setInputValue(event.target.value);
|
|
46
|
-
onChange?.(event);
|
|
47
|
-
};
|
|
48
|
-
const handleKeyDown = useCallback((event) => {
|
|
49
|
-
if (event.key === "Enter") {
|
|
50
|
-
const target = event.target;
|
|
51
|
-
setUrl(target.value);
|
|
52
|
-
}
|
|
53
|
-
onKeyDown?.(event);
|
|
54
|
-
}, [setUrl, onKeyDown]);
|
|
55
|
-
return (_jsx(Input, { className: "h-8 flex-1 text-sm", onChange: handleChange, onKeyDown: handleKeyDown, placeholder: "Enter URL...", value: value ?? inputValue, ...props }));
|
|
56
|
-
};
|
|
57
|
-
export const WebPreviewBody = ({ className, loading, src, ...props }) => {
|
|
58
|
-
const { url } = useWebPreview();
|
|
59
|
-
return (_jsxs("div", { className: "flex-1", children: [_jsx("iframe", { className: cn("size-full", className),
|
|
60
|
-
// oxlint-disable-next-line eslint-plugin-react(iframe-missing-sandbox)
|
|
61
|
-
sandbox: "allow-scripts allow-forms allow-popups allow-presentation", src: (src ?? url) || undefined, title: "Preview", ...props }), loading] }));
|
|
62
|
-
};
|
|
63
|
-
export const WebPreviewConsole = ({ className, logs = [], children, ...props }) => {
|
|
64
|
-
const { consoleOpen, setConsoleOpen } = useWebPreview();
|
|
65
|
-
return (_jsxs(Collapsible, { className: cn("border-t bg-muted/50 font-mono text-sm", className), onOpenChange: setConsoleOpen, open: consoleOpen, ...props, children: [_jsx(CollapsibleTrigger, { render: _jsxs(Button, { className: "flex w-full items-center justify-between p-4 text-left font-medium hover:bg-muted/50", variant: "ghost", children: ["Console", _jsx(ChevronDownIcon, { className: cn("nc-transition-transform h-4 w-4", consoleOpen && "rotate-180") })] }) }), _jsx(CollapsibleContent, { className: "px-4 pb-4 outline-none", children: _jsxs("div", { className: "flex max-h-48 flex-col gap-1 overflow-y-auto", children: [logs.length === 0 ? (_jsx("p", { className: "text-muted-foreground", children: "No console output" })) : (logs.map((log) => (_jsxs("div", { className: cn("text-xs", log.level === "error" && "text-destructive", log.level === "warn" && "text-[var(--nc-warning-deep)]", log.level === "log" && "text-foreground"), children: [_jsx("span", { className: "text-muted-foreground", children: log.timestamp.toLocaleTimeString() }), " ", log.message] }, `${log.timestamp.getTime()}-${log.level}-${log.message}`)))), children] }) })] }));
|
|
66
|
-
};
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import type { BundledLanguage } from "shiki";
|
|
3
|
-
export type AgentRedactionCategory = "secret" | "environment" | "terminal-output" | "user-memory" | "private-reasoning";
|
|
4
|
-
export type AgentRedactionRule = {
|
|
5
|
-
redacted: true;
|
|
6
|
-
category: AgentRedactionCategory;
|
|
7
|
-
label?: string;
|
|
8
|
-
replacement?: string;
|
|
9
|
-
};
|
|
10
|
-
export declare const agentRedactionLabels: {
|
|
11
|
-
readonly environment: "Environment value redacted";
|
|
12
|
-
readonly "private-reasoning": "Private reasoning redacted";
|
|
13
|
-
readonly secret: "Secret redacted";
|
|
14
|
-
readonly "terminal-output": "Terminal output redacted";
|
|
15
|
-
readonly "user-memory": "User memory redacted";
|
|
16
|
-
};
|
|
17
|
-
export declare function getAgentRedactionText(redaction?: AgentRedactionRule): string | undefined;
|
|
18
|
-
export type AgentArtifactStatus = "idle" | "running" | "complete" | "failed" | "interrupted" | "permission-denied" | "redacted";
|
|
19
|
-
export type AgentArtifactKind = "text" | "code" | "diff" | "terminal" | "preview" | "test-results" | "stack-trace" | "custom";
|
|
20
|
-
export type AgentDiffLineKind = "context" | "added" | "removed" | "hunk";
|
|
21
|
-
export type AgentDiffLine = {
|
|
22
|
-
id: string;
|
|
23
|
-
kind: AgentDiffLineKind;
|
|
24
|
-
content: string;
|
|
25
|
-
oldLine?: number;
|
|
26
|
-
newLine?: number;
|
|
27
|
-
redaction?: AgentRedactionRule;
|
|
28
|
-
};
|
|
29
|
-
export type AgentTerminalTranscript = {
|
|
30
|
-
title?: string;
|
|
31
|
-
summary?: string;
|
|
32
|
-
output?: string;
|
|
33
|
-
isStreaming?: boolean;
|
|
34
|
-
status?: AgentArtifactStatus;
|
|
35
|
-
redaction?: AgentRedactionRule;
|
|
36
|
-
};
|
|
37
|
-
export type AgentPreviewModel = {
|
|
38
|
-
title?: string;
|
|
39
|
-
url?: string;
|
|
40
|
-
description?: string;
|
|
41
|
-
loadingLabel?: string;
|
|
42
|
-
};
|
|
43
|
-
export type AgentTestStatus = "passed" | "failed" | "skipped" | "running";
|
|
44
|
-
export type AgentTestResult = {
|
|
45
|
-
id: string;
|
|
46
|
-
name: string;
|
|
47
|
-
status: AgentTestStatus;
|
|
48
|
-
duration?: number;
|
|
49
|
-
error?: string;
|
|
50
|
-
redaction?: AgentRedactionRule;
|
|
51
|
-
};
|
|
52
|
-
export type AgentTestSuiteResult = {
|
|
53
|
-
id: string;
|
|
54
|
-
name: string;
|
|
55
|
-
status: AgentTestStatus;
|
|
56
|
-
passed?: number;
|
|
57
|
-
failed?: number;
|
|
58
|
-
skipped?: number;
|
|
59
|
-
tests?: AgentTestResult[];
|
|
60
|
-
};
|
|
61
|
-
export type AgentTestResultsModel = {
|
|
62
|
-
summary: {
|
|
63
|
-
passed: number;
|
|
64
|
-
failed: number;
|
|
65
|
-
skipped: number;
|
|
66
|
-
total: number;
|
|
67
|
-
duration?: number;
|
|
68
|
-
};
|
|
69
|
-
suites?: AgentTestSuiteResult[];
|
|
70
|
-
};
|
|
71
|
-
export type AgentArtifactModel = {
|
|
72
|
-
id: string;
|
|
73
|
-
kind: AgentArtifactKind;
|
|
74
|
-
title: string;
|
|
75
|
-
description?: string;
|
|
76
|
-
status?: AgentArtifactStatus;
|
|
77
|
-
path?: string;
|
|
78
|
-
language?: BundledLanguage;
|
|
79
|
-
content?: string;
|
|
80
|
-
diff?: AgentDiffLine[];
|
|
81
|
-
terminal?: AgentTerminalTranscript;
|
|
82
|
-
preview?: AgentPreviewModel;
|
|
83
|
-
stackTrace?: string;
|
|
84
|
-
testResults?: AgentTestResultsModel;
|
|
85
|
-
redaction?: AgentRedactionRule;
|
|
86
|
-
};
|
|
87
|
-
export type AgentArtifactRenderLimits = {
|
|
88
|
-
codeChars: number;
|
|
89
|
-
diffLines: number;
|
|
90
|
-
terminalChars: number;
|
|
91
|
-
textChars: number;
|
|
92
|
-
};
|
|
93
|
-
export declare const defaultAgentArtifactRenderLimits: {
|
|
94
|
-
readonly codeChars: 12000;
|
|
95
|
-
readonly diffLines: 300;
|
|
96
|
-
readonly terminalChars: 16000;
|
|
97
|
-
readonly textChars: 12000;
|
|
98
|
-
};
|
|
99
|
-
declare function RedactedNotice({ redaction, className, }: {
|
|
100
|
-
redaction: AgentRedactionRule;
|
|
101
|
-
className?: string;
|
|
102
|
-
}): React.JSX.Element;
|
|
103
|
-
declare function TerminalPanel({ transcript, status, renderLimits, className, ...props }: React.ComponentProps<"div"> & {
|
|
104
|
-
transcript: AgentTerminalTranscript;
|
|
105
|
-
status?: AgentArtifactStatus;
|
|
106
|
-
renderLimits?: Partial<AgentArtifactRenderLimits>;
|
|
107
|
-
}): React.JSX.Element;
|
|
108
|
-
declare function PreviewPane({ preview, className, ...props }: React.ComponentProps<"div"> & {
|
|
109
|
-
preview: AgentPreviewModel;
|
|
110
|
-
}): React.JSX.Element;
|
|
111
|
-
declare function DiffViewer({ lines, filePath, renderLimits, className, ...props }: React.ComponentProps<"div"> & {
|
|
112
|
-
lines: AgentDiffLine[];
|
|
113
|
-
filePath?: string;
|
|
114
|
-
renderLimits?: Partial<AgentArtifactRenderLimits>;
|
|
115
|
-
}): React.JSX.Element;
|
|
116
|
-
declare function StackTraceDisclosure({ trace, className }: {
|
|
117
|
-
trace: string;
|
|
118
|
-
className?: string;
|
|
119
|
-
}): React.JSX.Element;
|
|
120
|
-
declare function TestResultsPanel({ results }: {
|
|
121
|
-
results: AgentTestResultsModel;
|
|
122
|
-
}): React.JSX.Element;
|
|
123
|
-
declare function ArtifactPanel({ artifact, actions, renderLimits, children, className, ...props }: Omit<React.ComponentProps<"div">, "children" | "title"> & {
|
|
124
|
-
artifact: AgentArtifactModel;
|
|
125
|
-
actions?: React.ReactNode;
|
|
126
|
-
renderLimits?: Partial<AgentArtifactRenderLimits>;
|
|
127
|
-
children?: React.ReactNode;
|
|
128
|
-
}): React.JSX.Element;
|
|
129
|
-
export { ArtifactPanel, DiffViewer, PreviewPane, RedactedNotice, StackTraceDisclosure, TerminalPanel, TestResultsPanel, };
|
|
130
|
-
//# sourceMappingURL=artifact-panel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-panel.d.ts","sourceRoot":"","sources":["../../src/components/artifact-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { CodeBlock } from "./ai-elements/code-block.js";
|
|
4
|
-
import { StackTrace, StackTraceContent, StackTraceError, StackTraceErrorMessage, StackTraceErrorType, StackTraceExpandButton, StackTraceFrames, StackTraceHeader, } from "./ai-elements/stack-trace.js";
|
|
5
|
-
import { Terminal, TerminalActions, TerminalContent, TerminalHeader, TerminalStatus, TerminalTitle, } from "./ai-elements/terminal.js";
|
|
6
|
-
import { Test, TestResults, TestResultsContent, TestResultsDuration, TestResultsHeader, TestResultsProgress, TestResultsSummary, TestSuite, TestSuiteContent, TestSuiteName, TestSuiteStats, } from "./ai-elements/test-results.js";
|
|
7
|
-
import { WebPreview, WebPreviewBody, WebPreviewNavigation, WebPreviewUrl, } from "./ai-elements/web-preview.js";
|
|
8
|
-
import { Badge } from "./badge.js";
|
|
9
|
-
import { FeedbackState } from "./feedback-state.js";
|
|
10
|
-
import { cn } from "../lib/utils.js";
|
|
11
|
-
export const agentRedactionLabels = {
|
|
12
|
-
environment: "Environment value redacted",
|
|
13
|
-
"private-reasoning": "Private reasoning redacted",
|
|
14
|
-
secret: "Secret redacted",
|
|
15
|
-
"terminal-output": "Terminal output redacted",
|
|
16
|
-
"user-memory": "User memory redacted",
|
|
17
|
-
};
|
|
18
|
-
export function getAgentRedactionText(redaction) {
|
|
19
|
-
if (!redaction) {
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
return redaction.replacement ?? redaction.label ?? agentRedactionLabels[redaction.category];
|
|
23
|
-
}
|
|
24
|
-
const defaultCodeLanguage = "plaintext";
|
|
25
|
-
// Map the rich artifact kinds onto the design-system `artifact-preview`
|
|
26
|
-
// `[data-kind]` glyph vocabulary (doc/sheet/code/pdf/report); doc is the default.
|
|
27
|
-
const artifactPreviewKinds = {
|
|
28
|
-
code: "code",
|
|
29
|
-
custom: "doc",
|
|
30
|
-
diff: "code",
|
|
31
|
-
preview: "doc",
|
|
32
|
-
"stack-trace": "doc",
|
|
33
|
-
terminal: "code",
|
|
34
|
-
"test-results": "report",
|
|
35
|
-
text: "doc",
|
|
36
|
-
};
|
|
37
|
-
const artifactStatusLabels = {
|
|
38
|
-
complete: "Complete",
|
|
39
|
-
failed: "Failed",
|
|
40
|
-
idle: "Idle",
|
|
41
|
-
interrupted: "Interrupted",
|
|
42
|
-
"permission-denied": "Permission denied",
|
|
43
|
-
redacted: "Redacted",
|
|
44
|
-
running: "Running",
|
|
45
|
-
};
|
|
46
|
-
export const defaultAgentArtifactRenderLimits = {
|
|
47
|
-
codeChars: 12_000,
|
|
48
|
-
diffLines: 300,
|
|
49
|
-
terminalChars: 16_000,
|
|
50
|
-
textChars: 12_000,
|
|
51
|
-
};
|
|
52
|
-
function normalizeRenderLimits(renderLimits) {
|
|
53
|
-
return {
|
|
54
|
-
...defaultAgentArtifactRenderLimits,
|
|
55
|
-
...renderLimits,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
function normalizeLimit(limit) {
|
|
59
|
-
if (!Number.isFinite(limit)) {
|
|
60
|
-
return 0;
|
|
61
|
-
}
|
|
62
|
-
return Math.max(0, Math.floor(limit));
|
|
63
|
-
}
|
|
64
|
-
function getBoundedText(value, limit, direction = "head") {
|
|
65
|
-
const maxLength = normalizeLimit(limit);
|
|
66
|
-
if (value.length <= maxLength) {
|
|
67
|
-
return { omitted: 0, value };
|
|
68
|
-
}
|
|
69
|
-
if (maxLength === 0) {
|
|
70
|
-
return { omitted: value.length, value: "" };
|
|
71
|
-
}
|
|
72
|
-
return {
|
|
73
|
-
omitted: value.length - maxLength,
|
|
74
|
-
value: direction === "tail" ? value.slice(value.length - maxLength) : value.slice(0, maxLength),
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
function getBoundedLines(lines, limit) {
|
|
78
|
-
const maxLines = normalizeLimit(limit);
|
|
79
|
-
if (lines.length <= maxLines) {
|
|
80
|
-
return { omitted: 0, value: lines };
|
|
81
|
-
}
|
|
82
|
-
return {
|
|
83
|
-
omitted: lines.length - maxLines,
|
|
84
|
-
value: lines.slice(0, maxLines),
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
function OverflowSummary({ children, className, }) {
|
|
88
|
-
return (_jsx("div", { "data-slot": "agent-overflow-summary", className: cn("rounded-md border bg-muted/30 px-3 py-2 text-xs text-muted-foreground", className), children: children }));
|
|
89
|
-
}
|
|
90
|
-
function RedactedNotice({ redaction, className, }) {
|
|
91
|
-
return (_jsx("div", { "data-slot": "agent-redaction-notice", "data-redaction-category": redaction.category, className: cn("rounded-md border border-dashed bg-muted/30 px-3 py-2 text-sm text-muted-foreground", className), children: getAgentRedactionText(redaction) }));
|
|
92
|
-
}
|
|
93
|
-
function TerminalPanel({ transcript, status, renderLimits, className, ...props }) {
|
|
94
|
-
const limits = normalizeRenderLimits(renderLimits);
|
|
95
|
-
const rawOutput = getAgentRedactionText(transcript.redaction) ??
|
|
96
|
-
transcript.output ??
|
|
97
|
-
transcript.summary ??
|
|
98
|
-
"No terminal transcript supplied.";
|
|
99
|
-
const output = transcript.redaction
|
|
100
|
-
? { omitted: 0, value: rawOutput }
|
|
101
|
-
: getBoundedText(rawOutput, limits.terminalChars, "tail");
|
|
102
|
-
const terminalStatus = status ??
|
|
103
|
-
transcript.status ??
|
|
104
|
-
(transcript.redaction ? "redacted" : transcript.isStreaming ? "running" : "idle");
|
|
105
|
-
const isRunning = terminalStatus === "running";
|
|
106
|
-
return (_jsxs("div", { "data-slot": "terminal-panel", className: cn("grid gap-2", className), ...props, children: [output.omitted > 0 && (_jsxs(OverflowSummary, { children: [output.omitted, " earlier terminal characters not shown."] })), _jsxs(Terminal, { output: output.value, isStreaming: isRunning, children: [_jsxs(TerminalHeader, { children: [_jsx(TerminalTitle, { children: transcript.title ?? "Terminal" }), _jsx(TerminalActions, { children: _jsx(TerminalStatus, { "data-slot": "terminal-panel-status", "data-terminal-status": terminalStatus, children: artifactStatusLabels[terminalStatus] }) })] }), _jsx(TerminalContent, {})] })] }));
|
|
107
|
-
}
|
|
108
|
-
function PreviewPane({ preview, className, ...props }) {
|
|
109
|
-
return (_jsxs("div", { "data-slot": "preview-pane", className: cn("min-h-64", className), ...props, children: [_jsxs(WebPreview, { defaultUrl: preview.url ?? "", className: "min-h-64", children: [_jsx(WebPreviewNavigation, { children: _jsx(WebPreviewUrl, { "aria-label": preview.title ?? "Preview URL", readOnly: true, value: preview.url ?? "" }) }), _jsx(WebPreviewBody, {}), preview.loadingLabel && _jsx("span", { className: "sr-only", children: preview.loadingLabel })] }), preview.description && (_jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: preview.description }))] }));
|
|
110
|
-
}
|
|
111
|
-
function getDiffLineClass(kind) {
|
|
112
|
-
if (kind === "added") {
|
|
113
|
-
return "bg-[var(--nc-link-bg-soft)]";
|
|
114
|
-
}
|
|
115
|
-
if (kind === "removed") {
|
|
116
|
-
return "bg-[var(--nc-error-soft)]";
|
|
117
|
-
}
|
|
118
|
-
if (kind === "hunk") {
|
|
119
|
-
return "bg-accent text-muted-foreground";
|
|
120
|
-
}
|
|
121
|
-
return "bg-background";
|
|
122
|
-
}
|
|
123
|
-
function getDiffPrefix(kind) {
|
|
124
|
-
if (kind === "added") {
|
|
125
|
-
return "+";
|
|
126
|
-
}
|
|
127
|
-
if (kind === "removed") {
|
|
128
|
-
return "-";
|
|
129
|
-
}
|
|
130
|
-
return " ";
|
|
131
|
-
}
|
|
132
|
-
function DiffViewer({ lines, filePath, renderLimits, className, ...props }) {
|
|
133
|
-
const boundedLines = getBoundedLines(lines, normalizeRenderLimits(renderLimits).diffLines);
|
|
134
|
-
return (_jsxs("div", { "data-slot": "diff-viewer", className: cn("overflow-hidden rounded-md border bg-background font-mono text-sm", className), ...props, children: [filePath && (_jsx("div", { "data-slot": "diff-viewer-header", className: "border-b bg-muted/50 px-3 py-2 text-xs text-muted-foreground", children: filePath })), _jsx("div", { "data-slot": "diff-viewer-lines", className: "overflow-auto", children: boundedLines.value.map((line) => (_jsxs("div", { "data-slot": "diff-viewer-line", "data-diff-kind": line.kind, className: cn("grid grid-cols-[auto_auto_1fr]", getDiffLineClass(line.kind)), children: [_jsx("span", { className: "select-none px-3 py-1 text-right text-muted-foreground", children: line.oldLine ?? "" }), _jsx("span", { className: "select-none px-3 py-1 text-right text-muted-foreground", children: line.newLine ?? "" }), _jsx("span", { className: "min-w-0 whitespace-pre-wrap px-3 py-1", children: line.redaction
|
|
135
|
-
? getAgentRedactionText(line.redaction)
|
|
136
|
-
: `${getDiffPrefix(line.kind)}${line.content}` })] }, line.id))) }), boundedLines.omitted > 0 && (_jsxs(OverflowSummary, { className: "m-3", children: [boundedLines.omitted, " diff lines not shown."] }))] }));
|
|
137
|
-
}
|
|
138
|
-
function StackTraceDisclosure({ trace, className }) {
|
|
139
|
-
return (_jsxs(StackTrace, { trace: trace, className: className, children: [_jsxs(StackTraceHeader, { children: [_jsxs(StackTraceError, { children: [_jsx(StackTraceErrorType, {}), _jsx(StackTraceErrorMessage, {})] }), _jsx(StackTraceExpandButton, {})] }), _jsx(StackTraceContent, { children: _jsx(StackTraceFrames, { showInternalFrames: false }) })] }));
|
|
140
|
-
}
|
|
141
|
-
function TestResultsPanel({ results }) {
|
|
142
|
-
return (_jsxs(TestResults, { summary: results.summary, children: [_jsxs(TestResultsHeader, { children: [_jsx(TestResultsSummary, {}), _jsx(TestResultsDuration, {})] }), _jsxs(TestResultsContent, { children: [_jsx(TestResultsProgress, {}), results.suites?.map((suite) => (_jsxs(TestSuite, { name: suite.name, status: suite.status, children: [_jsxs(TestSuiteName, { children: [suite.name, _jsx(TestSuiteStats, { passed: suite.passed, failed: suite.failed, skipped: suite.skipped })] }), suite.tests && (_jsx(TestSuiteContent, { children: suite.tests.map((test) => (_jsx(Test, { name: test.name, status: test.status, duration: test.duration, children: test.redaction ? _jsx(RedactedNotice, { redaction: test.redaction }) : undefined }, test.id))) }))] }, suite.id)))] })] }));
|
|
143
|
-
}
|
|
144
|
-
function ArtifactBody({ artifact, renderLimits, children, }) {
|
|
145
|
-
const limits = normalizeRenderLimits(renderLimits);
|
|
146
|
-
if (children) {
|
|
147
|
-
return children;
|
|
148
|
-
}
|
|
149
|
-
if (artifact.redaction) {
|
|
150
|
-
return _jsx(RedactedNotice, { redaction: artifact.redaction });
|
|
151
|
-
}
|
|
152
|
-
if (artifact.kind === "code") {
|
|
153
|
-
const code = getBoundedText(artifact.content ?? "", limits.codeChars);
|
|
154
|
-
return (_jsxs("div", { className: "grid gap-2", children: [_jsx(CodeBlock, { code: code.value, language: artifact.language ?? defaultCodeLanguage, showLineNumbers: true }), code.omitted > 0 && (_jsxs(OverflowSummary, { children: [code.omitted, " code characters not shown."] }))] }));
|
|
155
|
-
}
|
|
156
|
-
if (artifact.kind === "diff") {
|
|
157
|
-
return (_jsx(DiffViewer, { lines: artifact.diff ?? [], filePath: artifact.path, renderLimits: limits }));
|
|
158
|
-
}
|
|
159
|
-
if (artifact.kind === "terminal") {
|
|
160
|
-
return (_jsx(TerminalPanel, { transcript: artifact.terminal ?? {}, status: artifact.status, renderLimits: limits }));
|
|
161
|
-
}
|
|
162
|
-
if (artifact.kind === "preview") {
|
|
163
|
-
return _jsx(PreviewPane, { preview: artifact.preview ?? {} });
|
|
164
|
-
}
|
|
165
|
-
if (artifact.kind === "stack-trace" && artifact.stackTrace) {
|
|
166
|
-
return _jsx(StackTraceDisclosure, { trace: artifact.stackTrace });
|
|
167
|
-
}
|
|
168
|
-
if (artifact.kind === "test-results" && artifact.testResults) {
|
|
169
|
-
return _jsx(TestResultsPanel, { results: artifact.testResults });
|
|
170
|
-
}
|
|
171
|
-
if (artifact.content) {
|
|
172
|
-
const content = getBoundedText(artifact.content, limits.textChars);
|
|
173
|
-
return (_jsxs("div", { className: "grid gap-2", children: [_jsx("div", { className: "whitespace-pre-wrap text-sm text-foreground", children: content.value }), content.omitted > 0 && (_jsxs(OverflowSummary, { children: [content.omitted, " text characters not shown."] }))] }));
|
|
174
|
-
}
|
|
175
|
-
return (_jsx(FeedbackState, { status: "empty", title: "No artifact content", compact: true, className: "rounded-md border-0 bg-transparent" }));
|
|
176
|
-
}
|
|
177
|
-
function ArtifactPanel({ artifact, actions, renderLimits, children, className, ...props }) {
|
|
178
|
-
return (_jsxs("div", { "data-slot": "artifact-panel", "data-artifact-kind": artifact.kind, "data-artifact-status": artifact.status, "data-kind": artifactPreviewKinds[artifact.kind], className: cn("nc-artifact-preview", className), ...props, children: [_jsxs("div", { className: "nc-artifact-preview-header", children: [_jsx("span", { className: "nc-artifact-preview-title", children: artifact.title }), artifact.status && (_jsx(Badge, { variant: "secondary", children: artifactStatusLabels[artifact.status] })), _jsx("span", { className: "nc-artifact-preview-kind", children: artifact.kind }), actions && _jsx("div", { className: "ml-2 flex items-center gap-1", children: actions })] }), _jsxs("div", { className: "nc-artifact-preview-body", children: [(artifact.description || artifact.path) && (_jsx("div", { "data-slot": "artifact-panel-subtitle", className: "mb-2 text-muted-foreground text-xs", children: artifact.description ?? artifact.path })), _jsx(ArtifactBody, { artifact: artifact, renderLimits: renderLimits, children: children })] })] }));
|
|
179
|
-
}
|
|
180
|
-
export { ArtifactPanel, DiffViewer, PreviewPane, RedactedNotice, StackTraceDisclosure, TerminalPanel, TestResultsPanel, };
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { useRender } from "@base-ui/react/use-render";
|
|
3
|
-
import { type VariantProps } from "class-variance-authority";
|
|
4
|
-
import { Button } from "./button";
|
|
5
|
-
declare const attachmentVariants: (props?: ({
|
|
6
|
-
size?: "default" | "xs" | "sm" | null | undefined;
|
|
7
|
-
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
8
|
-
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
-
declare function Attachment({ className, state, size, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof attachmentVariants> & {
|
|
10
|
-
state?: "idle" | "uploading" | "processing" | "error" | "done";
|
|
11
|
-
}): React.JSX.Element;
|
|
12
|
-
declare const attachmentMediaVariants: (props?: ({
|
|
13
|
-
variant?: "image" | "icon" | null | undefined;
|
|
14
|
-
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
15
|
-
declare function AttachmentMedia({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof attachmentMediaVariants>): React.JSX.Element;
|
|
16
|
-
declare function AttachmentContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
17
|
-
declare function AttachmentTitle({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
18
|
-
declare function AttachmentDescription({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
19
|
-
declare function AttachmentActions({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
20
|
-
declare function AttachmentAction({ className, variant, size, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
|
|
21
|
-
declare function AttachmentTrigger({ className, render, type, ...props }: useRender.ComponentProps<"button">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
22
|
-
declare function AttachmentGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
23
|
-
export { Attachment, AttachmentGroup, AttachmentMedia, AttachmentContent, AttachmentTitle, AttachmentDescription, AttachmentActions, AttachmentAction, AttachmentTrigger, };
|
|
24
|
-
//# sourceMappingURL=attachment.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../src/components/attachment.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,QAAA,MAAM,kBAAkB;;;8EAgBvB,CAAC;AAEF,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,KAAc,EACd,IAAgB,EAChB,WAA0B,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAC5B,YAAY,CAAC,OAAO,kBAAkB,CAAC,GAAG;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;CAChE,qBAWF;AAED,QAAA,MAAM,uBAAuB;;8EAc5B,CAAC;AAEF,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,OAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,uBAAuB,CAAC,qBAS5E;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW9E;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAW7E;AAED,iBAAS,qBAAqB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAYnF;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW9E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,OAAO,EACP,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,qBAUrC;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,MAAM,EACN,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,0EAepC;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW5E;AAED,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,CAAC"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { mergeProps } from "@base-ui/react/merge-props";
|
|
3
|
-
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
-
import { cva } from "class-variance-authority";
|
|
5
|
-
import { cn } from "../lib/utils.js";
|
|
6
|
-
import { Button } from "./button.js";
|
|
7
|
-
const attachmentVariants = cva("group/attachment relative flex w-fit max-w-full min-w-0 shrink-0 flex-wrap rounded-xl border bg-card text-card-foreground transition-colors focus-within:ring-[length:var(--ring-width-focus)] focus-within:ring-ring/50 has-[>a,>button]:hover:bg-muted/50 data-[state=error]:border-destructive/30 data-[state=idle]:border-dashed", {
|
|
8
|
-
variants: {
|
|
9
|
-
size: {
|
|
10
|
-
default: "gap-2 text-sm has-data-[slot=attachment-content]:px-2.5 has-data-[slot=attachment-content]:py-2 has-data-[slot=attachment-media]:p-2",
|
|
11
|
-
sm: "gap-2.5 text-xs has-data-[slot=attachment-content]:px-2 has-data-[slot=attachment-content]:py-1.5 has-data-[slot=attachment-media]:p-1.5",
|
|
12
|
-
xs: "gap-1.5 rounded-lg text-xs has-data-[slot=attachment-content]:px-1.5 has-data-[slot=attachment-content]:py-1 has-data-[slot=attachment-media]:p-1",
|
|
13
|
-
},
|
|
14
|
-
orientation: {
|
|
15
|
-
horizontal: "min-w-40 items-center",
|
|
16
|
-
vertical: "w-24 flex-col has-data-[slot=attachment-content]:w-30",
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
});
|
|
20
|
-
function Attachment({ className, state = "done", size = "default", orientation = "horizontal", ...props }) {
|
|
21
|
-
return (_jsx("div", { "data-slot": "attachment", "data-state": state, "data-size": size, "data-orientation": orientation, className: cn(attachmentVariants({ size, orientation }), className), ...props }));
|
|
22
|
-
}
|
|
23
|
-
const attachmentMediaVariants = cva("relative flex aspect-square w-10 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-muted text-foreground group-data-[orientation=vertical]/attachment:w-full group-data-[size=sm]/attachment:w-8 group-data-[size=xs]/attachment:w-7 group-data-[size=xs]/attachment:rounded-md group-data-[state=error]/attachment:bg-[var(--nc-error-soft)] group-data-[state=error]/attachment:text-[var(--nc-error-deep)] group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6! [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5", {
|
|
24
|
-
variants: {
|
|
25
|
-
variant: {
|
|
26
|
-
icon: "",
|
|
27
|
-
image: "opacity-60 group-data-[state=done]/attachment:opacity-100 group-data-[state=idle]/attachment:opacity-100 *:[img]:aspect-square *:[img]:w-full *:[img]:object-cover",
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
defaultVariants: {
|
|
31
|
-
variant: "icon",
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
function AttachmentMedia({ className, variant = "icon", ...props }) {
|
|
35
|
-
return (_jsx("div", { "data-slot": "attachment-media", "data-variant": variant, className: cn(attachmentMediaVariants({ variant }), className), ...props }));
|
|
36
|
-
}
|
|
37
|
-
function AttachmentContent({ className, ...props }) {
|
|
38
|
-
return (_jsx("div", { "data-slot": "attachment-content", className: cn("max-w-full min-w-0 flex-1 leading-tight group-data-[orientation=vertical]/attachment:px-1", className), ...props }));
|
|
39
|
-
}
|
|
40
|
-
function AttachmentTitle({ className, ...props }) {
|
|
41
|
-
return (_jsx("span", { "data-slot": "attachment-title", className: cn("block max-w-full min-w-0 truncate font-medium group-data-[state=processing]/attachment:shimmer group-data-[state=uploading]/attachment:shimmer", className), ...props }));
|
|
42
|
-
}
|
|
43
|
-
function AttachmentDescription({ className, ...props }) {
|
|
44
|
-
return (_jsx("span", { "data-slot": "attachment-description", className: cn("mt-0.5 block min-w-0 truncate text-xs text-muted-foreground group-data-[state=error]/attachment:text-[var(--nc-error-deep)]", "max-w-full", className), ...props }));
|
|
45
|
-
}
|
|
46
|
-
function AttachmentActions({ className, ...props }) {
|
|
47
|
-
return (_jsx("div", { "data-slot": "attachment-actions", className: cn("relative z-20 flex shrink-0 items-center group-data-[orientation=vertical]/attachment:absolute group-data-[orientation=vertical]/attachment:top-3 group-data-[orientation=vertical]/attachment:right-3 group-data-[orientation=vertical]/attachment:gap-1", className), ...props }));
|
|
48
|
-
}
|
|
49
|
-
function AttachmentAction({ className, variant, size = "icon-xs", ...props }) {
|
|
50
|
-
return (_jsx(Button, { "data-slot": "attachment-action", variant: variant ?? "ghost", size: size, className: cn(className), ...props }));
|
|
51
|
-
}
|
|
52
|
-
function AttachmentTrigger({ className, render, type, ...props }) {
|
|
53
|
-
return useRender({
|
|
54
|
-
defaultTagName: "button",
|
|
55
|
-
props: mergeProps({
|
|
56
|
-
type: type ?? "button",
|
|
57
|
-
className: cn("absolute inset-0 z-10 outline-none", className),
|
|
58
|
-
}, props),
|
|
59
|
-
render,
|
|
60
|
-
state: {
|
|
61
|
-
slot: "attachment-trigger",
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
function AttachmentGroup({ className, ...props }) {
|
|
66
|
-
return (_jsx("div", { "data-slot": "attachment-group", className: cn("flex min-w-0 scroll-fade-x snap-x snap-mandatory scroll-px-1 no-scrollbar gap-3 overflow-x-auto overscroll-x-contain py-1 *:data-[slot=attachment]:flex-none *:data-[slot=attachment]:snap-start", className), ...props }));
|
|
67
|
-
}
|
|
68
|
-
export { Attachment, AttachmentGroup, AttachmentMedia, AttachmentContent, AttachmentTitle, AttachmentDescription, AttachmentActions, AttachmentAction, AttachmentTrigger, };
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { useRender } from "@base-ui/react/use-render";
|
|
3
|
-
import { type VariantProps } from "class-variance-authority";
|
|
4
|
-
declare function BubbleGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
5
|
-
declare const bubbleVariants: (props?: ({
|
|
6
|
-
variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | "muted" | "tinted" | null | undefined;
|
|
7
|
-
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
-
declare function Bubble({ variant, align, className, ...props }: React.ComponentProps<"div"> & VariantProps<typeof bubbleVariants> & {
|
|
9
|
-
align?: "start" | "end";
|
|
10
|
-
}): React.JSX.Element;
|
|
11
|
-
declare function BubbleContent({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
12
|
-
declare function BubbleReactions({ side, align, className, ...props }: React.ComponentProps<"div"> & {
|
|
13
|
-
align?: "start" | "end";
|
|
14
|
-
side?: "top" | "bottom";
|
|
15
|
-
}): React.JSX.Element;
|
|
16
|
-
export { BubbleGroup, Bubble, BubbleContent, BubbleReactions };
|
|
17
|
-
//# sourceMappingURL=bubble.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bubble.d.ts","sourceRoot":"","sources":["../../src/components/bubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQxE;AAED,QAAA,MAAM,cAAc;;8EAyBnB,CAAC;AAEF,iBAAS,MAAM,CAAC,EACd,OAAmB,EACnB,KAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAC5B,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;CACzB,qBAUF;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,0EAiBtF;AAsBD,iBAAS,eAAe,CAAC,EACvB,IAAe,EACf,KAAa,EACb,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CACzB,qBAUA;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { mergeProps } from "@base-ui/react/merge-props";
|
|
3
|
-
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
-
import { cva } from "class-variance-authority";
|
|
5
|
-
import { cn } from "../lib/utils.js";
|
|
6
|
-
function BubbleGroup({ className, ...props }) {
|
|
7
|
-
return (_jsx("div", { "data-slot": "bubble-group", className: cn("flex min-w-0 flex-col gap-2", className), ...props }));
|
|
8
|
-
}
|
|
9
|
-
const bubbleVariants = cva("group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full", {
|
|
10
|
-
variants: {
|
|
11
|
-
variant: {
|
|
12
|
-
default: "*:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary-hover",
|
|
13
|
-
secondary: "*:data-[slot=bubble-content]:bg-secondary *:data-[slot=bubble-content]:text-secondary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-secondary/80",
|
|
14
|
-
muted: "*:data-[slot=bubble-content]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted/80",
|
|
15
|
-
tinted: "*:data-[slot=bubble-content]:bg-accent *:data-[slot=bubble-content]:text-accent-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-accent/80",
|
|
16
|
-
outline: "*:data-[slot=bubble-content]:border-border *:data-[slot=bubble-content]:bg-background [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground",
|
|
17
|
-
ghost: "border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground",
|
|
18
|
-
destructive: "*:data-[slot=bubble-content]:bg-[var(--nc-error-soft)] *:data-[slot=bubble-content]:text-[var(--nc-error-deep)] [&>[data-slot=bubble-content]:is(button,a):hover]:border-[var(--nc-error-deep)]",
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
defaultVariants: {
|
|
22
|
-
variant: "default",
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
function Bubble({ variant = "default", align = "start", className, ...props }) {
|
|
26
|
-
return (_jsx("div", { "data-slot": "bubble", "data-variant": variant, "data-align": align, className: cn(bubbleVariants({ variant }), className), ...props }));
|
|
27
|
-
}
|
|
28
|
-
function BubbleContent({ className, render, ...props }) {
|
|
29
|
-
return useRender({
|
|
30
|
-
defaultTagName: "div",
|
|
31
|
-
props: mergeProps({
|
|
32
|
-
className: cn("w-fit max-w-full min-w-0 overflow-hidden rounded-xl border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:border-ring [button,a]:focus-visible:ring-[length:var(--ring-width-focus)] [button,a]:focus-visible:ring-ring/50", className),
|
|
33
|
-
}, props),
|
|
34
|
-
render,
|
|
35
|
-
state: {
|
|
36
|
-
slot: "bubble-content",
|
|
37
|
-
},
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
const bubbleReactionsVariants = cva("absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-full bg-muted px-1.5 py-0.5 text-sm ring-3 ring-card has-[button]:p-0", {
|
|
41
|
-
variants: {
|
|
42
|
-
side: {
|
|
43
|
-
top: "top-0 -translate-y-3/4",
|
|
44
|
-
bottom: "bottom-0 translate-y-3/4",
|
|
45
|
-
},
|
|
46
|
-
align: {
|
|
47
|
-
start: "left-3",
|
|
48
|
-
end: "right-3",
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
defaultVariants: {
|
|
52
|
-
side: "bottom",
|
|
53
|
-
align: "end",
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
function BubbleReactions({ side = "bottom", align = "end", className, ...props }) {
|
|
57
|
-
return (_jsx("div", { "data-slot": "bubble-reactions", "data-align": align, "data-side": side, className: cn(bubbleReactionsVariants({ side, align }), className), ...props }));
|
|
58
|
-
}
|
|
59
|
-
export { BubbleGroup, Bubble, BubbleContent, BubbleReactions };
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
type DemoAccent = "green" | "cyan" | "amber" | "red" | "blue";
|
|
3
|
-
type DemoSurfaceScript = {
|
|
4
|
-
domain: string;
|
|
5
|
-
role: string;
|
|
6
|
-
workflow: string;
|
|
7
|
-
accent: DemoAccent | string;
|
|
8
|
-
user: string;
|
|
9
|
-
agent: string;
|
|
10
|
-
traces: string[];
|
|
11
|
-
artifactKind: string;
|
|
12
|
-
artifactKindLabel?: string;
|
|
13
|
-
artifactTitle: string;
|
|
14
|
-
artifactBody: string;
|
|
15
|
-
approvalTitle: string;
|
|
16
|
-
approvalCopy: string;
|
|
17
|
-
usage: string;
|
|
18
|
-
steps: string;
|
|
19
|
-
};
|
|
20
|
-
type DemoSurfaceLabels = {
|
|
21
|
-
approvalLabel: string;
|
|
22
|
-
approveAction: string;
|
|
23
|
-
editAction: string;
|
|
24
|
-
liveDemoLabel: string;
|
|
25
|
-
};
|
|
26
|
-
declare function DemoSurface({ script, title, className, children, autoplay, labels, ...props }: React.ComponentProps<"div"> & {
|
|
27
|
-
script?: DemoSurfaceScript;
|
|
28
|
-
title?: string;
|
|
29
|
-
autoplay?: boolean;
|
|
30
|
-
labels?: Partial<DemoSurfaceLabels>;
|
|
31
|
-
}): React.JSX.Element;
|
|
32
|
-
export { DemoSurface };
|
|
33
|
-
export type { DemoSurfaceLabels, DemoSurfaceScript };
|
|
34
|
-
//# sourceMappingURL=demo-surface.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"demo-surface.d.ts","sourceRoot":"","sources":["../../src/components/demo-surface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,KAAK,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9D,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAeF,iBAAS,WAAW,CAAC,EACnB,MAAM,EACN,KAAe,EACf,SAAS,EACT,QAAQ,EACR,QAAe,EACf,MAAM,EACN,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrC,qBAmGA;AAED,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC"}
|