@agi-cli/web-sdk 0.1.61
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/README.md +187 -0
- package/dist/components/chat/ChatInput.d.ts +10 -0
- package/dist/components/chat/ChatInput.d.ts.map +1 -0
- package/dist/components/chat/ChatInput.js +53 -0
- package/dist/components/chat/ChatInput.js.map +1 -0
- package/dist/components/chat/ChatInputContainer.d.ts +9 -0
- package/dist/components/chat/ChatInputContainer.d.ts.map +1 -0
- package/dist/components/chat/ChatInputContainer.js +52 -0
- package/dist/components/chat/ChatInputContainer.js.map +1 -0
- package/dist/components/chat/ConfigModal.d.ts +13 -0
- package/dist/components/chat/ConfigModal.d.ts.map +1 -0
- package/dist/components/chat/ConfigModal.js +51 -0
- package/dist/components/chat/ConfigModal.js.map +1 -0
- package/dist/components/chat/ConfigSelector.d.ts +11 -0
- package/dist/components/chat/ConfigSelector.d.ts.map +1 -0
- package/dist/components/chat/ConfigSelector.js +47 -0
- package/dist/components/chat/ConfigSelector.js.map +1 -0
- package/dist/components/chat/StopButton.d.ts +8 -0
- package/dist/components/chat/StopButton.d.ts.map +1 -0
- package/dist/components/chat/StopButton.js +25 -0
- package/dist/components/chat/StopButton.js.map +1 -0
- package/dist/components/git/GitCommitModal.d.ts +2 -0
- package/dist/components/git/GitCommitModal.d.ts.map +1 -0
- package/dist/components/git/GitCommitModal.js +44 -0
- package/dist/components/git/GitCommitModal.js.map +1 -0
- package/dist/components/git/GitDiffPanel.d.ts +2 -0
- package/dist/components/git/GitDiffPanel.d.ts.map +1 -0
- package/dist/components/git/GitDiffPanel.js +69 -0
- package/dist/components/git/GitDiffPanel.js.map +1 -0
- package/dist/components/git/GitDiffViewer.d.ts +7 -0
- package/dist/components/git/GitDiffViewer.d.ts.map +1 -0
- package/dist/components/git/GitDiffViewer.js +136 -0
- package/dist/components/git/GitDiffViewer.js.map +1 -0
- package/dist/components/git/GitFileItem.d.ts +9 -0
- package/dist/components/git/GitFileItem.d.ts.map +1 -0
- package/dist/components/git/GitFileItem.js +90 -0
- package/dist/components/git/GitFileItem.js.map +1 -0
- package/dist/components/git/GitFileList.d.ts +7 -0
- package/dist/components/git/GitFileList.d.ts.map +1 -0
- package/dist/components/git/GitFileList.js +24 -0
- package/dist/components/git/GitFileList.js.map +1 -0
- package/dist/components/git/GitSidebar.d.ts +2 -0
- package/dist/components/git/GitSidebar.d.ts.map +1 -0
- package/dist/components/git/GitSidebar.js +38 -0
- package/dist/components/git/GitSidebar.js.map +1 -0
- package/dist/components/git/GitSidebarToggle.d.ts +2 -0
- package/dist/components/git/GitSidebarToggle.d.ts.map +1 -0
- package/dist/components/git/GitSidebarToggle.js +18 -0
- package/dist/components/git/GitSidebarToggle.js.map +1 -0
- package/dist/components/index.d.ts +28 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +34 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/messages/AssistantMessageGroup.d.ts +10 -0
- package/dist/components/messages/AssistantMessageGroup.d.ts.map +1 -0
- package/dist/components/messages/AssistantMessageGroup.js +85 -0
- package/dist/components/messages/AssistantMessageGroup.js.map +1 -0
- package/dist/components/messages/MessagePartItem.d.ts +11 -0
- package/dist/components/messages/MessagePartItem.d.ts.map +1 -0
- package/dist/components/messages/MessagePartItem.js +290 -0
- package/dist/components/messages/MessagePartItem.js.map +1 -0
- package/dist/components/messages/MessageThread.d.ts +9 -0
- package/dist/components/messages/MessageThread.d.ts.map +1 -0
- package/dist/components/messages/MessageThread.js +88 -0
- package/dist/components/messages/MessageThread.js.map +1 -0
- package/dist/components/messages/MessageThreadContainer.d.ts +6 -0
- package/dist/components/messages/MessageThreadContainer.d.ts.map +1 -0
- package/dist/components/messages/MessageThreadContainer.js +18 -0
- package/dist/components/messages/MessageThreadContainer.js.map +1 -0
- package/dist/components/messages/UserMessageGroup.d.ts +8 -0
- package/dist/components/messages/UserMessageGroup.d.ts.map +1 -0
- package/dist/components/messages/UserMessageGroup.js +43 -0
- package/dist/components/messages/UserMessageGroup.js.map +1 -0
- package/dist/components/messages/renderers/ApplyPatchRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/ApplyPatchRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ApplyPatchRenderer.js +36 -0
- package/dist/components/messages/renderers/ApplyPatchRenderer.js.map +1 -0
- package/dist/components/messages/renderers/BashRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/BashRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/BashRenderer.js +48 -0
- package/dist/components/messages/renderers/BashRenderer.js.map +1 -0
- package/dist/components/messages/renderers/DebugRenderer.d.ts +5 -0
- package/dist/components/messages/renderers/DebugRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/DebugRenderer.js +5 -0
- package/dist/components/messages/renderers/DebugRenderer.js.map +1 -0
- package/dist/components/messages/renderers/DiffView.d.ts +6 -0
- package/dist/components/messages/renderers/DiffView.d.ts.map +1 -0
- package/dist/components/messages/renderers/DiffView.js +186 -0
- package/dist/components/messages/renderers/DiffView.js.map +1 -0
- package/dist/components/messages/renderers/EditRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/EditRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/EditRenderer.js +15 -0
- package/dist/components/messages/renderers/EditRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ErrorRenderer.d.ts +8 -0
- package/dist/components/messages/renderers/ErrorRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ErrorRenderer.js +118 -0
- package/dist/components/messages/renderers/ErrorRenderer.js.map +1 -0
- package/dist/components/messages/renderers/FinishRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/FinishRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/FinishRenderer.js +7 -0
- package/dist/components/messages/renderers/FinishRenderer.js.map +1 -0
- package/dist/components/messages/renderers/GenericRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/GenericRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/GenericRenderer.js +42 -0
- package/dist/components/messages/renderers/GenericRenderer.js.map +1 -0
- package/dist/components/messages/renderers/GitCommitRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/GitCommitRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/GitCommitRenderer.js +18 -0
- package/dist/components/messages/renderers/GitCommitRenderer.js.map +1 -0
- package/dist/components/messages/renderers/GitDiffRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/GitDiffRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/GitDiffRenderer.js +25 -0
- package/dist/components/messages/renderers/GitDiffRenderer.js.map +1 -0
- package/dist/components/messages/renderers/GitStatusRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/GitStatusRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/GitStatusRenderer.js +56 -0
- package/dist/components/messages/renderers/GitStatusRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ListRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/ListRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ListRenderer.js +14 -0
- package/dist/components/messages/renderers/ListRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ProgressUpdateRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/ProgressUpdateRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ProgressUpdateRenderer.js +9 -0
- package/dist/components/messages/renderers/ProgressUpdateRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ReadRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/ReadRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ReadRenderer.js +59 -0
- package/dist/components/messages/renderers/ReadRenderer.js.map +1 -0
- package/dist/components/messages/renderers/SearchRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/SearchRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/SearchRenderer.js +62 -0
- package/dist/components/messages/renderers/SearchRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ToolErrorDisplay.d.ts +12 -0
- package/dist/components/messages/renderers/ToolErrorDisplay.d.ts.map +1 -0
- package/dist/components/messages/renderers/ToolErrorDisplay.js +10 -0
- package/dist/components/messages/renderers/ToolErrorDisplay.js.map +1 -0
- package/dist/components/messages/renderers/TreeRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/TreeRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/TreeRenderer.js +20 -0
- package/dist/components/messages/renderers/TreeRenderer.js.map +1 -0
- package/dist/components/messages/renderers/UpdatePlanRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/UpdatePlanRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/UpdatePlanRenderer.js +13 -0
- package/dist/components/messages/renderers/UpdatePlanRenderer.js.map +1 -0
- package/dist/components/messages/renderers/WebSearchRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/WebSearchRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/WebSearchRenderer.js +35 -0
- package/dist/components/messages/renderers/WebSearchRenderer.js.map +1 -0
- package/dist/components/messages/renderers/WriteRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/WriteRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/WriteRenderer.js +18 -0
- package/dist/components/messages/renderers/WriteRenderer.js.map +1 -0
- package/dist/components/messages/renderers/index.d.ts +10 -0
- package/dist/components/messages/renderers/index.d.ts.map +1 -0
- package/dist/components/messages/renderers/index.js +72 -0
- package/dist/components/messages/renderers/index.js.map +1 -0
- package/dist/components/messages/renderers/types.d.ts +77 -0
- package/dist/components/messages/renderers/types.d.ts.map +1 -0
- package/dist/components/messages/renderers/types.js +2 -0
- package/dist/components/messages/renderers/types.js.map +1 -0
- package/dist/components/messages/renderers/utils.d.ts +11 -0
- package/dist/components/messages/renderers/utils.d.ts.map +1 -0
- package/dist/components/messages/renderers/utils.js +18 -0
- package/dist/components/messages/renderers/utils.js.map +1 -0
- package/dist/components/sessions/LeanHeader.d.ts +9 -0
- package/dist/components/sessions/LeanHeader.d.ts.map +1 -0
- package/dist/components/sessions/LeanHeader.js +28 -0
- package/dist/components/sessions/LeanHeader.js.map +1 -0
- package/dist/components/sessions/SessionHeader.d.ts +7 -0
- package/dist/components/sessions/SessionHeader.d.ts.map +1 -0
- package/dist/components/sessions/SessionHeader.js +49 -0
- package/dist/components/sessions/SessionHeader.js.map +1 -0
- package/dist/components/sessions/SessionItem.d.ts +9 -0
- package/dist/components/sessions/SessionItem.d.ts.map +1 -0
- package/dist/components/sessions/SessionItem.js +27 -0
- package/dist/components/sessions/SessionItem.js.map +1 -0
- package/dist/components/sessions/SessionListContainer.d.ts +7 -0
- package/dist/components/sessions/SessionListContainer.d.ts.map +1 -0
- package/dist/components/sessions/SessionListContainer.js +32 -0
- package/dist/components/sessions/SessionListContainer.js.map +1 -0
- package/dist/components/ui/Button.d.ts +8 -0
- package/dist/components/ui/Button.d.ts.map +1 -0
- package/dist/components/ui/Button.js +19 -0
- package/dist/components/ui/Button.js.map +1 -0
- package/dist/components/ui/Card.d.ts +6 -0
- package/dist/components/ui/Card.d.ts.map +1 -0
- package/dist/components/ui/Card.js +7 -0
- package/dist/components/ui/Card.js.map +1 -0
- package/dist/components/ui/Input.d.ts +6 -0
- package/dist/components/ui/Input.d.ts.map +1 -0
- package/dist/components/ui/Input.js +7 -0
- package/dist/components/ui/Input.js.map +1 -0
- package/dist/components/ui/Textarea.d.ts +6 -0
- package/dist/components/ui/Textarea.d.ts.map +1 -0
- package/dist/components/ui/Textarea.js +7 -0
- package/dist/components/ui/Textarea.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useConfig.d.ts +18 -0
- package/dist/hooks/useConfig.d.ts.map +1 -0
- package/dist/hooks/useConfig.js +16 -0
- package/dist/hooks/useConfig.js.map +1 -0
- package/dist/hooks/useGit.d.ts +8 -0
- package/dist/hooks/useGit.d.ts.map +1 -0
- package/dist/hooks/useGit.js +71 -0
- package/dist/hooks/useGit.js.map +1 -0
- package/dist/hooks/useMessages.d.ts +4 -0
- package/dist/hooks/useMessages.d.ts.map +1 -0
- package/dist/hooks/useMessages.js +25 -0
- package/dist/hooks/useMessages.js.map +1 -0
- package/dist/hooks/useSessionStream.d.ts +2 -0
- package/dist/hooks/useSessionStream.d.ts.map +1 -0
- package/dist/hooks/useSessionStream.js +332 -0
- package/dist/hooks/useSessionStream.js.map +1 -0
- package/dist/hooks/useSessions.d.ts +4 -0
- package/dist/hooks/useSessions.d.ts.map +1 -0
- package/dist/hooks/useSessions.js +19 -0
- package/dist/hooks/useSessions.js.map +1 -0
- package/dist/hooks/useTheme.d.ts +8 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/hooks/useTheme.js +40 -0
- package/dist/hooks/useTheme.js.map +1 -0
- package/dist/hooks/useWorkingDirectory.d.ts +2 -0
- package/dist/hooks/useWorkingDirectory.d.ts.map +1 -0
- package/dist/hooks/useWorkingDirectory.js +34 -0
- package/dist/hooks/useWorkingDirectory.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +44 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +195 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/config.d.ts +5 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +22 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +5 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/sse-client.d.ts +13 -0
- package/dist/lib/sse-client.d.ts.map +1 -0
- package/dist/lib/sse-client.js +111 -0
- package/dist/lib/sse-client.js.map +1 -0
- package/dist/stores/gitStore.d.ts +20 -0
- package/dist/stores/gitStore.d.ts.map +1 -0
- package/dist/stores/gitStore.js +35 -0
- package/dist/stores/gitStore.js.map +1 -0
- package/dist/stores/index.d.ts +3 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/index.js +3 -0
- package/dist/stores/index.js.map +1 -0
- package/dist/stores/sidebarStore.d.ts +26 -0
- package/dist/stores/sidebarStore.d.ts.map +1 -0
- package/dist/stores/sidebarStore.js +16 -0
- package/dist/stores/sidebarStore.js.map +1 -0
- package/dist/types/api.d.ts +128 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +2 -0
- package/dist/types/api.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDown, ChevronRight, ExternalLink } from 'lucide-react';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { formatDuration } from './utils';
|
|
5
|
+
export function WebSearchRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, }) {
|
|
6
|
+
const result = contentJson.result || {};
|
|
7
|
+
const [expandedContent, setExpandedContent] = useState(new Set());
|
|
8
|
+
const toggleContent = (index) => {
|
|
9
|
+
setExpandedContent((prev) => {
|
|
10
|
+
const next = new Set(prev);
|
|
11
|
+
if (next.has(index)) {
|
|
12
|
+
next.delete(index);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
next.add(index);
|
|
16
|
+
}
|
|
17
|
+
return next;
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
// Check if it's a search query or URL fetch
|
|
21
|
+
const isSearch = 'results' in result;
|
|
22
|
+
const searchResults = result.results || [];
|
|
23
|
+
const webContent = result;
|
|
24
|
+
if (isSearch) {
|
|
25
|
+
const timeStr = formatDuration(toolDurationMs);
|
|
26
|
+
return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: onToggle, className: "flex items-center gap-2 text-purple-700 dark:text-purple-300 transition-colors hover:text-purple-600 dark:hover:text-purple-200", children: [isExpanded ? (_jsx(ChevronDown, { className: "h-3 w-3" })) : (_jsx(ChevronRight, { className: "h-3 w-3" })), _jsx("span", { className: "font-medium", children: "web search" }), _jsx("span", { className: "text-muted-foreground/70", children: "\u00B7" }), _jsxs("span", { className: "text-foreground/70", children: [searchResults.length, ' ', searchResults.length === 1 ? 'result' : 'results'] }), _jsxs("span", { className: "text-muted-foreground/80", children: ["\u00B7 ", timeStr] })] }), isExpanded && (_jsx("div", { className: "mt-2 ml-5 space-y-2 max-h-96 overflow-y-auto", children: searchResults.map((item, i) => (_jsxs("div", { className: "bg-card/60 border border-border rounded-lg p-3 space-y-1", children: [_jsxs("a", { href: item.url, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium", children: [item.title, _jsx(ExternalLink, { className: "h-3 w-3" })] }), _jsx("p", { className: "text-muted-foreground text-xs", children: item.snippet }), _jsx("p", { className: "text-xs text-muted-foreground/70 truncate", children: item.url })] }, `${item.url}-${i}`))) }))] }));
|
|
27
|
+
}
|
|
28
|
+
// URL fetch rendering
|
|
29
|
+
const timeStr = formatDuration(toolDurationMs);
|
|
30
|
+
const displayUrl = webContent.url && webContent.url.length > 60
|
|
31
|
+
? `${webContent.url.slice(0, 60)}...`
|
|
32
|
+
: webContent.url;
|
|
33
|
+
return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: () => toggleContent(0), className: "flex items-center gap-2 text-purple-700 dark:text-purple-300 transition-colors hover:text-purple-600 dark:hover:text-purple-200 w-full text-left", children: [expandedContent.has(0) ? (_jsx(ChevronDown, { className: "h-3 w-3 flex-shrink-0" })) : (_jsx(ChevronRight, { className: "h-3 w-3 flex-shrink-0" })), _jsx("span", { className: "font-medium flex-shrink-0", children: "web fetch" }), _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" }), _jsx("a", { href: webContent.url, target: "_blank", rel: "noopener noreferrer", className: "text-blue-600 dark:text-blue-400 hover:underline truncate flex-1 min-w-0", onClick: (e) => e.stopPropagation(), children: displayUrl }), _jsxs("span", { className: "text-muted-foreground/80 flex-shrink-0", children: ["\u00B7 ", timeStr] })] }), expandedContent.has(0) && webContent.content && (_jsx("div", { className: "mt-2 ml-5 bg-card/60 border border-border rounded-lg p-3 max-h-96 overflow-y-auto", children: _jsx("div", { className: "text-xs text-foreground/80 whitespace-pre-wrap break-words", children: webContent.content }) }))] }));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=WebSearchRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSearchRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/WebSearchRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WriteRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/WriteRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,wBAAgB,aAAa,CAAC,EAC7B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CA0Cf"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronRight } from 'lucide-react';
|
|
3
|
+
import { DiffView } from './DiffView';
|
|
4
|
+
import { formatDuration } from './utils';
|
|
5
|
+
export function WriteRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, }) {
|
|
6
|
+
const result = contentJson.result || {};
|
|
7
|
+
const artifact = contentJson.artifact;
|
|
8
|
+
const path = String(result.path || '');
|
|
9
|
+
const bytes = Number(result.bytes || 0);
|
|
10
|
+
const patch = artifact?.patch ? String(artifact.patch) : '';
|
|
11
|
+
const timeStr = formatDuration(toolDurationMs);
|
|
12
|
+
return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: onToggle, className: "flex items-center gap-2 text-emerald-700 dark:text-emerald-300 transition-colors hover:text-emerald-600 dark:hover:text-emerald-200 min-w-0 w-full", children: [_jsx(ChevronRight, { className: `h-3 w-3 flex-shrink-0 transition-transform ${isExpanded ? 'rotate-90' : ''}` }), _jsx("span", { className: "font-medium flex-shrink-0", children: "write" }), _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" }), _jsx("span", { className: "text-foreground/70 min-w-0 flex-shrink overflow-hidden", style: {
|
|
13
|
+
direction: 'rtl',
|
|
14
|
+
textAlign: 'left',
|
|
15
|
+
unicodeBidi: 'plaintext',
|
|
16
|
+
}, title: path, children: path }), _jsxs("span", { className: "text-muted-foreground/80 whitespace-nowrap flex-shrink-0", children: ["\u00B7 ", bytes, " bytes \u00B7 ", timeStr] })] }), isExpanded && patch && (_jsx("div", { className: "mt-2 ml-5", children: _jsx(DiffView, { patch: patch }) }))] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=WriteRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WriteRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/WriteRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,UAAU,aAAa,CAAC,EAC7B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACO;IACf,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAE/C,OAAO,CACN,eAAK,SAAS,EAAC,SAAS,aACvB,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,oJAAoJ,aAE9J,KAAC,YAAY,IACZ,SAAS,EAAE,8CAA8C,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,GACvF,EACF,eAAM,SAAS,EAAC,2BAA2B,sBAAa,EACxD,eAAM,SAAS,EAAC,wCAAwC,uBAAS,EACjE,eACC,SAAS,EAAC,wDAAwD,EAClE,KAAK,EAAE;4BACN,SAAS,EAAE,KAAK;4BAChB,SAAS,EAAE,MAAM;4BACjB,WAAW,EAAE,WAAW;yBACxB,EACD,KAAK,EAAE,IAAI,YAEV,IAAI,GACC,EACP,gBAAM,SAAS,EAAC,0DAA0D,wBACtE,KAAK,oBAAW,OAAO,IACpB,IACC,EACR,UAAU,IAAI,KAAK,IAAI,CACvB,cAAK,SAAS,EAAC,WAAW,YACzB,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI,GACrB,CACN,IACI,CACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ContentJson } from './types';
|
|
2
|
+
interface ToolResultRendererProps {
|
|
3
|
+
toolName: string;
|
|
4
|
+
contentJson: ContentJson;
|
|
5
|
+
toolDurationMs?: number | null;
|
|
6
|
+
debug?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function ToolResultRenderer({ toolName, contentJson, toolDurationMs, debug, }: ToolResultRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export * from './types';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAoB3C,UAAU,uBAAuB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAAC,EAClC,QAAQ,EACR,WAAW,EACX,cAAc,EACd,KAAK,GACL,EAAE,uBAAuB,2CAoDzB;AAED,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { ReadRenderer } from './ReadRenderer';
|
|
4
|
+
import { WriteRenderer } from './WriteRenderer';
|
|
5
|
+
import { EditRenderer } from './EditRenderer';
|
|
6
|
+
import { BashRenderer } from './BashRenderer';
|
|
7
|
+
import { GitStatusRenderer } from './GitStatusRenderer';
|
|
8
|
+
import { GitDiffRenderer } from './GitDiffRenderer';
|
|
9
|
+
import { GitCommitRenderer } from './GitCommitRenderer';
|
|
10
|
+
import { ApplyPatchRenderer } from './ApplyPatchRenderer';
|
|
11
|
+
import { ListRenderer } from './ListRenderer';
|
|
12
|
+
import { TreeRenderer } from './TreeRenderer';
|
|
13
|
+
import { SearchRenderer } from './SearchRenderer';
|
|
14
|
+
import { FinishRenderer } from './FinishRenderer';
|
|
15
|
+
import { GenericRenderer } from './GenericRenderer';
|
|
16
|
+
import { DebugRenderer } from './DebugRenderer';
|
|
17
|
+
import { UpdatePlanRenderer } from './UpdatePlanRenderer';
|
|
18
|
+
import { ProgressUpdateRenderer } from './ProgressUpdateRenderer';
|
|
19
|
+
import { WebSearchRenderer } from './WebSearchRenderer';
|
|
20
|
+
import { ErrorRenderer } from './ErrorRenderer';
|
|
21
|
+
export function ToolResultRenderer({ toolName, contentJson, toolDurationMs, debug, }) {
|
|
22
|
+
const [isExpanded, setIsExpanded] = useState(false);
|
|
23
|
+
const props = {
|
|
24
|
+
contentJson,
|
|
25
|
+
toolDurationMs: toolDurationMs ?? undefined,
|
|
26
|
+
isExpanded,
|
|
27
|
+
onToggle: () => setIsExpanded(!isExpanded),
|
|
28
|
+
};
|
|
29
|
+
if (debug) {
|
|
30
|
+
return _jsx(DebugRenderer, { ...props, toolName: toolName });
|
|
31
|
+
}
|
|
32
|
+
switch (toolName) {
|
|
33
|
+
case 'read':
|
|
34
|
+
return _jsx(ReadRenderer, { ...props });
|
|
35
|
+
case 'write':
|
|
36
|
+
return _jsx(WriteRenderer, { ...props });
|
|
37
|
+
case 'edit':
|
|
38
|
+
return _jsx(EditRenderer, { ...props });
|
|
39
|
+
case 'bash':
|
|
40
|
+
return _jsx(BashRenderer, { ...props });
|
|
41
|
+
case 'git_status':
|
|
42
|
+
return _jsx(GitStatusRenderer, { ...props });
|
|
43
|
+
case 'git_diff':
|
|
44
|
+
return _jsx(GitDiffRenderer, { ...props });
|
|
45
|
+
case 'git_commit':
|
|
46
|
+
return _jsx(GitCommitRenderer, { ...props });
|
|
47
|
+
case 'apply_patch':
|
|
48
|
+
return _jsx(ApplyPatchRenderer, { ...props });
|
|
49
|
+
case 'ls':
|
|
50
|
+
return _jsx(ListRenderer, { ...props });
|
|
51
|
+
case 'tree':
|
|
52
|
+
return _jsx(TreeRenderer, { ...props });
|
|
53
|
+
case 'ripgrep':
|
|
54
|
+
case 'grep':
|
|
55
|
+
case 'glob':
|
|
56
|
+
return _jsx(SearchRenderer, { ...props });
|
|
57
|
+
case 'websearch':
|
|
58
|
+
return _jsx(WebSearchRenderer, { ...props });
|
|
59
|
+
case 'finish':
|
|
60
|
+
return _jsx(FinishRenderer, { ...props });
|
|
61
|
+
case 'update_plan':
|
|
62
|
+
return _jsx(UpdatePlanRenderer, { ...props });
|
|
63
|
+
case 'progress_update':
|
|
64
|
+
return _jsx(ProgressUpdateRenderer, { ...props });
|
|
65
|
+
case 'error':
|
|
66
|
+
return _jsx(ErrorRenderer, { ...props });
|
|
67
|
+
default:
|
|
68
|
+
return _jsx(GenericRenderer, { ...props, toolName: toolName });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export * from './types';
|
|
72
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export interface ToolCallArgs {
|
|
2
|
+
text?: string;
|
|
3
|
+
message?: string;
|
|
4
|
+
amend?: boolean;
|
|
5
|
+
signoff?: boolean;
|
|
6
|
+
pct?: number;
|
|
7
|
+
stage?: string;
|
|
8
|
+
all?: boolean;
|
|
9
|
+
cmd?: string;
|
|
10
|
+
cwd?: string;
|
|
11
|
+
command?: string;
|
|
12
|
+
script?: string;
|
|
13
|
+
input?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ToolResultData {
|
|
16
|
+
done?: boolean;
|
|
17
|
+
text?: string;
|
|
18
|
+
result?: string | Record<string, unknown>;
|
|
19
|
+
ok?: boolean;
|
|
20
|
+
message?: string;
|
|
21
|
+
pct?: number;
|
|
22
|
+
stage?: string;
|
|
23
|
+
all?: boolean;
|
|
24
|
+
patch?: string;
|
|
25
|
+
staged?: number;
|
|
26
|
+
unstaged?: number;
|
|
27
|
+
raw?: string[];
|
|
28
|
+
path?: string;
|
|
29
|
+
content?: string;
|
|
30
|
+
bytes?: number;
|
|
31
|
+
opsApplied?: number;
|
|
32
|
+
stdout?: string;
|
|
33
|
+
stderr?: string;
|
|
34
|
+
exitCode?: number;
|
|
35
|
+
entries?: Array<{
|
|
36
|
+
name: string;
|
|
37
|
+
type: string;
|
|
38
|
+
}>;
|
|
39
|
+
tree?: string;
|
|
40
|
+
matches?: unknown[];
|
|
41
|
+
files?: unknown[];
|
|
42
|
+
cwd?: string;
|
|
43
|
+
output?: string;
|
|
44
|
+
diff?: string;
|
|
45
|
+
summary?: string;
|
|
46
|
+
results?: unknown[];
|
|
47
|
+
}
|
|
48
|
+
export interface ContentJson {
|
|
49
|
+
text?: string;
|
|
50
|
+
name?: string;
|
|
51
|
+
args?: ToolCallArgs;
|
|
52
|
+
callId?: string;
|
|
53
|
+
result?: ToolResultData;
|
|
54
|
+
artifact?: {
|
|
55
|
+
patch?: string;
|
|
56
|
+
summary?: {
|
|
57
|
+
files?: number;
|
|
58
|
+
additions?: number;
|
|
59
|
+
deletions?: number;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
error?: Record<string, unknown>;
|
|
63
|
+
details?: Record<string, unknown>;
|
|
64
|
+
message?: string;
|
|
65
|
+
type?: string;
|
|
66
|
+
isAborted?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface RendererProps {
|
|
69
|
+
contentJson: ContentJson;
|
|
70
|
+
toolDurationMs?: number;
|
|
71
|
+
isExpanded: boolean;
|
|
72
|
+
onToggle: () => void;
|
|
73
|
+
}
|
|
74
|
+
export interface GenericRendererProps extends RendererProps {
|
|
75
|
+
toolName: string;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format a duration in milliseconds to a human-readable string.
|
|
3
|
+
* Shows seconds (with 1 decimal) if >= 1000ms, otherwise shows ms.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* formatDuration(450) // "450ms"
|
|
7
|
+
* formatDuration(1234) // "1.2s"
|
|
8
|
+
* formatDuration(5678) // "5.7s"
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatDuration(ms: number | undefined): string;
|
|
11
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM7D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format a duration in milliseconds to a human-readable string.
|
|
3
|
+
* Shows seconds (with 1 decimal) if >= 1000ms, otherwise shows ms.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* formatDuration(450) // "450ms"
|
|
7
|
+
* formatDuration(1234) // "1.2s"
|
|
8
|
+
* formatDuration(5678) // "5.7s"
|
|
9
|
+
*/
|
|
10
|
+
export function formatDuration(ms) {
|
|
11
|
+
if (!ms)
|
|
12
|
+
return '';
|
|
13
|
+
if (ms >= 1000) {
|
|
14
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
15
|
+
}
|
|
16
|
+
return `${ms}ms`;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,EAAsB;IACpD,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,EAAE,IAAI,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Session } from '../../types/api';
|
|
2
|
+
interface LeanHeaderProps {
|
|
3
|
+
session: Session;
|
|
4
|
+
isVisible: boolean;
|
|
5
|
+
isGenerating?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function LeanHeader({ session, isVisible, isGenerating, }: LeanHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=LeanHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeanHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/LeanHeader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/C,UAAU,eAAe;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,YAAY,GACZ,EAAE,eAAe,2CA8DjB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { Hash, DollarSign } from 'lucide-react';
|
|
4
|
+
import { StopButton } from '../chat/StopButton';
|
|
5
|
+
export function LeanHeader({ session, isVisible, isGenerating, }) {
|
|
6
|
+
// Calculate total tokens
|
|
7
|
+
const totalTokens = useMemo(() => {
|
|
8
|
+
const input = session.totalInputTokens || 0;
|
|
9
|
+
const output = session.totalOutputTokens || 0;
|
|
10
|
+
return input + output;
|
|
11
|
+
}, [session.totalInputTokens, session.totalOutputTokens]);
|
|
12
|
+
// Calculate estimated cost
|
|
13
|
+
const estimatedCost = useMemo(() => {
|
|
14
|
+
const input = session.totalInputTokens || 0;
|
|
15
|
+
const output = session.totalOutputTokens || 0;
|
|
16
|
+
const inputCostPer1M = 30;
|
|
17
|
+
const outputCostPer1M = 60;
|
|
18
|
+
const inputCost = (input / 1_000_000) * inputCostPer1M;
|
|
19
|
+
const outputCost = (output / 1_000_000) * outputCostPer1M;
|
|
20
|
+
return inputCost + outputCost;
|
|
21
|
+
}, [session.totalInputTokens, session.totalOutputTokens]);
|
|
22
|
+
// Format number with commas
|
|
23
|
+
const formatNumber = (num) => {
|
|
24
|
+
return num.toLocaleString('en-US');
|
|
25
|
+
};
|
|
26
|
+
return (_jsx("div", { className: `absolute top-0 left-0 right-0 h-14 border-b border-border bg-background/95 backdrop-blur-sm z-30 transition-transform duration-200 ${isVisible ? 'translate-y-0' : '-translate-y-full'}`, children: _jsxs("div", { className: "h-full px-6 flex items-center justify-between gap-6 text-sm", children: [_jsx("div", { className: "flex-shrink-0", children: isGenerating && _jsx(StopButton, { sessionId: session.id }) }), _jsxs("div", { className: "flex items-center gap-6", children: [_jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(Hash, { className: "w-4 h-4" }), _jsx("span", { className: "text-foreground font-medium", children: formatNumber(totalTokens) })] }), estimatedCost > 0 && (_jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(DollarSign, { className: "w-4 h-4" }), _jsxs("span", { className: "text-foreground font-medium", children: ["$", estimatedCost.toFixed(4)] })] }))] })] }) }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=LeanHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeanHeader.js","sourceRoot":"","sources":["../../../src/components/sessions/LeanHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQhD,MAAM,UAAU,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,YAAY,GACK;IACjB,yBAAyB;IACzB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC9C,OAAO,KAAK,GAAG,MAAM,CAAC;IACvB,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE1D,2BAA2B;IAC3B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,eAAe,GAAG,EAAE,CAAC;QAE3B,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,cAAc,CAAC;QACvD,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,eAAe,CAAC;QAE1D,OAAO,SAAS,GAAG,UAAU,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE1D,4BAA4B;IAC5B,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE;QACpC,OAAO,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,OAAO,CACN,cACC,SAAS,EAAE,sIACV,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAC/B,EAAE,YAEF,eAAK,SAAS,EAAC,6DAA6D,aAE3E,cAAK,SAAS,EAAC,eAAe,YAC5B,YAAY,IAAI,KAAC,UAAU,IAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAI,GACjD,EAGN,eAAK,SAAS,EAAC,yBAAyB,aAEvC,eAAK,SAAS,EAAC,+CAA+C,aAC7D,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,EAC5B,eAAM,SAAS,EAAC,6BAA6B,YAC3C,YAAY,CAAC,WAAW,CAAC,GACpB,IACF,EAGL,aAAa,GAAG,CAAC,IAAI,CACrB,eAAK,SAAS,EAAC,+CAA+C,aAC7D,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,GAAG,EAClC,gBAAM,SAAS,EAAC,6BAA6B,kBAC1C,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IACpB,IACF,CACN,IACI,IACD,GACD,CACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Session } from '../../types/api';
|
|
2
|
+
interface SessionHeaderProps {
|
|
3
|
+
session: Session;
|
|
4
|
+
}
|
|
5
|
+
export declare function SessionHeader({ session }: SessionHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=SessionHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/SessionHeader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C,UAAU,kBAAkB;IAC3B,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,2CA8H5D"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { Clock, DollarSign, Hash } from 'lucide-react';
|
|
4
|
+
export function SessionHeader({ session }) {
|
|
5
|
+
// Calculate total tokens
|
|
6
|
+
const totalTokens = useMemo(() => {
|
|
7
|
+
const input = session.totalInputTokens || 0;
|
|
8
|
+
const output = session.totalOutputTokens || 0;
|
|
9
|
+
return input + output;
|
|
10
|
+
}, [session.totalInputTokens, session.totalOutputTokens]);
|
|
11
|
+
// Calculate estimated cost (example rates for GPT-4)
|
|
12
|
+
// These should be adjusted based on the actual model
|
|
13
|
+
const estimatedCost = useMemo(() => {
|
|
14
|
+
const input = session.totalInputTokens || 0;
|
|
15
|
+
const output = session.totalOutputTokens || 0;
|
|
16
|
+
// Example rates (per 1M tokens):
|
|
17
|
+
// GPT-4: $30 input, $60 output
|
|
18
|
+
// GPT-3.5: $0.50 input, $1.50 output
|
|
19
|
+
// These are approximate and should be updated based on actual model
|
|
20
|
+
const inputCostPer1M = 30;
|
|
21
|
+
const outputCostPer1M = 60;
|
|
22
|
+
const inputCost = (input / 1_000_000) * inputCostPer1M;
|
|
23
|
+
const outputCost = (output / 1_000_000) * outputCostPer1M;
|
|
24
|
+
return inputCost + outputCost;
|
|
25
|
+
}, [session.totalInputTokens, session.totalOutputTokens]);
|
|
26
|
+
// Format time duration
|
|
27
|
+
const formatDuration = (ms) => {
|
|
28
|
+
if (!ms)
|
|
29
|
+
return '0s';
|
|
30
|
+
const seconds = Math.floor(ms / 1000);
|
|
31
|
+
const minutes = Math.floor(seconds / 60);
|
|
32
|
+
const hours = Math.floor(minutes / 60);
|
|
33
|
+
if (hours > 0) {
|
|
34
|
+
const remainingMinutes = minutes % 60;
|
|
35
|
+
return `${hours}h ${remainingMinutes}m`;
|
|
36
|
+
}
|
|
37
|
+
if (minutes > 0) {
|
|
38
|
+
const remainingSeconds = seconds % 60;
|
|
39
|
+
return `${minutes}m ${remainingSeconds}s`;
|
|
40
|
+
}
|
|
41
|
+
return `${seconds}s`;
|
|
42
|
+
};
|
|
43
|
+
// Format number with commas
|
|
44
|
+
const formatNumber = (num) => {
|
|
45
|
+
return num.toLocaleString('en-US');
|
|
46
|
+
};
|
|
47
|
+
return (_jsx("div", { className: "border-b border-border bg-background/95 backdrop-blur-sm", children: _jsxs("div", { className: "max-w-3xl mx-auto px-6 py-6", children: [_jsx("h1", { className: "text-2xl font-semibold text-foreground mb-4", children: session.title || 'Untitled Session' }), _jsxs("div", { className: "flex flex-wrap gap-6 text-sm", children: [_jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(Hash, { className: "w-4 h-4" }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs uppercase tracking-wide opacity-70", children: "Total Tokens" }), _jsx("span", { className: "text-foreground font-medium", children: formatNumber(totalTokens) }), (session.totalInputTokens || session.totalOutputTokens) && (_jsxs("span", { className: "text-xs opacity-60", children: [formatNumber(session.totalInputTokens || 0), " in /", ' ', formatNumber(session.totalOutputTokens || 0), " out"] }))] })] }), _jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(Clock, { className: "w-4 h-4" }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs uppercase tracking-wide opacity-70", children: "Tool Time" }), _jsx("span", { className: "text-foreground font-medium", children: formatDuration(session.totalToolTimeMs) })] })] }), estimatedCost > 0 && (_jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(DollarSign, { className: "w-4 h-4" }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs uppercase tracking-wide opacity-70", children: "Est. Cost" }), _jsxs("span", { className: "text-foreground font-medium", children: ["$", estimatedCost.toFixed(4)] })] })] })), _jsx("div", { className: "flex items-center gap-2 text-muted-foreground ml-auto", children: _jsxs("div", { className: "flex flex-col items-end", children: [_jsx("span", { className: "text-xs uppercase tracking-wide opacity-70", children: "Model" }), _jsx("span", { className: "text-foreground font-medium", children: session.model }), _jsxs("span", { className: "text-xs opacity-60", children: [session.provider, " \u00B7 ", session.agent] })] }) })] })] }) }));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=SessionHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionHeader.js","sourceRoot":"","sources":["../../../src/components/sessions/SessionHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Session } from '../../types/api';
|
|
2
|
+
interface SessionItemProps {
|
|
3
|
+
session: Session;
|
|
4
|
+
isActive: boolean;
|
|
5
|
+
onClick: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const SessionItem: import("react").NamedExoticComponent<SessionItemProps>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=SessionItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionItem.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/SessionItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,UAAU,gBAAgB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,wDAoDtB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from 'react';
|
|
3
|
+
import { MessageSquare } from 'lucide-react';
|
|
4
|
+
export const SessionItem = memo(function SessionItem({ session, isActive, onClick, }) {
|
|
5
|
+
const formatDate = (timestamp) => {
|
|
6
|
+
const date = new Date(timestamp);
|
|
7
|
+
const now = new Date();
|
|
8
|
+
const diffMs = now.getTime() - date.getTime();
|
|
9
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
10
|
+
const diffHours = Math.floor(diffMins / 60);
|
|
11
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
12
|
+
if (diffMins < 1)
|
|
13
|
+
return 'just now';
|
|
14
|
+
if (diffMins < 60)
|
|
15
|
+
return `${diffMins}m ago`;
|
|
16
|
+
if (diffHours < 24)
|
|
17
|
+
return `${diffHours}h ago`;
|
|
18
|
+
if (diffDays < 7)
|
|
19
|
+
return `${diffDays}d ago`;
|
|
20
|
+
return date.toLocaleDateString();
|
|
21
|
+
};
|
|
22
|
+
const baseStyles = 'group w-full rounded-lg px-3 py-3 text-left transition-colors duration-150';
|
|
23
|
+
const activeStyles = 'bg-primary/10';
|
|
24
|
+
const inactiveStyles = 'hover:bg-muted/20';
|
|
25
|
+
return (_jsx("button", { type: "button", onClick: onClick, className: `${baseStyles} ${isActive ? activeStyles : inactiveStyles}`, children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsx(MessageSquare, { className: `h-4 w-4 shrink-0 mt-1 text-muted-foreground ${isActive ? 'text-primary' : ''}` }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "flex items-center gap-2", children: _jsx("h3", { className: "truncate text-sm font-semibold text-foreground", children: session.title || `Session ${session.id.slice(0, 8)}` }) }), _jsxs("div", { className: "mt-1 flex items-center gap-2 text-xs text-muted-foreground/80", children: [session.agent && (_jsx("span", { className: "uppercase", children: session.agent })), session.agent && _jsx("span", { children: "\u2022" }), _jsx("span", { children: formatDate(session.lastActiveAt || session.createdAt) })] })] })] }) }));
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=SessionItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionItem.js","sourceRoot":"","sources":["../../../src/components/sessions/SessionItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAS7C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,WAAW,CAAC,EACpD,OAAO,EACP,QAAQ,EACR,OAAO,GACW;IAClB,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QAE5C,IAAI,QAAQ,GAAG,CAAC;YAAE,OAAO,UAAU,CAAC;QACpC,IAAI,QAAQ,GAAG,EAAE;YAAE,OAAO,GAAG,QAAQ,OAAO,CAAC;QAC7C,IAAI,SAAS,GAAG,EAAE;YAAE,OAAO,GAAG,SAAS,OAAO,CAAC;QAC/C,IAAI,QAAQ,GAAG,CAAC;YAAE,OAAO,GAAG,QAAQ,OAAO,CAAC;QAC5C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,UAAU,GACf,4EAA4E,CAAC;IAC9E,MAAM,YAAY,GAAG,eAAe,CAAC;IACrC,MAAM,cAAc,GAAG,mBAAmB,CAAC;IAE3C,OAAO,CACN,iBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,GAAG,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,EAAE,YAEtE,eAAK,SAAS,EAAC,wBAAwB,aACtC,KAAC,aAAa,IACb,SAAS,EAAE,+CAA+C,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,GACzF,EACF,eAAK,SAAS,EAAC,gBAAgB,aAC9B,cAAK,SAAS,EAAC,yBAAyB,YACvC,aAAI,SAAS,EAAC,gDAAgD,YAC5D,OAAO,CAAC,KAAK,IAAI,WAAW,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GACjD,GACA,EACN,eAAK,SAAS,EAAC,+DAA+D,aAC5E,OAAO,CAAC,KAAK,IAAI,CACjB,eAAM,SAAS,EAAC,WAAW,YAAE,OAAO,CAAC,KAAK,GAAQ,CAClD,EACA,OAAO,CAAC,KAAK,IAAI,oCAAc,EAChC,yBAAO,UAAU,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,GAAQ,IAC/D,IACD,IACD,GACE,CACT,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface SessionListContainerProps {
|
|
2
|
+
activeSessionId?: string;
|
|
3
|
+
onSelectSession: (sessionId: string) => void;
|
|
4
|
+
}
|
|
5
|
+
export declare const SessionListContainer: import("react").NamedExoticComponent<SessionListContainerProps>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=SessionListContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionListContainer.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/SessionListContainer.tsx"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,eAAO,MAAM,oBAAoB,iEAwD/B,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useMemo, useCallback } from 'react';
|
|
3
|
+
import { useSessions } from '../../hooks/useSessions';
|
|
4
|
+
import { SessionItem } from './SessionItem';
|
|
5
|
+
export const SessionListContainer = memo(function SessionListContainer({ activeSessionId, onSelectSession, }) {
|
|
6
|
+
const { data: sessions = [], isLoading } = useSessions();
|
|
7
|
+
const handleSessionClick = useCallback((sessionId) => {
|
|
8
|
+
onSelectSession(sessionId);
|
|
9
|
+
}, [onSelectSession]);
|
|
10
|
+
// Create a stable reference that only changes when session count, titles, or agents change
|
|
11
|
+
const sessionSnapshot = useMemo(() => {
|
|
12
|
+
return sessions.map((s) => ({
|
|
13
|
+
id: s.id,
|
|
14
|
+
title: s.title,
|
|
15
|
+
agent: s.agent,
|
|
16
|
+
createdAt: s.createdAt,
|
|
17
|
+
}));
|
|
18
|
+
}, [sessions]);
|
|
19
|
+
if (isLoading) {
|
|
20
|
+
return (_jsx("div", { className: "px-4 py-8 text-center text-sm text-muted-foreground/80", children: "Loading sessions..." }));
|
|
21
|
+
}
|
|
22
|
+
if (sessionSnapshot.length === 0) {
|
|
23
|
+
return (_jsx("div", { className: "px-4 py-8 text-center text-sm text-muted-foreground/80", children: "No sessions yet. Create one to get started." }));
|
|
24
|
+
}
|
|
25
|
+
return (_jsx("div", { className: "flex flex-col gap-1 px-2 py-2 overflow-y-auto scrollbar-hide", children: sessionSnapshot.map((session) => {
|
|
26
|
+
const fullSession = sessions.find((s) => s.id === session.id);
|
|
27
|
+
if (!fullSession)
|
|
28
|
+
return null;
|
|
29
|
+
return (_jsx(SessionItem, { session: fullSession, isActive: session.id === activeSessionId, onClick: () => handleSessionClick(session.id) }, session.id));
|
|
30
|
+
}) }));
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=SessionListContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionListContainer.js","sourceRoot":"","sources":["../../../src/components/sessions/SessionListContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,oBAAoB,CAAC,EACtE,eAAe,EACf,eAAe,GACY;IAC3B,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzD,MAAM,kBAAkB,GAAG,WAAW,CACrC,CAAC,SAAiB,EAAE,EAAE;QACrB,eAAe,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC,EACD,CAAC,eAAe,CAAC,CACjB,CAAC;IAEF,2FAA2F;IAC3F,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,CAAC,CAAC,SAAS;SACtB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,CACN,cAAK,SAAS,EAAC,wDAAwD,oCAEjE,CACN,CAAC;IACH,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,CACN,cAAK,SAAS,EAAC,wDAAwD,4DAEjE,CACN,CAAC;IACH,CAAC;IAED,OAAO,CACN,cAAK,SAAS,EAAC,8DAA8D,YAC3E,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC;YAE9B,OAAO,CACN,KAAC,WAAW,IAEX,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,eAAe,EACxC,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,IAHxC,OAAO,CAAC,EAAE,CAId,CACF,CAAC;QACH,CAAC,CAAC,GACG,CACN,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes } from 'react';
|
|
2
|
+
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
3
|
+
variant?: 'primary' | 'secondary' | 'ghost';
|
|
4
|
+
size?: 'sm' | 'md' | 'lg' | 'icon';
|
|
5
|
+
}
|
|
6
|
+
export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAElD,UAAU,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IACpE,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;CACnC;AAED,eAAO,MAAM,MAAM,2GA2BlB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
export const Button = forwardRef(({ className = '', variant = 'primary', size = 'md', ...props }, ref) => {
|
|
4
|
+
const baseStyles = 'inline-flex items-center justify-center rounded font-medium transition-colors focus-visible:outline-none disabled:opacity-50 disabled:cursor-not-allowed';
|
|
5
|
+
const variants = {
|
|
6
|
+
primary: 'bg-primary text-primary-foreground hover:bg-primary/90',
|
|
7
|
+
secondary: 'bg-muted text-foreground hover:bg-muted/80 border border-border',
|
|
8
|
+
ghost: 'text-muted-foreground hover:text-foreground hover:bg-muted/50',
|
|
9
|
+
};
|
|
10
|
+
const sizes = {
|
|
11
|
+
sm: 'px-3 py-1.5 text-sm',
|
|
12
|
+
md: 'px-4 py-2 text-sm',
|
|
13
|
+
lg: 'px-6 py-3 text-base',
|
|
14
|
+
icon: 'w-10 h-10 p-0',
|
|
15
|
+
};
|
|
16
|
+
return (_jsx("button", { ref: ref, className: `${baseStyles} ${variants[variant]} ${sizes[size]} ${className}`, ...props }));
|
|
17
|
+
});
|
|
18
|
+
Button.displayName = 'Button';
|
|
19
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/components/ui/Button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAQnC,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAC/B,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACvE,MAAM,UAAU,GACf,0JAA0J,CAAC;IAE5J,MAAM,QAAQ,GAAG;QAChB,OAAO,EAAE,wDAAwD;QACjE,SAAS,EACR,iEAAiE;QAClE,KAAK,EAAE,+DAA+D;KACtE,CAAC;IAEF,MAAM,KAAK,GAAG;QACb,EAAE,EAAE,qBAAqB;QACzB,EAAE,EAAE,mBAAmB;QACvB,EAAE,EAAE,qBAAqB;QACzB,IAAI,EAAE,eAAe;KACrB,CAAC;IAEF,OAAO,CACN,iBACC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,GAAG,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,KACvE,KAAK,GACR,CACF,CAAC;AACH,CAAC,CACD,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
interface CardProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
}
|
|
4
|
+
export declare const Card: import("react").ForwardRefExoticComponent<CardProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=Card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,UAAU,SAAU,SAAQ,cAAc,CAAC,cAAc,CAAC;CAAG;AAE7D,eAAO,MAAM,IAAI,sGAYhB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
export const Card = forwardRef(({ className = '', children, ...props }, ref) => {
|
|
4
|
+
return (_jsx("div", { ref: ref, className: `bg-card text-card-foreground border border-border rounded-lg ${className}`, ...props, children: children }));
|
|
5
|
+
});
|
|
6
|
+
Card.displayName = 'Card';
|
|
7
|
+
//# sourceMappingURL=Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/components/ui/Card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAKnC,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAC7B,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC/C,OAAO,CACN,cACC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,gEAAgE,SAAS,EAAE,KAClF,KAAK,YAER,QAAQ,GACJ,CACN,CAAC;AACH,CAAC,CACD,CAAC;AAEF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { InputHTMLAttributes } from 'react';
|
|
2
|
+
interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
3
|
+
}
|
|
4
|
+
export declare const Input: import("react").ForwardRefExoticComponent<InputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=Input.d.ts.map
|