@oakkles/llm-ui-react 0.1.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/bubble/BubblePrimitive.tsx","../src/utils/cn.ts","../src/components/bubble/Bubble.tsx","../src/components/code-highlighter/CodeHighlighterPrimitive.tsx","../src/components/code-highlighter/CodeHighlighter.tsx","../src/utils/markdown.ts","../src/components/mark/MarkPrimitive.tsx","../src/components/mark/Mark.tsx","../src/components/sender/SenderPrimitive.tsx","../src/components/sender/Sender.tsx","../src/components/think/ThinkPrimitive.tsx","../src/components/think/Think.tsx","../src/components/notification/NotificationPrimitive.tsx","../src/components/notification/Notification.tsx","../src/components/actions/ActionsPrimitive.tsx","../src/components/actions/Actions.tsx","../src/components/actions/ActionsPreset.ts","../src/components/prompts/PromptsPrimitive.tsx","../src/components/prompts/Prompts.tsx","../src/components/conversation/ConversationItemPrimitive.tsx","../src/components/conversation/ConversationItem.tsx","../src/hooks/useVirtualList.ts","../src/components/conversation/ConversationListPrimitive.tsx","../src/components/conversation/ConversationList.tsx","../src/components/message-list/MessageListPrimitive.tsx","../src/components/message-list/MessageList.tsx","../src/components/thought/ThoughtPrimitive.tsx","../src/components/thought/Thought.tsx","../src/components/citation/CitationPrimitive.tsx","../src/components/citation/Citation.tsx","../src/locale/zh-CN.ts","../src/locale/en-US.ts","../src/components/config-provider/configContext.ts","../src/components/config-provider/ConfigProvider.tsx","../src/hooks/useConfig.ts","../src/hooks/useLocale.ts","../src/hooks/useTheme.ts","../src/hooks/useStream.ts","../src/utils/stream.ts"],"names":["jsxs","jsx","twMerge","clsx","useState","useShikiHighlighter","useEffect","isValidElement","ReactMarkdown","remarkGfm","useRef","Fragment","CopyIcon","CheckIcon","formatTimestamp","useMemo","useCallback","ChevronIcon","createContext","useContext"],"mappings":"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","file":"index.cjs","sourcesContent":["import { type CSSProperties, type ReactNode } from 'react'\nimport { type LLMRole, type messageStatus } from '../../types/common'\n\nexport interface BubblePrimitiveProps {\n /** 消息角色,决定气泡的语义与布局方向 */\n role: LLMRole\n /** 文本内容;如果传入 children,则通常由 children 接管渲染 */\n content?: string\n /** 头像插槽,可传入图片、图标或自定义节点 */\n avatar?: ReactNode\n /** 时间戳,可传入格式化后的字符串或 Date 对象 */\n timestamp?: Date | string\n /** 消息发送状态,用于渲染发送中、已发送、错误等语义状态 */\n status?: messageStatus\n /** 是否处于加载中,常用于 assistant 消息的等待动画 */\n loading?: boolean\n /** 自定义内容插槽,优先级高于 content */\n children?: ReactNode\n /** 消息下方操作区插槽 */\n actions?: ReactNode\n /** 最外层元素类名,供 Styled 层或使用者覆盖 */\n className?: string\n /** 最外层元素内联样式 */\n style?: CSSProperties\n}\n\nconst statusTextMap: Record<messageStatus, string> = {\n sending: '发送中',\n sent: '已发送',\n error: '发送失败',\n}\n\nfunction formatTimestamp(timestamp: Date | string) {\n if (typeof timestamp === 'string') {\n return timestamp\n }\n\n return timestamp.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n })\n}\n\nexport function BubblePrimitive({\n role,\n content,\n avatar,\n timestamp,\n status,\n loading,\n children,\n actions,\n className,\n style,\n}: BubblePrimitiveProps) {\n return (\n <div\n className={className}\n style={style}\n data-role={role}\n data-status={status}\n data-loading={loading}\n data-has-actions={actions ? '' : undefined}\n >\n {avatar && (\n <div className=\"llm-bubble__avatar\" data-slot=\"bubble-avatar\">\n {avatar}\n </div>\n )}\n <div className=\"llm-bubble__body\" data-slot=\"bubble-body\">\n {(children ?? content) && (\n <div className=\"llm-bubble__content\" data-slot=\"bubble-content\">\n {children ?? content}\n </div>\n )}\n {(timestamp || status || loading) && (\n <div className=\"llm-bubble__meta\" data-slot=\"bubble-meta\">\n {timestamp && (\n <span className=\"llm-bubble__time\" data-slot=\"bubble-time\">\n {formatTimestamp(timestamp)}\n </span>\n )}\n {status && (\n <span className=\"llm-bubble__status\" data-slot=\"bubble-status\">\n {statusTextMap[status]}\n </span>\n )}\n {loading && (\n <span className=\"llm-bubble__loading\" data-slot=\"bubble-loading\">\n 思考中\n </span>\n )}\n </div>\n )}\n {actions ? (\n <div className=\"llm-bubble__actions\" data-slot=\"bubble-actions\">\n {actions}\n </div>\n ) : null}\n </div>\n </div>\n )\n}\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport default function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { BubblePrimitive, type BubblePrimitiveProps } from './BubblePrimitive'\nimport cn from '../../utils/cn'\n\nexport type BubbleProps = BubblePrimitiveProps\n\nexport function Bubble({ className, ...props }: BubbleProps) {\n return <BubblePrimitive className={cn('llm-bubble', className)} {...props} />\n}\n","import { useEffect, useState } from 'react'\nimport { useShikiHighlighter } from 'react-shiki'\n\nexport interface CodeHighlighterPrimitiveProps {\n code: string\n copyable?: boolean\n language?: string\n showLineNumbers?: boolean\n startingLineNumber?: number\n className?: string\n}\n\nfunction getLanguageLabel(language: string) {\n const normalizedLanguage = language.toLowerCase()\n const labels: Record<string, string> = {\n astro: 'Astro',\n bash: 'Bash',\n bat: 'Batch',\n c: 'C',\n cpp: 'C++',\n 'c++': 'C++',\n csharp: 'C#',\n cs: 'C#',\n css: 'CSS',\n dart: 'Dart',\n diff: 'Diff',\n docker: 'Dockerfile',\n dockerfile: 'Dockerfile',\n elixir: 'Elixir',\n ex: 'Elixir',\n go: 'Go',\n graphql: 'GraphQL',\n groovy: 'Groovy',\n html: 'HTML',\n java: 'Java',\n javascript: 'JavaScript',\n js: 'JavaScript',\n json: 'JSON',\n jsonc: 'JSONC',\n jsx: 'JavaScript JSX',\n kotlin: 'Kotlin',\n kt: 'Kotlin',\n less: 'Less',\n lua: 'Lua',\n markdown: 'Markdown',\n md: 'Markdown',\n objectivec: 'Objective-C',\n objc: 'Objective-C',\n perl: 'Perl',\n php: 'PHP',\n plaintext: 'Plain Text',\n powershell: 'PowerShell',\n prisma: 'Prisma',\n ps1: 'PowerShell',\n py: 'Python',\n python: 'Python',\n r: 'R',\n rb: 'Ruby',\n ruby: 'Ruby',\n rust: 'Rust',\n rs: 'Rust',\n sass: 'Sass',\n scala: 'Scala',\n scss: 'SCSS',\n shell: 'Shell',\n sh: 'Shell',\n sql: 'SQL',\n svelte: 'Svelte',\n swift: 'Swift',\n text: 'Plain Text',\n toml: 'TOML',\n ts: 'TypeScript',\n tsx: 'TypeScript TSX',\n typescript: 'TypeScript',\n vue: 'Vue',\n wasm: 'WebAssembly',\n xml: 'XML',\n yaml: 'YAML',\n yml: 'YAML',\n zig: 'Zig',\n }\n\n return labels[normalizedLanguage] ?? language\n}\n\nfunction CodeIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-code-highlighter__code-icon\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m9 18-6-6 6-6\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n <path\n d=\"m15 6 6 6-6 6\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nfunction CopyIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-code-highlighter__copy-icon\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n height=\"13\"\n rx=\"2\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n width=\"13\"\n x=\"9\"\n y=\"2\"\n />\n <path\n d=\"M5 9H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-1\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nconst codeTheme = { light: 'github-light', dark: 'github-dark' }\n\nfunction CheckIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-code-highlighter__copy-icon\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m20 6-11 11-5-5\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nexport function CodeHighlighterPrimitive({\n code,\n copyable = true,\n language = 'text',\n showLineNumbers = false,\n startingLineNumber = 1,\n className,\n}: CodeHighlighterPrimitiveProps) {\n const [copied, setCopied] = useState(false)\n const languageLabel = getLanguageLabel(language)\n const highlightedCode = useShikiHighlighter(code, language, codeTheme, {\n defaultColor: 'light-dark()',\n showLineNumbers,\n startingLineNumber,\n })\n\n useEffect(() => {\n if (!copied) return\n\n const timer = window.setTimeout(() => {\n setCopied(false)\n }, 1500)\n\n return () => window.clearTimeout(timer)\n }, [copied])\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(code)\n setCopied(true)\n }\n\n return (\n <div className={className}>\n <div className=\"llm-code-highlighter__header\">\n <div className=\"llm-code-highlighter__title\">\n <CodeIcon />\n <span className=\"llm-code-highlighter__language\">\n {languageLabel}\n </span>\n </div>\n {copyable ? (\n <button\n aria-label={copied ? 'Code copied' : 'Copy code'}\n className=\"llm-code-highlighter__copy\"\n onClick={handleCopy}\n type=\"button\"\n >\n {copied ? <CheckIcon /> : <CopyIcon />}\n </button>\n ) : null}\n </div>\n\n <div className=\"llm-code-highlighter__body\">\n {highlightedCode ? (\n <div className=\"rs-root not-prose\">{highlightedCode}</div>\n ) : (\n <pre aria-hidden=\"true\" className=\"llm-code-highlighter__placeholder\">\n <code>{code}</code>\n </pre>\n )}\n </div>\n </div>\n )\n}\n","import {\n CodeHighlighterPrimitive,\n type CodeHighlighterPrimitiveProps,\n} from './CodeHighlighterPrimitive'\nimport cn from '../../utils/cn'\n\nexport type CodeHighlighterProps = CodeHighlighterPrimitiveProps\n\nexport function CodeHighlighter({\n className,\n ...props\n}: CodeHighlighterProps) {\n return (\n <CodeHighlighterPrimitive\n className={cn('llm-code-highlighter', className)}\n {...props}\n />\n )\n}\n","export function sanitizeMarkdown(content: string): string {\n const codeBlockCount = (content.match(/```/g) || []).length\n if (codeBlockCount % 2 !== 0) {\n content += `${content.endsWith('\\n') ? '' : '\\n'}\\n\\`\\`\\``\n }\n\n const stripped = content.replace(/```/g, '')\n const inlineCount = (stripped.match(/`/g) || []).length\n if (inlineCount % 2 !== 0) {\n content += '`'\n }\n\n return content\n}\n","import { isValidElement, type ReactElement, type ReactNode } from 'react'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\n\nimport { CodeHighlighter } from '../code-highlighter/CodeHighlighter'\nimport { sanitizeMarkdown } from '../../utils/markdown'\n\nexport interface MarkPrimitiveProps {\n content: string\n streaming?: boolean\n onComplete?: () => void\n className?: string\n}\n\ntype CodeElementProps = {\n className?: string | undefined\n children?: ReactNode\n}\n\nfunction getCodeLanguage(className?: string) {\n return className?.match(/language-([\\w-]+)/)?.[1] ?? 'text'\n}\n\nfunction getCodeContent(children: ReactNode) {\n return String(children ?? '').replace(/\\n$/, '')\n}\n\nfunction hasOpenCodeFence(content: string) {\n return (content.match(/```/g) ?? []).length % 2 !== 0\n}\n\nfunction isCodeElement(\n node: ReactNode,\n): node is ReactElement<CodeElementProps> {\n return isValidElement<CodeElementProps>(node)\n}\n\nconst markdownComponents: Components = {\n code: ({ children, className }: CodeElementProps) => (\n <code className={className}>{children}</code>\n ),\n img: ({ alt, src, title }) => (\n <img alt={alt} loading=\"lazy\" src={src} title={title} />\n ),\n pre: ({ children }: { children?: ReactNode }) => {\n if (!isCodeElement(children)) return null\n\n return (\n <CodeHighlighter\n code={getCodeContent(children.props.children)}\n language={getCodeLanguage(children.props.className)}\n />\n )\n },\n}\n\nexport function MarkPrimitive({\n content,\n streaming = false,\n className,\n}: MarkPrimitiveProps) {\n const hasStreamingCodeFence = streaming && hasOpenCodeFence(content)\n const parsedContent = hasStreamingCodeFence\n ? sanitizeMarkdown(content)\n : content\n\n return (\n <div className={className}>\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n components={markdownComponents}\n >\n {parsedContent}\n </ReactMarkdown>\n </div>\n )\n}\n","import { MarkPrimitive, type MarkPrimitiveProps } from './MarkPrimitive'\nimport cn from '../../utils/cn'\n\nexport type MarkProps = MarkPrimitiveProps\n\nexport function Mark({ className, ...props }: MarkProps) {\n return <MarkPrimitive className={cn('llm-mark', className)} {...props} />\n}\n","import {\n useEffect,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\n\nexport type SenderPrefixAction = 'upload' | 'image' | 'search' | 'reasoning'\n\nexport interface SenderModelOption {\n value: string\n label: string\n}\n\nexport interface SenderPrimitiveProps {\n value?: string\n defaultValue?: string\n onChange?: (message: string) => void\n onSend?: (message: string) => void\n onCancel?: () => void\n onPrefixAction?: (action: SenderPrefixAction) => void\n onModelChange?: (model: string) => void\n onVoiceClick?: () => void\n loading?: boolean\n disabled?: boolean\n placeholder?: string\n model?: string\n modelOptions?: SenderModelOption[]\n prefix?: ReactNode\n suffix?: ReactNode\n className?: string\n}\n\nconst senderPrefixActions: Array<{\n key: SenderPrefixAction\n label: string\n}> = [\n { key: 'upload', label: '上传附件' },\n { key: 'image', label: '添加图片' },\n { key: 'search', label: '联网搜索' },\n { key: 'reasoning', label: '深度思考' },\n]\n\nconst defaultModelOptions: SenderModelOption[] = [\n { value: 'gpt-4o', label: 'GPT-4o' },\n { value: 'claude-sonnet-4', label: 'Claude Sonnet 4' },\n { value: 'gemini-2.5-pro', label: 'Gemini 2.5 Pro' },\n { value: 'deepseek-r1', label: 'DeepSeek R1' },\n]\n\nfunction PlusIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-sender__prefix-icon\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 5v14\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M5 12h14\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nfunction VoiceIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-sender__suffix-icon\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 3a3 3 0 0 0-3 3v6a3 3 0 0 0 6 0V6a3 3 0 0 0-3-3Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M19 10v2a7 7 0 0 1-14 0v-2\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M12 19v3\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nfunction SendIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-sender__send-icon\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5 12h14\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n <path\n d=\"m13 6 6 6-6 6\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nfunction StopIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-sender__send-icon\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n height=\"8\"\n rx=\"1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n width=\"8\"\n x=\"8\"\n y=\"8\"\n />\n </svg>\n )\n}\n\nexport function SenderPrimitive({\n value,\n defaultValue = '',\n onChange,\n onSend,\n onCancel,\n onPrefixAction,\n onModelChange,\n onVoiceClick,\n loading = false,\n disabled = false,\n placeholder = '输入消息...',\n model,\n modelOptions = defaultModelOptions,\n prefix,\n suffix,\n className,\n}: SenderPrimitiveProps) {\n const [innerMessage, setInnerMessage] = useState(defaultValue)\n const controlled = value !== undefined\n const message = controlled ? value : innerMessage\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const prefixMenuRef = useRef<HTMLDivElement>(null)\n const modelMenuRef = useRef<HTMLDivElement>(null)\n const [prefixMenuOpen, setPrefixMenuOpen] = useState(false)\n const [modelMenuOpen, setModelMenuOpen] = useState(false)\n const [selectedModel, setSelectedModel] = useState(\n model ?? modelOptions[0]?.value ?? '',\n )\n\n useEffect(() => {\n const textarea = textareaRef.current\n\n if (!textarea) return\n\n textarea.style.height = 'auto'\n textarea.style.height = `${textarea.scrollHeight}px`\n }, [message])\n\n useEffect(() => {\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n\n if (!(target instanceof Node)) return\n\n if (!prefixMenuRef.current?.contains(target)) {\n setPrefixMenuOpen(false)\n }\n\n if (!modelMenuRef.current?.contains(target)) {\n setModelMenuOpen(false)\n }\n }\n\n document.addEventListener('pointerdown', handlePointerDown)\n\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown)\n }\n }, [])\n\n const handleMessageChange = (nextMessage: string) => {\n if (!controlled) {\n setInnerMessage(nextMessage)\n }\n\n onChange?.(nextMessage)\n }\n\n const handleSend = () => {\n const nextMessage = message.trim()\n\n if (!nextMessage || disabled || loading) return\n\n onSend?.(nextMessage)\n handleMessageChange('')\n }\n\n const handleAction = () => {\n if (loading) {\n onCancel?.()\n return\n }\n\n handleSend()\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key !== 'Enter' || event.shiftKey) return\n\n event.preventDefault()\n handleSend()\n }\n\n const handlePrefixAction = (action: SenderPrefixAction) => {\n onPrefixAction?.(action)\n setPrefixMenuOpen(false)\n }\n\n const selectedModelLabel =\n modelOptions.find((option) => option.value === selectedModel)?.label ??\n selectedModel\n\n const handleModelChange = (nextModel: string) => {\n setSelectedModel(nextModel)\n onModelChange?.(nextModel)\n setModelMenuOpen(false)\n }\n\n const handleVoiceClick = () => {\n if (disabled) return\n\n onVoiceClick?.()\n }\n\n return (\n <div\n className={className}\n data-disabled={disabled ? '' : undefined}\n data-loading={loading ? '' : undefined}\n >\n <textarea\n className=\"llm-sender__textarea\"\n disabled={disabled}\n onChange={(event) => handleMessageChange(event.target.value)}\n ref={textareaRef}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={1}\n value={message}\n />\n\n <div className=\"llm-sender__footer\">\n <div className=\"llm-sender__prefix\">\n {prefix ?? (\n <div className=\"llm-sender__prefix-menu\" ref={prefixMenuRef}>\n <button\n aria-expanded={prefixMenuOpen}\n aria-label=\"打开更多操作\"\n className=\"llm-sender__prefix-trigger\"\n disabled={disabled}\n onClick={() => setPrefixMenuOpen((open) => !open)}\n type=\"button\"\n >\n <PlusIcon />\n </button>\n {prefixMenuOpen ? (\n <div className=\"llm-sender__prefix-list\" role=\"menu\">\n {senderPrefixActions.map((action) => (\n <button\n className=\"llm-sender__prefix-item\"\n key={action.key}\n onClick={() => handlePrefixAction(action.key)}\n role=\"menuitem\"\n type=\"button\"\n >\n {action.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n )}\n </div>\n <div className=\"llm-sender__actions\">\n <div className=\"llm-sender__suffix\">\n {suffix ?? (\n <>\n <div className=\"llm-sender__model-menu\" ref={modelMenuRef}>\n <button\n aria-expanded={modelMenuOpen}\n className=\"llm-sender__suffix-button llm-sender__model\"\n disabled={disabled}\n onClick={() => setModelMenuOpen((open) => !open)}\n type=\"button\"\n >\n {selectedModelLabel}\n </button>\n {modelMenuOpen ? (\n <div className=\"llm-sender__model-list\" role=\"menu\">\n {modelOptions.map((option) => (\n <button\n aria-current={\n option.value === selectedModel ? 'true' : undefined\n }\n className=\"llm-sender__model-item\"\n key={option.value}\n onClick={() => handleModelChange(option.value)}\n role=\"menuitem\"\n type=\"button\"\n >\n {option.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n <button\n aria-label=\"语音输入\"\n className=\"llm-sender__suffix-button\"\n disabled={disabled}\n onClick={handleVoiceClick}\n type=\"button\"\n >\n <VoiceIcon />\n </button>\n </>\n )}\n </div>\n <button\n aria-label={loading ? '停止生成' : '发送消息'}\n className=\"llm-sender__send\"\n data-loading={loading ? '' : undefined}\n disabled={disabled || (!loading && !message.trim())}\n onClick={handleAction}\n type=\"button\"\n >\n {loading ? <StopIcon /> : <SendIcon />}\n </button>\n </div>\n </div>\n </div>\n )\n}\n","import { SenderPrimitive, type SenderPrimitiveProps } from './SenderPrimitive'\nimport cn from '../../utils/cn'\n\nexport type SenderProps = SenderPrimitiveProps\nexport type { SenderModelOption, SenderPrefixAction } from './SenderPrimitive'\n\nexport function Sender({ className, ...props }: SenderProps) {\n return <SenderPrimitive className={cn('llm-sender', className)} {...props} />\n}\n","import { useState, type CSSProperties } from 'react'\n\nexport interface ThinkPrimitiveProps {\n content?: string\n status?: 'thinking' | 'done'\n label?: string\n defaultOpen?: boolean\n className?: string\n style?: CSSProperties\n}\n\nfunction SparkIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-think__icon\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 3 9.9 8.2 5 10.1l4.9 1.9L12 17l2.1-5 4.9-1.9-4.9-1.9L12 3Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n <path\n d=\"m18 15-.9 2.1L15 18l2.1.9L18 21l.9-2.1L21 18l-2.1-.9L18 15Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nfunction ChevronIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-think__chevron\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m6 9 6 6 6-6\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nfunction ThinkingDots() {\n return (\n <span aria-hidden=\"true\" className=\"llm-think__dots\">\n <span />\n <span />\n <span />\n </span>\n )\n}\n\nexport function ThinkPrimitive({\n content,\n status = 'thinking',\n label,\n defaultOpen = true,\n className,\n style,\n}: ThinkPrimitiveProps) {\n const [open, setOpen] = useState(defaultOpen)\n const title = label ?? (status === 'thinking' ? '思考中' : '已完成思考')\n\n return (\n <section\n className={className}\n data-open={open ? '' : undefined}\n data-status={status}\n style={style}\n >\n <button\n aria-expanded={open}\n className=\"llm-think__header\"\n onClick={() => setOpen((nextOpen) => !nextOpen)}\n type=\"button\"\n >\n <span className=\"llm-think__title\">\n <SparkIcon />\n <span>{title}</span>\n {status === 'thinking' ? <ThinkingDots /> : null}\n </span>\n <ChevronIcon />\n </button>\n\n <div className=\"llm-think__content\" hidden={!open}>\n {content ? (\n <div className=\"llm-think__text\">{content}</div>\n ) : (\n <div className=\"llm-think__placeholder\">正在分析上下文与用户意图</div>\n )}\n </div>\n </section>\n )\n}\n","import { ThinkPrimitive, type ThinkPrimitiveProps } from './ThinkPrimitive'\nimport cn from '../../utils/cn'\n\nexport type ThinkProps = ThinkPrimitiveProps\n\nexport function Think({ className, ...props }: ThinkProps) {\n return <ThinkPrimitive className={cn('llm-think', className)} {...props} />\n}\n","import { useEffect, type CSSProperties, type ReactNode } from 'react'\n\nexport type NotificationType = 'success' | 'error' | 'loading'\n\nexport interface NotificationPrimitiveProps {\n type?: NotificationType\n title?: ReactNode\n description?: ReactNode\n duration?: number\n showProgress?: boolean\n closeable?: boolean\n icon?: ReactNode\n onClose?: () => void\n className?: string\n style?: CSSProperties\n}\n\nconst defaultTitleMap: Record<NotificationType, string> = {\n success: '操作成功',\n error: '操作失败',\n loading: '处理中',\n}\n\nfunction SuccessIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-notification__icon-svg\"\n fill=\"none\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n width=\"18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m6 12 4 4 8-8\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2.4\"\n />\n </svg>\n )\n}\n\nfunction ErrorIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-notification__icon-svg\"\n fill=\"none\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n width=\"18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m8 8 8 8\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"2.4\"\n />\n <path\n d=\"m16 8-8 8\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"2.4\"\n />\n </svg>\n )\n}\n\nfunction LoadingIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-notification__icon-svg llm-notification__icon-svg--loading\"\n fill=\"none\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n width=\"18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M21 12a9 9 0 1 1-3.2-6.9\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"2.4\"\n />\n </svg>\n )\n}\n\nfunction CloseIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-notification__close-icon\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m7 7 10 10\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"2\"\n />\n <path\n d=\"m17 7-10 10\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nfunction DefaultIcon({ type }: { type: NotificationType }) {\n if (type === 'success') return <SuccessIcon />\n if (type === 'error') return <ErrorIcon />\n return <LoadingIcon />\n}\n\nexport function NotificationPrimitive({\n type = 'success',\n title,\n description,\n duration = 4500,\n showProgress = false,\n closeable = true,\n icon,\n onClose,\n className,\n style,\n}: NotificationPrimitiveProps) {\n useEffect(() => {\n if (!duration || type === 'loading') return\n\n const timer = window.setTimeout(() => {\n onClose?.()\n }, duration)\n\n return () => {\n window.clearTimeout(timer)\n }\n }, [duration, onClose, type])\n\n return (\n <section\n aria-live={type === 'error' ? 'assertive' : 'polite'}\n className={className}\n data-type={type}\n role={type === 'error' ? 'alert' : 'status'}\n style={style}\n >\n <div className=\"llm-notification__icon\">\n {icon ?? <DefaultIcon type={type} />}\n </div>\n <div className=\"llm-notification__body\">\n <div className=\"llm-notification__title\">\n {title ?? defaultTitleMap[type]}\n </div>\n {description ? (\n <div className=\"llm-notification__description\">{description}</div>\n ) : null}\n </div>\n {closeable ? (\n <button\n aria-label=\"关闭通知\"\n className=\"llm-notification__close\"\n onClick={onClose}\n type=\"button\"\n >\n <CloseIcon />\n </button>\n ) : null}\n {showProgress && duration > 0 && type !== 'loading' ? (\n <div\n aria-hidden=\"true\"\n className=\"llm-notification__progress\"\n style={{ animationDuration: `${duration}ms` }}\n />\n ) : null}\n </section>\n )\n}\n","import {\n NotificationPrimitive,\n type NotificationPrimitiveProps,\n} from './NotificationPrimitive'\nimport cn from '../../utils/cn'\n\nexport type NotificationProps = NotificationPrimitiveProps\n\nexport interface NotificationItem extends NotificationProps {\n id: string\n}\n\nexport interface NotificationStackProps {\n items: NotificationItem[]\n onClose?: (id: string) => void\n className?: string\n}\n\nexport function Notification({ className, ...props }: NotificationProps) {\n return <NotificationPrimitive className={cn('llm-notification', className)} {...props} />\n}\n\nexport function NotificationStack({\n items,\n onClose,\n className,\n}: NotificationStackProps) {\n return (\n <div className={cn('llm-notification-stack', className)}>\n {items.map(({ id, onClose: itemOnClose, ...item }) => (\n <Notification\n key={id}\n {...item}\n onClose={() => {\n itemOnClose?.()\n onClose?.(id)\n }}\n />\n ))}\n </div>\n )\n}\n","import { useEffect, useState, type CSSProperties, type ReactNode } from 'react'\n\nexport type ActionVariant = 'default' | 'primary' | 'danger'\n\nexport interface ActionItem {\n key: string\n label: string\n icon?: ReactNode\n disabled?: boolean\n variant?: ActionVariant\n}\n\nexport interface ActionsPrimitiveProps {\n items: ActionItem[]\n onAction?: (key: string, item: ActionItem) => void\n copiedKey?: string\n copiedDuration?: number\n orientation?: 'horizontal' | 'vertical'\n size?: 'sm' | 'md'\n className?: string\n style?: CSSProperties\n}\n\nfunction CopyIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8 8.5V6a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.5\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n <path\n d=\"M4 10a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nfunction CheckIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m5 12.5 4.2 4.2L19 6.8\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nfunction ReloadIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 12a8 8 0 1 1-2.34-5.66L20 8.68M20 4v4.68h-4.68\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nfunction EditIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m4 20 4.8-1.2L19 8.6 15.4 5 5.2 15.2z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n <path\n d=\"m13.8 6.6 3.6 3.6\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nfunction ThumbsUpIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7 21H4a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1h3m0 10V10l4-7 1.4 1.4a3 3 0 0 1 .8 2.7L12.8 10H19a2 2 0 0 1 2 2.3l-1 6A3 3 0 0 1 17 21z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nfunction ThumbsDownIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M17 3h3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-3m0-10v11l-4 7-1.4-1.4a3 3 0 0 1-.8-2.7l.4-2.9H5a2 2 0 0 1-2-2.3l1-6A3 3 0 0 1 7 3z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nfunction SummaryIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5 5.5h14M5 10h10M5 14.5h7\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.8\"\n />\n <path\n d=\"m15 17 1.6 1.6L20 15\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nfunction PolishIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m4 20 6.2-1.4L19 9.8 14.2 5 5.4 13.8z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n <path\n d=\"M15.5 3.5 20.5 8.5M5 4.5h3M6.5 3v3M19 17h2M20 16v2\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nfunction ExplainCodeIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m8 9-3 3 3 3M16 9l3 3-3 3M13.5 6.5l-3 11\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nconst defaultIcons: Record<string, ReactNode> = {\n copy: <CopyIcon />,\n regenerate: <ReloadIcon />,\n reload: <ReloadIcon />,\n edit: <EditIcon />,\n correct: <EditIcon />,\n like: <ThumbsUpIcon />,\n dislike: <ThumbsDownIcon />,\n summary: <SummaryIcon />,\n polish: <PolishIcon />,\n 'explain-code': <ExplainCodeIcon />,\n}\n\nfunction getActionIcon(item: ActionItem, copied: boolean) {\n if (copied) return <CheckIcon />\n\n return item.icon ?? defaultIcons[item.key]\n}\n\nexport function ActionsPrimitive({\n items,\n onAction,\n copiedKey = 'copy',\n copiedDuration = 1800,\n orientation = 'horizontal',\n size = 'md',\n className,\n style,\n}: ActionsPrimitiveProps) {\n const [copied, setCopied] = useState(false)\n\n useEffect(() => {\n if (!copied) return\n\n const timer = window.setTimeout(() => setCopied(false), copiedDuration)\n\n return () => window.clearTimeout(timer)\n }, [copied, copiedDuration])\n\n const handleAction = (item: ActionItem) => {\n if (item.disabled) return\n\n if (item.key === copiedKey) {\n setCopied(true)\n }\n\n onAction?.(item.key, item)\n }\n\n return (\n <div\n className={className}\n data-orientation={orientation}\n data-size={size}\n role=\"toolbar\"\n style={style}\n >\n {items.map((item) => {\n const itemCopied = item.key === copiedKey && copied\n const icon = getActionIcon(item, itemCopied)\n\n return (\n <button\n aria-label={item.label}\n className=\"llm-actions__item\"\n data-copied={itemCopied ? '' : undefined}\n data-variant={item.variant}\n disabled={item.disabled}\n key={item.key}\n onClick={() => handleAction(item)}\n title={item.label}\n type=\"button\"\n >\n {icon ? <span className=\"llm-actions__icon\">{icon}</span> : null}\n <span className=\"llm-actions__label\">\n {itemCopied ? '已复制' : item.label}\n </span>\n </button>\n )\n })}\n </div>\n )\n}\n","import {\n ActionsPrimitive,\n type ActionsPrimitiveProps,\n} from './ActionsPrimitive'\nimport cn from '../../utils/cn'\n\nexport type ActionsProps = ActionsPrimitiveProps\nexport type { ActionItem, ActionVariant } from './ActionsPrimitive'\n\nexport function Actions({ className, ...props }: ActionsProps) {\n return (\n <ActionsPrimitive className={cn('llm-actions', className)} {...props} />\n )\n}\n","import { type ActionItem } from './ActionsPrimitive'\n\nexport type ActionPresetKey =\n | 'copy'\n | 'regenerate'\n | 'correct'\n | 'summary'\n | 'polish'\n | 'explain-code'\n\nexport const actionPresets: Record<ActionPresetKey, ActionItem> = {\n copy: { key: 'copy', label: '复制' },\n regenerate: { key: 'regenerate', label: '重新生成' },\n correct: { key: 'correct', label: '纠错' },\n summary: { key: 'summary', label: '总结' },\n polish: { key: 'polish', label: '润色' },\n 'explain-code': { key: 'explain-code', label: '解释代码' },\n}\n\nexport function createPresetActions(keys: ActionPresetKey[]) {\n return keys.map((key) => actionPresets[key])\n}\n","import { type CSSProperties, type ReactNode } from 'react'\n\nexport interface PromptItem {\n key: string\n title: ReactNode\n prompt?: string\n description?: ReactNode\n category?: ReactNode\n icon?: ReactNode\n disabled?: boolean\n}\n\nexport interface PromptsPrimitiveProps {\n items: PromptItem[]\n onPrompt?: (key: string, item: PromptItem) => void\n title?: ReactNode\n description?: ReactNode\n emptyText?: ReactNode\n columns?: 1 | 2 | 3\n className?: string\n style?: CSSProperties\n}\n\nexport function PromptsPrimitive({\n items,\n onPrompt,\n title,\n description,\n emptyText = '暂无提示词',\n columns = 2,\n className,\n style,\n}: PromptsPrimitiveProps) {\n const hasHeader = Boolean(title || description)\n\n const handlePrompt = (item: PromptItem) => {\n if (item.disabled) return\n\n onPrompt?.(item.key, item)\n }\n\n return (\n <section className={className} data-columns={columns} style={style}>\n {hasHeader ? (\n <div className=\"llm-prompts__header\">\n {title ? <div className=\"llm-prompts__title\">{title}</div> : null}\n {description ? (\n <div className=\"llm-prompts__description\">{description}</div>\n ) : null}\n </div>\n ) : null}\n\n {items.length > 0 ? (\n <div className=\"llm-prompts__list\">\n {items.map((item) => (\n <button\n aria-label={typeof item.title === 'string' ? item.title : undefined}\n className=\"llm-prompts__item\"\n disabled={item.disabled}\n key={item.key}\n onClick={() => handlePrompt(item)}\n type=\"button\"\n >\n {item.icon ? <span className=\"llm-prompts__icon\">{item.icon}</span> : null}\n <span className=\"llm-prompts__item-title\">{item.title}</span>\n </button>\n ))}\n </div>\n ) : (\n <div className=\"llm-prompts__empty\">{emptyText}</div>\n )}\n </section>\n )\n}\n","import { PromptsPrimitive, type PromptsPrimitiveProps } from './PromptsPrimitive'\nimport cn from '../../utils/cn'\n\nexport type PromptsProps = PromptsPrimitiveProps\nexport type { PromptItem } from './PromptsPrimitive'\n\nexport function Prompts({ className, ...props }: PromptsProps) {\n return <PromptsPrimitive className={cn('llm-prompts', className)} {...props} />\n}\n","import { useEffect, useRef, useState, type CSSProperties } from 'react'\n\nexport interface ConversationRecord {\n id: string\n title: string\n lastMessage?: string\n timestamp?: Date | string\n pinned?: boolean\n favorite?: boolean\n}\n\nexport interface ConversationItemPrimitiveProps {\n conversation: ConversationRecord\n active?: boolean\n onSelect?: (id: string) => void\n onDelete?: (id: string) => void\n onPin?: (id: string) => void\n onFavorite?: (id: string) => void\n className?: string\n style?: CSSProperties\n}\n\nfunction formatTimestamp(timestamp?: Date | string) {\n if (!timestamp) return undefined\n\n if (typeof timestamp === 'string') return timestamp\n\n return timestamp.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n })\n}\n\nfunction PinIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n width=\"14\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m14.5 4.5 5 5-3.2 3.2.8 5.4-1.2 1.2-4.4-4.4-4.7 4.7-2.4.8.8-2.4 4.7-4.7-4.4-4.4 1.2-1.2 5.4.8 3.2-3.2Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nfunction StarIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"currentColor\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n width=\"14\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"m12 3 2.7 5.47 6.03.88-4.36 4.25 1.03 6-5.4-2.84-5.4 2.84 1.03-6-4.36-4.25 6.03-.88L12 3Z\" />\n </svg>\n )\n}\n\nfunction MoreIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-conversation-item__menu-icon\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M19 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M5 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\nexport function ConversationItemPrimitive({\n conversation,\n active = false,\n onSelect,\n onDelete,\n onPin,\n onFavorite,\n className,\n style,\n}: ConversationItemPrimitiveProps) {\n const rootRef = useRef<HTMLElement>(null)\n const [menuOpen, setMenuOpen] = useState(false)\n const timestamp = formatTimestamp(conversation.timestamp)\n\n useEffect(() => {\n if (!menuOpen) return\n\n const handlePointerDown = (event: PointerEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n setMenuOpen(false)\n }\n }\n\n document.addEventListener('pointerdown', handlePointerDown)\n\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown)\n }\n }, [menuOpen])\n\n const handleAction = (action: 'pin' | 'favorite' | 'delete') => {\n if (action === 'pin') {\n onPin?.(conversation.id)\n }\n\n if (action === 'favorite') {\n onFavorite?.(conversation.id)\n }\n\n if (action === 'delete') {\n onDelete?.(conversation.id)\n }\n\n setMenuOpen(false)\n }\n\n return (\n <article\n ref={rootRef}\n className={className}\n data-active={active ? '' : undefined}\n data-favorite={conversation.favorite ? '' : undefined}\n data-pinned={conversation.pinned ? '' : undefined}\n style={style}\n >\n <button\n aria-current={active ? 'true' : undefined}\n className=\"llm-conversation-item__main\"\n onClick={() => onSelect?.(conversation.id)}\n type=\"button\"\n >\n <span className=\"llm-conversation-item__content\">\n <span className=\"llm-conversation-item__header\">\n <span className=\"llm-conversation-item__title\">\n {conversation.title}\n </span>\n {timestamp ? (\n <span className=\"llm-conversation-item__time\">{timestamp}</span>\n ) : null}\n </span>\n </span>\n </button>\n\n <div className=\"llm-conversation-item__actions\">\n {conversation.pinned ? (\n <button\n aria-label=\"取消置顶\"\n className=\"llm-conversation-item__status-button\"\n onClick={() => handleAction('pin')}\n type=\"button\"\n >\n <PinIcon />\n </button>\n ) : null}\n {conversation.favorite ? (\n <button\n aria-label=\"取消收藏\"\n className=\"llm-conversation-item__status-button\"\n onClick={() => handleAction('favorite')}\n type=\"button\"\n >\n <StarIcon />\n </button>\n ) : null}\n <button\n aria-expanded={menuOpen}\n aria-label=\"打开会话操作\"\n className=\"llm-conversation-item__menu-trigger\"\n onClick={() => setMenuOpen((open) => !open)}\n type=\"button\"\n >\n <MoreIcon />\n </button>\n {menuOpen ? (\n <div className=\"llm-conversation-item__menu\" role=\"menu\">\n <button\n className=\"llm-conversation-item__menu-item\"\n onClick={() => handleAction('pin')}\n role=\"menuitem\"\n type=\"button\"\n >\n {conversation.pinned ? '取消置顶' : '置顶'}\n </button>\n <button\n className=\"llm-conversation-item__menu-item\"\n onClick={() => handleAction('favorite')}\n role=\"menuitem\"\n type=\"button\"\n >\n {conversation.favorite ? '取消收藏' : '收藏'}\n </button>\n <button\n className=\"llm-conversation-item__menu-item\"\n data-danger=\"\"\n onClick={() => handleAction('delete')}\n role=\"menuitem\"\n type=\"button\"\n >\n 删除\n </button>\n </div>\n ) : null}\n </div>\n </article>\n )\n}\n","import {\n ConversationItemPrimitive,\n type ConversationItemPrimitiveProps,\n} from './ConversationItemPrimitive'\nimport cn from '../../utils/cn'\n\nexport type ConversationItemProps = ConversationItemPrimitiveProps\nexport type { ConversationRecord } from './ConversationItemPrimitive'\n\nexport function ConversationItem({\n className,\n ...props\n}: ConversationItemProps) {\n return (\n <ConversationItemPrimitive\n className={cn('llm-conversation-item', className)}\n {...props}\n />\n )\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type RefObject,\n} from 'react'\n\nexport type VirtualListKey = string | number\nexport type VirtualListAlign = 'start' | 'center' | 'end'\n\nexport interface UseVirtualListOptions<T> {\n items: T[]\n itemHeight: number\n overscan?: number\n enabled?: boolean\n getItemKey?: (item: T, index: number) => VirtualListKey\n}\n\nexport interface VirtualListItem<T> {\n item: T\n index: number\n key: VirtualListKey\n start: number\n size: number\n}\n\nexport interface UseVirtualListReturn<T> {\n containerRef: RefObject<HTMLDivElement | null>\n virtualItems: VirtualListItem<T>[]\n totalSize: number\n scrollToIndex: (index: number, align?: VirtualListAlign) => void\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max)\n}\n\nexport function useVirtualList<T>({\n items,\n itemHeight,\n overscan = 5,\n enabled = true,\n getItemKey,\n}: UseVirtualListOptions<T>): UseVirtualListReturn<T> {\n const containerRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [viewportHeight, setViewportHeight] = useState(0)\n const safeItemHeight = Math.max(1, itemHeight)\n const safeOverscan = Math.max(0, overscan)\n const totalSize = items.length * safeItemHeight\n\n useEffect(() => {\n if (!enabled) return\n\n const container = containerRef.current\n if (!container) return\n\n const updateViewportHeight = () => {\n setViewportHeight(container.clientHeight)\n }\n\n updateViewportHeight()\n\n if (typeof ResizeObserver === 'undefined') {\n return\n }\n\n const observer = new ResizeObserver(updateViewportHeight)\n observer.observe(container)\n\n return () => observer.disconnect()\n }, [enabled])\n\n useEffect(() => {\n if (!enabled) return\n\n const container = containerRef.current\n if (!container) return\n\n const handleScroll = () => {\n setScrollTop(container.scrollTop)\n }\n\n handleScroll()\n container.addEventListener('scroll', handleScroll, { passive: true })\n\n return () => container.removeEventListener('scroll', handleScroll)\n }, [enabled])\n\n const virtualItems = useMemo(() => {\n const listItems: VirtualListItem<T>[] = []\n\n if (!enabled) {\n for (let index = 0; index < items.length; index += 1) {\n const item = items[index]\n if (item === undefined) continue\n\n listItems.push({\n item,\n index,\n key: getItemKey?.(item, index) ?? index,\n start: index * safeItemHeight,\n size: safeItemHeight,\n })\n }\n\n return listItems\n }\n\n const startIndex = clamp(\n Math.floor(scrollTop / safeItemHeight) - safeOverscan,\n 0,\n items.length,\n )\n const endIndex = clamp(\n Math.ceil((scrollTop + viewportHeight) / safeItemHeight) + safeOverscan,\n startIndex,\n items.length,\n )\n\n for (let index = startIndex; index < endIndex; index += 1) {\n const item = items[index]\n if (item === undefined) continue\n\n listItems.push({\n item,\n index,\n key: getItemKey?.(item, index) ?? index,\n start: index * safeItemHeight,\n size: safeItemHeight,\n })\n }\n\n return listItems\n }, [\n enabled,\n getItemKey,\n items,\n safeItemHeight,\n safeOverscan,\n scrollTop,\n viewportHeight,\n ])\n\n const scrollToIndex = useCallback(\n (index: number, align: VirtualListAlign = 'start') => {\n const container = containerRef.current\n if (!container) return\n\n const clampedIndex = clamp(index, 0, Math.max(0, items.length - 1))\n const itemStart = clampedIndex * safeItemHeight\n const itemEnd = itemStart + safeItemHeight\n const maxScrollTop = Math.max(0, totalSize - container.clientHeight)\n let nextScrollTop = itemStart\n\n if (align === 'center') {\n nextScrollTop =\n itemStart - (container.clientHeight - safeItemHeight) / 2\n }\n\n if (align === 'end') {\n nextScrollTop = itemEnd - container.clientHeight\n }\n\n container.scrollTo({\n top: clamp(nextScrollTop, 0, maxScrollTop),\n behavior: 'smooth',\n })\n },\n [items.length, safeItemHeight, totalSize],\n )\n\n return {\n containerRef,\n virtualItems,\n totalSize,\n scrollToIndex,\n }\n}\n","import { useMemo, useState, type CSSProperties, type ReactNode } from 'react'\n\nimport { ConversationItem } from './ConversationItem'\nimport { type ConversationRecord } from './ConversationItemPrimitive'\nimport { useVirtualList } from '../../hooks/useVirtualList'\n\nexport interface ConversationListPrimitiveProps {\n conversations: ConversationRecord[]\n activeId?: string\n onSelect?: (id: string) => void\n onDelete?: (id: string) => void\n onPin?: (id: string) => void\n onFavorite?: (id: string) => void\n onCollapsedChange?: (collapsed: boolean) => void\n onNewConversation?: () => void\n collapsed?: boolean\n searchable?: boolean\n searchPlaceholder?: string\n title?: ReactNode\n emptyText?: ReactNode\n virtualized?: boolean\n itemHeight?: number\n overscan?: number\n className?: string\n style?: CSSProperties\n}\n\nfunction normalizeSearchText(value: string) {\n return value.trim().toLowerCase()\n}\n\nfunction SearchIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m20 20-4.3-4.3m1.8-5.2a7 7 0 1 1-14 0 7 7 0 0 1 14 0Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n />\n </svg>\n )\n}\n\nexport function ConversationListPrimitive({\n conversations,\n activeId,\n onSelect,\n onDelete,\n onPin,\n onFavorite,\n onCollapsedChange,\n onNewConversation,\n collapsed = false,\n searchable = false,\n searchPlaceholder = '搜索会话...',\n title,\n emptyText,\n virtualized = false,\n itemHeight = 56,\n overscan = 6,\n className,\n style,\n}: ConversationListPrimitiveProps) {\n const [searchOpen, setSearchOpen] = useState(false)\n const [searchValue, setSearchValue] = useState('')\n const keyword = normalizeSearchText(searchValue)\n\n const visibleConversations = useMemo(() => {\n const filteredConversations = keyword\n ? conversations.filter((conversation) => {\n const titleMatched = conversation.title\n .toLowerCase()\n .includes(keyword)\n const messageMatched =\n conversation.lastMessage?.toLowerCase().includes(keyword) ?? false\n\n return titleMatched || messageMatched\n })\n : conversations\n\n return filteredConversations\n .map((conversation, index) => ({ conversation, index }))\n .sort((a, b) => {\n if (a.conversation.pinned === b.conversation.pinned) {\n return a.index - b.index\n }\n\n return a.conversation.pinned ? -1 : 1\n })\n .map(({ conversation }) => conversation)\n }, [conversations, keyword])\n\n const resolvedEmptyText =\n emptyText ?? (keyword ? '未找到相关会话' : '暂无会话')\n const { containerRef, totalSize, virtualItems } = useVirtualList({\n items: visibleConversations,\n itemHeight,\n overscan,\n enabled: virtualized,\n getItemKey: (conversation) => conversation.id,\n })\n\n return (\n <aside\n className={className}\n data-collapsed={collapsed ? '' : undefined}\n data-virtualized={virtualized ? '' : undefined}\n style={style}\n >\n <div className=\"llm-conversation-list__header\">\n <div className=\"llm-conversation-list__toolbar\">\n <button\n aria-label={collapsed ? '打开边栏' : '关闭边栏'}\n className=\"llm-conversation-list__icon-button\"\n onClick={() => onCollapsedChange?.(!collapsed)}\n type=\"button\"\n >\n {collapsed ? '›' : '‹'}\n </button>\n <div className=\"llm-conversation-list__toolbar-actions\">\n {searchable && !collapsed ? (\n <button\n aria-expanded={searchOpen}\n aria-label=\"搜索会话\"\n className=\"llm-conversation-list__icon-button\"\n onClick={() => setSearchOpen((open) => !open)}\n type=\"button\"\n >\n <SearchIcon />\n </button>\n ) : null}\n <button\n aria-label=\"打开新聊天\"\n className=\"llm-conversation-list__icon-button\"\n onClick={onNewConversation}\n type=\"button\"\n >\n +\n </button>\n </div>\n </div>\n {title ? (\n <div className=\"llm-conversation-list__title\">{title}</div>\n ) : null}\n {searchable && searchOpen && !collapsed ? (\n <label className=\"llm-conversation-list__search\">\n <span className=\"llm-conversation-list__search-label\">\n 搜索会话\n </span>\n <input\n aria-label=\"搜索会话\"\n className=\"llm-conversation-list__search-input\"\n onChange={(event) => setSearchValue(event.target.value)}\n placeholder={searchPlaceholder}\n type=\"search\"\n value={searchValue}\n />\n </label>\n ) : null}\n </div>\n\n {!collapsed ? (\n <div className=\"llm-conversation-list__body\" ref={containerRef}>\n {visibleConversations.length > 0 ? (\n <div\n className=\"llm-conversation-list__items\"\n data-virtualized={virtualized ? '' : undefined}\n role=\"list\"\n style={virtualized ? { height: totalSize } : undefined}\n >\n {(virtualized\n ? virtualItems\n : visibleConversations.map((conversation, index) => ({\n item: conversation,\n index,\n key: conversation.id,\n start: index * itemHeight,\n size: itemHeight,\n }))\n ).map((virtualItem) => (\n <div\n className=\"llm-conversation-list__item\"\n data-virtualized={virtualized ? '' : undefined}\n key={virtualItem.key}\n role=\"listitem\"\n style={\n virtualized\n ? {\n height: virtualItem.size,\n transform: `translateY(${virtualItem.start}px)`,\n }\n : undefined\n }\n >\n <ConversationItem\n active={virtualItem.item.id === activeId}\n conversation={virtualItem.item}\n {...(onSelect && { onSelect })}\n {...(onDelete && { onDelete })}\n {...(onFavorite && { onFavorite })}\n {...(onPin && { onPin })}\n />\n </div>\n ))}\n </div>\n ) : (\n <div className=\"llm-conversation-list__empty\">\n {resolvedEmptyText}\n </div>\n )}\n </div>\n ) : null}\n </aside>\n )\n}\n","import {\n ConversationListPrimitive,\n type ConversationListPrimitiveProps,\n} from './ConversationListPrimitive'\nimport cn from '../../utils/cn'\n\nexport type ConversationListProps = ConversationListPrimitiveProps\n\nexport function ConversationList({\n className,\n ...props\n}: ConversationListProps) {\n return (\n <ConversationListPrimitive\n className={cn('llm-conversation-list', className)}\n {...props}\n />\n )\n}\n","import { type CSSProperties, type ReactNode } from 'react'\n\nimport { Bubble } from '../bubble/Bubble'\nimport { type LLMRole, type messageStatus } from '../../types/common'\nimport { useVirtualList } from '../../hooks/useVirtualList'\n\nexport interface MessageRecord {\n id: string\n role: LLMRole\n content?: string\n avatar?: ReactNode\n timestamp?: Date | string\n status?: messageStatus\n loading?: boolean\n actions?: ReactNode\n}\n\nexport interface MessageListPrimitiveProps {\n messages: MessageRecord[]\n virtualized?: boolean\n itemHeight?: number\n overscan?: number\n emptyText?: ReactNode\n renderMessage?: (message: MessageRecord, index: number) => ReactNode\n role?: 'log' | 'list'\n ariaLabel?: string\n className?: string\n style?: CSSProperties\n}\n\nfunction defaultRenderMessage(message: MessageRecord) {\n return (\n <Bubble\n role={message.role}\n {...(message.actions && { actions: message.actions })}\n {...(message.avatar && { avatar: message.avatar })}\n {...(message.content && { content: message.content })}\n {...(message.loading !== undefined && { loading: message.loading })}\n {...(message.status && { status: message.status })}\n {...(message.timestamp && { timestamp: message.timestamp })}\n />\n )\n}\n\nexport function MessageListPrimitive({\n messages,\n virtualized = false,\n itemHeight = 112,\n overscan = 5,\n emptyText = '暂无消息',\n renderMessage,\n role = 'log',\n ariaLabel = '消息列表',\n className,\n style,\n}: MessageListPrimitiveProps) {\n const { containerRef, totalSize, virtualItems } = useVirtualList({\n items: messages,\n itemHeight,\n overscan,\n enabled: virtualized,\n getItemKey: (message) => message.id,\n })\n const isLog = role === 'log'\n const listItems = virtualized\n ? virtualItems\n : messages.map((message, index) => ({\n item: message,\n index,\n key: message.id,\n start: index * itemHeight,\n size: itemHeight,\n }))\n\n return (\n <section\n aria-label={ariaLabel}\n aria-live={isLog ? 'polite' : undefined}\n className={className}\n data-virtualized={virtualized ? '' : undefined}\n role={role}\n style={style}\n >\n <div className=\"llm-message-list__body\" ref={containerRef}>\n {messages.length > 0 ? (\n <div\n className=\"llm-message-list__items\"\n data-virtualized={virtualized ? '' : undefined}\n role={isLog ? undefined : 'list'}\n style={virtualized ? { height: totalSize } : undefined}\n >\n {listItems.map((virtualItem) => (\n <div\n className=\"llm-message-list__item\"\n data-virtualized={virtualized ? '' : undefined}\n key={virtualItem.key}\n role={isLog ? 'article' : 'listitem'}\n style={\n virtualized\n ? {\n height: virtualItem.size,\n transform: `translateY(${virtualItem.start}px)`,\n }\n : undefined\n }\n >\n {renderMessage\n ? renderMessage(virtualItem.item, virtualItem.index)\n : defaultRenderMessage(virtualItem.item)}\n </div>\n ))}\n </div>\n ) : (\n <div className=\"llm-message-list__empty\">{emptyText}</div>\n )}\n </div>\n </section>\n )\n}\n","import {\n MessageListPrimitive,\n type MessageListPrimitiveProps,\n} from './MessageListPrimitive'\nimport cn from '../../utils/cn'\n\nexport type MessageListProps = MessageListPrimitiveProps\nexport type { MessageRecord } from './MessageListPrimitive'\n\nexport function MessageList({ className, ...props }: MessageListProps) {\n return (\n <MessageListPrimitive\n className={cn('llm-message-list', className)}\n {...props}\n />\n )\n}\n","import { useState, type CSSProperties, type ReactNode } from 'react'\n\nexport type ThoughtStatus =\n | 'pending'\n | 'loading'\n | 'success'\n | 'error'\n | 'abort'\n\nexport interface ThoughtItem {\n key: string\n title: ReactNode\n description?: ReactNode\n content?: ReactNode\n footer?: ReactNode\n status?: ThoughtStatus\n icon?: ReactNode | false\n collapsible?: boolean\n defaultOpen?: boolean\n children?: ThoughtItem[]\n}\n\nexport interface ThoughtPrimitiveProps {\n items: ThoughtItem[]\n title?: ReactNode\n description?: ReactNode\n defaultExpandedKeys?: string[]\n expandedKeys?: string[]\n onExpand?: (expandedKeys: string[], item: ThoughtItem) => void\n line?: boolean\n compact?: boolean\n emptyText?: ReactNode\n className?: string\n style?: CSSProperties\n}\n\nfunction ChevronIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-thought__chevron\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m9 6 6 6-6 6\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nfunction StatusIcon({ status }: { status: ThoughtStatus }) {\n if (status === 'loading') {\n return (\n <span aria-hidden=\"true\" className=\"llm-thought__spinner\">\n <span />\n </span>\n )\n }\n\n if (status === 'success') {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n width=\"14\"\n >\n <path\n d=\"m5 12.5 4.2 4.2L19 6.8\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2.4\"\n />\n </svg>\n )\n }\n\n if (status === 'error') {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n width=\"14\"\n >\n <path\n d=\"m7 7 10 10M17 7 7 17\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"2.4\"\n />\n </svg>\n )\n }\n\n if (status === 'abort') {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n width=\"14\"\n >\n <path\n d=\"M7 12h10\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"2.4\"\n />\n </svg>\n )\n }\n\n return <span aria-hidden=\"true\" className=\"llm-thought__pending-dot\" />\n}\n\nfunction hasExpandableContent(item: ThoughtItem) {\n return Boolean(item.status === 'loading' && item.content)\n}\n\ninterface ThoughtNodeProps {\n item: ThoughtItem\n depth: number\n line: boolean\n isExpanded: (key: string) => boolean\n onToggle: (item: ThoughtItem) => void\n}\n\nfunction ThoughtNode({\n item,\n depth,\n line,\n isExpanded,\n onToggle,\n}: ThoughtNodeProps) {\n const status = item.status ?? 'pending'\n const expandable = item.collapsible ?? hasExpandableContent(item)\n const expanded = expandable && isExpanded(item.key)\n const nodeId = `llm-thought-node-${item.key}`\n const contentId = `llm-thought-content-${item.key}`\n\n return (\n <li className=\"llm-thought__item\" data-depth={depth} data-status={status}>\n <div className=\"llm-thought__rail\" data-line={line ? '' : undefined}>\n {item.icon === false ? null : (\n <span className=\"llm-thought__icon\">\n {item.icon ?? <StatusIcon status={status} />}\n </span>\n )}\n </div>\n\n <div className=\"llm-thought__node\">\n <div className=\"llm-thought__header\">\n <div className=\"llm-thought__heading\" id={nodeId}>\n <span className=\"llm-thought__item-title\">{item.title}</span>\n </div>\n\n {expandable ? (\n <button\n aria-controls={contentId}\n aria-expanded={expanded}\n aria-labelledby={nodeId}\n className=\"llm-thought__toggle\"\n onClick={() => onToggle(item)}\n type=\"button\"\n >\n <ChevronIcon />\n </button>\n ) : null}\n </div>\n\n {hasExpandableContent(item) ? (\n <div\n className=\"llm-thought__content\"\n hidden={!expanded}\n id={contentId}\n >\n {status === 'loading' && item.content ? (\n <div className=\"llm-thought__body\">{item.content}</div>\n ) : null}\n </div>\n ) : null}\n </div>\n </li>\n )\n}\n\ninterface ThoughtListProps {\n items: ThoughtItem[]\n depth: number\n line: boolean\n isExpanded: (key: string) => boolean\n onToggle: (item: ThoughtItem) => void\n}\n\nfunction ThoughtList({\n items,\n depth,\n line,\n isExpanded,\n onToggle,\n}: ThoughtListProps) {\n return (\n <ol className=\"llm-thought__list\">\n {items.map((item) => (\n <ThoughtNode\n depth={depth}\n isExpanded={isExpanded}\n item={item}\n key={item.key}\n line={line}\n onToggle={onToggle}\n />\n ))}\n </ol>\n )\n}\n\nexport function ThoughtPrimitive({\n items,\n title,\n description,\n defaultExpandedKeys,\n expandedKeys,\n onExpand,\n line = true,\n compact = false,\n emptyText = '暂无思考步骤',\n className,\n style,\n}: ThoughtPrimitiveProps) {\n const [innerExpandedKeys, setInnerExpandedKeys] = useState(\n () => defaultExpandedKeys ?? [],\n )\n const mergedExpandedKeys = expandedKeys ?? innerExpandedKeys\n const hasHeader = Boolean(title || description)\n\n const isExpanded = (key: string) => mergedExpandedKeys.includes(key)\n\n const handleToggle = (item: ThoughtItem) => {\n const nextExpandedKeys = isExpanded(item.key)\n ? mergedExpandedKeys.filter((key) => key !== item.key)\n : [...mergedExpandedKeys, item.key]\n\n if (!expandedKeys) setInnerExpandedKeys(nextExpandedKeys)\n onExpand?.(nextExpandedKeys, item)\n }\n\n return (\n <section\n className={className}\n data-compact={compact ? '' : undefined}\n style={style}\n >\n {hasHeader ? (\n <div className=\"llm-thought__section-header\">\n {title ? <div className=\"llm-thought__title\">{title}</div> : null}\n {description ? (\n <div className=\"llm-thought__summary\">{description}</div>\n ) : null}\n </div>\n ) : null}\n\n {items.length > 0 ? (\n <ThoughtList\n depth={0}\n isExpanded={isExpanded}\n items={items}\n line={line}\n onToggle={handleToggle}\n />\n ) : (\n <div className=\"llm-thought__empty\">{emptyText}</div>\n )}\n </section>\n )\n}\n","import {\n ThoughtPrimitive,\n type ThoughtPrimitiveProps,\n} from './ThoughtPrimitive'\nimport cn from '../../utils/cn'\n\nexport type ThoughtProps = ThoughtPrimitiveProps\nexport type { ThoughtItem, ThoughtStatus } from './ThoughtPrimitive'\n\nexport function Thought({ className, ...props }: ThoughtProps) {\n return (\n <ThoughtPrimitive className={cn('llm-thought', className)} {...props} />\n )\n}\n","import { useState, type CSSProperties, type ReactNode } from 'react'\n\nexport interface CitationItem {\n key: string\n title: ReactNode\n description?: ReactNode\n url?: string\n icon?: ReactNode\n}\n\nexport interface CitationPrimitiveProps {\n items: CitationItem[]\n title?: ReactNode\n defaultExpanded?: boolean\n expanded?: boolean\n onExpand?: (expanded: boolean) => void\n onCitation?: (key: string, item: CitationItem) => void\n emptyText?: ReactNode\n className?: string\n style?: CSSProperties\n}\n\nexport interface CitationInlinePrimitiveProps {\n item: CitationItem\n index?: number\n active?: boolean\n onCitation?: (key: string, item: CitationItem) => void\n className?: string\n style?: CSSProperties\n}\n\nfunction ChevronIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"llm-citation__chevron\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m6 9 6 6 6-6\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n )\n}\n\nfunction getHost(url?: string) {\n if (!url) return undefined\n\n try {\n return new URL(url).host\n } catch {\n return url\n }\n}\n\nfunction CitationPreview({ item }: { item: CitationItem }) {\n return (\n <span className=\"llm-citation__preview\" role=\"tooltip\">\n <span className=\"llm-citation__preview-title\">{item.title}</span>\n {item.description ? (\n <span className=\"llm-citation__preview-description\">\n {item.description}\n </span>\n ) : null}\n {item.url ? (\n <span className=\"llm-citation__preview-url\">{getHost(item.url)}</span>\n ) : null}\n </span>\n )\n}\n\nexport function CitationInlinePrimitive({\n item,\n index = 1,\n active = false,\n onCitation,\n className,\n style,\n}: CitationInlinePrimitiveProps) {\n const label = `引用来源 ${index}`\n\n const handleClick = () => {\n onCitation?.(item.key, item)\n }\n\n return (\n <span\n className={className}\n data-active={active ? '' : undefined}\n style={style}\n >\n <button\n aria-label={label}\n className=\"llm-citation__inline-trigger\"\n onClick={handleClick}\n type=\"button\"\n >\n [{index}]\n </button>\n <CitationPreview item={item} />\n </span>\n )\n}\n\nexport function CitationPrimitive({\n items,\n title,\n defaultExpanded = true,\n expanded,\n onExpand,\n onCitation,\n emptyText = '暂无引用来源',\n className,\n style,\n}: CitationPrimitiveProps) {\n const [innerExpanded, setInnerExpanded] = useState(defaultExpanded)\n const mergedExpanded = expanded ?? innerExpanded\n const heading = title ?? `Used ${items.length} sources`\n\n const handleExpand = () => {\n const nextExpanded = !mergedExpanded\n\n if (expanded === undefined) setInnerExpanded(nextExpanded)\n onExpand?.(nextExpanded)\n }\n\n const handleCitation = (item: CitationItem) => {\n onCitation?.(item.key, item)\n }\n\n return (\n <section\n className={className}\n data-expanded={mergedExpanded ? '' : undefined}\n style={style}\n >\n <button\n aria-expanded={mergedExpanded}\n className=\"llm-citation__header\"\n onClick={handleExpand}\n type=\"button\"\n >\n <span className=\"llm-citation__title\">{heading}</span>\n <ChevronIcon />\n </button>\n\n <div className=\"llm-citation__content\" hidden={!mergedExpanded}>\n {items.length > 0 ? (\n <ul className=\"llm-citation__list\">\n {items.map((item) => (\n <li className=\"llm-citation__item\" key={item.key}>\n <button\n className=\"llm-citation__item-button\"\n onClick={() => handleCitation(item)}\n type=\"button\"\n >\n {item.icon ? <span className=\"llm-citation__item-icon\">{item.icon}</span> : null}\n <span className=\"llm-citation__item-title\">{item.title}</span>\n </button>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"llm-citation__empty\">{emptyText}</div>\n )}\n </div>\n </section>\n )\n}\n","import {\n CitationInlinePrimitive,\n CitationPrimitive,\n type CitationInlinePrimitiveProps,\n type CitationPrimitiveProps,\n} from './CitationPrimitive'\nimport cn from '../../utils/cn'\n\nexport type CitationProps = CitationPrimitiveProps\nexport type CitationInlineProps = CitationInlinePrimitiveProps\nexport type { CitationItem } from './CitationPrimitive'\n\nexport function Citation({ className, ...props }: CitationProps) {\n return (\n <CitationPrimitive className={cn('llm-citation', className)} {...props} />\n )\n}\n\nfunction CitationInline({ className, ...props }: CitationInlineProps) {\n return (\n <CitationInlinePrimitive\n className={cn('llm-citation-inline', className)}\n {...props}\n />\n )\n}\n\nCitation.Inline = CitationInline\n","import type { Locale } from './type'\n\nconst zhCN: Locale = {\n think: {\n loading: '思考中...',\n done: '已完成',\n },\n sender: {\n placeholder: '输入消息...',\n send: '发送',\n },\n}\n\nexport default zhCN\n","import type { Locale } from './type'\n\nconst enUS: Locale = {\n think: {\n loading: 'Thinking...',\n done: 'Done',\n },\n sender: {\n placeholder: 'Type a message...',\n send: 'Send',\n },\n}\n\nexport default enUS\n","import { createContext } from 'react'\nimport { type ConfigContextValue } from '../../types/config'\n\nexport const configContext = createContext<ConfigContextValue | undefined>(\n undefined,\n)\n","import {\r\n type ConfigContextValue,\r\n type ConfigProviderProps,\r\n} from '../../types/config'\r\nimport { useState } from 'react'\r\nimport zhCN from '../../locale/zh-CN'\r\nimport enUS from '../../locale/en-US'\r\nimport { configContext } from './configContext'\r\n\r\nexport function ConfigProvider({\r\n theme,\r\n locale,\r\n ai,\r\n children,\r\n components\r\n}: ConfigProviderProps) {\r\n const [themeState, setThemeState] = useState({\r\n mode: theme?.mode ?? 'system',\r\n primaryColor: theme?.primaryColor ?? 'oklch(0.205 0 0)',\r\n })\r\n\r\n const setTheme = (newTheme: { mode?: 'light' | 'dark' | 'system'; primaryColor?: string }) => {\r\n setThemeState(prev => ({ ...prev, ...newTheme }))\r\n }\r\n\r\nconst value: ConfigContextValue = {\r\n theme: themeState,\r\n setTheme,\r\n locale:\r\n typeof locale === 'string'\r\n ? locale === 'en-US'\r\n ? enUS\r\n : zhCN\r\n : (locale ?? zhCN),\r\n ...(ai && { ai }),\r\n ...(components && { components }),\r\n }\r\n const resolveMode =\r\n value.theme.mode === 'system'\r\n ? window.matchMedia('(prefers-color-scheme: dark)').matches\r\n ? 'dark'\r\n : 'light'\r\n : value.theme.mode\r\n\r\n document.documentElement.setAttribute('data-theme', resolveMode)\r\n\r\n return (\r\n <configContext.Provider value={value}>{children}</configContext.Provider>\r\n )\r\n}\r\n","import { useContext } from 'react'\r\nimport { configContext } from '../components/config-provider/configContext'\r\n\r\nexport function useConfig() {\r\n const context = useContext(configContext)\r\n if (!context) {\r\n throw new Error('useConfig 必须在 ConfigProvider 内部使用')\r\n }\r\n return context\r\n}\r\n","import { useConfig } from './useConfig'\r\n\r\nexport function useLocale() {\r\n const context = useConfig()\r\n return context.locale\r\n \r\n}\r\n","import { useConfig } from './useConfig'\n\nexport function useTheme() {\n const context = useConfig()\n\n const setMode = (mode: 'light' | 'dark' | 'system') => {\n context.setTheme({ mode })\n }\n\n const isDark =\n context.theme.mode === 'system'\n ? window.matchMedia('(prefers-color-scheme: dark)').matches\n : context.theme.mode === 'dark'\n\n return {\n mode: context.theme.mode,\n isDark,\n setMode,\n primaryColor: context.theme.primaryColor,\n }\n}\n","import { useCallback, useRef, useState } from 'react'\n\nexport type StreamState = 'idle' | 'streaming' | 'error' | 'complete'\n\nexport interface StreamStartOptions {\n onComplete?: (content: string) => void\n onError?: () => void\n onToken?: (content: string, token: string) => void\n}\n\nexport function useStream() {\n const [state, setState] = useState<StreamState>('idle')\n const [content, setContent] = useState('')\n const abortRef = useRef(new AbortController())\n\n const start = useCallback(\n async (generator: AsyncGenerator<string>, options?: StreamStartOptions) => {\n abortRef.current = new AbortController()\n setState('streaming')\n setContent('')\n\n let nextContent = ''\n\n try {\n for await (const token of generator) {\n if (abortRef.current.signal.aborted) break\n\n nextContent += token\n setContent(nextContent)\n options?.onToken?.(nextContent, token)\n }\n\n if (!abortRef.current.signal.aborted) {\n setState('complete')\n options?.onComplete?.(nextContent)\n }\n } catch {\n setState('error')\n options?.onError?.()\n }\n },\n [],\n )\n\n const cancel = useCallback(() => {\n abortRef.current.abort()\n setState('idle')\n }, [])\n\n return { content, state, start, cancel }\n}\n","export async function* streamToGenerator(\n stream: ReadableStream<Uint8Array>,\n encoding: string = 'utf-8',\n): AsyncGenerator<string> {\n const reader = stream.getReader()\n const decoder = new TextDecoder(encoding)\n\n try {\n while (true) {\n const { value, done } = await reader.read()\n if (done) break\n yield decoder.decode(value, { stream: true })\n }\n } finally {\n reader.releaseLock()\n }\n}\n\nexport function generatorToStream(\n gen: AsyncGenerator<string>,\n): ReadableStream<Uint8Array> {\n const encoder = new TextEncoder()\n\n return new ReadableStream({\n async pull(controller) {\n const { value, done } = await gen.next()\n if (done) {\n controller.close()\n } else {\n controller.enqueue(encoder.encode(value))\n }\n },\n })\n}\n\nexport async function* mockStream(\n text: string,\n delay: number = 50,\n): AsyncGenerator<string> {\n for (const char of text) {\n yield char\n await new Promise((resolve) => setTimeout(resolve, delay))\n }\n}\n"]}