listpage-next 0.0.271 → 0.0.273

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.
Files changed (41) hide show
  1. package/dist/features/ChatClient/ui/Bubble/Bubble.js +1 -2
  2. package/dist/features/ChatClient/ui/Bubble/index.d.ts +0 -2
  3. package/dist/features/ChatClient/ui/Bubble/index.js +0 -2
  4. package/dist/features/ChatClient/ui/Markdown/base/Reasoning.d.ts +5 -0
  5. package/dist/features/ChatClient/ui/Markdown/base/Reasoning.js +110 -0
  6. package/dist/features/ChatClient/ui/Markdown/components/CodeComponent.d.ts +1 -0
  7. package/dist/features/ChatClient/ui/Markdown/components/CodeComponent.js +38 -0
  8. package/dist/features/ChatClient/ui/Markdown/components/PlaceholderComponent.d.ts +1 -0
  9. package/dist/features/ChatClient/ui/Markdown/components/PlaceholderComponent.js +62 -0
  10. package/dist/features/ChatClient/ui/Markdown/components/ThinkConponent.d.ts +2 -0
  11. package/dist/features/ChatClient/ui/Markdown/components/ThinkConponent.js +22 -0
  12. package/dist/features/ChatClient/ui/{Bubble/Markdown.d.ts → Markdown/index.d.ts} +1 -0
  13. package/dist/features/ChatClient/ui/{Bubble/Markdown.js → Markdown/index.js} +11 -56
  14. package/dist/features/ChatClient/ui/Markdown/styles/CodeComponent.styles.d.ts +11 -0
  15. package/dist/features/ChatClient/ui/Markdown/styles/CodeComponent.styles.js +77 -0
  16. package/dist/features/ChatClient/ui/TracePanel/DataTable.d.ts +7 -0
  17. package/dist/features/ChatClient/ui/TracePanel/DataTable.js +71 -0
  18. package/dist/features/ChatClient/ui/TracePanel/Popover.d.ts +6 -0
  19. package/dist/features/ChatClient/ui/TracePanel/Popover.js +32 -0
  20. package/dist/features/ChatClient/ui/TracePanel/TodoList.d.ts +13 -0
  21. package/dist/features/ChatClient/ui/TracePanel/TodoList.js +102 -0
  22. package/dist/features/ChatClient/ui/TracePanel/ToolCallList.d.ts +8 -0
  23. package/dist/features/ChatClient/ui/TracePanel/ToolCallList.js +153 -0
  24. package/dist/features/ChatClient/ui/TracePanel/TracePanel.d.ts +10 -0
  25. package/dist/features/ChatClient/ui/TracePanel/TracePanel.js +60 -0
  26. package/dist/features/ChatClient/ui/TracePanel/index.d.ts +2 -0
  27. package/dist/features/ChatClient/ui/TracePanel/index.js +3 -0
  28. package/dist/features/ChatClient/ui/TracePanel/styles/DataTable.styles.d.ts +10 -0
  29. package/dist/features/ChatClient/ui/TracePanel/styles/DataTable.styles.js +81 -0
  30. package/dist/features/ChatClient/ui/TracePanel/styles/TodoList.styles.d.ts +22 -0
  31. package/dist/features/ChatClient/ui/TracePanel/styles/TodoList.styles.js +164 -0
  32. package/dist/features/ChatClient/ui/TracePanel/styles/ToolCallList.styles.d.ts +21 -0
  33. package/dist/features/ChatClient/ui/TracePanel/styles/ToolCallList.styles.js +158 -0
  34. package/dist/features/ChatClient/ui/TracePanel/styles/TraceLog.styles.d.ts +8 -0
  35. package/dist/features/ChatClient/ui/TracePanel/styles/TraceLog.styles.js +65 -0
  36. package/dist/features/ChatClient/ui/TracePanel/transform.d.ts +18 -0
  37. package/dist/features/ChatClient/ui/TracePanel/transform.js +46 -0
  38. package/dist/features/ChatClient/ui/index.d.ts +2 -0
  39. package/dist/features/ChatClient/ui/index.js +2 -0
  40. package/dist/ui.css +26 -0
  41. package/package.json +1 -1
@@ -0,0 +1,102 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from "react";
3
+ import { Check, ChevronDown, ChevronUp, ListTodo, Loader2 } from "lucide-react";
4
+ import { Container, Header, HeaderLeft, IconWrapper, ItemContent, ItemIconWrapper, List, ListContainer, ListItem, PendingDot, SimpleContainer, StatusIcon, Subtitle, Title, TitleWrapper, ToggleButton } from "./styles/TodoList.styles.js";
5
+ const TodoList = ({ items, title = '待办事项', defaultCollapsed = false, className = '', simple = false })=>{
6
+ const [collapsed, setCollapsed] = useState(defaultCollapsed);
7
+ const stats = useMemo(()=>{
8
+ const pending = items.filter((i)=>'pending' === i.status).length;
9
+ const inProgress = items.filter((i)=>'in_progress' === i.status).length;
10
+ const completed = items.filter((i)=>'completed' === i.status).length;
11
+ return {
12
+ pending,
13
+ inProgress,
14
+ completed
15
+ };
16
+ }, [
17
+ items
18
+ ]);
19
+ const totalPending = stats.pending + stats.inProgress;
20
+ const renderList = ()=>/*#__PURE__*/ jsx(List, {
21
+ children: items.map((item, index)=>{
22
+ const status = item.status;
23
+ return /*#__PURE__*/ jsxs(ListItem, {
24
+ children: [
25
+ /*#__PURE__*/ jsx(ItemIconWrapper, {
26
+ children: /*#__PURE__*/ jsxs(StatusIcon, {
27
+ $status: status,
28
+ children: [
29
+ 'completed' === status && /*#__PURE__*/ jsx(Check, {
30
+ size: 12,
31
+ strokeWidth: 3
32
+ }),
33
+ 'in_progress' === status && /*#__PURE__*/ jsx(Loader2, {
34
+ size: 12,
35
+ className: "animate-spin"
36
+ }),
37
+ 'pending' === status && /*#__PURE__*/ jsx(PendingDot, {})
38
+ ]
39
+ })
40
+ }),
41
+ /*#__PURE__*/ jsx(ItemContent, {
42
+ $status: status,
43
+ children: item.content
44
+ })
45
+ ]
46
+ }, `${item.content}-${index}`);
47
+ })
48
+ });
49
+ if (simple) return /*#__PURE__*/ jsx(SimpleContainer, {
50
+ className: className,
51
+ children: renderList()
52
+ });
53
+ return /*#__PURE__*/ jsxs(Container, {
54
+ className: className,
55
+ children: [
56
+ /*#__PURE__*/ jsxs(Header, {
57
+ onClick: ()=>setCollapsed((v)=>!v),
58
+ children: [
59
+ /*#__PURE__*/ jsxs(HeaderLeft, {
60
+ children: [
61
+ /*#__PURE__*/ jsx(IconWrapper, {
62
+ children: /*#__PURE__*/ jsx(ListTodo, {
63
+ size: 16
64
+ })
65
+ }),
66
+ /*#__PURE__*/ jsxs(TitleWrapper, {
67
+ children: [
68
+ /*#__PURE__*/ jsx(Title, {
69
+ children: title
70
+ }),
71
+ totalPending > 0 ? /*#__PURE__*/ jsxs(Subtitle, {
72
+ children: [
73
+ stats.inProgress > 0 ? `${stats.inProgress} 进行中 · ` : '',
74
+ stats.pending,
75
+ " 待办"
76
+ ]
77
+ }) : /*#__PURE__*/ jsx(Subtitle, {
78
+ $isCompleted: true,
79
+ children: "全部完成"
80
+ })
81
+ ]
82
+ })
83
+ ]
84
+ }),
85
+ /*#__PURE__*/ jsx(ToggleButton, {
86
+ type: "button",
87
+ "aria-label": collapsed ? '展开' : '折叠',
88
+ children: collapsed ? /*#__PURE__*/ jsx(ChevronDown, {
89
+ size: 16
90
+ }) : /*#__PURE__*/ jsx(ChevronUp, {
91
+ size: 16
92
+ })
93
+ })
94
+ ]
95
+ }),
96
+ !collapsed && /*#__PURE__*/ jsx(ListContainer, {
97
+ children: renderList()
98
+ })
99
+ ]
100
+ });
101
+ };
102
+ export { TodoList };
@@ -0,0 +1,8 @@
1
+ import type { MessageCache } from './transform';
2
+ interface ToolCallListProps {
3
+ tools: MessageCache['tool_calls'];
4
+ className?: string;
5
+ simple?: boolean;
6
+ }
7
+ export declare const ToolCallList: ({ tools, className, simple, }: ToolCallListProps) => import("react/jsx-runtime").JSX.Element | null;
8
+ export {};
@@ -0,0 +1,153 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { Check, ChevronDown, ChevronUp, Clock, Loader2, Terminal } from "lucide-react";
4
+ import { JsonEditor } from "../../../JsonEditor/index.js";
5
+ import { Markdown } from "../Markdown/index.js";
6
+ import { DataTable } from "./DataTable.js";
7
+ import { Container, DetailsContainer, DetailsSection, Duration, ExpandIcon, Header, HeaderLeft, IconWrapper, Label, List, ListContainer, SimpleContainer, Subtitle, Title, TitleWrapper, ToggleButton, ToolHeader, ToolInfo, ToolItem, ToolMeta, ToolName } from "./styles/ToolCallList.styles.js";
8
+ const toolCnName = {
9
+ list_table: '查询数据库中所有表',
10
+ describe_table: '查看数据库表的详情',
11
+ execute_sql: '执行SQL语句',
12
+ generate_chart: '生成可视化图表',
13
+ query_professional_thesaurus: '查询词条',
14
+ retrieve_fragments: '检索知识库中相关文档片段',
15
+ retrieve_full_docs: '检索知识库文档原文'
16
+ };
17
+ const ToolCallList = ({ tools, className = '', simple = false })=>{
18
+ const [collapsed, setCollapsed] = useState(false);
19
+ const [expandedTools, setExpandedTools] = useState({});
20
+ const toggleTool = (index)=>{
21
+ setExpandedTools((prev)=>({
22
+ ...prev,
23
+ [index]: !prev[index]
24
+ }));
25
+ };
26
+ if (!tools || 0 === tools.length) return null;
27
+ const renderList = ()=>/*#__PURE__*/ jsx(List, {
28
+ children: tools.map((tool, index)=>{
29
+ const isDone = !!tool.end_timestamp;
30
+ const duration = isDone && tool.end_timestamp ? tool.end_timestamp - tool.start_timestamp : null;
31
+ const isExpanded = expandedTools[index];
32
+ return /*#__PURE__*/ jsxs(ToolItem, {
33
+ children: [
34
+ /*#__PURE__*/ jsxs(ToolHeader, {
35
+ onClick: ()=>toggleTool(index),
36
+ children: [
37
+ /*#__PURE__*/ jsxs(ToolInfo, {
38
+ children: [
39
+ isDone ? /*#__PURE__*/ jsx(Check, {
40
+ size: 14,
41
+ className: "text-emerald-600 shrink-0"
42
+ }) : /*#__PURE__*/ jsx(Loader2, {
43
+ size: 14,
44
+ className: "animate-spin text-blue-600 shrink-0"
45
+ }),
46
+ /*#__PURE__*/ jsx(ToolName, {
47
+ title: tool.name,
48
+ children: toolCnName[tool.name] || tool.name
49
+ })
50
+ ]
51
+ }),
52
+ /*#__PURE__*/ jsxs(ToolMeta, {
53
+ children: [
54
+ null !== duration && /*#__PURE__*/ jsxs(Duration, {
55
+ children: [
56
+ /*#__PURE__*/ jsx(Clock, {
57
+ size: 10
58
+ }),
59
+ duration,
60
+ "ms"
61
+ ]
62
+ }),
63
+ /*#__PURE__*/ jsx(ExpandIcon, {
64
+ children: isExpanded ? /*#__PURE__*/ jsx(ChevronUp, {
65
+ size: 14
66
+ }) : /*#__PURE__*/ jsx(ChevronDown, {
67
+ size: 14
68
+ })
69
+ })
70
+ ]
71
+ })
72
+ ]
73
+ }),
74
+ isExpanded && /*#__PURE__*/ jsxs(DetailsContainer, {
75
+ children: [
76
+ /*#__PURE__*/ jsxs(DetailsSection, {
77
+ children: [
78
+ /*#__PURE__*/ jsx(Label, {
79
+ children: "输入"
80
+ }),
81
+ /*#__PURE__*/ jsx(JsonEditor, {
82
+ value: JSON.parse(tool.input)
83
+ })
84
+ ]
85
+ }),
86
+ isDone && /*#__PURE__*/ jsxs(DetailsSection, {
87
+ children: [
88
+ /*#__PURE__*/ jsx(Label, {
89
+ children: "输出"
90
+ }),
91
+ 'execute_sql' === tool.name ? /*#__PURE__*/ jsx(DataTable, {
92
+ data: tool.output
93
+ }) : /*#__PURE__*/ jsx(Markdown, {
94
+ content: tool.output
95
+ })
96
+ ]
97
+ })
98
+ ]
99
+ })
100
+ ]
101
+ }, index);
102
+ })
103
+ });
104
+ if (simple) return /*#__PURE__*/ jsx(SimpleContainer, {
105
+ className: className,
106
+ children: renderList()
107
+ });
108
+ return /*#__PURE__*/ jsxs(Container, {
109
+ className: className,
110
+ children: [
111
+ /*#__PURE__*/ jsxs(Header, {
112
+ onClick: ()=>setCollapsed((v)=>!v),
113
+ children: [
114
+ /*#__PURE__*/ jsxs(HeaderLeft, {
115
+ children: [
116
+ /*#__PURE__*/ jsx(IconWrapper, {
117
+ children: /*#__PURE__*/ jsx(Terminal, {
118
+ size: 16
119
+ })
120
+ }),
121
+ /*#__PURE__*/ jsxs(TitleWrapper, {
122
+ children: [
123
+ /*#__PURE__*/ jsx(Title, {
124
+ children: "工具调用"
125
+ }),
126
+ /*#__PURE__*/ jsxs(Subtitle, {
127
+ children: [
128
+ tools.length,
129
+ " 个操作"
130
+ ]
131
+ })
132
+ ]
133
+ })
134
+ ]
135
+ }),
136
+ /*#__PURE__*/ jsx(ToggleButton, {
137
+ type: "button",
138
+ "aria-label": collapsed ? '展开' : '折叠',
139
+ children: collapsed ? /*#__PURE__*/ jsx(ChevronDown, {
140
+ size: 16
141
+ }) : /*#__PURE__*/ jsx(ChevronUp, {
142
+ size: 16
143
+ })
144
+ })
145
+ ]
146
+ }),
147
+ !collapsed && /*#__PURE__*/ jsx(ListContainer, {
148
+ children: renderList()
149
+ })
150
+ ]
151
+ });
152
+ };
153
+ export { ToolCallList };
@@ -0,0 +1,10 @@
1
+ import { type TodoItem } from './TodoList';
2
+ import type { MessageCache } from './transform';
3
+ interface TraceLogProps {
4
+ data?: {
5
+ tool_calls?: MessageCache['tool_calls'];
6
+ todos?: TodoItem[];
7
+ };
8
+ }
9
+ export declare const TracePanel: ({ data }: TraceLogProps) => import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,60 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { ListTodo, Terminal } from "lucide-react";
4
+ import { TodoList } from "./TodoList.js";
5
+ import { ToolCallList } from "./ToolCallList.js";
6
+ import { Badge, Container, Content, TabButton, TabHeader } from "./styles/TraceLog.styles.js";
7
+ const TracePanel = ({ data })=>{
8
+ const { todos = [], tool_calls = [] } = data ?? {};
9
+ const [activeTab, setActiveTab] = useState('todos');
10
+ const tools = tool_calls.filter((tool)=>'write_todos' !== tool.name);
11
+ return /*#__PURE__*/ jsxs(Container, {
12
+ children: [
13
+ /*#__PURE__*/ jsxs(TabHeader, {
14
+ children: [
15
+ /*#__PURE__*/ jsxs(TabButton, {
16
+ onClick: ()=>setActiveTab('todos'),
17
+ $isActive: 'todos' === activeTab,
18
+ $type: "todos",
19
+ children: [
20
+ /*#__PURE__*/ jsx(ListTodo, {
21
+ size: 14
22
+ }),
23
+ "待办事项",
24
+ /*#__PURE__*/ jsx(Badge, {
25
+ children: todos.length
26
+ })
27
+ ]
28
+ }),
29
+ /*#__PURE__*/ jsxs(TabButton, {
30
+ onClick: ()=>setActiveTab('tools'),
31
+ $isActive: 'tools' === activeTab,
32
+ $type: "tools",
33
+ children: [
34
+ /*#__PURE__*/ jsx(Terminal, {
35
+ size: 14
36
+ }),
37
+ "工具调用",
38
+ /*#__PURE__*/ jsx(Badge, {
39
+ children: tools.length
40
+ })
41
+ ]
42
+ })
43
+ ]
44
+ }),
45
+ /*#__PURE__*/ jsxs(Content, {
46
+ children: [
47
+ 'todos' === activeTab && /*#__PURE__*/ jsx(TodoList, {
48
+ items: todos,
49
+ simple: true
50
+ }),
51
+ 'tools' === activeTab && /*#__PURE__*/ jsx(ToolCallList, {
52
+ tools: tools,
53
+ simple: true
54
+ })
55
+ ]
56
+ })
57
+ ]
58
+ });
59
+ };
60
+ export { TracePanel };
@@ -0,0 +1,2 @@
1
+ export { TracePanel } from './TracePanel';
2
+ export { TraceTrigger } from './Popover';
@@ -0,0 +1,3 @@
1
+ import { TracePanel } from "./TracePanel.js";
2
+ import { TraceTrigger } from "./Popover.js";
3
+ export { TracePanel, TraceTrigger };
@@ -0,0 +1,10 @@
1
+ export declare const Container: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
2
+ export declare const ScrollContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
3
+ export declare const Table: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").TableHTMLAttributes<HTMLTableElement>, HTMLTableElement>, never>> & string;
4
+ export declare const Thead: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLTableSectionElement>, HTMLTableSectionElement>, never>> & string;
5
+ export declare const Th: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").ThHTMLAttributes<HTMLTableHeaderCellElement>, HTMLTableHeaderCellElement>, never>> & string;
6
+ export declare const Tr: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement>, never>> & string;
7
+ export declare const Td: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement>, never>> & string;
8
+ export declare const NullSpan: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
9
+ export declare const Footer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
10
+ export declare const ErrorContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
@@ -0,0 +1,81 @@
1
+ import styled_components from "styled-components";
2
+ const Container = styled_components.div`
3
+ border-radius: 0.5rem;
4
+ border: 1px solid #e2e8f0;
5
+ overflow: hidden;
6
+ background-color: white;
7
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
8
+ `;
9
+ const ScrollContainer = styled_components.div`
10
+ overflow: auto;
11
+ max-height: 400px;
12
+ `;
13
+ const Table = styled_components.table`
14
+ width: 100%;
15
+ text-align: left;
16
+ border-collapse: collapse;
17
+ `;
18
+ const Thead = styled_components.thead`
19
+ background-color: #f8fafc;
20
+ position: sticky;
21
+ top: 0;
22
+ z-index: 10;
23
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
24
+ `;
25
+ const Th = styled_components.th`
26
+ font-weight: 600;
27
+ color: #475569;
28
+ font-size: 0.75rem;
29
+ text-transform: uppercase;
30
+ letter-spacing: 0.05em;
31
+ white-space: nowrap;
32
+ padding: 0.75rem 1rem;
33
+ border-bottom: 1px solid #e2e8f0;
34
+ background-color: #f8fafc;
35
+ `;
36
+ const Tr = styled_components.tr`
37
+ transition: background-color 150ms;
38
+ border-bottom: 1px solid #f1f5f9;
39
+
40
+ &:last-child {
41
+ border-bottom: 0;
42
+ }
43
+
44
+ &:hover {
45
+ background-color: #f8fafc;
46
+ }
47
+ `;
48
+ const Td = styled_components.td`
49
+ font-size: 0.875rem;
50
+ color: #334155;
51
+ padding: 0.625rem 1rem;
52
+ white-space: nowrap;
53
+ max-width: 20rem;
54
+ overflow: hidden;
55
+ text-overflow: ellipsis;
56
+ `;
57
+ const NullSpan = styled_components.span`
58
+ color: #94a3b8;
59
+ font-style: italic;
60
+ `;
61
+ const Footer = styled_components.div`
62
+ background-color: #f8fafc;
63
+ padding: 0.375rem 0.75rem;
64
+ border-top: 1px solid #e2e8f0;
65
+ font-size: 10px;
66
+ color: #94a3b8;
67
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
68
+ 'Liberation Mono', 'Courier New', monospace;
69
+ text-align: right;
70
+ `;
71
+ const ErrorContainer = styled_components.div`
72
+ font-size: 0.875rem;
73
+ color: #64748b;
74
+ font-style: italic;
75
+ padding: 1rem;
76
+ text-align: center;
77
+ border: 1px solid #f1f5f9;
78
+ border-radius: 0.5rem;
79
+ background-color: #f8fafc;
80
+ `;
81
+ export { Container, ErrorContainer, Footer, NullSpan, ScrollContainer, Table, Td, Th, Thead, Tr };
@@ -0,0 +1,22 @@
1
+ export declare const Container: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
2
+ export declare const SimpleContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
3
+ export declare const Header: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
4
+ export declare const HeaderLeft: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
5
+ export declare const IconWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
6
+ export declare const TitleWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
7
+ export declare const Title: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
8
+ export declare const Subtitle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {
9
+ $isCompleted?: boolean;
10
+ }>> & string;
11
+ export declare const ToggleButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, never>> & string;
12
+ export declare const ListContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
13
+ export declare const List: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, never>> & string;
14
+ export declare const ListItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, never>> & string;
15
+ export declare const ItemIconWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
16
+ export declare const StatusIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
17
+ $status: "pending" | "in_progress" | "completed";
18
+ }>> & string;
19
+ export declare const PendingDot: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
20
+ export declare const ItemContent: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {
21
+ $status: "pending" | "in_progress" | "completed";
22
+ }>> & string;
@@ -0,0 +1,164 @@
1
+ import styled_components, { css } from "styled-components";
2
+ const Container = styled_components.div`
3
+ width: 100%;
4
+ background-color: rgba(255, 255, 255, 0.95);
5
+ backdrop-filter: blur(4px);
6
+ border-radius: 0.75rem;
7
+ border: 1px solid rgba(226, 232, 240, 0.6);
8
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
9
+ transition: all 300ms;
10
+
11
+ &:hover {
12
+ box-shadow:
13
+ 0 4px 6px -1px rgb(0 0 0 / 0.1),
14
+ 0 2px 4px -2px rgb(0 0 0 / 0.1);
15
+ }
16
+ `;
17
+ const SimpleContainer = styled_components.div``;
18
+ const Header = styled_components.div`
19
+ padding: 0.75rem 1rem;
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: space-between;
23
+ cursor: pointer;
24
+ user-select: none;
25
+ `;
26
+ const HeaderLeft = styled_components.div`
27
+ display: flex;
28
+ align-items: center;
29
+ gap: 0.625rem;
30
+ `;
31
+ const IconWrapper = styled_components.div`
32
+ padding: 0.375rem;
33
+ background-color: #f5f3ff;
34
+ border-radius: 0.375rem;
35
+ color: #7c3aed;
36
+ transition: background-color 150ms;
37
+
38
+ ${Header}:hover & {
39
+ background-color: #ede9fe;
40
+ }
41
+ `;
42
+ const TitleWrapper = styled_components.div`
43
+ display: flex;
44
+ flex-direction: column;
45
+ `;
46
+ const Title = styled_components.span`
47
+ font-size: 0.875rem;
48
+ font-weight: 600;
49
+ color: #1e293b;
50
+ letter-spacing: -0.025em;
51
+ `;
52
+ const Subtitle = styled_components.span`
53
+ font-size: 10px;
54
+ font-weight: 500;
55
+ color: ${(props)=>props.$isCompleted ? '#059669' : '#64748b'};
56
+ `;
57
+ const ToggleButton = styled_components.button`
58
+ padding: 0.25rem;
59
+ border-radius: 0.375rem;
60
+ color: #94a3b8;
61
+ transition:
62
+ background-color 150ms,
63
+ color 150ms;
64
+ background: none;
65
+ border: none;
66
+ cursor: pointer;
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+
71
+ &:hover {
72
+ background-color: #f1f5f9;
73
+ }
74
+ `;
75
+ const ListContainer = styled_components.div`
76
+ padding: 0 0.5rem 0.5rem;
77
+ `;
78
+ const List = styled_components.ul`
79
+ list-style: none;
80
+ margin: 0;
81
+ padding: 0;
82
+ display: flex;
83
+ flex-direction: column;
84
+ gap: 0.25rem;
85
+ `;
86
+ const ListItem = styled_components.li`
87
+ display: flex;
88
+ align-items: flex-start;
89
+ gap: 0.75rem;
90
+ padding: 0.5rem;
91
+ border-radius: 0.5rem;
92
+ transition: all 200ms;
93
+
94
+ &:hover {
95
+ background-color: rgba(248, 250, 252, 0.8);
96
+ }
97
+ `;
98
+ const ItemIconWrapper = styled_components.div`
99
+ margin-top: 0.125rem;
100
+ flex-shrink: 0;
101
+ `;
102
+ const StatusIcon = styled_components.div`
103
+ width: 1.25rem;
104
+ height: 1.25rem;
105
+ border-radius: 50%;
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+
110
+ ${(props)=>'completed' === props.$status && css`
111
+ background-color: #d1fae5;
112
+ color: #059669;
113
+ border: 1px solid rgba(167, 243, 208, 0.5);
114
+ `}
115
+
116
+ ${(props)=>'in_progress' === props.$status && css`
117
+ background-color: #eff6ff;
118
+ color: #2563eb;
119
+ border: 1px solid rgba(191, 219, 254, 0.5);
120
+ `}
121
+
122
+ ${(props)=>'pending' === props.$status && css`
123
+ background-color: white;
124
+ border: 2px solid #e2e8f0;
125
+ transition: border-color 150ms;
126
+
127
+ ${ListItem}:hover & {
128
+ border-color: #cbd5e1;
129
+ }
130
+ `}
131
+ `;
132
+ const PendingDot = styled_components.div`
133
+ width: 0.375rem;
134
+ height: 0.375rem;
135
+ border-radius: 50%;
136
+ background-color: transparent;
137
+ transition: background-color 150ms;
138
+
139
+ ${ListItem}:hover & {
140
+ background-color: #e2e8f0;
141
+ }
142
+ `;
143
+ const ItemContent = styled_components.span`
144
+ font-size: 0.875rem;
145
+ line-height: 1.625;
146
+ transition: color 200ms;
147
+ word-break: break-all;
148
+
149
+ ${(props)=>'completed' === props.$status && css`
150
+ color: #94a3b8;
151
+ text-decoration: line-through;
152
+ text-decoration-color: #cbd5e1;
153
+ `}
154
+
155
+ ${(props)=>'in_progress' === props.$status && css`
156
+ color: #1e293b;
157
+ font-weight: 500;
158
+ `}
159
+
160
+ ${(props)=>'pending' === props.$status && css`
161
+ color: #475569;
162
+ `}
163
+ `;
164
+ export { Container, Header, HeaderLeft, IconWrapper, ItemContent, ItemIconWrapper, List, ListContainer, ListItem, PendingDot, SimpleContainer, StatusIcon, Subtitle, Title, TitleWrapper, ToggleButton };
@@ -0,0 +1,21 @@
1
+ export declare const Container: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
2
+ export declare const SimpleContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
3
+ export declare const Header: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
4
+ export declare const HeaderLeft: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
5
+ export declare const IconWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
6
+ export declare const TitleWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
7
+ export declare const Title: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
8
+ export declare const Subtitle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
9
+ export declare const ToggleButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, never>> & string;
10
+ export declare const ListContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
11
+ export declare const List: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
12
+ export declare const ToolItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
13
+ export declare const ToolHeader: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
14
+ export declare const ToolInfo: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
15
+ export declare const ToolName: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
16
+ export declare const ToolMeta: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
17
+ export declare const Duration: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
18
+ export declare const ExpandIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
19
+ export declare const DetailsContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
20
+ export declare const DetailsSection: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
21
+ export declare const Label: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;