@chat-lab/ui 0.1.0-beta.80 → 0.1.0-beta.82

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.
@@ -100,7 +100,6 @@ const ComposerAction = ({ disabled, disabledReason, }) => {
100
100
  const plugins = ChatkitContext.useChatkitPlugins();
101
101
  const { controller } = ChatkitContext.useChatkitContext();
102
102
  const cancel = ahooks.useMemoizedFn(() => {
103
- console.log('cancel');
104
103
  controller?.abortMessage();
105
104
  });
106
105
  const { t } = I18nContext.useI18n();
@@ -157,7 +156,7 @@ const EditComposer = () => {
157
156
  const BranchPicker = ({ className, ...rest }) => (jsxRuntime.jsxs(react$1.BranchPickerPrimitive.Root, { hideWhenSingleBranch: true, className: utils.cn('aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground', className), ...rest, children: [jsxRuntime.jsx(react$1.BranchPickerPrimitive.Previous, { asChild: true, children: jsxRuntime.jsx(tooltipIconButton.TooltipIconButton, { tooltip: "Previous", children: jsxRuntime.jsx(lucideReact.ChevronLeftIcon, {}) }) }), jsxRuntime.jsxs("span", { className: "aui-branch-picker-state font-medium", children: [jsxRuntime.jsx(react$1.BranchPickerPrimitive.Number, {}), ' ', "/", jsxRuntime.jsx(react$1.BranchPickerPrimitive.Count, {})] }), jsxRuntime.jsx(react$1.BranchPickerPrimitive.Next, { asChild: true, children: jsxRuntime.jsx(tooltipIconButton.TooltipIconButton, { tooltip: "Next", children: jsxRuntime.jsx(lucideReact.ChevronRightIcon, {}) }) })] }));
158
157
  const UserMessage = () => {
159
158
  const { threadMaxWidth } = ChatkitContext.useChatkitContext();
160
- return (jsxRuntime.jsx(react$1.MessagePrimitive.Root, { asChild: true, children: jsxRuntime.jsxs("div", { style: { maxWidth: threadMaxWidth }, className: "aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group", "data-role": "user", children: [jsxRuntime.jsx(attachment.UserMessageAttachments, {}), jsxRuntime.jsx("div", { className: "aui-user-message-content-wrapper relative col-start-2 min-w-0", children: jsxRuntime.jsx("div", { className: "aui-user-message-content bg-muted px-[12px] py-[10px] break-words text-foreground bg-[#EDEFFC] rounded-[8px]", children: jsxRuntime.jsx(react$1.MessagePrimitive.Parts, { components: userMessageComponents }) }) })] }) }));
159
+ return (jsxRuntime.jsx(react$1.MessagePrimitive.Root, { asChild: true, children: jsxRuntime.jsxs("div", { style: { maxWidth: threadMaxWidth }, className: "aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group", "data-role": "user", children: [jsxRuntime.jsx(attachment.UserMessageAttachments, {}), jsxRuntime.jsx("div", { className: "aui-user-message-content-wrapper relative col-start-2 min-w-0", children: jsxRuntime.jsx("div", { className: "aui-user-message-content bg-muted px-[12px] py-[10px] break-words text-foreground bg-[#EDEFFC] rounded-[8px] max-w-[720px] leading-[24px]", children: jsxRuntime.jsx(react$1.MessagePrimitive.Parts, { components: userMessageComponents }) }) })] }) }));
161
160
  };
162
161
 
163
162
  exports.Thread = Thread;
@@ -1 +1 @@
1
- {"version":3,"file":"thread.cjs","sources":["../../../src/components/assistant-ui/thread.tsx"],"sourcesContent":["import {\n ArrowDownIcon,\n ArrowUpIcon,\n CheckIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n PencilIcon,\n Square,\n Share2Icon, // 添加分享图标\n MoreHorizontalIcon,\n LoaderCircle,\n Mic,\n} from 'lucide-react';\nimport { v4 as uuid } from 'uuid';\nimport {\n ActionBarPrimitive,\n BranchPickerPrimitive,\n ComposerPrimitive,\n ErrorPrimitive,\n MessagePrimitive,\n ThreadPrimitive,\n useAssistantState,\n MessagePartPrimitive,\n} from '@assistant-ui/react';\n\nimport {\n useMemo, useState, type FC, type PropsWithChildren,\n} from 'react';\nimport { LazyMotion, MotionConfig, domAnimation } from 'motion/react';\nimport * as m from 'motion/react-m';\n\nimport { Checkbox } from '@radix-ui/react-checkbox';\n\nimport { Button } from '@/components/ui/button';\nimport { MarkdownText } from '@/components/assistant-ui/markdown-text';\nimport { ToolFallback } from '@/components/assistant-ui/tool-fallback';\nimport { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';\nimport {\n ComposerAddAttachment,\n ComposerAttachments,\n UserMessageAttachments,\n} from '@/components/assistant-ui/attachment';\nimport { File } from '@/components/assistant-ui/file';\n\nimport { cn } from '@/lib/utils';\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from '@/contexts/ChatkitContext';\nimport { useI18n } from '@/contexts/I18nContext';\nimport CopyIcon from '@/assets/Copy';\nimport RefreshIcon from '@/assets/RefreshIcon';\nimport NewSession from '@/assets/NewSession';\nimport dayjs from 'dayjs';\nimport useThread from '@/hooks/useThread';\nimport { saveStringToMarkdown } from '@/utils/download';\nimport Download from '@/assets/Download';\nimport AbortMessage from '@/assets/AbortMessage';\nimport ClearIcon from '@/assets/ClearIcon';\nimport { Thread as ThreadType, useSnapshot } from '@chat-lab/core';\nimport { TooltipTrigger } from '@radix-ui/react-tooltip';\nimport { useMemoizedFn } from 'ahooks';\nimport Recommend from '../welcome';\nimport ThreadHeader from './thread-header';\nimport { Reasoning, ReasoningGroup } from './reasoning';\nimport { assistantMessageComponentsWithAvatar } from './message-components-with-avatar';\nimport { Tooltip, TooltipContent } from '../ui/tooltip';\n\nconst assistantMessageComponents = {\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n ReasoningGroup,\n};\n\nconst userMessageComponents = {\n Text: () => (\n <p style={{ whiteSpace: 'pre-line', fontSize: 16 }}>\n <MessagePartPrimitive.Text />\n <MessagePartPrimitive.InProgress>\n <span style={{ fontFamily: 'revert' }}>{' \\u25CF'}</span>\n </MessagePartPrimitive.InProgress>\n </p>\n ),\n};\nexport const Thread: FC<{\n welcome?: React.ReactNode;\n recommends?: string[];\n}> = ({ welcome, recommends }) => {\n const { currentThread } = useThread();\n\n const ref = useChatkitRef();\n const welcomeElement = useMemo(() => {\n if (welcome) return welcome;\n if (recommends) {\n return (\n <Recommend\n recommends={recommends}\n onSelect={(question) => {\n ref?.sendMessage({\n content: [\n {\n type: 'text',\n text: question,\n },\n ],\n });\n }}\n />\n );\n }\n return undefined;\n }, [recommends, welcome]);\n\n const threadMessageComponents = useMemo(\n () => ({\n UserMessage,\n EditComposer,\n AssistantMessage,\n }),\n [],\n );\n\n const {\n showHeader, renderHeader, threadMaxWidth, threadBottom,\n } = useChatkitContext();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n {showHeader\n && (renderHeader ? (\n renderHeader({ thread: currentThread as ThreadType })\n ) : (\n <ThreadHeader title={currentThread?.name || 'Thread Title'} />\n ))}\n <LazyMotion features={domAnimation}>\n <MotionConfig reducedMotion=\"user\">\n <ThreadPrimitive.Root\n className=\"aui-root aui-thread-root @container flex-1 flex h-[calc(100%-65px)] flex-col bg-background\"\n style={{\n ['--thread-max-width' as string]: '66rem',\n background: 'white',\n }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4\">\n <ThreadPrimitive.Messages\n components={threadMessageComponents}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9\" />\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n <ThreadPrimitive.If empty>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4 justify-center items-center\">\n <div\n className=\" aui-thread-viewport-spacer min-h-12 grow z-9\"\n style={{\n maxWidth: threadMaxWidth,\n backgroundColor: 'white',\n }}\n />\n {currentThread?.loading ? (\n <div className=\"flex items-center justify-center gap-1.5 h-[180px]\">\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '0ms',\n }}\n />\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '150ms',\n }}\n />\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '300ms',\n }}\n />\n </div>\n ) : (\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"max-w-[var(--thread-max-width)] w-full h-full\"\n >\n {welcomeElement ?? <ThreadWelcome />}\n </div>\n )}\n <div\n className=\"aui-thread-viewport-spacer min-h-12 grow z-9\"\n style={{ background: 'white' }}\n />\n\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => (\n <ThreadPrimitive.ScrollToBottom asChild>\n <TooltipIconButton\n tooltip=\"Scroll to bottom\"\n variant=\"outline\"\n className=\"aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent\"\n >\n <ArrowDownIcon />\n </TooltipIconButton>\n </ThreadPrimitive.ScrollToBottom>\n);\n\nfunction NewThread() {\n const ref = useChatkitRef();\n const { t } = useI18n();\n const handleCreateNewThread = async () => {\n // 新建会话的逻辑\n const id = uuid();\n ref\n ?.addThread({\n id,\n name: id,\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n })\n .then(() => ref?.setCurrentThread(id));\n };\n\n return (\n <TooltipIconButton\n tooltip={t('thread.newChat')}\n onClick={handleCreateNewThread}\n className=\"flex h-[32px] w-[32px] items-center justify-center rounded-full bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none\"\n >\n <NewSession />\n </TooltipIconButton>\n );\n}\n\nfunction ClearThread() {\n const ref = useChatkitRef();\n const { t } = useI18n();\n const handleCreateNewThread = () => {\n ref?.clearCurrentThread();\n };\n const { currentThread } = useThread();\n\n const disabled = currentThread?.messages.length === 0 || currentThread?.loading;\n return (\n <TooltipIconButton\n tooltip={t('thread.clearChat')}\n disabled={disabled}\n onClick={handleCreateNewThread}\n className={cn(\n 'flex flex-shrink-0 size-[38px] items-center justify-center rounded-full bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50',\n disabled && 'opacity-50 pointer-events-none',\n )}\n >\n <ClearIcon className=\"size-[16px]\" />\n </TooltipIconButton>\n );\n}\n\nconst ThreadWelcome: FC = () => {\n const { t } = useI18n();\n const { threadMaxWidth } = useChatkitContext();\n return (\n <div\n className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\"\n style={{ maxWidth: threadMaxWidth }}\n >\n <div className=\"aui-thread-welcome-center flex w-full flex-col items-center justify-center\">\n <div className=\"aui-thread-welcome-message flex size-full flex-col justify-center px-8 text-[24px] text-center font-medium leading-[100%] text-[#0C0D0E]\">\n {t('thread.greeting')}\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n const { t } = useI18n();\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n {t('thread.greeting')}\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const {\n placeholder, composerTop, controller, threadMaxWidth, threadBottom,\n } = useChatkitContext();\n\n const metaData = useSnapshot(controller?.metaData);\n const clawStatus = metaData?.clawStatus;\n const isDisabled = clawStatus?.status === false;\n const disabledReason = clawStatus?.reason || '';\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (isDisabled && e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n // 1. 定义禁用状态和 tooltip 显示状态\n const [open, setOpen] = useState(false);\n\n return (\n <div\n style={{ maxWidth: threadMaxWidth, background: 'white' }}\n className=\"aui-composer-wrapper sticky bottom-0 mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 overflow-visible bg-background\"\n >\n <ThreadScrollToBottom />\n <div className=\"pt-[8px]\">{composerTop}</div>\n <div className=\"flex items-center gap-2\">\n <ComposerPrimitive.Root\n className={cn(\n 'aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[16px] border border-[#EAEDF1] bg-background px-[12px] py-[8px] shadow-sm transition-all min-h-[84px]',\n isDisabled && 'cursor-not-allowed bg-gray-100',\n )}\n >\n <ComposerAttachments />\n <div className=\"flex items-center w-full gap-2 mb-[10px]\">\n <ComposerPrimitive.Input\n placeholder={isDisabled ? disabledReason : placeholder}\n className=\"aui-composer-input max-h-[60px] min-h-[60px] flex-1 overflow-y-auto resize-none bg-transparent py-0 text-[14px] leading-[24px] outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n rows={1}\n aria-label=\"Message input\"\n disabled={isDisabled}\n onKeyDown={handleKeyDown}\n />\n </div>\n <ComposerAction\n disabled={isDisabled}\n disabledReason={disabledReason}\n />\n </ComposerPrimitive.Root>\n </div>\n {threadBottom || <div className=\"pb-4 md:pb-6\" />}\n </div>\n );\n};\n\nconst ComposerAction: FC<{ disabled?: boolean; disabledReason?: string }> = ({\n disabled,\n disabledReason,\n}) => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n const { controller } = useChatkitContext();\n const cancel = useMemoizedFn(() => {\n console.log('cancel');\n controller?.abortMessage();\n });\n\n const { t } = useI18n();\n return (\n <div className=\"aui-composer-action-wrapper flex items-center gap-3 justify-between\">\n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div key={idx} className=\"flex items-center justify-center\">\n {plugin}\n </div>\n ))}\n </div>\n\n {/* <div className=\"h-5 w-[1px] bg-[#E5E7EB]\" /> */}\n\n <ThreadPrimitive.If running={false}>\n <ComposerPrimitive.Send asChild>\n <TooltipIconButton\n tooltip={disabled ? disabledReason : t('thread.send')}\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n // disabled={disabled}\n className={cn(\n 'aui-composer-send size-[28px] rounded-[8px] text-white p-0',\n disabled\n ? 'bg-gray-400 cursor-not-allowed'\n : 'bg-[#5252FF] hover:bg-primary/10 hover:text-primary',\n )}\n aria-label=\"Send message\"\n >\n {currentThread?.loading ? (\n <LoaderCircle className=\"aui-composer-send-icon size-[16px] animate-spin\" />\n ) : (\n <ArrowUpIcon className=\"aui-composer-send-icon size-[16px] text-white\" />\n )}\n </TooltipIconButton>\n </ComposerPrimitive.Send>\n </ThreadPrimitive.If>\n\n <ThreadPrimitive.If running>\n <TooltipIconButton\n onClick={cancel}\n tooltip=\"stop\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[28px] bg-[#5252FF] rounded-full text-white text-primary hover:bg-primary/10 hover:text-primary p-0\"\n aria-label=\"Send message\"\n >\n <AbortMessage className=\"aui-composer-send-icon size-[28px] fill-white\" />\n </TooltipIconButton>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\n const { t } = useI18n();\n return (\n <MessagePrimitive.Error>\n <ErrorPrimitive.Root className=\"aui-message-error-root mt-2 rounded-md border border-destructive bg-destructive/10 p-3 text-sm text-destructive dark:bg-destructive/5 dark:text-red-200\">\n <div className=\"font-medium text-destructive text-red-500\">\n {t('thread.requestError')}\n </div>\n <ErrorPrimitive.Message className=\"aui-message-error-message line-clamp-2\" />\n </ErrorPrimitive.Root>\n </MessagePrimitive.Error>\n );\n};\n\nconst ToolGroup: FC<\n PropsWithChildren<{ startIndex: number; endIndex: number }>\n> = ({ startIndex, endIndex, children }) => {\n const toolCount = endIndex - startIndex + 1;\n return (\n <details className=\"my-2\">\n <summary className=\"cursor-pointer font-medium\">\n {toolCount}\n {' '}\n tool\n {toolCount === 1 ? 'call' : 'calls'}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n const { threadMaxWidth } = useChatkitContext();\n return (\n <MessagePrimitive.Root asChild>\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"aui-assistant-message-root relative mx-auto w-full max-w-[var(--thread-max-width)] py-4 duration-150 slide-in-from-bottom-1 last:mb-24\"\n data-role=\"assistant\"\n >\n <div className=\"group\">\n <div className=\"aui-assistant-message-content mx-2 leading-7 break-words text-foreground flex flex-col gap-[12px]\">\n <MessagePrimitive.Parts\n components={assistantMessageComponentsWithAvatar}\n />\n <MessageError />\n </div>\n\n <div className=\"aui-assistant-message-footer mt-2 ml-2 flex hover:visible opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <BranchPicker />\n <AssistantActionBar />\n </div>\n </div>\n </div>\n </MessagePrimitive.Root>\n );\n};\n\nconst AssistantActionBar: FC = () => {\n const [submittedFeedback, setSubmittedFeedback] = useState<\n 'positive' | 'negative' | undefined\n >(undefined);\n const { t } = useI18n();\n\n const downloadContent = useAssistantState(({ message }) => {\n if (\n (message.role !== 'assistant' || message.status?.type !== 'running')\n && message.parts.some((c) => c.type === 'text' && c.text.length > 0)\n ) {\n return message.parts\n .filter((c) => c.type === 'text')\n .map((c) => c.text)\n .join('\\n');\n }\n return '';\n });\n\n const { authors } = useChatkitContext();\n\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className={cn(\n 'aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex items-center gap-[8px] text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm',\n authors.length >= 2 ? 'ml-[50px]' : '',\n )}\n >\n {/* <div\n className=\"flex items-center justify-center\"\n onClick={() => setSubmittedFeedback(\n submittedFeedback === 'positive' ? undefined : 'positive',\n )}\n >\n <TooltipIconButton tooltip={t('thread.like')}>\n <ThumbUpIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === 'positive' ? '#000' : undefined}\n />\n </TooltipIconButton>\n </div>\n <div\n className=\"flex items-center justify-center\"\n onClick={() => setSubmittedFeedback(\n submittedFeedback === 'negative' ? undefined : 'negative',\n )}\n >\n <TooltipIconButton tooltip={t('thread.dislike')}>\n <ThumbDownIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === 'negative' ? '#000' : undefined}\n />\n </TooltipIconButton>\n </div> */}\n\n {/* <div className=\"w-[1px] h-[12px] bg-[#DDE2E9]\" /> */}\n <ActionBarPrimitive.Copy asChild>\n <TooltipIconButton tooltip={t('thread.copy')}>\n <MessagePrimitive.If copied>\n <CheckIcon className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\" />\n </MessagePrimitive.If>\n <MessagePrimitive.If copied={false}>\n <CopyIcon className=\"aui-assistant-action-bar-copy-icon size-[16px]\" />\n </MessagePrimitive.If>\n </TooltipIconButton>\n </ActionBarPrimitive.Copy>\n\n {/* <TooltipIconButton\n tooltip={t('thread.download')}\n onClick={() => {\n saveStringToMarkdown(downloadContent, 'message.md');\n }}\n >\n <Download className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n <ActionBarPrimitive.Reload asChild>\n <TooltipIconButton tooltip={t('thread.refresh')}>\n <RefreshIcon className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Reload> */}\n </ActionBarPrimitive.Root>\n );\n};\n\n// const UserActionBar: FC = () => {\n// return (\n// <ActionBarPrimitive.Root\n// hideWhenRunning\n// autohide=\"not-last\"\n// className=\"aui-user-action-bar-root flex flex-col items-end\"\n// >\n// <ActionBarPrimitive.Edit asChild>\n// <TooltipIconButton tooltip=\"Edit\" className=\"aui-user-action-edit p-4\">\n// <PencilIcon />\n// </TooltipIconButton>\n// </ActionBarPrimitive.Edit>\n// </ActionBarPrimitive.Root>\n// );\n// };\n\nconst EditComposer: FC = () => {\n const { t } = useI18n();\n const { threadMaxWidth } = useChatkitContext();\n return (\n <div\n className=\"aui-edit-composer-wrapper mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 px-2 first:mt-4\"\n style={{ maxWidth: threadMaxWidth }}\n >\n <ComposerPrimitive.Root className=\"aui-edit-composer-root ml-auto flex w-full max-w-7/8 flex-col rounded-xl bg-muted\">\n <ComposerPrimitive.Input\n className=\"aui-edit-composer-input flex min-h-[60px] w-full resize-none bg-transparent p-4 text-foreground outline-none\"\n autoFocus\n />\n\n <div className=\"aui-edit-composer-footer mx-3 mb-3 flex items-center justify-center gap-2 self-end\">\n <ComposerPrimitive.Cancel asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label={t('thread.cancelEdit')}\n >\n {t('warningModal.cancel')}\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n {t('thread.update')}\n </Button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({\n className,\n ...rest\n}) => (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className={cn(\n 'aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground',\n className,\n )}\n {...rest}\n >\n <BranchPickerPrimitive.Previous asChild>\n <TooltipIconButton tooltip=\"Previous\">\n <ChevronLeftIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Previous>\n <span className=\"aui-branch-picker-state font-medium\">\n <BranchPickerPrimitive.Number />\n {' '}\n /\n <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n);\n\nconst UserMessage: FC = () => {\n const { threadMaxWidth } = useChatkitContext();\n return (\n <MessagePrimitive.Root asChild>\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group\"\n data-role=\"user\"\n >\n <UserMessageAttachments />\n\n {/* <Checkbox /> */}\n <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-[12px] py-[10px] break-words text-foreground bg-[#EDEFFC] rounded-[8px]\">\n <MessagePrimitive.Parts components={userMessageComponents} />\n </div>\n {/* <div className=\"aui-user-action-bar-wrapper invisible group-hover:visible transition-all duration-200\">\n <UserActionBar />\n </div> */}\n </div>\n\n {/* 移除了下方工具栏代码 */}\n\n {/* <BranchPicker className=\"aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end\" /> */}\n </div>\n </MessagePrimitive.Root>\n );\n};\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\n const { t } = useI18n();\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n className=\"aui-user-action-bar-root flex items-end gap-2 justify-end bg-background p-1 rounded-md\"\n >\n <ActionBarPrimitive.Edit asChild>\n <TooltipIconButton\n tooltip={t('thread.edit')}\n className=\"aui-user-action-edit\"\n >\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton\n tooltip={t('thread.share')}\n className=\"aui-user-action-edit\"\n >\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton\n tooltip={t('thread.more')}\n className=\"aui-user-action-edit\"\n >\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["_jsxs","_jsx","MessagePartPrimitive","welcome","useChatkitRef","useMemo","Recommend","useChatkitContext","ThreadHeader","LazyMotion","domAnimation","MotionConfig","ThreadPrimitive","TooltipIconButton","ArrowDownIcon","useI18n","useSnapshot","useState","ComposerPrimitive","cn","ComposerAttachments","useChatkitPlugins","useMemoizedFn","LoaderCircle","ArrowUpIcon","MessagePrimitive","ErrorPrimitive","assistantMessageComponentsWithAvatar","useAssistantState","ActionBarPrimitive","CheckIcon","CopyIcon","Button","BranchPickerPrimitive","ChevronLeftIcon","ChevronRightIcon","UserMessageAttachments"],"mappings":"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"}
1
+ {"version":3,"file":"thread.cjs","sources":["../../../src/components/assistant-ui/thread.tsx"],"sourcesContent":["import {\n ArrowDownIcon,\n ArrowUpIcon,\n CheckIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n PencilIcon,\n Square,\n Share2Icon, // 添加分享图标\n MoreHorizontalIcon,\n LoaderCircle,\n Mic,\n} from 'lucide-react';\nimport { v4 as uuid } from 'uuid';\nimport {\n ActionBarPrimitive,\n BranchPickerPrimitive,\n ComposerPrimitive,\n ErrorPrimitive,\n MessagePrimitive,\n ThreadPrimitive,\n useAssistantState,\n MessagePartPrimitive,\n} from '@assistant-ui/react';\n\nimport {\n useMemo, useState, type FC, type PropsWithChildren,\n} from 'react';\nimport { LazyMotion, MotionConfig, domAnimation } from 'motion/react';\nimport * as m from 'motion/react-m';\n\nimport { Checkbox } from '@radix-ui/react-checkbox';\n\nimport { Button } from '@/components/ui/button';\nimport { MarkdownText } from '@/components/assistant-ui/markdown-text';\nimport { ToolFallback } from '@/components/assistant-ui/tool-fallback';\nimport { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';\nimport {\n ComposerAddAttachment,\n ComposerAttachments,\n UserMessageAttachments,\n} from '@/components/assistant-ui/attachment';\nimport { File } from '@/components/assistant-ui/file';\n\nimport { cn } from '@/lib/utils';\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from '@/contexts/ChatkitContext';\nimport { useI18n } from '@/contexts/I18nContext';\nimport CopyIcon from '@/assets/Copy';\nimport RefreshIcon from '@/assets/RefreshIcon';\nimport NewSession from '@/assets/NewSession';\nimport dayjs from 'dayjs';\nimport useThread from '@/hooks/useThread';\nimport { saveStringToMarkdown } from '@/utils/download';\nimport Download from '@/assets/Download';\nimport AbortMessage from '@/assets/AbortMessage';\nimport ClearIcon from '@/assets/ClearIcon';\nimport { Thread as ThreadType, useSnapshot } from '@chat-lab/core';\nimport { TooltipTrigger } from '@radix-ui/react-tooltip';\nimport { useMemoizedFn } from 'ahooks';\nimport Recommend from '../welcome';\nimport ThreadHeader from './thread-header';\nimport { Reasoning, ReasoningGroup } from './reasoning';\nimport { assistantMessageComponentsWithAvatar } from './message-components-with-avatar';\n\nconst assistantMessageComponents = {\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n ReasoningGroup,\n};\n\nconst userMessageComponents = {\n Text: () => (\n <p style={{ whiteSpace: 'pre-line', fontSize: 16 }}>\n <MessagePartPrimitive.Text />\n <MessagePartPrimitive.InProgress>\n <span style={{ fontFamily: 'revert' }}>{' \\u25CF'}</span>\n </MessagePartPrimitive.InProgress>\n </p>\n ),\n};\nexport const Thread: FC<{\n welcome?: React.ReactNode;\n recommends?: string[];\n}> = ({ welcome, recommends }) => {\n const { currentThread } = useThread();\n\n const ref = useChatkitRef();\n const welcomeElement = useMemo(() => {\n if (welcome) return welcome;\n if (recommends) {\n return (\n <Recommend\n recommends={recommends}\n onSelect={(question) => {\n ref?.sendMessage({\n content: [\n {\n type: 'text',\n text: question,\n },\n ],\n });\n }}\n />\n );\n }\n return undefined;\n }, [recommends, welcome]);\n\n const threadMessageComponents = useMemo(\n () => ({\n UserMessage,\n EditComposer,\n AssistantMessage,\n }),\n [],\n );\n\n const {\n showHeader, renderHeader, threadMaxWidth, threadBottom,\n } = useChatkitContext();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n {showHeader\n && (renderHeader ? (\n renderHeader({ thread: currentThread as ThreadType })\n ) : (\n <ThreadHeader title={currentThread?.name || 'Thread Title'} />\n ))}\n <LazyMotion features={domAnimation}>\n <MotionConfig reducedMotion=\"user\">\n <ThreadPrimitive.Root\n className=\"aui-root aui-thread-root @container flex-1 flex h-[calc(100%-65px)] flex-col bg-background\"\n style={{\n ['--thread-max-width' as string]: '66rem',\n background: 'white',\n }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4\">\n <ThreadPrimitive.Messages\n components={threadMessageComponents}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9\" />\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n <ThreadPrimitive.If empty>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4 justify-center items-center\">\n <div\n className=\" aui-thread-viewport-spacer min-h-12 grow z-9\"\n style={{\n maxWidth: threadMaxWidth,\n backgroundColor: 'white',\n }}\n />\n {currentThread?.loading ? (\n <div className=\"flex items-center justify-center gap-1.5 h-[180px]\">\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '0ms',\n }}\n />\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '150ms',\n }}\n />\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '300ms',\n }}\n />\n </div>\n ) : (\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"max-w-[var(--thread-max-width)] w-full h-full\"\n >\n {welcomeElement ?? <ThreadWelcome />}\n </div>\n )}\n <div\n className=\"aui-thread-viewport-spacer min-h-12 grow z-9\"\n style={{ background: 'white' }}\n />\n\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => (\n <ThreadPrimitive.ScrollToBottom asChild>\n <TooltipIconButton\n tooltip=\"Scroll to bottom\"\n variant=\"outline\"\n className=\"aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent\"\n >\n <ArrowDownIcon />\n </TooltipIconButton>\n </ThreadPrimitive.ScrollToBottom>\n);\n\nfunction NewThread() {\n const ref = useChatkitRef();\n const { t } = useI18n();\n const handleCreateNewThread = async () => {\n // 新建会话的逻辑\n const id = uuid();\n ref\n ?.addThread({\n id,\n name: id,\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n })\n .then(() => ref?.setCurrentThread(id));\n };\n\n return (\n <TooltipIconButton\n tooltip={t('thread.newChat')}\n onClick={handleCreateNewThread}\n className=\"flex h-[32px] w-[32px] items-center justify-center rounded-full bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none\"\n >\n <NewSession />\n </TooltipIconButton>\n );\n}\n\nfunction ClearThread() {\n const ref = useChatkitRef();\n const { t } = useI18n();\n const handleCreateNewThread = () => {\n ref?.clearCurrentThread();\n };\n const { currentThread } = useThread();\n\n const disabled = currentThread?.messages.length === 0 || currentThread?.loading;\n return (\n <TooltipIconButton\n tooltip={t('thread.clearChat')}\n disabled={disabled}\n onClick={handleCreateNewThread}\n className={cn(\n 'flex flex-shrink-0 size-[38px] items-center justify-center rounded-full bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50',\n disabled && 'opacity-50 pointer-events-none',\n )}\n >\n <ClearIcon className=\"size-[16px]\" />\n </TooltipIconButton>\n );\n}\n\nconst ThreadWelcome: FC = () => {\n const { t } = useI18n();\n const { threadMaxWidth } = useChatkitContext();\n return (\n <div\n className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\"\n style={{ maxWidth: threadMaxWidth }}\n >\n <div className=\"aui-thread-welcome-center flex w-full flex-col items-center justify-center\">\n <div className=\"aui-thread-welcome-message flex size-full flex-col justify-center px-8 text-[24px] text-center font-medium leading-[100%] text-[#0C0D0E]\">\n {t('thread.greeting')}\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n const { t } = useI18n();\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n {t('thread.greeting')}\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const {\n placeholder, composerTop, controller, threadMaxWidth, threadBottom,\n } = useChatkitContext();\n\n const metaData = useSnapshot(controller?.metaData);\n const clawStatus = metaData?.clawStatus;\n const isDisabled = clawStatus?.status === false;\n const disabledReason = clawStatus?.reason || '';\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (isDisabled && e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n // 1. 定义禁用状态和 tooltip 显示状态\n const [open, setOpen] = useState(false);\n\n return (\n <div\n style={{ maxWidth: threadMaxWidth, background: 'white' }}\n className=\"aui-composer-wrapper sticky bottom-0 mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 overflow-visible bg-background\"\n >\n <ThreadScrollToBottom />\n <div className=\"pt-[8px]\">{composerTop}</div>\n <div className=\"flex items-center gap-2\">\n <ComposerPrimitive.Root\n className={cn(\n 'aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[16px] border border-[#EAEDF1] bg-background px-[12px] py-[8px] shadow-sm transition-all min-h-[84px]',\n isDisabled && 'cursor-not-allowed bg-gray-100',\n )}\n >\n <ComposerAttachments />\n <div className=\"flex items-center w-full gap-2 mb-[10px]\">\n <ComposerPrimitive.Input\n placeholder={isDisabled ? disabledReason : placeholder}\n className=\"aui-composer-input max-h-[60px] min-h-[60px] flex-1 overflow-y-auto resize-none bg-transparent py-0 text-[14px] leading-[24px] outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n rows={1}\n aria-label=\"Message input\"\n disabled={isDisabled}\n onKeyDown={handleKeyDown}\n />\n </div>\n <ComposerAction\n disabled={isDisabled}\n disabledReason={disabledReason}\n />\n </ComposerPrimitive.Root>\n </div>\n {threadBottom || <div className=\"pb-4 md:pb-6\" />}\n </div>\n );\n};\n\nconst ComposerAction: FC<{ disabled?: boolean; disabledReason?: string }> = ({\n disabled,\n disabledReason,\n}) => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n const { controller } = useChatkitContext();\n const cancel = useMemoizedFn(() => {\n controller?.abortMessage();\n });\n\n const { t } = useI18n();\n return (\n <div className=\"aui-composer-action-wrapper flex items-center gap-3 justify-between\">\n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div key={idx} className=\"flex items-center justify-center\">\n {plugin}\n </div>\n ))}\n </div>\n\n {/* <div className=\"h-5 w-[1px] bg-[#E5E7EB]\" /> */}\n\n <ThreadPrimitive.If running={false}>\n <ComposerPrimitive.Send asChild>\n <TooltipIconButton\n tooltip={disabled ? disabledReason : t('thread.send')}\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n // disabled={disabled}\n className={cn(\n 'aui-composer-send size-[28px] rounded-[8px] text-white p-0',\n disabled\n ? 'bg-gray-400 cursor-not-allowed'\n : 'bg-[#5252FF] hover:bg-primary/10 hover:text-primary',\n )}\n aria-label=\"Send message\"\n >\n {currentThread?.loading ? (\n <LoaderCircle className=\"aui-composer-send-icon size-[16px] animate-spin\" />\n ) : (\n <ArrowUpIcon className=\"aui-composer-send-icon size-[16px] text-white\" />\n )}\n </TooltipIconButton>\n </ComposerPrimitive.Send>\n </ThreadPrimitive.If>\n\n <ThreadPrimitive.If running>\n <TooltipIconButton\n onClick={cancel}\n tooltip=\"stop\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[28px] bg-[#5252FF] rounded-full text-white text-primary hover:bg-primary/10 hover:text-primary p-0\"\n aria-label=\"Send message\"\n >\n <AbortMessage className=\"aui-composer-send-icon size-[28px] fill-white\" />\n </TooltipIconButton>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\n const { t } = useI18n();\n return (\n <MessagePrimitive.Error>\n <ErrorPrimitive.Root className=\"aui-message-error-root mt-2 rounded-md border border-destructive bg-destructive/10 p-3 text-sm text-destructive dark:bg-destructive/5 dark:text-red-200\">\n <div className=\"font-medium text-destructive text-red-500\">\n {t('thread.requestError')}\n </div>\n <ErrorPrimitive.Message className=\"aui-message-error-message line-clamp-2\" />\n </ErrorPrimitive.Root>\n </MessagePrimitive.Error>\n );\n};\n\nconst ToolGroup: FC<\n PropsWithChildren<{ startIndex: number; endIndex: number }>\n> = ({ startIndex, endIndex, children }) => {\n const toolCount = endIndex - startIndex + 1;\n return (\n <details className=\"my-2\">\n <summary className=\"cursor-pointer font-medium\">\n {toolCount}\n {' '}\n tool\n {toolCount === 1 ? 'call' : 'calls'}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n const { threadMaxWidth } = useChatkitContext();\n return (\n <MessagePrimitive.Root asChild>\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"aui-assistant-message-root relative mx-auto w-full max-w-[var(--thread-max-width)] py-4 duration-150 slide-in-from-bottom-1 last:mb-24\"\n data-role=\"assistant\"\n >\n <div className=\"group\">\n <div className=\"aui-assistant-message-content mx-2 leading-7 break-words text-foreground flex flex-col gap-[12px]\">\n <MessagePrimitive.Parts\n components={assistantMessageComponentsWithAvatar}\n />\n <MessageError />\n </div>\n\n <div className=\"aui-assistant-message-footer mt-2 ml-2 flex hover:visible opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <BranchPicker />\n <AssistantActionBar />\n </div>\n </div>\n </div>\n </MessagePrimitive.Root>\n );\n};\n\nconst AssistantActionBar: FC = () => {\n const [submittedFeedback, setSubmittedFeedback] = useState<\n 'positive' | 'negative' | undefined\n >(undefined);\n const { t } = useI18n();\n\n const downloadContent = useAssistantState(({ message }) => {\n if (\n (message.role !== 'assistant' || message.status?.type !== 'running')\n && message.parts.some((c) => c.type === 'text' && c.text.length > 0)\n ) {\n return message.parts\n .filter((c) => c.type === 'text')\n .map((c) => c.text)\n .join('\\n');\n }\n return '';\n });\n\n const { authors } = useChatkitContext();\n\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className={cn(\n 'aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex items-center gap-[8px] text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm',\n authors.length >= 2 ? 'ml-[50px]' : '',\n )}\n >\n {/* <div\n className=\"flex items-center justify-center\"\n onClick={() => setSubmittedFeedback(\n submittedFeedback === 'positive' ? undefined : 'positive',\n )}\n >\n <TooltipIconButton tooltip={t('thread.like')}>\n <ThumbUpIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === 'positive' ? '#000' : undefined}\n />\n </TooltipIconButton>\n </div>\n <div\n className=\"flex items-center justify-center\"\n onClick={() => setSubmittedFeedback(\n submittedFeedback === 'negative' ? undefined : 'negative',\n )}\n >\n <TooltipIconButton tooltip={t('thread.dislike')}>\n <ThumbDownIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === 'negative' ? '#000' : undefined}\n />\n </TooltipIconButton>\n </div> */}\n\n {/* <div className=\"w-[1px] h-[12px] bg-[#DDE2E9]\" /> */}\n <ActionBarPrimitive.Copy asChild>\n <TooltipIconButton tooltip={t('thread.copy')}>\n <MessagePrimitive.If copied>\n <CheckIcon className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\" />\n </MessagePrimitive.If>\n <MessagePrimitive.If copied={false}>\n <CopyIcon className=\"aui-assistant-action-bar-copy-icon size-[16px]\" />\n </MessagePrimitive.If>\n </TooltipIconButton>\n </ActionBarPrimitive.Copy>\n\n {/* <TooltipIconButton\n tooltip={t('thread.download')}\n onClick={() => {\n saveStringToMarkdown(downloadContent, 'message.md');\n }}\n >\n <Download className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n <ActionBarPrimitive.Reload asChild>\n <TooltipIconButton tooltip={t('thread.refresh')}>\n <RefreshIcon className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Reload> */}\n </ActionBarPrimitive.Root>\n );\n};\n\n// const UserActionBar: FC = () => {\n// return (\n// <ActionBarPrimitive.Root\n// hideWhenRunning\n// autohide=\"not-last\"\n// className=\"aui-user-action-bar-root flex flex-col items-end\"\n// >\n// <ActionBarPrimitive.Edit asChild>\n// <TooltipIconButton tooltip=\"Edit\" className=\"aui-user-action-edit p-4\">\n// <PencilIcon />\n// </TooltipIconButton>\n// </ActionBarPrimitive.Edit>\n// </ActionBarPrimitive.Root>\n// );\n// };\n\nconst EditComposer: FC = () => {\n const { t } = useI18n();\n const { threadMaxWidth } = useChatkitContext();\n return (\n <div\n className=\"aui-edit-composer-wrapper mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 px-2 first:mt-4\"\n style={{ maxWidth: threadMaxWidth }}\n >\n <ComposerPrimitive.Root className=\"aui-edit-composer-root ml-auto flex w-full max-w-7/8 flex-col rounded-xl bg-muted\">\n <ComposerPrimitive.Input\n className=\"aui-edit-composer-input flex min-h-[60px] w-full resize-none bg-transparent p-4 text-foreground outline-none\"\n autoFocus\n />\n\n <div className=\"aui-edit-composer-footer mx-3 mb-3 flex items-center justify-center gap-2 self-end\">\n <ComposerPrimitive.Cancel asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label={t('thread.cancelEdit')}\n >\n {t('warningModal.cancel')}\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n {t('thread.update')}\n </Button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({\n className,\n ...rest\n}) => (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className={cn(\n 'aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground',\n className,\n )}\n {...rest}\n >\n <BranchPickerPrimitive.Previous asChild>\n <TooltipIconButton tooltip=\"Previous\">\n <ChevronLeftIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Previous>\n <span className=\"aui-branch-picker-state font-medium\">\n <BranchPickerPrimitive.Number />\n {' '}\n /\n <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n);\n\nconst UserMessage: FC = () => {\n const { threadMaxWidth } = useChatkitContext();\n return (\n <MessagePrimitive.Root asChild>\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group\"\n data-role=\"user\"\n >\n <UserMessageAttachments />\n\n {/* <Checkbox /> */}\n <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-[12px] py-[10px] break-words text-foreground bg-[#EDEFFC] rounded-[8px] max-w-[720px] leading-[24px]\">\n <MessagePrimitive.Parts components={userMessageComponents} />\n </div>\n {/* <div className=\"aui-user-action-bar-wrapper invisible group-hover:visible transition-all duration-200\">\n <UserActionBar />\n </div> */}\n </div>\n\n {/* 移除了下方工具栏代码 */}\n\n {/* <BranchPicker className=\"aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end\" /> */}\n </div>\n </MessagePrimitive.Root>\n );\n};\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\n const { t } = useI18n();\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n className=\"aui-user-action-bar-root flex items-end gap-2 justify-end bg-background p-1 rounded-md\"\n >\n <ActionBarPrimitive.Edit asChild>\n <TooltipIconButton\n tooltip={t('thread.edit')}\n className=\"aui-user-action-edit\"\n >\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton\n tooltip={t('thread.share')}\n className=\"aui-user-action-edit\"\n >\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton\n tooltip={t('thread.more')}\n className=\"aui-user-action-edit\"\n >\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["_jsxs","_jsx","MessagePartPrimitive","welcome","useChatkitRef","useMemo","Recommend","useChatkitContext","ThreadHeader","LazyMotion","domAnimation","MotionConfig","ThreadPrimitive","TooltipIconButton","ArrowDownIcon","useI18n","useSnapshot","useState","ComposerPrimitive","cn","ComposerAttachments","useChatkitPlugins","useMemoizedFn","LoaderCircle","ArrowUpIcon","MessagePrimitive","ErrorPrimitive","assistantMessageComponentsWithAvatar","useAssistantState","ActionBarPrimitive","CheckIcon","CopyIcon","Button","BranchPickerPrimitive","ChevronLeftIcon","ChevronRightIcon","UserMessageAttachments"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../../src/components/assistant-ui/thread.tsx"],"names":[],"mappings":"AAyBA,OAAO,EACc,KAAK,EAAE,EAC3B,MAAM,OAAO,CAAC;AA4Df,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAsHA,CAAC"}
1
+ {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../../src/components/assistant-ui/thread.tsx"],"names":[],"mappings":"AAyBA,OAAO,EACc,KAAK,EAAE,EAC3B,MAAM,OAAO,CAAC;AA2Df,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAsHA,CAAC"}
@@ -98,7 +98,6 @@ const ComposerAction = ({ disabled, disabledReason, }) => {
98
98
  const plugins = useChatkitPlugins();
99
99
  const { controller } = useChatkitContext();
100
100
  const cancel = useMemoizedFn(() => {
101
- console.log('cancel');
102
101
  controller?.abortMessage();
103
102
  });
104
103
  const { t } = useI18n();
@@ -155,7 +154,7 @@ const EditComposer = () => {
155
154
  const BranchPicker = ({ className, ...rest }) => (jsxs(BranchPickerPrimitive.Root, { hideWhenSingleBranch: true, className: cn('aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground', className), ...rest, children: [jsx(BranchPickerPrimitive.Previous, { asChild: true, children: jsx(TooltipIconButton, { tooltip: "Previous", children: jsx(ChevronLeftIcon, {}) }) }), jsxs("span", { className: "aui-branch-picker-state font-medium", children: [jsx(BranchPickerPrimitive.Number, {}), ' ', "/", jsx(BranchPickerPrimitive.Count, {})] }), jsx(BranchPickerPrimitive.Next, { asChild: true, children: jsx(TooltipIconButton, { tooltip: "Next", children: jsx(ChevronRightIcon, {}) }) })] }));
156
155
  const UserMessage = () => {
157
156
  const { threadMaxWidth } = useChatkitContext();
158
- return (jsx(MessagePrimitive.Root, { asChild: true, children: jsxs("div", { style: { maxWidth: threadMaxWidth }, className: "aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group", "data-role": "user", children: [jsx(UserMessageAttachments, {}), jsx("div", { className: "aui-user-message-content-wrapper relative col-start-2 min-w-0", children: jsx("div", { className: "aui-user-message-content bg-muted px-[12px] py-[10px] break-words text-foreground bg-[#EDEFFC] rounded-[8px]", children: jsx(MessagePrimitive.Parts, { components: userMessageComponents }) }) })] }) }));
157
+ return (jsx(MessagePrimitive.Root, { asChild: true, children: jsxs("div", { style: { maxWidth: threadMaxWidth }, className: "aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group", "data-role": "user", children: [jsx(UserMessageAttachments, {}), jsx("div", { className: "aui-user-message-content-wrapper relative col-start-2 min-w-0", children: jsx("div", { className: "aui-user-message-content bg-muted px-[12px] py-[10px] break-words text-foreground bg-[#EDEFFC] rounded-[8px] max-w-[720px] leading-[24px]", children: jsx(MessagePrimitive.Parts, { components: userMessageComponents }) }) })] }) }));
159
158
  };
160
159
 
161
160
  export { Thread };
@@ -1 +1 @@
1
- {"version":3,"file":"thread.js","sources":["../../../src/components/assistant-ui/thread.tsx"],"sourcesContent":["import {\n ArrowDownIcon,\n ArrowUpIcon,\n CheckIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n PencilIcon,\n Square,\n Share2Icon, // 添加分享图标\n MoreHorizontalIcon,\n LoaderCircle,\n Mic,\n} from 'lucide-react';\nimport { v4 as uuid } from 'uuid';\nimport {\n ActionBarPrimitive,\n BranchPickerPrimitive,\n ComposerPrimitive,\n ErrorPrimitive,\n MessagePrimitive,\n ThreadPrimitive,\n useAssistantState,\n MessagePartPrimitive,\n} from '@assistant-ui/react';\n\nimport {\n useMemo, useState, type FC, type PropsWithChildren,\n} from 'react';\nimport { LazyMotion, MotionConfig, domAnimation } from 'motion/react';\nimport * as m from 'motion/react-m';\n\nimport { Checkbox } from '@radix-ui/react-checkbox';\n\nimport { Button } from '@/components/ui/button';\nimport { MarkdownText } from '@/components/assistant-ui/markdown-text';\nimport { ToolFallback } from '@/components/assistant-ui/tool-fallback';\nimport { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';\nimport {\n ComposerAddAttachment,\n ComposerAttachments,\n UserMessageAttachments,\n} from '@/components/assistant-ui/attachment';\nimport { File } from '@/components/assistant-ui/file';\n\nimport { cn } from '@/lib/utils';\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from '@/contexts/ChatkitContext';\nimport { useI18n } from '@/contexts/I18nContext';\nimport CopyIcon from '@/assets/Copy';\nimport RefreshIcon from '@/assets/RefreshIcon';\nimport NewSession from '@/assets/NewSession';\nimport dayjs from 'dayjs';\nimport useThread from '@/hooks/useThread';\nimport { saveStringToMarkdown } from '@/utils/download';\nimport Download from '@/assets/Download';\nimport AbortMessage from '@/assets/AbortMessage';\nimport ClearIcon from '@/assets/ClearIcon';\nimport { Thread as ThreadType, useSnapshot } from '@chat-lab/core';\nimport { TooltipTrigger } from '@radix-ui/react-tooltip';\nimport { useMemoizedFn } from 'ahooks';\nimport Recommend from '../welcome';\nimport ThreadHeader from './thread-header';\nimport { Reasoning, ReasoningGroup } from './reasoning';\nimport { assistantMessageComponentsWithAvatar } from './message-components-with-avatar';\nimport { Tooltip, TooltipContent } from '../ui/tooltip';\n\nconst assistantMessageComponents = {\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n ReasoningGroup,\n};\n\nconst userMessageComponents = {\n Text: () => (\n <p style={{ whiteSpace: 'pre-line', fontSize: 16 }}>\n <MessagePartPrimitive.Text />\n <MessagePartPrimitive.InProgress>\n <span style={{ fontFamily: 'revert' }}>{' \\u25CF'}</span>\n </MessagePartPrimitive.InProgress>\n </p>\n ),\n};\nexport const Thread: FC<{\n welcome?: React.ReactNode;\n recommends?: string[];\n}> = ({ welcome, recommends }) => {\n const { currentThread } = useThread();\n\n const ref = useChatkitRef();\n const welcomeElement = useMemo(() => {\n if (welcome) return welcome;\n if (recommends) {\n return (\n <Recommend\n recommends={recommends}\n onSelect={(question) => {\n ref?.sendMessage({\n content: [\n {\n type: 'text',\n text: question,\n },\n ],\n });\n }}\n />\n );\n }\n return undefined;\n }, [recommends, welcome]);\n\n const threadMessageComponents = useMemo(\n () => ({\n UserMessage,\n EditComposer,\n AssistantMessage,\n }),\n [],\n );\n\n const {\n showHeader, renderHeader, threadMaxWidth, threadBottom,\n } = useChatkitContext();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n {showHeader\n && (renderHeader ? (\n renderHeader({ thread: currentThread as ThreadType })\n ) : (\n <ThreadHeader title={currentThread?.name || 'Thread Title'} />\n ))}\n <LazyMotion features={domAnimation}>\n <MotionConfig reducedMotion=\"user\">\n <ThreadPrimitive.Root\n className=\"aui-root aui-thread-root @container flex-1 flex h-[calc(100%-65px)] flex-col bg-background\"\n style={{\n ['--thread-max-width' as string]: '66rem',\n background: 'white',\n }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4\">\n <ThreadPrimitive.Messages\n components={threadMessageComponents}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9\" />\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n <ThreadPrimitive.If empty>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4 justify-center items-center\">\n <div\n className=\" aui-thread-viewport-spacer min-h-12 grow z-9\"\n style={{\n maxWidth: threadMaxWidth,\n backgroundColor: 'white',\n }}\n />\n {currentThread?.loading ? (\n <div className=\"flex items-center justify-center gap-1.5 h-[180px]\">\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '0ms',\n }}\n />\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '150ms',\n }}\n />\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '300ms',\n }}\n />\n </div>\n ) : (\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"max-w-[var(--thread-max-width)] w-full h-full\"\n >\n {welcomeElement ?? <ThreadWelcome />}\n </div>\n )}\n <div\n className=\"aui-thread-viewport-spacer min-h-12 grow z-9\"\n style={{ background: 'white' }}\n />\n\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => (\n <ThreadPrimitive.ScrollToBottom asChild>\n <TooltipIconButton\n tooltip=\"Scroll to bottom\"\n variant=\"outline\"\n className=\"aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent\"\n >\n <ArrowDownIcon />\n </TooltipIconButton>\n </ThreadPrimitive.ScrollToBottom>\n);\n\nfunction NewThread() {\n const ref = useChatkitRef();\n const { t } = useI18n();\n const handleCreateNewThread = async () => {\n // 新建会话的逻辑\n const id = uuid();\n ref\n ?.addThread({\n id,\n name: id,\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n })\n .then(() => ref?.setCurrentThread(id));\n };\n\n return (\n <TooltipIconButton\n tooltip={t('thread.newChat')}\n onClick={handleCreateNewThread}\n className=\"flex h-[32px] w-[32px] items-center justify-center rounded-full bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none\"\n >\n <NewSession />\n </TooltipIconButton>\n );\n}\n\nfunction ClearThread() {\n const ref = useChatkitRef();\n const { t } = useI18n();\n const handleCreateNewThread = () => {\n ref?.clearCurrentThread();\n };\n const { currentThread } = useThread();\n\n const disabled = currentThread?.messages.length === 0 || currentThread?.loading;\n return (\n <TooltipIconButton\n tooltip={t('thread.clearChat')}\n disabled={disabled}\n onClick={handleCreateNewThread}\n className={cn(\n 'flex flex-shrink-0 size-[38px] items-center justify-center rounded-full bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50',\n disabled && 'opacity-50 pointer-events-none',\n )}\n >\n <ClearIcon className=\"size-[16px]\" />\n </TooltipIconButton>\n );\n}\n\nconst ThreadWelcome: FC = () => {\n const { t } = useI18n();\n const { threadMaxWidth } = useChatkitContext();\n return (\n <div\n className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\"\n style={{ maxWidth: threadMaxWidth }}\n >\n <div className=\"aui-thread-welcome-center flex w-full flex-col items-center justify-center\">\n <div className=\"aui-thread-welcome-message flex size-full flex-col justify-center px-8 text-[24px] text-center font-medium leading-[100%] text-[#0C0D0E]\">\n {t('thread.greeting')}\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n const { t } = useI18n();\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n {t('thread.greeting')}\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const {\n placeholder, composerTop, controller, threadMaxWidth, threadBottom,\n } = useChatkitContext();\n\n const metaData = useSnapshot(controller?.metaData);\n const clawStatus = metaData?.clawStatus;\n const isDisabled = clawStatus?.status === false;\n const disabledReason = clawStatus?.reason || '';\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (isDisabled && e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n // 1. 定义禁用状态和 tooltip 显示状态\n const [open, setOpen] = useState(false);\n\n return (\n <div\n style={{ maxWidth: threadMaxWidth, background: 'white' }}\n className=\"aui-composer-wrapper sticky bottom-0 mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 overflow-visible bg-background\"\n >\n <ThreadScrollToBottom />\n <div className=\"pt-[8px]\">{composerTop}</div>\n <div className=\"flex items-center gap-2\">\n <ComposerPrimitive.Root\n className={cn(\n 'aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[16px] border border-[#EAEDF1] bg-background px-[12px] py-[8px] shadow-sm transition-all min-h-[84px]',\n isDisabled && 'cursor-not-allowed bg-gray-100',\n )}\n >\n <ComposerAttachments />\n <div className=\"flex items-center w-full gap-2 mb-[10px]\">\n <ComposerPrimitive.Input\n placeholder={isDisabled ? disabledReason : placeholder}\n className=\"aui-composer-input max-h-[60px] min-h-[60px] flex-1 overflow-y-auto resize-none bg-transparent py-0 text-[14px] leading-[24px] outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n rows={1}\n aria-label=\"Message input\"\n disabled={isDisabled}\n onKeyDown={handleKeyDown}\n />\n </div>\n <ComposerAction\n disabled={isDisabled}\n disabledReason={disabledReason}\n />\n </ComposerPrimitive.Root>\n </div>\n {threadBottom || <div className=\"pb-4 md:pb-6\" />}\n </div>\n );\n};\n\nconst ComposerAction: FC<{ disabled?: boolean; disabledReason?: string }> = ({\n disabled,\n disabledReason,\n}) => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n const { controller } = useChatkitContext();\n const cancel = useMemoizedFn(() => {\n console.log('cancel');\n controller?.abortMessage();\n });\n\n const { t } = useI18n();\n return (\n <div className=\"aui-composer-action-wrapper flex items-center gap-3 justify-between\">\n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div key={idx} className=\"flex items-center justify-center\">\n {plugin}\n </div>\n ))}\n </div>\n\n {/* <div className=\"h-5 w-[1px] bg-[#E5E7EB]\" /> */}\n\n <ThreadPrimitive.If running={false}>\n <ComposerPrimitive.Send asChild>\n <TooltipIconButton\n tooltip={disabled ? disabledReason : t('thread.send')}\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n // disabled={disabled}\n className={cn(\n 'aui-composer-send size-[28px] rounded-[8px] text-white p-0',\n disabled\n ? 'bg-gray-400 cursor-not-allowed'\n : 'bg-[#5252FF] hover:bg-primary/10 hover:text-primary',\n )}\n aria-label=\"Send message\"\n >\n {currentThread?.loading ? (\n <LoaderCircle className=\"aui-composer-send-icon size-[16px] animate-spin\" />\n ) : (\n <ArrowUpIcon className=\"aui-composer-send-icon size-[16px] text-white\" />\n )}\n </TooltipIconButton>\n </ComposerPrimitive.Send>\n </ThreadPrimitive.If>\n\n <ThreadPrimitive.If running>\n <TooltipIconButton\n onClick={cancel}\n tooltip=\"stop\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[28px] bg-[#5252FF] rounded-full text-white text-primary hover:bg-primary/10 hover:text-primary p-0\"\n aria-label=\"Send message\"\n >\n <AbortMessage className=\"aui-composer-send-icon size-[28px] fill-white\" />\n </TooltipIconButton>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\n const { t } = useI18n();\n return (\n <MessagePrimitive.Error>\n <ErrorPrimitive.Root className=\"aui-message-error-root mt-2 rounded-md border border-destructive bg-destructive/10 p-3 text-sm text-destructive dark:bg-destructive/5 dark:text-red-200\">\n <div className=\"font-medium text-destructive text-red-500\">\n {t('thread.requestError')}\n </div>\n <ErrorPrimitive.Message className=\"aui-message-error-message line-clamp-2\" />\n </ErrorPrimitive.Root>\n </MessagePrimitive.Error>\n );\n};\n\nconst ToolGroup: FC<\n PropsWithChildren<{ startIndex: number; endIndex: number }>\n> = ({ startIndex, endIndex, children }) => {\n const toolCount = endIndex - startIndex + 1;\n return (\n <details className=\"my-2\">\n <summary className=\"cursor-pointer font-medium\">\n {toolCount}\n {' '}\n tool\n {toolCount === 1 ? 'call' : 'calls'}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n const { threadMaxWidth } = useChatkitContext();\n return (\n <MessagePrimitive.Root asChild>\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"aui-assistant-message-root relative mx-auto w-full max-w-[var(--thread-max-width)] py-4 duration-150 slide-in-from-bottom-1 last:mb-24\"\n data-role=\"assistant\"\n >\n <div className=\"group\">\n <div className=\"aui-assistant-message-content mx-2 leading-7 break-words text-foreground flex flex-col gap-[12px]\">\n <MessagePrimitive.Parts\n components={assistantMessageComponentsWithAvatar}\n />\n <MessageError />\n </div>\n\n <div className=\"aui-assistant-message-footer mt-2 ml-2 flex hover:visible opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <BranchPicker />\n <AssistantActionBar />\n </div>\n </div>\n </div>\n </MessagePrimitive.Root>\n );\n};\n\nconst AssistantActionBar: FC = () => {\n const [submittedFeedback, setSubmittedFeedback] = useState<\n 'positive' | 'negative' | undefined\n >(undefined);\n const { t } = useI18n();\n\n const downloadContent = useAssistantState(({ message }) => {\n if (\n (message.role !== 'assistant' || message.status?.type !== 'running')\n && message.parts.some((c) => c.type === 'text' && c.text.length > 0)\n ) {\n return message.parts\n .filter((c) => c.type === 'text')\n .map((c) => c.text)\n .join('\\n');\n }\n return '';\n });\n\n const { authors } = useChatkitContext();\n\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className={cn(\n 'aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex items-center gap-[8px] text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm',\n authors.length >= 2 ? 'ml-[50px]' : '',\n )}\n >\n {/* <div\n className=\"flex items-center justify-center\"\n onClick={() => setSubmittedFeedback(\n submittedFeedback === 'positive' ? undefined : 'positive',\n )}\n >\n <TooltipIconButton tooltip={t('thread.like')}>\n <ThumbUpIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === 'positive' ? '#000' : undefined}\n />\n </TooltipIconButton>\n </div>\n <div\n className=\"flex items-center justify-center\"\n onClick={() => setSubmittedFeedback(\n submittedFeedback === 'negative' ? undefined : 'negative',\n )}\n >\n <TooltipIconButton tooltip={t('thread.dislike')}>\n <ThumbDownIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === 'negative' ? '#000' : undefined}\n />\n </TooltipIconButton>\n </div> */}\n\n {/* <div className=\"w-[1px] h-[12px] bg-[#DDE2E9]\" /> */}\n <ActionBarPrimitive.Copy asChild>\n <TooltipIconButton tooltip={t('thread.copy')}>\n <MessagePrimitive.If copied>\n <CheckIcon className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\" />\n </MessagePrimitive.If>\n <MessagePrimitive.If copied={false}>\n <CopyIcon className=\"aui-assistant-action-bar-copy-icon size-[16px]\" />\n </MessagePrimitive.If>\n </TooltipIconButton>\n </ActionBarPrimitive.Copy>\n\n {/* <TooltipIconButton\n tooltip={t('thread.download')}\n onClick={() => {\n saveStringToMarkdown(downloadContent, 'message.md');\n }}\n >\n <Download className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n <ActionBarPrimitive.Reload asChild>\n <TooltipIconButton tooltip={t('thread.refresh')}>\n <RefreshIcon className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Reload> */}\n </ActionBarPrimitive.Root>\n );\n};\n\n// const UserActionBar: FC = () => {\n// return (\n// <ActionBarPrimitive.Root\n// hideWhenRunning\n// autohide=\"not-last\"\n// className=\"aui-user-action-bar-root flex flex-col items-end\"\n// >\n// <ActionBarPrimitive.Edit asChild>\n// <TooltipIconButton tooltip=\"Edit\" className=\"aui-user-action-edit p-4\">\n// <PencilIcon />\n// </TooltipIconButton>\n// </ActionBarPrimitive.Edit>\n// </ActionBarPrimitive.Root>\n// );\n// };\n\nconst EditComposer: FC = () => {\n const { t } = useI18n();\n const { threadMaxWidth } = useChatkitContext();\n return (\n <div\n className=\"aui-edit-composer-wrapper mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 px-2 first:mt-4\"\n style={{ maxWidth: threadMaxWidth }}\n >\n <ComposerPrimitive.Root className=\"aui-edit-composer-root ml-auto flex w-full max-w-7/8 flex-col rounded-xl bg-muted\">\n <ComposerPrimitive.Input\n className=\"aui-edit-composer-input flex min-h-[60px] w-full resize-none bg-transparent p-4 text-foreground outline-none\"\n autoFocus\n />\n\n <div className=\"aui-edit-composer-footer mx-3 mb-3 flex items-center justify-center gap-2 self-end\">\n <ComposerPrimitive.Cancel asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label={t('thread.cancelEdit')}\n >\n {t('warningModal.cancel')}\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n {t('thread.update')}\n </Button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({\n className,\n ...rest\n}) => (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className={cn(\n 'aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground',\n className,\n )}\n {...rest}\n >\n <BranchPickerPrimitive.Previous asChild>\n <TooltipIconButton tooltip=\"Previous\">\n <ChevronLeftIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Previous>\n <span className=\"aui-branch-picker-state font-medium\">\n <BranchPickerPrimitive.Number />\n {' '}\n /\n <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n);\n\nconst UserMessage: FC = () => {\n const { threadMaxWidth } = useChatkitContext();\n return (\n <MessagePrimitive.Root asChild>\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group\"\n data-role=\"user\"\n >\n <UserMessageAttachments />\n\n {/* <Checkbox /> */}\n <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-[12px] py-[10px] break-words text-foreground bg-[#EDEFFC] rounded-[8px]\">\n <MessagePrimitive.Parts components={userMessageComponents} />\n </div>\n {/* <div className=\"aui-user-action-bar-wrapper invisible group-hover:visible transition-all duration-200\">\n <UserActionBar />\n </div> */}\n </div>\n\n {/* 移除了下方工具栏代码 */}\n\n {/* <BranchPicker className=\"aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end\" /> */}\n </div>\n </MessagePrimitive.Root>\n );\n};\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\n const { t } = useI18n();\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n className=\"aui-user-action-bar-root flex items-end gap-2 justify-end bg-background p-1 rounded-md\"\n >\n <ActionBarPrimitive.Edit asChild>\n <TooltipIconButton\n tooltip={t('thread.edit')}\n className=\"aui-user-action-edit\"\n >\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton\n tooltip={t('thread.share')}\n className=\"aui-user-action-edit\"\n >\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton\n tooltip={t('thread.more')}\n className=\"aui-user-action-edit\"\n >\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"thread.js","sources":["../../../src/components/assistant-ui/thread.tsx"],"sourcesContent":["import {\n ArrowDownIcon,\n ArrowUpIcon,\n CheckIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n PencilIcon,\n Square,\n Share2Icon, // 添加分享图标\n MoreHorizontalIcon,\n LoaderCircle,\n Mic,\n} from 'lucide-react';\nimport { v4 as uuid } from 'uuid';\nimport {\n ActionBarPrimitive,\n BranchPickerPrimitive,\n ComposerPrimitive,\n ErrorPrimitive,\n MessagePrimitive,\n ThreadPrimitive,\n useAssistantState,\n MessagePartPrimitive,\n} from '@assistant-ui/react';\n\nimport {\n useMemo, useState, type FC, type PropsWithChildren,\n} from 'react';\nimport { LazyMotion, MotionConfig, domAnimation } from 'motion/react';\nimport * as m from 'motion/react-m';\n\nimport { Checkbox } from '@radix-ui/react-checkbox';\n\nimport { Button } from '@/components/ui/button';\nimport { MarkdownText } from '@/components/assistant-ui/markdown-text';\nimport { ToolFallback } from '@/components/assistant-ui/tool-fallback';\nimport { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';\nimport {\n ComposerAddAttachment,\n ComposerAttachments,\n UserMessageAttachments,\n} from '@/components/assistant-ui/attachment';\nimport { File } from '@/components/assistant-ui/file';\n\nimport { cn } from '@/lib/utils';\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from '@/contexts/ChatkitContext';\nimport { useI18n } from '@/contexts/I18nContext';\nimport CopyIcon from '@/assets/Copy';\nimport RefreshIcon from '@/assets/RefreshIcon';\nimport NewSession from '@/assets/NewSession';\nimport dayjs from 'dayjs';\nimport useThread from '@/hooks/useThread';\nimport { saveStringToMarkdown } from '@/utils/download';\nimport Download from '@/assets/Download';\nimport AbortMessage from '@/assets/AbortMessage';\nimport ClearIcon from '@/assets/ClearIcon';\nimport { Thread as ThreadType, useSnapshot } from '@chat-lab/core';\nimport { TooltipTrigger } from '@radix-ui/react-tooltip';\nimport { useMemoizedFn } from 'ahooks';\nimport Recommend from '../welcome';\nimport ThreadHeader from './thread-header';\nimport { Reasoning, ReasoningGroup } from './reasoning';\nimport { assistantMessageComponentsWithAvatar } from './message-components-with-avatar';\n\nconst assistantMessageComponents = {\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n ReasoningGroup,\n};\n\nconst userMessageComponents = {\n Text: () => (\n <p style={{ whiteSpace: 'pre-line', fontSize: 16 }}>\n <MessagePartPrimitive.Text />\n <MessagePartPrimitive.InProgress>\n <span style={{ fontFamily: 'revert' }}>{' \\u25CF'}</span>\n </MessagePartPrimitive.InProgress>\n </p>\n ),\n};\nexport const Thread: FC<{\n welcome?: React.ReactNode;\n recommends?: string[];\n}> = ({ welcome, recommends }) => {\n const { currentThread } = useThread();\n\n const ref = useChatkitRef();\n const welcomeElement = useMemo(() => {\n if (welcome) return welcome;\n if (recommends) {\n return (\n <Recommend\n recommends={recommends}\n onSelect={(question) => {\n ref?.sendMessage({\n content: [\n {\n type: 'text',\n text: question,\n },\n ],\n });\n }}\n />\n );\n }\n return undefined;\n }, [recommends, welcome]);\n\n const threadMessageComponents = useMemo(\n () => ({\n UserMessage,\n EditComposer,\n AssistantMessage,\n }),\n [],\n );\n\n const {\n showHeader, renderHeader, threadMaxWidth, threadBottom,\n } = useChatkitContext();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n {showHeader\n && (renderHeader ? (\n renderHeader({ thread: currentThread as ThreadType })\n ) : (\n <ThreadHeader title={currentThread?.name || 'Thread Title'} />\n ))}\n <LazyMotion features={domAnimation}>\n <MotionConfig reducedMotion=\"user\">\n <ThreadPrimitive.Root\n className=\"aui-root aui-thread-root @container flex-1 flex h-[calc(100%-65px)] flex-col bg-background\"\n style={{\n ['--thread-max-width' as string]: '66rem',\n background: 'white',\n }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4\">\n <ThreadPrimitive.Messages\n components={threadMessageComponents}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9\" />\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n <ThreadPrimitive.If empty>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4 justify-center items-center\">\n <div\n className=\" aui-thread-viewport-spacer min-h-12 grow z-9\"\n style={{\n maxWidth: threadMaxWidth,\n backgroundColor: 'white',\n }}\n />\n {currentThread?.loading ? (\n <div className=\"flex items-center justify-center gap-1.5 h-[180px]\">\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '0ms',\n }}\n />\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '150ms',\n }}\n />\n <span\n className=\"w-2.5 h-2.5 bg-gray-500 rounded-full\"\n style={{\n animation: 'bounce 1s ease-in-out infinite',\n animationDelay: '300ms',\n }}\n />\n </div>\n ) : (\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"max-w-[var(--thread-max-width)] w-full h-full\"\n >\n {welcomeElement ?? <ThreadWelcome />}\n </div>\n )}\n <div\n className=\"aui-thread-viewport-spacer min-h-12 grow z-9\"\n style={{ background: 'white' }}\n />\n\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => (\n <ThreadPrimitive.ScrollToBottom asChild>\n <TooltipIconButton\n tooltip=\"Scroll to bottom\"\n variant=\"outline\"\n className=\"aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent\"\n >\n <ArrowDownIcon />\n </TooltipIconButton>\n </ThreadPrimitive.ScrollToBottom>\n);\n\nfunction NewThread() {\n const ref = useChatkitRef();\n const { t } = useI18n();\n const handleCreateNewThread = async () => {\n // 新建会话的逻辑\n const id = uuid();\n ref\n ?.addThread({\n id,\n name: id,\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n })\n .then(() => ref?.setCurrentThread(id));\n };\n\n return (\n <TooltipIconButton\n tooltip={t('thread.newChat')}\n onClick={handleCreateNewThread}\n className=\"flex h-[32px] w-[32px] items-center justify-center rounded-full bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none\"\n >\n <NewSession />\n </TooltipIconButton>\n );\n}\n\nfunction ClearThread() {\n const ref = useChatkitRef();\n const { t } = useI18n();\n const handleCreateNewThread = () => {\n ref?.clearCurrentThread();\n };\n const { currentThread } = useThread();\n\n const disabled = currentThread?.messages.length === 0 || currentThread?.loading;\n return (\n <TooltipIconButton\n tooltip={t('thread.clearChat')}\n disabled={disabled}\n onClick={handleCreateNewThread}\n className={cn(\n 'flex flex-shrink-0 size-[38px] items-center justify-center rounded-full bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50',\n disabled && 'opacity-50 pointer-events-none',\n )}\n >\n <ClearIcon className=\"size-[16px]\" />\n </TooltipIconButton>\n );\n}\n\nconst ThreadWelcome: FC = () => {\n const { t } = useI18n();\n const { threadMaxWidth } = useChatkitContext();\n return (\n <div\n className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\"\n style={{ maxWidth: threadMaxWidth }}\n >\n <div className=\"aui-thread-welcome-center flex w-full flex-col items-center justify-center\">\n <div className=\"aui-thread-welcome-message flex size-full flex-col justify-center px-8 text-[24px] text-center font-medium leading-[100%] text-[#0C0D0E]\">\n {t('thread.greeting')}\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n const { t } = useI18n();\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n {t('thread.greeting')}\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const {\n placeholder, composerTop, controller, threadMaxWidth, threadBottom,\n } = useChatkitContext();\n\n const metaData = useSnapshot(controller?.metaData);\n const clawStatus = metaData?.clawStatus;\n const isDisabled = clawStatus?.status === false;\n const disabledReason = clawStatus?.reason || '';\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (isDisabled && e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n // 1. 定义禁用状态和 tooltip 显示状态\n const [open, setOpen] = useState(false);\n\n return (\n <div\n style={{ maxWidth: threadMaxWidth, background: 'white' }}\n className=\"aui-composer-wrapper sticky bottom-0 mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 overflow-visible bg-background\"\n >\n <ThreadScrollToBottom />\n <div className=\"pt-[8px]\">{composerTop}</div>\n <div className=\"flex items-center gap-2\">\n <ComposerPrimitive.Root\n className={cn(\n 'aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[16px] border border-[#EAEDF1] bg-background px-[12px] py-[8px] shadow-sm transition-all min-h-[84px]',\n isDisabled && 'cursor-not-allowed bg-gray-100',\n )}\n >\n <ComposerAttachments />\n <div className=\"flex items-center w-full gap-2 mb-[10px]\">\n <ComposerPrimitive.Input\n placeholder={isDisabled ? disabledReason : placeholder}\n className=\"aui-composer-input max-h-[60px] min-h-[60px] flex-1 overflow-y-auto resize-none bg-transparent py-0 text-[14px] leading-[24px] outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n rows={1}\n aria-label=\"Message input\"\n disabled={isDisabled}\n onKeyDown={handleKeyDown}\n />\n </div>\n <ComposerAction\n disabled={isDisabled}\n disabledReason={disabledReason}\n />\n </ComposerPrimitive.Root>\n </div>\n {threadBottom || <div className=\"pb-4 md:pb-6\" />}\n </div>\n );\n};\n\nconst ComposerAction: FC<{ disabled?: boolean; disabledReason?: string }> = ({\n disabled,\n disabledReason,\n}) => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n const { controller } = useChatkitContext();\n const cancel = useMemoizedFn(() => {\n controller?.abortMessage();\n });\n\n const { t } = useI18n();\n return (\n <div className=\"aui-composer-action-wrapper flex items-center gap-3 justify-between\">\n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div key={idx} className=\"flex items-center justify-center\">\n {plugin}\n </div>\n ))}\n </div>\n\n {/* <div className=\"h-5 w-[1px] bg-[#E5E7EB]\" /> */}\n\n <ThreadPrimitive.If running={false}>\n <ComposerPrimitive.Send asChild>\n <TooltipIconButton\n tooltip={disabled ? disabledReason : t('thread.send')}\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n // disabled={disabled}\n className={cn(\n 'aui-composer-send size-[28px] rounded-[8px] text-white p-0',\n disabled\n ? 'bg-gray-400 cursor-not-allowed'\n : 'bg-[#5252FF] hover:bg-primary/10 hover:text-primary',\n )}\n aria-label=\"Send message\"\n >\n {currentThread?.loading ? (\n <LoaderCircle className=\"aui-composer-send-icon size-[16px] animate-spin\" />\n ) : (\n <ArrowUpIcon className=\"aui-composer-send-icon size-[16px] text-white\" />\n )}\n </TooltipIconButton>\n </ComposerPrimitive.Send>\n </ThreadPrimitive.If>\n\n <ThreadPrimitive.If running>\n <TooltipIconButton\n onClick={cancel}\n tooltip=\"stop\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[28px] bg-[#5252FF] rounded-full text-white text-primary hover:bg-primary/10 hover:text-primary p-0\"\n aria-label=\"Send message\"\n >\n <AbortMessage className=\"aui-composer-send-icon size-[28px] fill-white\" />\n </TooltipIconButton>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\n const { t } = useI18n();\n return (\n <MessagePrimitive.Error>\n <ErrorPrimitive.Root className=\"aui-message-error-root mt-2 rounded-md border border-destructive bg-destructive/10 p-3 text-sm text-destructive dark:bg-destructive/5 dark:text-red-200\">\n <div className=\"font-medium text-destructive text-red-500\">\n {t('thread.requestError')}\n </div>\n <ErrorPrimitive.Message className=\"aui-message-error-message line-clamp-2\" />\n </ErrorPrimitive.Root>\n </MessagePrimitive.Error>\n );\n};\n\nconst ToolGroup: FC<\n PropsWithChildren<{ startIndex: number; endIndex: number }>\n> = ({ startIndex, endIndex, children }) => {\n const toolCount = endIndex - startIndex + 1;\n return (\n <details className=\"my-2\">\n <summary className=\"cursor-pointer font-medium\">\n {toolCount}\n {' '}\n tool\n {toolCount === 1 ? 'call' : 'calls'}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n const { threadMaxWidth } = useChatkitContext();\n return (\n <MessagePrimitive.Root asChild>\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"aui-assistant-message-root relative mx-auto w-full max-w-[var(--thread-max-width)] py-4 duration-150 slide-in-from-bottom-1 last:mb-24\"\n data-role=\"assistant\"\n >\n <div className=\"group\">\n <div className=\"aui-assistant-message-content mx-2 leading-7 break-words text-foreground flex flex-col gap-[12px]\">\n <MessagePrimitive.Parts\n components={assistantMessageComponentsWithAvatar}\n />\n <MessageError />\n </div>\n\n <div className=\"aui-assistant-message-footer mt-2 ml-2 flex hover:visible opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <BranchPicker />\n <AssistantActionBar />\n </div>\n </div>\n </div>\n </MessagePrimitive.Root>\n );\n};\n\nconst AssistantActionBar: FC = () => {\n const [submittedFeedback, setSubmittedFeedback] = useState<\n 'positive' | 'negative' | undefined\n >(undefined);\n const { t } = useI18n();\n\n const downloadContent = useAssistantState(({ message }) => {\n if (\n (message.role !== 'assistant' || message.status?.type !== 'running')\n && message.parts.some((c) => c.type === 'text' && c.text.length > 0)\n ) {\n return message.parts\n .filter((c) => c.type === 'text')\n .map((c) => c.text)\n .join('\\n');\n }\n return '';\n });\n\n const { authors } = useChatkitContext();\n\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className={cn(\n 'aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex items-center gap-[8px] text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm',\n authors.length >= 2 ? 'ml-[50px]' : '',\n )}\n >\n {/* <div\n className=\"flex items-center justify-center\"\n onClick={() => setSubmittedFeedback(\n submittedFeedback === 'positive' ? undefined : 'positive',\n )}\n >\n <TooltipIconButton tooltip={t('thread.like')}>\n <ThumbUpIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === 'positive' ? '#000' : undefined}\n />\n </TooltipIconButton>\n </div>\n <div\n className=\"flex items-center justify-center\"\n onClick={() => setSubmittedFeedback(\n submittedFeedback === 'negative' ? undefined : 'negative',\n )}\n >\n <TooltipIconButton tooltip={t('thread.dislike')}>\n <ThumbDownIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === 'negative' ? '#000' : undefined}\n />\n </TooltipIconButton>\n </div> */}\n\n {/* <div className=\"w-[1px] h-[12px] bg-[#DDE2E9]\" /> */}\n <ActionBarPrimitive.Copy asChild>\n <TooltipIconButton tooltip={t('thread.copy')}>\n <MessagePrimitive.If copied>\n <CheckIcon className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\" />\n </MessagePrimitive.If>\n <MessagePrimitive.If copied={false}>\n <CopyIcon className=\"aui-assistant-action-bar-copy-icon size-[16px]\" />\n </MessagePrimitive.If>\n </TooltipIconButton>\n </ActionBarPrimitive.Copy>\n\n {/* <TooltipIconButton\n tooltip={t('thread.download')}\n onClick={() => {\n saveStringToMarkdown(downloadContent, 'message.md');\n }}\n >\n <Download className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n <ActionBarPrimitive.Reload asChild>\n <TooltipIconButton tooltip={t('thread.refresh')}>\n <RefreshIcon className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Reload> */}\n </ActionBarPrimitive.Root>\n );\n};\n\n// const UserActionBar: FC = () => {\n// return (\n// <ActionBarPrimitive.Root\n// hideWhenRunning\n// autohide=\"not-last\"\n// className=\"aui-user-action-bar-root flex flex-col items-end\"\n// >\n// <ActionBarPrimitive.Edit asChild>\n// <TooltipIconButton tooltip=\"Edit\" className=\"aui-user-action-edit p-4\">\n// <PencilIcon />\n// </TooltipIconButton>\n// </ActionBarPrimitive.Edit>\n// </ActionBarPrimitive.Root>\n// );\n// };\n\nconst EditComposer: FC = () => {\n const { t } = useI18n();\n const { threadMaxWidth } = useChatkitContext();\n return (\n <div\n className=\"aui-edit-composer-wrapper mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 px-2 first:mt-4\"\n style={{ maxWidth: threadMaxWidth }}\n >\n <ComposerPrimitive.Root className=\"aui-edit-composer-root ml-auto flex w-full max-w-7/8 flex-col rounded-xl bg-muted\">\n <ComposerPrimitive.Input\n className=\"aui-edit-composer-input flex min-h-[60px] w-full resize-none bg-transparent p-4 text-foreground outline-none\"\n autoFocus\n />\n\n <div className=\"aui-edit-composer-footer mx-3 mb-3 flex items-center justify-center gap-2 self-end\">\n <ComposerPrimitive.Cancel asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label={t('thread.cancelEdit')}\n >\n {t('warningModal.cancel')}\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n {t('thread.update')}\n </Button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({\n className,\n ...rest\n}) => (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className={cn(\n 'aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground',\n className,\n )}\n {...rest}\n >\n <BranchPickerPrimitive.Previous asChild>\n <TooltipIconButton tooltip=\"Previous\">\n <ChevronLeftIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Previous>\n <span className=\"aui-branch-picker-state font-medium\">\n <BranchPickerPrimitive.Number />\n {' '}\n /\n <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n);\n\nconst UserMessage: FC = () => {\n const { threadMaxWidth } = useChatkitContext();\n return (\n <MessagePrimitive.Root asChild>\n <div\n style={{ maxWidth: threadMaxWidth }}\n className=\"aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group\"\n data-role=\"user\"\n >\n <UserMessageAttachments />\n\n {/* <Checkbox /> */}\n <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-[12px] py-[10px] break-words text-foreground bg-[#EDEFFC] rounded-[8px] max-w-[720px] leading-[24px]\">\n <MessagePrimitive.Parts components={userMessageComponents} />\n </div>\n {/* <div className=\"aui-user-action-bar-wrapper invisible group-hover:visible transition-all duration-200\">\n <UserActionBar />\n </div> */}\n </div>\n\n {/* 移除了下方工具栏代码 */}\n\n {/* <BranchPicker className=\"aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end\" /> */}\n </div>\n </MessagePrimitive.Root>\n );\n};\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\n const { t } = useI18n();\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n className=\"aui-user-action-bar-root flex items-end gap-2 justify-end bg-background p-1 rounded-md\"\n >\n <ActionBarPrimitive.Edit asChild>\n <TooltipIconButton\n tooltip={t('thread.edit')}\n className=\"aui-user-action-edit\"\n >\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton\n tooltip={t('thread.share')}\n className=\"aui-user-action-edit\"\n >\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton\n tooltip={t('thread.more')}\n className=\"aui-user-action-edit\"\n >\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -6,13 +6,22 @@ const pluginName = 'ClawPlugin';
6
6
  class ClawPlugin extends index.ChatkitPlugin {
7
7
  constructor(options) {
8
8
  super({ pluginName });
9
+ this.queue = [];
10
+ this.sending = false;
9
11
  this.options = options;
10
12
  }
11
13
  apply(compiler) {
12
14
  compiler.hooks.message.beforeSend.tap(pluginName, async (ctx) => {
13
15
  const message = ctx.userMessage?.content?.[0].text;
14
- if (message)
15
- this.options.onSend(message);
16
+ if (message) {
17
+ if (!this.sending) {
18
+ this.sending = true;
19
+ this.options.onSend(message);
20
+ }
21
+ else {
22
+ this.queue.push(message);
23
+ }
24
+ }
16
25
  const runIds = this.options.getRunIds();
17
26
  return {
18
27
  ...ctx,
@@ -24,15 +33,20 @@ class ClawPlugin extends index.ChatkitPlugin {
24
33
  };
25
34
  });
26
35
  compiler.hooks.message.finallyEnd.tap(pluginName, (ctx) => {
27
- const runIds = this.options.getRunIds();
28
- return {
29
- loading: runIds.length !== 0,
30
- sending: runIds.length !== 0,
31
- };
36
+ const text = this.queue.pop();
37
+ if (text) {
38
+ this.options.onSend(text);
39
+ }
40
+ else {
41
+ this.sending = false;
42
+ }
43
+ return ctx;
32
44
  });
33
45
  compiler.hooks.message.abort.tap(pluginName, (ctx) => {
34
46
  const runIds = this.options.getRunIds();
35
47
  runIds.forEach((runId) => this.options.onAbort(runId));
48
+ this.sending = false;
49
+ this.queue = [];
36
50
  return {
37
51
  preventDefault: true,
38
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"clawPlugin.cjs","sources":["../../../src/hooks/useClawChat/clawPlugin.ts"],"sourcesContent":["import {\n BaseProtocol,\n ChatkitPlugin,\n Compiler,\n AdkProtocol,\n ChatController,\n} from '@chat-lab/core';\n\nexport type ClawPluginOptions = {\n onSend: (text: string) => void;\n getRunIds: () => string[];\n onAbort: (runId: string) => void;\n};\n\nconst pluginName = 'ClawPlugin';\n\nexport class ClawPlugin extends ChatkitPlugin {\n private options: ClawPluginOptions;\n\n constructor(options: ClawPluginOptions) {\n super({ pluginName });\n this.options = options;\n }\n\n public apply(compiler: Compiler) {\n compiler.hooks.message.beforeSend.tap(pluginName, async (ctx: any) => {\n const message = ctx.userMessage?.content?.[0].text;\n if (message) this.options.onSend(message);\n const runIds = this.options.getRunIds();\n return {\n ...ctx,\n shouldSend: !message,\n shouldAddUserMessage: Boolean(message),\n resetStatus:\n runIds.length === 0\n ? { loading: false, sending: false }\n : { loading: false, sending: true },\n };\n });\n compiler.hooks.message.finallyEnd.tap(\n pluginName,\n (ctx: { loading: boolean; sending: boolean }) => {\n const runIds = this.options.getRunIds();\n return {\n loading: runIds.length !== 0,\n sending: runIds.length !== 0,\n };\n },\n );\n\n compiler.hooks.message.abort.tap(\n pluginName,\n (ctx: { preventDefault: boolean }) => {\n const runIds = this.options.getRunIds();\n runIds.forEach((runId) => this.options.onAbort(runId));\n return {\n preventDefault: true,\n };\n },\n );\n }\n}\n"],"names":["ChatkitPlugin"],"mappings":";;;;AAcA,MAAM,UAAU,GAAG,YAAY,CAAC;AAE1B,MAAO,UAAW,SAAQA,mBAAa,CAAA;AAG3C,IAAA,WAAA,CAAY,OAA0B,EAAA;AACpC,QAAA,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;AAEM,IAAA,KAAK,CAAC,QAAkB,EAAA;AAC7B,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,GAAQ,KAAI;AACnE,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,YAAA,IAAI,OAAO;AAAE,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACxC,OAAO;AACL,gBAAA,GAAG,GAAG;gBACN,UAAU,EAAE,CAAC,OAAO;AACpB,gBAAA,oBAAoB,EAAE,OAAO,CAAC,OAAO,CAAC;AACtC,gBAAA,WAAW,EACT,MAAM,CAAC,MAAM,KAAK,CAAC;sBACf,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;sBAClC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;aACxC,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CACnC,UAAU,EACV,CAAC,GAA2C,KAAI;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACxC,OAAO;AACL,gBAAA,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;AAC5B,gBAAA,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;aAC7B,CAAC;AACJ,SAAC,CACF,CAAC;AAEF,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAC9B,UAAU,EACV,CAAC,GAAgC,KAAI;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AACxC,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACvD,OAAO;AACL,gBAAA,cAAc,EAAE,IAAI;aACrB,CAAC;AACJ,SAAC,CACF,CAAC;KACH;AACF;;;;"}
1
+ {"version":3,"file":"clawPlugin.cjs","sources":["../../../src/hooks/useClawChat/clawPlugin.ts"],"sourcesContent":["import {\n BaseProtocol,\n ChatkitPlugin,\n Compiler,\n AdkProtocol,\n ChatController,\n} from '@chat-lab/core';\n\nexport type ClawPluginOptions = {\n onSend: (text: string) => void;\n getRunIds: () => string[];\n onAbort: (runId: string) => void;\n};\n\nconst pluginName = 'ClawPlugin';\n\nexport class ClawPlugin extends ChatkitPlugin {\n private options: ClawPluginOptions;\n\n private queue: string[] = [];\n\n private sending = false;\n\n constructor(options: ClawPluginOptions) {\n super({ pluginName });\n this.options = options;\n }\n\n public apply(compiler: Compiler) {\n compiler.hooks.message.beforeSend.tap(pluginName, async (ctx: any) => {\n const message = ctx.userMessage?.content?.[0].text;\n if (message) {\n if (!this.sending) {\n this.sending = true;\n this.options.onSend(message);\n } else {\n this.queue.push(message);\n }\n }\n const runIds = this.options.getRunIds();\n return {\n ...ctx,\n shouldSend: !message,\n shouldAddUserMessage: Boolean(message),\n resetStatus:\n runIds.length === 0\n ? { loading: false, sending: false }\n : { loading: false, sending: true },\n };\n });\n compiler.hooks.message.finallyEnd.tap(\n pluginName,\n (ctx: { loading: boolean; sending: boolean }) => {\n const text = this.queue.pop();\n if (text) {\n this.options.onSend(text);\n } else {\n this.sending = false;\n }\n return ctx;\n },\n );\n\n compiler.hooks.message.abort.tap(\n pluginName,\n (ctx: { preventDefault: boolean }) => {\n const runIds = this.options.getRunIds();\n runIds.forEach((runId) => this.options.onAbort(runId));\n this.sending = false;\n this.queue = [];\n return {\n preventDefault: true,\n };\n },\n );\n }\n}\n"],"names":["ChatkitPlugin"],"mappings":";;;;AAcA,MAAM,UAAU,GAAG,YAAY,CAAC;AAE1B,MAAO,UAAW,SAAQA,mBAAa,CAAA;AAO3C,IAAA,WAAA,CAAY,OAA0B,EAAA;AACpC,QAAA,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QALhB,IAAK,CAAA,KAAA,GAAa,EAAE,CAAC;QAErB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAItB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;AAEM,IAAA,KAAK,CAAC,QAAkB,EAAA;AAC7B,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,GAAQ,KAAI;AACnE,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACnD,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBAC9B;qBAAM;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC1B;aACF;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACxC,OAAO;AACL,gBAAA,GAAG,GAAG;gBACN,UAAU,EAAE,CAAC,OAAO;AACpB,gBAAA,oBAAoB,EAAE,OAAO,CAAC,OAAO,CAAC;AACtC,gBAAA,WAAW,EACT,MAAM,CAAC,MAAM,KAAK,CAAC;sBACf,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;sBAClC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;aACxC,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CACnC,UAAU,EACV,CAAC,GAA2C,KAAI;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC9B,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC3B;iBAAM;AACL,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CACF,CAAC;AAEF,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAC9B,UAAU,EACV,CAAC,GAAgC,KAAI;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AACxC,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO;AACL,gBAAA,cAAc,EAAE,IAAI;aACrB,CAAC;AACJ,SAAC,CACF,CAAC;KACH;AACF;;;;"}
@@ -6,6 +6,8 @@ export type ClawPluginOptions = {
6
6
  };
7
7
  export declare class ClawPlugin extends ChatkitPlugin {
8
8
  private options;
9
+ private queue;
10
+ private sending;
9
11
  constructor(options: ClawPluginOptions);
10
12
  apply(compiler: Compiler): void;
11
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"clawPlugin.d.ts","sourceRoot":"","sources":["../../../src/hooks/useClawChat/clawPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,QAAQ,EAGT,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AAIF,qBAAa,UAAW,SAAQ,aAAa;IAC3C,OAAO,CAAC,OAAO,CAAoB;gBAEvB,OAAO,EAAE,iBAAiB;IAK/B,KAAK,CAAC,QAAQ,EAAE,QAAQ;CAqChC"}
1
+ {"version":3,"file":"clawPlugin.d.ts","sourceRoot":"","sources":["../../../src/hooks/useClawChat/clawPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,QAAQ,EAGT,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AAIF,qBAAa,UAAW,SAAQ,aAAa;IAC3C,OAAO,CAAC,OAAO,CAAoB;IAEnC,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,iBAAiB;IAK/B,KAAK,CAAC,QAAQ,EAAE,QAAQ;CAgDhC"}
@@ -4,13 +4,22 @@ const pluginName = 'ClawPlugin';
4
4
  class ClawPlugin extends ChatkitPlugin {
5
5
  constructor(options) {
6
6
  super({ pluginName });
7
+ this.queue = [];
8
+ this.sending = false;
7
9
  this.options = options;
8
10
  }
9
11
  apply(compiler) {
10
12
  compiler.hooks.message.beforeSend.tap(pluginName, async (ctx) => {
11
13
  const message = ctx.userMessage?.content?.[0].text;
12
- if (message)
13
- this.options.onSend(message);
14
+ if (message) {
15
+ if (!this.sending) {
16
+ this.sending = true;
17
+ this.options.onSend(message);
18
+ }
19
+ else {
20
+ this.queue.push(message);
21
+ }
22
+ }
14
23
  const runIds = this.options.getRunIds();
15
24
  return {
16
25
  ...ctx,
@@ -22,15 +31,20 @@ class ClawPlugin extends ChatkitPlugin {
22
31
  };
23
32
  });
24
33
  compiler.hooks.message.finallyEnd.tap(pluginName, (ctx) => {
25
- const runIds = this.options.getRunIds();
26
- return {
27
- loading: runIds.length !== 0,
28
- sending: runIds.length !== 0,
29
- };
34
+ const text = this.queue.pop();
35
+ if (text) {
36
+ this.options.onSend(text);
37
+ }
38
+ else {
39
+ this.sending = false;
40
+ }
41
+ return ctx;
30
42
  });
31
43
  compiler.hooks.message.abort.tap(pluginName, (ctx) => {
32
44
  const runIds = this.options.getRunIds();
33
45
  runIds.forEach((runId) => this.options.onAbort(runId));
46
+ this.sending = false;
47
+ this.queue = [];
34
48
  return {
35
49
  preventDefault: true,
36
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"clawPlugin.js","sources":["../../../src/hooks/useClawChat/clawPlugin.ts"],"sourcesContent":["import {\n BaseProtocol,\n ChatkitPlugin,\n Compiler,\n AdkProtocol,\n ChatController,\n} from '@chat-lab/core';\n\nexport type ClawPluginOptions = {\n onSend: (text: string) => void;\n getRunIds: () => string[];\n onAbort: (runId: string) => void;\n};\n\nconst pluginName = 'ClawPlugin';\n\nexport class ClawPlugin extends ChatkitPlugin {\n private options: ClawPluginOptions;\n\n constructor(options: ClawPluginOptions) {\n super({ pluginName });\n this.options = options;\n }\n\n public apply(compiler: Compiler) {\n compiler.hooks.message.beforeSend.tap(pluginName, async (ctx: any) => {\n const message = ctx.userMessage?.content?.[0].text;\n if (message) this.options.onSend(message);\n const runIds = this.options.getRunIds();\n return {\n ...ctx,\n shouldSend: !message,\n shouldAddUserMessage: Boolean(message),\n resetStatus:\n runIds.length === 0\n ? { loading: false, sending: false }\n : { loading: false, sending: true },\n };\n });\n compiler.hooks.message.finallyEnd.tap(\n pluginName,\n (ctx: { loading: boolean; sending: boolean }) => {\n const runIds = this.options.getRunIds();\n return {\n loading: runIds.length !== 0,\n sending: runIds.length !== 0,\n };\n },\n );\n\n compiler.hooks.message.abort.tap(\n pluginName,\n (ctx: { preventDefault: boolean }) => {\n const runIds = this.options.getRunIds();\n runIds.forEach((runId) => this.options.onAbort(runId));\n return {\n preventDefault: true,\n };\n },\n );\n }\n}\n"],"names":[],"mappings":";;AAcA,MAAM,UAAU,GAAG,YAAY,CAAC;AAE1B,MAAO,UAAW,SAAQ,aAAa,CAAA;AAG3C,IAAA,WAAA,CAAY,OAA0B,EAAA;AACpC,QAAA,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;AAEM,IAAA,KAAK,CAAC,QAAkB,EAAA;AAC7B,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,GAAQ,KAAI;AACnE,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,YAAA,IAAI,OAAO;AAAE,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACxC,OAAO;AACL,gBAAA,GAAG,GAAG;gBACN,UAAU,EAAE,CAAC,OAAO;AACpB,gBAAA,oBAAoB,EAAE,OAAO,CAAC,OAAO,CAAC;AACtC,gBAAA,WAAW,EACT,MAAM,CAAC,MAAM,KAAK,CAAC;sBACf,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;sBAClC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;aACxC,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CACnC,UAAU,EACV,CAAC,GAA2C,KAAI;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACxC,OAAO;AACL,gBAAA,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;AAC5B,gBAAA,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;aAC7B,CAAC;AACJ,SAAC,CACF,CAAC;AAEF,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAC9B,UAAU,EACV,CAAC,GAAgC,KAAI;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AACxC,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACvD,OAAO;AACL,gBAAA,cAAc,EAAE,IAAI;aACrB,CAAC;AACJ,SAAC,CACF,CAAC;KACH;AACF;;;;"}
1
+ {"version":3,"file":"clawPlugin.js","sources":["../../../src/hooks/useClawChat/clawPlugin.ts"],"sourcesContent":["import {\n BaseProtocol,\n ChatkitPlugin,\n Compiler,\n AdkProtocol,\n ChatController,\n} from '@chat-lab/core';\n\nexport type ClawPluginOptions = {\n onSend: (text: string) => void;\n getRunIds: () => string[];\n onAbort: (runId: string) => void;\n};\n\nconst pluginName = 'ClawPlugin';\n\nexport class ClawPlugin extends ChatkitPlugin {\n private options: ClawPluginOptions;\n\n private queue: string[] = [];\n\n private sending = false;\n\n constructor(options: ClawPluginOptions) {\n super({ pluginName });\n this.options = options;\n }\n\n public apply(compiler: Compiler) {\n compiler.hooks.message.beforeSend.tap(pluginName, async (ctx: any) => {\n const message = ctx.userMessage?.content?.[0].text;\n if (message) {\n if (!this.sending) {\n this.sending = true;\n this.options.onSend(message);\n } else {\n this.queue.push(message);\n }\n }\n const runIds = this.options.getRunIds();\n return {\n ...ctx,\n shouldSend: !message,\n shouldAddUserMessage: Boolean(message),\n resetStatus:\n runIds.length === 0\n ? { loading: false, sending: false }\n : { loading: false, sending: true },\n };\n });\n compiler.hooks.message.finallyEnd.tap(\n pluginName,\n (ctx: { loading: boolean; sending: boolean }) => {\n const text = this.queue.pop();\n if (text) {\n this.options.onSend(text);\n } else {\n this.sending = false;\n }\n return ctx;\n },\n );\n\n compiler.hooks.message.abort.tap(\n pluginName,\n (ctx: { preventDefault: boolean }) => {\n const runIds = this.options.getRunIds();\n runIds.forEach((runId) => this.options.onAbort(runId));\n this.sending = false;\n this.queue = [];\n return {\n preventDefault: true,\n };\n },\n );\n }\n}\n"],"names":[],"mappings":";;AAcA,MAAM,UAAU,GAAG,YAAY,CAAC;AAE1B,MAAO,UAAW,SAAQ,aAAa,CAAA;AAO3C,IAAA,WAAA,CAAY,OAA0B,EAAA;AACpC,QAAA,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QALhB,IAAK,CAAA,KAAA,GAAa,EAAE,CAAC;QAErB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAItB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;AAEM,IAAA,KAAK,CAAC,QAAkB,EAAA;AAC7B,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,GAAQ,KAAI;AACnE,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACnD,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBAC9B;qBAAM;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC1B;aACF;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACxC,OAAO;AACL,gBAAA,GAAG,GAAG;gBACN,UAAU,EAAE,CAAC,OAAO;AACpB,gBAAA,oBAAoB,EAAE,OAAO,CAAC,OAAO,CAAC;AACtC,gBAAA,WAAW,EACT,MAAM,CAAC,MAAM,KAAK,CAAC;sBACf,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;sBAClC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;aACxC,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CACnC,UAAU,EACV,CAAC,GAA2C,KAAI;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC9B,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC3B;iBAAM;AACL,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CACF,CAAC;AAEF,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAC9B,UAAU,EACV,CAAC,GAAgC,KAAI;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AACxC,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO;AACL,gBAAA,cAAc,EAAE,IAAI;aACrB,CAAC;AACJ,SAAC,CACF,CAAC;KACH;AACF;;;;"}
package/dist/index.css CHANGED
@@ -1,2 +1,2 @@
1
- .chatkit-wrapper *,.chatkit-wrapper :after,.chatkit-wrapper :before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.chatkit-wrapper ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
2
- /* ! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com */.chatkit-wrapper *,.chatkit-wrapper :after,.chatkit-wrapper :before{border:0 solid #e5e7eb;box-sizing:border-box}.chatkit-wrapper :after,.chatkit-wrapper :before{--tw-content:""}.chatkit-wrapper,.chatkit-wrapper :host{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.chatkit-wrapper{line-height:inherit;margin:0}.chatkit-wrapper hr{border-top-width:1px;color:inherit;height:0}.chatkit-wrapper abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.chatkit-wrapper h1,.chatkit-wrapper h2,.chatkit-wrapper h3,.chatkit-wrapper h4,.chatkit-wrapper h5,.chatkit-wrapper h6{font-size:inherit;font-weight:inherit}.chatkit-wrapper a{color:inherit;text-decoration:inherit}.chatkit-wrapper b,.chatkit-wrapper strong{font-weight:bolder}.chatkit-wrapper code,.chatkit-wrapper kbd,.chatkit-wrapper pre,.chatkit-wrapper samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}.chatkit-wrapper small{font-size:80%}.chatkit-wrapper sub,.chatkit-wrapper sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.chatkit-wrapper sub{bottom:-.25em}.chatkit-wrapper sup{top:-.5em}.chatkit-wrapper table{border-collapse:collapse;border-color:inherit;text-indent:0}.chatkit-wrapper button,.chatkit-wrapper input,.chatkit-wrapper optgroup,.chatkit-wrapper select,.chatkit-wrapper textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}.chatkit-wrapper button,.chatkit-wrapper select{text-transform:none}.chatkit-wrapper button,.chatkit-wrapper input:where([type=button]),.chatkit-wrapper input:where([type=reset]),.chatkit-wrapper input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}.chatkit-wrapper :-moz-focusring{outline:auto}.chatkit-wrapper :-moz-ui-invalid{box-shadow:none}.chatkit-wrapper progress{vertical-align:baseline}.chatkit-wrapper ::-webkit-inner-spin-button,.chatkit-wrapper ::-webkit-outer-spin-button{height:auto}.chatkit-wrapper [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.chatkit-wrapper ::-webkit-search-decoration{-webkit-appearance:none}.chatkit-wrapper ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.chatkit-wrapper summary{display:list-item}.chatkit-wrapper blockquote,.chatkit-wrapper dd,.chatkit-wrapper dl,.chatkit-wrapper figure,.chatkit-wrapper h1,.chatkit-wrapper h2,.chatkit-wrapper h3,.chatkit-wrapper h4,.chatkit-wrapper h5,.chatkit-wrapper h6,.chatkit-wrapper hr,.chatkit-wrapper p,.chatkit-wrapper pre{margin:0}.chatkit-wrapper fieldset{margin:0;padding:0}.chatkit-wrapper legend{padding:0}.chatkit-wrapper menu,.chatkit-wrapper ol,.chatkit-wrapper ul{list-style:none;margin:0;padding:0}.chatkit-wrapper dialog{padding:0}.chatkit-wrapper textarea{resize:vertical}.chatkit-wrapper input::-moz-placeholder,.chatkit-wrapper textarea::-moz-placeholder{color:#9ca3af;opacity:1}.chatkit-wrapper input::placeholder,.chatkit-wrapper textarea::placeholder{color:#9ca3af;opacity:1}.chatkit-wrapper [role=button],.chatkit-wrapper button{cursor:pointer}.chatkit-wrapper :disabled{cursor:default}.chatkit-wrapper audio,.chatkit-wrapper canvas,.chatkit-wrapper embed,.chatkit-wrapper iframe,.chatkit-wrapper img,.chatkit-wrapper object,.chatkit-wrapper svg,.chatkit-wrapper video{display:block;vertical-align:middle}.chatkit-wrapper img,.chatkit-wrapper video{height:auto;max-width:100%}.chatkit-wrapper [hidden]:where(:not([hidden=until-found])){display:none}.chatkit-wrapper .container{width:100%}@media (min-width:640px){.chatkit-wrapper .container{max-width:640px}}@media (min-width:768px){.chatkit-wrapper .container{max-width:768px}}@media (min-width:1024px){.chatkit-wrapper .container{max-width:1024px}}@media (min-width:1280px){.chatkit-wrapper .container{max-width:1280px}}@media (min-width:1536px){.chatkit-wrapper .container{max-width:1536px}}.chatkit-wrapper .sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.chatkit-wrapper .pointer-events-none{pointer-events:none}.chatkit-wrapper .pointer-events-auto{pointer-events:auto}.chatkit-wrapper .invisible{visibility:hidden}.chatkit-wrapper .collapse{visibility:collapse}.chatkit-wrapper .static{position:static}.chatkit-wrapper .fixed{position:fixed}.chatkit-wrapper .absolute{position:absolute}.chatkit-wrapper .relative{position:relative}.chatkit-wrapper .sticky{position:sticky}.chatkit-wrapper .inset-0{inset:0}.chatkit-wrapper .inset-x-0{left:0;right:0}.chatkit-wrapper .inset-y-0{bottom:0;top:0}.chatkit-wrapper .-top-12{top:-36px}.chatkit-wrapper .bottom-0{bottom:0}.chatkit-wrapper .left-0{left:0}.chatkit-wrapper .left-\[50\%\]{left:50%}.chatkit-wrapper .right-0{right:0}.chatkit-wrapper .right-1{right:3px}.chatkit-wrapper .right-1\.5{right:4.5px}.chatkit-wrapper .right-2{right:6px}.chatkit-wrapper .right-3{right:9px}.chatkit-wrapper .right-4{right:12px}.chatkit-wrapper .top-0{top:0}.chatkit-wrapper .top-1\.5{top:4.5px}.chatkit-wrapper .top-2{top:6px}.chatkit-wrapper .top-3\.5{top:10.5px}.chatkit-wrapper .top-4{top:12px}.chatkit-wrapper .top-\[50\%\]{top:50%}.chatkit-wrapper .z-0{z-index:0}.chatkit-wrapper .z-10{z-index:10}.chatkit-wrapper .z-20{z-index:20}.chatkit-wrapper .z-50{z-index:50}.chatkit-wrapper .z-\[100\]{z-index:100}.chatkit-wrapper .col-span-full{grid-column:1/-1}.chatkit-wrapper .col-start-1{grid-column-start:1}.chatkit-wrapper .col-start-2{grid-column-start:2}.chatkit-wrapper .col-start-3{grid-column-start:3}.chatkit-wrapper .row-start-1{grid-row-start:1}.chatkit-wrapper .row-start-2{grid-row-start:2}.chatkit-wrapper .row-start-3{grid-row-start:3}.chatkit-wrapper .m-0{margin:0}.chatkit-wrapper .m-\[4px\]{margin:4px}.chatkit-wrapper .-mx-2{margin-left:-6px;margin-right:-6px}.chatkit-wrapper .mx-2{margin-left:6px;margin-right:6px}.chatkit-wrapper .mx-3{margin-left:9px;margin-right:9px}.chatkit-wrapper .mx-3\.5{margin-left:10.5px;margin-right:10.5px}.chatkit-wrapper .mx-auto{margin-left:auto;margin-right:auto}.chatkit-wrapper .my-2{margin-bottom:6px;margin-top:6px}.chatkit-wrapper .my-4{margin-bottom:12px;margin-top:12px}.chatkit-wrapper .my-5{margin-bottom:15px;margin-top:15px}.chatkit-wrapper .my-\[12px\]{margin-bottom:12px;margin-top:12px}.chatkit-wrapper .-ml-1{margin-left:-3px}.chatkit-wrapper .-ml-2{margin-left:-6px}.chatkit-wrapper .-mr-1{margin-right:-3px}.chatkit-wrapper .mb-1{margin-bottom:3px}.chatkit-wrapper .mb-2{margin-bottom:6px}.chatkit-wrapper .mb-3{margin-bottom:9px}.chatkit-wrapper .mb-4{margin-bottom:12px}.chatkit-wrapper .mb-6{margin-bottom:18px}.chatkit-wrapper .mb-\[10px\]{margin-bottom:10px}.chatkit-wrapper .mb-\[12px\]{margin-bottom:12px}.chatkit-wrapper .mb-\[4px\]{margin-bottom:4px}.chatkit-wrapper .mb-\[6px\]{margin-bottom:6px}.chatkit-wrapper .ml-2{margin-left:6px}.chatkit-wrapper .ml-3{margin-left:9px}.chatkit-wrapper .ml-6{margin-left:18px}.chatkit-wrapper .ml-\[24px\]{margin-left:24px}.chatkit-wrapper .ml-\[50px\]{margin-left:50px}.chatkit-wrapper .ml-auto{margin-left:auto}.chatkit-wrapper .mr-1{margin-right:3px}.chatkit-wrapper .mr-1\.5{margin-right:4.5px}.chatkit-wrapper .mr-2{margin-right:6px}.chatkit-wrapper .mr-3{margin-right:9px}.chatkit-wrapper .mr-4{margin-right:12px}.chatkit-wrapper .mr-6{margin-right:18px}.chatkit-wrapper .mr-\[12px\]{margin-right:12px}.chatkit-wrapper .mt-0\.5{margin-top:1.5px}.chatkit-wrapper .mt-1{margin-top:3px}.chatkit-wrapper .mt-1\.5{margin-top:4.5px}.chatkit-wrapper .mt-2{margin-top:6px}.chatkit-wrapper .mt-4{margin-top:12px}.chatkit-wrapper .mt-6{margin-top:18px}.chatkit-wrapper .mt-\[12px\]{margin-top:12px}.chatkit-wrapper .mt-\[8px\]{margin-top:8px}.chatkit-wrapper .mt-auto{margin-top:auto}.chatkit-wrapper .line-clamp-1{-webkit-line-clamp:1}.chatkit-wrapper .line-clamp-1,.chatkit-wrapper .line-clamp-2{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chatkit-wrapper .line-clamp-2{-webkit-line-clamp:2}.chatkit-wrapper .block{display:block}.chatkit-wrapper .inline-block{display:inline-block}.chatkit-wrapper .flex{display:flex}.chatkit-wrapper .inline-flex{display:inline-flex}.chatkit-wrapper .table{display:table}.chatkit-wrapper .grid{display:grid}.chatkit-wrapper .\!contents{display:contents!important}.chatkit-wrapper .contents{display:contents}.chatkit-wrapper .hidden{display:none}.chatkit-wrapper .aspect-square{aspect-ratio:1/1}.chatkit-wrapper .size-10{height:30px;width:30px}.chatkit-wrapper .size-2\.5{height:7.5px;width:7.5px}.chatkit-wrapper .size-3{height:9px;width:9px}.chatkit-wrapper .size-3\.5{height:10.5px;width:10.5px}.chatkit-wrapper .size-4{height:12px;width:12px}.chatkit-wrapper .size-6{height:18px;width:18px}.chatkit-wrapper .size-7{height:21px;width:21px}.chatkit-wrapper .size-8{height:24px;width:24px}.chatkit-wrapper .size-9{height:27px;width:27px}.chatkit-wrapper .size-\[16px\]{height:16px;width:16px}.chatkit-wrapper .size-\[28px\]{height:28px;width:28px}.chatkit-wrapper .size-\[38px\]{height:38px;width:38px}.chatkit-wrapper .size-\[unset\]{height:unset;width:unset}.chatkit-wrapper .size-full{height:100%;width:100%}.chatkit-wrapper .h-10{height:30px}.chatkit-wrapper .h-11{height:33px}.chatkit-wrapper .h-12{height:36px}.chatkit-wrapper .h-16{height:48px}.chatkit-wrapper .h-2\.5{height:7.5px}.chatkit-wrapper .h-3{height:9px}.chatkit-wrapper .h-3\.5{height:10.5px}.chatkit-wrapper .h-4{height:12px}.chatkit-wrapper .h-5{height:15px}.chatkit-wrapper .h-7{height:21px}.chatkit-wrapper .h-8{height:24px}.chatkit-wrapper .h-9{height:27px}.chatkit-wrapper .h-\[12px\]{height:12px}.chatkit-wrapper .h-\[180px\]{height:180px}.chatkit-wrapper .h-\[22px\]{height:22px}.chatkit-wrapper .h-\[24px\]{height:24px}.chatkit-wrapper .h-\[28px\]{height:28px}.chatkit-wrapper .h-\[32px\]{height:32px}.chatkit-wrapper .h-\[38px\]{height:38px}.chatkit-wrapper .h-\[61px\]{height:61px}.chatkit-wrapper .h-\[calc\(100\%-65px\)\]{height:calc(100% - 65px)}.chatkit-wrapper .h-auto{height:auto}.chatkit-wrapper .h-fit{height:-moz-fit-content;height:fit-content}.chatkit-wrapper .h-full{height:100%}.chatkit-wrapper .h-svh{height:100svh}.chatkit-wrapper .max-h-\[200px\]{max-height:200px}.chatkit-wrapper .max-h-\[500px\]{max-height:500px}.chatkit-wrapper .max-h-\[600px\]{max-height:600px}.chatkit-wrapper .max-h-\[60px\]{max-height:60px}.chatkit-wrapper .max-h-\[80dvh\]{max-height:80dvh}.chatkit-wrapper .max-h-\[80vh\]{max-height:80vh}.chatkit-wrapper .max-h-\[calc\(90vh-140px\)\]{max-height:calc(90vh - 140px)}.chatkit-wrapper .max-h-screen{max-height:100vh}.chatkit-wrapper .min-h-0{min-height:0}.chatkit-wrapper .min-h-12{min-height:36px}.chatkit-wrapper .min-h-\[400px\]{min-height:400px}.chatkit-wrapper .min-h-\[60px\]{min-height:60px}.chatkit-wrapper .min-h-\[84px\]{min-height:84px}.chatkit-wrapper .min-h-svh{min-height:100svh}.chatkit-wrapper .w-10{width:30px}.chatkit-wrapper .w-16{width:48px}.chatkit-wrapper .w-2\.5{width:7.5px}.chatkit-wrapper .w-3{width:9px}.chatkit-wrapper .w-3\.5{width:10.5px}.chatkit-wrapper .w-3\/4{width:75%}.chatkit-wrapper .w-4{width:12px}.chatkit-wrapper .w-5{width:15px}.chatkit-wrapper .w-5\/6{width:83.333333%}.chatkit-wrapper .w-7{width:21px}.chatkit-wrapper .w-8{width:24px}.chatkit-wrapper .w-\[160px\]{width:160px}.chatkit-wrapper .w-\[180px\]{width:180px}.chatkit-wrapper .w-\[1px\]{width:1px}.chatkit-wrapper .w-\[200px\]{width:200px}.chatkit-wrapper .w-\[28px\]{width:28px}.chatkit-wrapper .w-\[32px\]{width:32px}.chatkit-wrapper .w-auto{width:auto}.chatkit-wrapper .w-fit{width:-moz-fit-content;width:fit-content}.chatkit-wrapper .w-full{width:100%}.chatkit-wrapper .w-max{width:-moz-max-content;width:max-content}.chatkit-wrapper .min-w-0{min-width:0}.chatkit-wrapper .min-w-5{min-width:15px}.chatkit-wrapper .min-w-\[80px\]{min-width:80px}.chatkit-wrapper .min-w-full{min-width:100%}.chatkit-wrapper .max-w-2xl{max-width:504px}.chatkit-wrapper .max-w-3xl{max-width:576px}.chatkit-wrapper .max-w-4xl{max-width:672px}.chatkit-wrapper .max-w-\[240px\]{max-width:240px}.chatkit-wrapper .max-w-\[300px\]{max-width:300px}.chatkit-wrapper .max-w-\[800px\]{max-width:800px}.chatkit-wrapper .max-w-\[80px\]{max-width:80px}.chatkit-wrapper .max-w-\[90\%\]{max-width:90%}.chatkit-wrapper .max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 24px)}.chatkit-wrapper .max-w-\[var\(--thread-max-width\)\]{max-width:var(--thread-max-width)}.chatkit-wrapper .max-w-full{max-width:100%}.chatkit-wrapper .flex-1{flex:1 1 0%}.chatkit-wrapper .flex-shrink-0,.chatkit-wrapper .shrink-0{flex-shrink:0}.chatkit-wrapper .flex-grow{flex-grow:1}.chatkit-wrapper .flex-grow-0{flex-grow:0}.chatkit-wrapper .grow{flex-grow:1}.chatkit-wrapper .border-separate{border-collapse:separate}.chatkit-wrapper .border-spacing-0{--tw-border-spacing-x:0px;--tw-border-spacing-y:0px;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.chatkit-wrapper .-translate-x-1\/2{--tw-translate-x:-50%}.chatkit-wrapper .-translate-x-1\/2,.chatkit-wrapper .-translate-x-px{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .-translate-x-px{--tw-translate-x:-1px}.chatkit-wrapper .translate-x-\[-50\%\]{--tw-translate-x:-50%}.chatkit-wrapper .translate-x-\[-50\%\],.chatkit-wrapper .translate-x-px{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .translate-x-px{--tw-translate-x:1px}.chatkit-wrapper .translate-y-\[-50\%\]{--tw-translate-y:-50%}.chatkit-wrapper .translate-y-\[-50\%\],.chatkit-wrapper .translate-y-\[calc\(-50\%_-_2px\)\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px)}.chatkit-wrapper .rotate-0{--tw-rotate:0deg}.chatkit-wrapper .rotate-0,.chatkit-wrapper .rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .rotate-180{--tw-rotate:180deg}.chatkit-wrapper .rotate-45{--tw-rotate:45deg}.chatkit-wrapper .rotate-45,.chatkit-wrapper .rotate-90{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .rotate-90{--tw-rotate:90deg}.chatkit-wrapper .transform-gpu{transform:translate3d(var(--tw-translate-x),var(--tw-translate-y),0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.chatkit-wrapper .animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.chatkit-wrapper .animate-spin{animation:spin 1s linear infinite}.chatkit-wrapper .cursor-not-allowed{cursor:not-allowed}.chatkit-wrapper .cursor-pointer{cursor:pointer}.chatkit-wrapper .select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.chatkit-wrapper .resize-none{resize:none}.chatkit-wrapper .scroll-m-20{scroll-margin:60px}.chatkit-wrapper .list-decimal{list-style-type:decimal}.chatkit-wrapper .list-disc{list-style-type:disc}.chatkit-wrapper .auto-rows-auto{grid-auto-rows:auto}.chatkit-wrapper .grid-cols-\[minmax\(72px\2c 1fr\)_auto\]{grid-template-columns:minmax(72px,1fr) auto}.chatkit-wrapper .flex-row{flex-direction:row}.chatkit-wrapper .flex-col{flex-direction:column}.chatkit-wrapper .flex-col-reverse{flex-direction:column-reverse}.chatkit-wrapper .items-start{align-items:flex-start}.chatkit-wrapper .items-end{align-items:flex-end}.chatkit-wrapper .items-center{align-items:center}.chatkit-wrapper .items-stretch{align-items:stretch}.chatkit-wrapper .justify-start{justify-content:flex-start}.chatkit-wrapper .justify-end{justify-content:flex-end}.chatkit-wrapper .justify-center{justify-content:center}.chatkit-wrapper .justify-between{justify-content:space-between}.chatkit-wrapper .gap-0{gap:0}.chatkit-wrapper .gap-0\.5{gap:1.5px}.chatkit-wrapper .gap-1{gap:3px}.chatkit-wrapper .gap-1\.5{gap:4.5px}.chatkit-wrapper .gap-2{gap:6px}.chatkit-wrapper .gap-3{gap:9px}.chatkit-wrapper .gap-4,.chatkit-wrapper .gap-\[12px\]{gap:12px}.chatkit-wrapper .gap-\[8px\]{gap:8px}.chatkit-wrapper .gap-y-2{row-gap:6px}.chatkit-wrapper .space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(12px*(1 - var(--tw-space-x-reverse)));margin-right:calc(12px*var(--tw-space-x-reverse))}.chatkit-wrapper .space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(3px*var(--tw-space-y-reverse));margin-top:calc(3px*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(4.5px*var(--tw-space-y-reverse));margin-top:calc(4.5px*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(6px*var(--tw-space-y-reverse));margin-top:calc(6px*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(7.5px*var(--tw-space-y-reverse));margin-top:calc(7.5px*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(9px*var(--tw-space-y-reverse));margin-top:calc(9px*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(12px*var(--tw-space-y-reverse));margin-top:calc(12px*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(15px*var(--tw-space-y-reverse));margin-top:calc(15px*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(18px*var(--tw-space-y-reverse));margin-top:calc(18px*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.chatkit-wrapper .divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity,1))}.chatkit-wrapper .self-end{align-self:flex-end}.chatkit-wrapper .self-center{align-self:center}.chatkit-wrapper .overflow-auto{overflow:auto}.chatkit-wrapper .overflow-hidden{overflow:hidden}.chatkit-wrapper .overflow-visible{overflow:visible}.chatkit-wrapper .overflow-x-auto{overflow-x:auto}.chatkit-wrapper .overflow-y-auto{overflow-y:auto}.chatkit-wrapper .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chatkit-wrapper .whitespace-nowrap{white-space:nowrap}.chatkit-wrapper .whitespace-pre-wrap{white-space:pre-wrap}.chatkit-wrapper .text-balance{text-wrap:balance}.chatkit-wrapper .break-words{overflow-wrap:break-word}.chatkit-wrapper .break-all{word-break:break-all}.chatkit-wrapper .rounded{border-radius:3px}.chatkit-wrapper .rounded-2xl{border-radius:12px}.chatkit-wrapper .rounded-\[10px\]{border-radius:10px}.chatkit-wrapper .rounded-\[16px\]{border-radius:16px}.chatkit-wrapper .rounded-\[2px\]{border-radius:2px}.chatkit-wrapper .rounded-\[4px\]{border-radius:4px}.chatkit-wrapper .rounded-\[6px\]{border-radius:6px}.chatkit-wrapper .rounded-\[8px\]{border-radius:8px}.chatkit-wrapper .rounded-full{border-radius:9999px}.chatkit-wrapper .rounded-lg{border-radius:6px}.chatkit-wrapper .rounded-md{border-radius:4.5px}.chatkit-wrapper .rounded-none{border-radius:0}.chatkit-wrapper .rounded-sm{border-radius:1.5px}.chatkit-wrapper .rounded-xl{border-radius:9px}.chatkit-wrapper .\!rounded-t-none{border-top-left-radius:0!important;border-top-right-radius:0!important}.chatkit-wrapper .rounded-b-lg{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.chatkit-wrapper .rounded-t-lg{border-top-left-radius:6px;border-top-right-radius:6px}.chatkit-wrapper .border{border-width:1px}.chatkit-wrapper .border-0{border-width:0}.chatkit-wrapper .border-2{border-width:2px}.chatkit-wrapper .border-\[1px\]{border-width:1px}.chatkit-wrapper .border-b{border-bottom-width:1px}.chatkit-wrapper .border-l{border-left-width:1px}.chatkit-wrapper .border-r{border-right-width:1px}.chatkit-wrapper .border-t{border-top-width:1px}.chatkit-wrapper .border-t-0{border-top-width:0}.chatkit-wrapper .border-solid{border-style:solid}.chatkit-wrapper .border-dashed{border-style:dashed}.chatkit-wrapper .border-none{border-style:none}.chatkit-wrapper .border-\[\#0000000A\]{border-color:#0000000a}.chatkit-wrapper .border-\[\#0000001A\],.chatkit-wrapper .border-\[\#0000001a\]{border-color:#0000001a}.chatkit-wrapper .border-\[\#1664FF1A\]{border-color:#1664ff1a}.chatkit-wrapper .border-\[\#E5E6EB\]{--tw-border-opacity:1;border-color:rgb(229 230 235/var(--tw-border-opacity,1))}.chatkit-wrapper .border-\[\#E5E7EB\]{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.chatkit-wrapper .border-\[\#EAEDF1\]{--tw-border-opacity:1;border-color:rgb(234 237 241/var(--tw-border-opacity,1))}.chatkit-wrapper .border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.chatkit-wrapper .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.chatkit-wrapper .border-gray-200\/80{border-color:rgba(229,231,235,.8)}.chatkit-wrapper .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.chatkit-wrapper .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.chatkit-wrapper .border-transparent{border-color:transparent}.chatkit-wrapper .bg-\[\#0000000A\]{background-color:#0000000a}.chatkit-wrapper .bg-\[\#5252FF\]{--tw-bg-opacity:1;background-color:rgb(82 82 255/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#D7312A\]{--tw-bg-opacity:1;background-color:rgb(215 49 42/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#DDE2E9\]{--tw-bg-opacity:1;background-color:rgb(221 226 233/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#E5E7EB\]{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#E8F3FF\]{--tw-bg-opacity:1;background-color:rgb(232 243 255/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#EBF1FF\]{--tw-bg-opacity:1;background-color:rgb(235 241 255/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#EDEFFC\]{--tw-bg-opacity:1;background-color:rgb(237 239 252/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#F6F8FA\]{--tw-bg-opacity:1;background-color:rgb(246 248 250/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#F7F8FA\]{--tw-bg-opacity:1;background-color:rgb(247 248 250/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#FAFBFC\]{--tw-bg-opacity:1;background-color:rgb(250 251 252/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-black\/50{background-color:rgba(0,0,0,.5)}.chatkit-wrapper .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-gray-50\/50{background-color:rgba(249,250,251,.5)}.chatkit-wrapper .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-transparent{background-color:transparent}.chatkit-wrapper .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-white\/95{background-color:hsla(0,0%,100%,.95)}.chatkit-wrapper .bg-\[linear-gradient\(to_top\2c var\(--color-background\)\2c transparent\)\]{background-image:linear-gradient(to top,var(--color-background),transparent)}.chatkit-wrapper .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.chatkit-wrapper .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.chatkit-wrapper .from-blue-50{--tw-gradient-from:#eff6ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.chatkit-wrapper .from-blue-500{--tw-gradient-from:#3b82f6 var(--tw-gradient-from-position);--tw-gradient-to:rgba(59,130,246,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.chatkit-wrapper .from-blue-600{--tw-gradient-from:#2563eb var(--tw-gradient-from-position);--tw-gradient-to:rgba(37,99,235,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.chatkit-wrapper .from-gray-50\/30{--tw-gradient-from:rgba(249,250,251,.3) var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,250,251,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.chatkit-wrapper .from-gray-50\/50{--tw-gradient-from:rgba(249,250,251,.5) var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,250,251,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.chatkit-wrapper .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.chatkit-wrapper .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.chatkit-wrapper .to-blue-700{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.chatkit-wrapper .to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.chatkit-wrapper .fill-amber-500{fill:#f59e0b}.chatkit-wrapper .fill-white{fill:#fff}.chatkit-wrapper .object-contain{-o-object-fit:contain;object-fit:contain}.chatkit-wrapper .object-cover{-o-object-fit:cover;object-fit:cover}.chatkit-wrapper .p-0{padding:0}.chatkit-wrapper .p-1{padding:3px}.chatkit-wrapper .p-1\.5{padding:4.5px}.chatkit-wrapper .p-2{padding:6px}.chatkit-wrapper .p-3{padding:9px}.chatkit-wrapper .p-4{padding:12px}.chatkit-wrapper .p-6{padding:18px}.chatkit-wrapper .p-8{padding:24px}.chatkit-wrapper .px-1{padding-left:3px;padding-right:3px}.chatkit-wrapper .px-1\.5{padding-left:4.5px;padding-right:4.5px}.chatkit-wrapper .px-2{padding-left:6px;padding-right:6px}.chatkit-wrapper .px-2\.5{padding-left:7.5px;padding-right:7.5px}.chatkit-wrapper .px-3{padding-left:9px;padding-right:9px}.chatkit-wrapper .px-4{padding-left:12px;padding-right:12px}.chatkit-wrapper .px-6{padding-left:18px;padding-right:18px}.chatkit-wrapper .px-8{padding-left:24px;padding-right:24px}.chatkit-wrapper .px-\[12px\]{padding-left:12px;padding-right:12px}.chatkit-wrapper .px-\[15px\]{padding-left:15px;padding-right:15px}.chatkit-wrapper .px-\[2px\]{padding-left:2px;padding-right:2px}.chatkit-wrapper .px-\[6px\]{padding-left:6px;padding-right:6px}.chatkit-wrapper .py-0{padding-bottom:0;padding-top:0}.chatkit-wrapper .py-0\.5{padding-bottom:1.5px;padding-top:1.5px}.chatkit-wrapper .py-1{padding-bottom:3px;padding-top:3px}.chatkit-wrapper .py-1\.5{padding-bottom:4.5px;padding-top:4.5px}.chatkit-wrapper .py-10{padding-bottom:30px;padding-top:30px}.chatkit-wrapper .py-16{padding-bottom:48px;padding-top:48px}.chatkit-wrapper .py-2{padding-bottom:6px;padding-top:6px}.chatkit-wrapper .py-3{padding-bottom:9px;padding-top:9px}.chatkit-wrapper .py-4{padding-bottom:12px;padding-top:12px}.chatkit-wrapper .py-5{padding-bottom:15px;padding-top:15px}.chatkit-wrapper .py-6{padding-bottom:18px;padding-top:18px}.chatkit-wrapper .py-8{padding-bottom:24px;padding-top:24px}.chatkit-wrapper .py-\[10px\]{padding-bottom:10px;padding-top:10px}.chatkit-wrapper .py-\[12px\]{padding-bottom:12px;padding-top:12px}.chatkit-wrapper .py-\[6px\]{padding-bottom:6px;padding-top:6px}.chatkit-wrapper .py-\[8px\]{padding-bottom:8px;padding-top:8px}.chatkit-wrapper .pb-1{padding-bottom:3px}.chatkit-wrapper .pb-3{padding-bottom:9px}.chatkit-wrapper .pb-4{padding-bottom:12px}.chatkit-wrapper .pb-6{padding-bottom:18px}.chatkit-wrapper .pl-10{padding-left:30px}.chatkit-wrapper .pl-4{padding-left:12px}.chatkit-wrapper .pl-6{padding-left:18px}.chatkit-wrapper .pl-\[14px\]{padding-left:14px}.chatkit-wrapper .pl-\[16px\]{padding-left:16px}.chatkit-wrapper .pl-\[8px\]{padding-left:8px}.chatkit-wrapper .pr-2{padding-right:6px}.chatkit-wrapper .pr-4{padding-right:12px}.chatkit-wrapper .pr-8{padding-right:24px}.chatkit-wrapper .pr-\[12px\]{padding-right:12px}.chatkit-wrapper .pt-0{padding-top:0}.chatkit-wrapper .pt-0\.5{padding-top:1.5px}.chatkit-wrapper .pt-1{padding-top:3px}.chatkit-wrapper .pt-2{padding-top:6px}.chatkit-wrapper .pt-3{padding-top:9px}.chatkit-wrapper .pt-4{padding-top:12px}.chatkit-wrapper .pt-6{padding-top:18px}.chatkit-wrapper .pt-\[8px\]{padding-top:8px}.chatkit-wrapper .text-left{text-align:left}.chatkit-wrapper .text-center{text-align:center}.chatkit-wrapper .text-start{text-align:start}.chatkit-wrapper .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.chatkit-wrapper .text-2xl{font-size:18px;line-height:24px}.chatkit-wrapper .text-\[13px\]{font-size:13px}.chatkit-wrapper .text-\[14px\]{font-size:14px}.chatkit-wrapper .text-\[15px\]{font-size:15px}.chatkit-wrapper .text-\[16px\]{font-size:16px}.chatkit-wrapper .text-\[18px\]{font-size:18px}.chatkit-wrapper .text-\[20px\]{font-size:20px}.chatkit-wrapper .text-\[22px\]{font-size:22px}.chatkit-wrapper .text-\[24px\]{font-size:24px}.chatkit-wrapper .text-\[26px\]{font-size:26px}.chatkit-wrapper .text-base{font-size:12px;line-height:18px}.chatkit-wrapper .text-lg{font-size:13.5px;line-height:21px}.chatkit-wrapper .text-sm{font-size:10.5px;line-height:15px}.chatkit-wrapper .text-xl{font-size:15px;line-height:21px}.chatkit-wrapper .text-xs{font-size:9px;line-height:12px}.chatkit-wrapper .font-\[400\]{font-weight:400}.chatkit-wrapper .font-\[500\]{font-weight:500}.chatkit-wrapper .font-bold{font-weight:700}.chatkit-wrapper .font-extrabold{font-weight:800}.chatkit-wrapper .font-medium{font-weight:500}.chatkit-wrapper .font-normal{font-weight:400}.chatkit-wrapper .font-semibold{font-weight:600}.chatkit-wrapper .lowercase{text-transform:lowercase}.chatkit-wrapper .italic{font-style:italic}.chatkit-wrapper .tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.chatkit-wrapper .leading-7{line-height:21px}.chatkit-wrapper .leading-\[100\%\]{line-height:100%}.chatkit-wrapper .leading-\[22px\]{line-height:22px}.chatkit-wrapper .leading-\[24px\]{line-height:24px}.chatkit-wrapper .leading-\[25px\]{line-height:25px}.chatkit-wrapper .leading-\[28px\]{line-height:28px}.chatkit-wrapper .leading-\[30px\]{line-height:30px}.chatkit-wrapper .leading-\[37px\]{line-height:37px}.chatkit-wrapper .leading-none{line-height:1}.chatkit-wrapper .leading-relaxed{line-height:1.625}.chatkit-wrapper .tracking-\[0\.3\%\]{letter-spacing:.3%}.chatkit-wrapper .tracking-tight{letter-spacing:-.025em}.chatkit-wrapper .text-\[\#0C0D0E\]{--tw-text-opacity:1;color:rgb(12 13 14/var(--tw-text-opacity,1))}.chatkit-wrapper .text-\[\#1664FF\]{--tw-text-opacity:1;color:rgb(22 100 255/var(--tw-text-opacity,1))}.chatkit-wrapper .text-\[\#1677FF\]{--tw-text-opacity:1;color:rgb(22 119 255/var(--tw-text-opacity,1))}.chatkit-wrapper .text-\[\#1D2129\]{--tw-text-opacity:1;color:rgb(29 33 41/var(--tw-text-opacity,1))}.chatkit-wrapper .text-\[\#808388\]{--tw-text-opacity:1;color:rgb(128 131 136/var(--tw-text-opacity,1))}.chatkit-wrapper .text-\[\#86909C\]{--tw-text-opacity:1;color:rgb(134 144 156/var(--tw-text-opacity,1))}.chatkit-wrapper .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.chatkit-wrapper .text-background{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.chatkit-wrapper .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.chatkit-wrapper .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.chatkit-wrapper .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.chatkit-wrapper .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.chatkit-wrapper .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.chatkit-wrapper .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.chatkit-wrapper .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.chatkit-wrapper .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.chatkit-wrapper .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.chatkit-wrapper .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.chatkit-wrapper .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.chatkit-wrapper .underline{text-decoration-line:underline}.chatkit-wrapper .underline-offset-4{text-underline-offset:4px}.chatkit-wrapper .opacity-0{opacity:0}.chatkit-wrapper .opacity-100{opacity:1}.chatkit-wrapper .opacity-50{opacity:.5}.chatkit-wrapper .opacity-70{opacity:.7}.chatkit-wrapper .opacity-90{opacity:.9}.chatkit-wrapper .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.chatkit-wrapper .shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.chatkit-wrapper .shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\],.chatkit-wrapper .shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.chatkit-wrapper .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.chatkit-wrapper .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.chatkit-wrapper .shadow-md,.chatkit-wrapper .shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.chatkit-wrapper .shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.chatkit-wrapper .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.chatkit-wrapper .outline-none{outline:2px solid transparent;outline-offset:2px}.chatkit-wrapper .outline{outline-style:solid}.chatkit-wrapper .ring-offset-background{--tw-ring-offset-color:#fff}.chatkit-wrapper .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.chatkit-wrapper .backdrop-blur-sm{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.chatkit-wrapper .transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .transition-\[color\2c box-shadow\]{transition-duration:.15s;transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .transition-\[left\2c right\2c width\]{transition-duration:.15s;transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .transition-\[margin\2c opacity\]{transition-duration:.15s;transition-property:margin,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .transition-\[transform\2c opacity\]{transition-duration:.15s;transition-property:transform,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .transition-\[width\2c height\2c padding\]{transition-duration:.15s;transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .transition-\[width\]{transition-duration:.15s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .duration-150{transition-duration:.15s}.chatkit-wrapper .duration-200{transition-duration:.2s}.chatkit-wrapper .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.chatkit-wrapper .ease-linear{transition-timing-function:linear}.chatkit-wrapper .ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.chatkit-wrapper .chatkit-wrapper{.chatkit-wrapper *,.chatkit-wrapper :after,.chatkit-wrapper :before{border:0 solid #e5e7eb;box-sizing:border-box}.chatkit-wrapper :after,.chatkit-wrapper :before{--tw-content:""}.chatkit-wrapper{line-height:inherit;margin:0}.chatkit-wrapper hr{border-top-width:1px;color:inherit;height:0}.chatkit-wrapper abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.chatkit-wrapper h1,.chatkit-wrapper h2,.chatkit-wrapper h3,.chatkit-wrapper h4,.chatkit-wrapper h5,.chatkit-wrapper h6{font-size:inherit;font-weight:inherit}.chatkit-wrapper a{color:inherit;text-decoration:inherit}.chatkit-wrapper b,.chatkit-wrapper strong{font-weight:bolder}.chatkit-wrapper small{font-size:80%}.chatkit-wrapper sub,.chatkit-wrapper sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.chatkit-wrapper sub{bottom:-.25em}.chatkit-wrapper sup{top:-.5em}.chatkit-wrapper table{border-collapse:collapse;border-color:inherit;text-indent:0}.chatkit-wrapper button,.chatkit-wrapper input,.chatkit-wrapper optgroup,.chatkit-wrapper select,.chatkit-wrapper textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}.chatkit-wrapper button,.chatkit-wrapper select{text-transform:none}.chatkit-wrapper button,.chatkit-wrapper input:where([type=button]),.chatkit-wrapper input:where([type=reset]),.chatkit-wrapper input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}.chatkit-wrapper :-moz-focusring{outline:auto}.chatkit-wrapper :-moz-ui-invalid{box-shadow:none}.chatkit-wrapper progress{vertical-align:baseline}.chatkit-wrapper ::-webkit-inner-spin-button,.chatkit-wrapper ::-webkit-outer-spin-button{height:auto}.chatkit-wrapper [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.chatkit-wrapper ::-webkit-search-decoration{-webkit-appearance:none}.chatkit-wrapper ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.chatkit-wrapper summary{display:list-item}.chatkit-wrapper blockquote,.chatkit-wrapper dd,.chatkit-wrapper dl,.chatkit-wrapper figure,.chatkit-wrapper h1,.chatkit-wrapper h2,.chatkit-wrapper h3,.chatkit-wrapper h4,.chatkit-wrapper h5,.chatkit-wrapper h6,.chatkit-wrapper hr,.chatkit-wrapper p,.chatkit-wrapper pre{margin:0}.chatkit-wrapper fieldset{margin:0;padding:0}.chatkit-wrapper legend{padding:0}.chatkit-wrapper menu,.chatkit-wrapper ol,.chatkit-wrapper ul{list-style:none;margin:0;padding:0}.chatkit-wrapper dialog{padding:0}.chatkit-wrapper textarea{resize:vertical}.chatkit-wrapper input::-moz-placeholder,.chatkit-wrapper textarea::-moz-placeholder{color:#9ca3af;opacity:1}.chatkit-wrapper input::placeholder,.chatkit-wrapper textarea::placeholder{color:#9ca3af;opacity:1}.chatkit-wrapper [role=button],.chatkit-wrapper button{cursor:pointer}.chatkit-wrapper :disabled{cursor:default}.chatkit-wrapper audio,.chatkit-wrapper canvas,.chatkit-wrapper embed,.chatkit-wrapper iframe,.chatkit-wrapper img,.chatkit-wrapper object,.chatkit-wrapper svg,.chatkit-wrapper video{display:block;vertical-align:middle}.chatkit-wrapper img,.chatkit-wrapper video{height:auto;max-width:100%}.chatkit-wrapper [hidden]:where(:not([hidden=until-found])){display:none}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}.chatkit-wrapper .file\:inline-flex::file-selector-button{display:inline-flex}.chatkit-wrapper .file\:h-7::file-selector-button{height:21px}.chatkit-wrapper .file\:border-0::file-selector-button{border-width:0}.chatkit-wrapper .file\:bg-transparent::file-selector-button{background-color:transparent}.chatkit-wrapper .file\:text-sm::file-selector-button{font-size:10.5px;line-height:15px}.chatkit-wrapper .file\:font-medium::file-selector-button{font-weight:500}.chatkit-wrapper .after\:absolute:after{content:var(--tw-content);position:absolute}.chatkit-wrapper .after\:-inset-2:after{content:var(--tw-content);inset:-6px}.chatkit-wrapper .after\:inset-y-0:after{bottom:0;content:var(--tw-content);top:0}.chatkit-wrapper .after\:left-1\/2:after{content:var(--tw-content);left:50%}.chatkit-wrapper .after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.chatkit-wrapper .first\:mt-0:first-child{margin-top:0}.chatkit-wrapper .first\:mt-3:first-child{margin-top:9px}.chatkit-wrapper .first\:mt-4:first-child{margin-top:12px}.chatkit-wrapper .first\:rounded-tl-lg:first-child{border-top-left-radius:6px}.chatkit-wrapper .first\:border-t:first-child{border-top-width:1px}.chatkit-wrapper .last\:mb-0:last-child{margin-bottom:0}.chatkit-wrapper .last\:mb-24:last-child{margin-bottom:72px}.chatkit-wrapper .last\:mb-5:last-child{margin-bottom:15px}.chatkit-wrapper .last\:rounded-tr-lg:last-child{border-top-right-radius:6px}.chatkit-wrapper .last\:border-r:last-child{border-right-width:1px}.chatkit-wrapper .empty\:hidden:empty{display:none}.chatkit-wrapper .hover\:visible:hover{visibility:visible}.chatkit-wrapper .hover\:scale-\[1\.02\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .hover\:border-blue-200:hover{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.chatkit-wrapper .hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.chatkit-wrapper .hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.chatkit-wrapper .hover\:border-red-300:hover{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.chatkit-wrapper .hover\:\!bg-white:hover{--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))!important}.chatkit-wrapper .hover\:bg-\[rgba\(46\2c 50\2c 56\2c 0\.05\)\]:hover{background-color:rgba(46,50,56,.05)}.chatkit-wrapper .hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.chatkit-wrapper .hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.chatkit-wrapper .hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.chatkit-wrapper .hover\:bg-gray-50\/50:hover{background-color:rgba(249,250,251,.5)}.chatkit-wrapper .hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.chatkit-wrapper .hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.chatkit-wrapper .hover\:from-blue-700:hover{--tw-gradient-from:#1d4ed8 var(--tw-gradient-from-position);--tw-gradient-to:rgba(29,78,216,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.chatkit-wrapper .hover\:to-blue-800:hover{--tw-gradient-to:#1e40af var(--tw-gradient-to-position)}.chatkit-wrapper .hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.chatkit-wrapper .hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.chatkit-wrapper .hover\:underline:hover{text-decoration-line:underline}.chatkit-wrapper .hover\:opacity-100:hover{opacity:1}.chatkit-wrapper .hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.chatkit-wrapper .hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.chatkit-wrapper .hover\:shadow-lg:hover,.chatkit-wrapper .hover\:shadow-md:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.chatkit-wrapper .hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.chatkit-wrapper .focus\:border-blue-400:focus{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.chatkit-wrapper .focus\:opacity-100:focus{opacity:1}.chatkit-wrapper .focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.chatkit-wrapper .focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.chatkit-wrapper .focus\:ring-2:focus,.chatkit-wrapper .focus\:ring-4:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.chatkit-wrapper .focus\:ring-4:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.chatkit-wrapper .focus\:ring-blue-50:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 246 255/var(--tw-ring-opacity,1))}.chatkit-wrapper .focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.chatkit-wrapper .focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.chatkit-wrapper .focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.chatkit-wrapper .focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.chatkit-wrapper .focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.chatkit-wrapper .focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.chatkit-wrapper .active\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .disabled\:pointer-events-none:disabled{pointer-events:none}.chatkit-wrapper .disabled\:invisible:disabled{visibility:hidden}.chatkit-wrapper .disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.chatkit-wrapper .disabled\:from-gray-300:disabled{--tw-gradient-from:#d1d5db var(--tw-gradient-from-position);--tw-gradient-to:rgba(209,213,219,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.chatkit-wrapper .disabled\:to-gray-300:disabled{--tw-gradient-to:#d1d5db var(--tw-gradient-to-position)}.chatkit-wrapper .disabled\:opacity-50:disabled{opacity:.5}.chatkit-wrapper .group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.chatkit-wrapper .group:hover .group-hover\:visible{visibility:visible}.chatkit-wrapper .group:hover .group-hover\:translate-x-1{--tw-translate-x:3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .group:hover .group-hover\:text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.chatkit-wrapper .group:hover .group-hover\:underline{text-decoration-line:underline}.chatkit-wrapper .group:hover .group-hover\:opacity-100,.chatkit-wrapper .group\/menu-item:hover .group-hover\/menu-item\:opacity-100{opacity:1}.chatkit-wrapper .group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.chatkit-wrapper .group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity,1))}.chatkit-wrapper .group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}.chatkit-wrapper .group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color:#dc2626}.chatkit-wrapper .has-\[\>svg\]\:px-2\.5:has(>svg){padding-left:7.5px;padding-right:7.5px}.chatkit-wrapper .has-\[\>svg\]\:px-3:has(>svg){padding-left:9px;padding-right:9px}.chatkit-wrapper .has-\[\>svg\]\:px-4:has(>svg){padding-left:12px;padding-right:12px}.chatkit-wrapper .aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.chatkit-wrapper .aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.chatkit-wrapper .data-\[state\=closed\]\:pointer-events-none[data-state=closed]{pointer-events:none}.chatkit-wrapper .data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.chatkit-wrapper .data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.chatkit-wrapper .data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.chatkit-wrapper .data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.chatkit-wrapper .data-\[state\=closed\]\:w-\[160px\][data-state=closed]{width:160px}.chatkit-wrapper .data-\[state\=open\]\:w-full[data-state=open]{width:100%}.chatkit-wrapper .data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x:0px}.chatkit-wrapper .data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel],.chatkit-wrapper .data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x)}.chatkit-wrapper .data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .data-\[state\=open\]\:border-b[data-state=open]{border-bottom-width:1px}.chatkit-wrapper .data-\[state\=active\]\:bg-background[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.chatkit-wrapper .data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.chatkit-wrapper .data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.chatkit-wrapper .data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.chatkit-wrapper .data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.chatkit-wrapper .data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.chatkit-wrapper .data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width)*-1)}.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width)*-1)}.chatkit-wrapper .group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-12px}.chatkit-wrapper .group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-24px}.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden{display:none}.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)))}.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)) + 2px)}.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0}.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x:0px}.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0,.chatkit-wrapper .group[data-side=right] .group-data-\[side\=right\]\:rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .group[data-side=right] .group-data-\[side\=right\]\:rotate-180{--tw-rotate:180deg}.chatkit-wrapper .group\/trigger[data-state=closed] .group-data-\[state\=closed\]\/trigger\:-rotate-90{--tw-rotate:-90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .group\/trigger[data-state=open] .group-data-\[state\=open\]\/trigger\:rotate-0{--tw-rotate:0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden{overflow:hidden}.chatkit-wrapper .group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:6px}.chatkit-wrapper .group[data-variant=floating] .group-data-\[variant\=floating\]\:border{border-width:1px}.chatkit-wrapper .group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.chatkit-wrapper .group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.chatkit-wrapper .group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.chatkit-wrapper .group\/collapsible-content[data-state=open] .group-data-\[state\=open\]\/collapsible-content\:delay-\[calc\(var\(--animation-duration\)\*0\.75\)\]{transition-delay:calc(var(--animation-duration)*.75)}.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.chatkit-wrapper .peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:4.5px}.chatkit-wrapper .peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:7.5px}.chatkit-wrapper .peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:3px}@media (min-width:640px){.chatkit-wrapper .sm\:bottom-0{bottom:0}.chatkit-wrapper .sm\:right-0{right:0}.chatkit-wrapper .sm\:top-auto{top:auto}.chatkit-wrapper .sm\:flex{display:flex}.chatkit-wrapper .sm\:max-h-\[90vh\]{max-height:90vh}.chatkit-wrapper .sm\:max-w-3xl{max-width:576px}.chatkit-wrapper .sm\:max-w-\[425px\]{max-width:425px}.chatkit-wrapper .sm\:max-w-\[480px\]{max-width:480px}.chatkit-wrapper .sm\:max-w-\[90vw\]{max-width:90vw}.chatkit-wrapper .sm\:max-w-lg{max-width:384px}.chatkit-wrapper .sm\:max-w-sm{max-width:288px}.chatkit-wrapper .sm\:flex-row{flex-direction:row}.chatkit-wrapper .sm\:flex-col{flex-direction:column}.chatkit-wrapper .sm\:justify-end{justify-content:flex-end}.chatkit-wrapper .sm\:text-left{text-align:left}}@media (min-width:768px){.chatkit-wrapper .md\:block{display:block}.chatkit-wrapper .md\:flex{display:flex}.chatkit-wrapper .md\:max-w-\[420px\]{max-width:420px}.chatkit-wrapper .md\:pb-6{padding-bottom:18px}.chatkit-wrapper .md\:text-sm{font-size:10.5px;line-height:15px}.chatkit-wrapper .md\:opacity-0{opacity:0}.chatkit-wrapper .md\:after\:hidden:after{content:var(--tw-content);display:none}.chatkit-wrapper .peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:6px}.chatkit-wrapper .peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.chatkit-wrapper .peer[data-variant=inset][data-state=collapsed]~.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2{margin-left:6px}.chatkit-wrapper .peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:9px}.chatkit-wrapper .peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (prefers-color-scheme:dark){.chatkit-wrapper .dark\:bg-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.chatkit-wrapper .dark\:text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}}.chatkit-wrapper .\[\&\:last-child\>td\:first-child\]\:rounded-bl-lg:last-child>td:first-child{border-bottom-left-radius:6px}.chatkit-wrapper .\[\&\:last-child\>td\:last-child\]\:rounded-br-lg:last-child>td:last-child{border-bottom-right-radius:6px}.chatkit-wrapper .\[\&\:where\(\>\*\)\]\:col-start-2:where(>*){grid-column-start:2}.chatkit-wrapper .only\:\[\&\>\#attachment-tile\]\:size-24>#attachment-tile:only-child{height:72px;width:72px}.chatkit-wrapper .\[\&\>a\]\:text-xs>a{font-size:9px;line-height:12px}.chatkit-wrapper .\[\&\>a\]\:no-underline>a{text-decoration-line:none}.chatkit-wrapper .\[\&\>button\]\:hidden>button{display:none}.chatkit-wrapper .\[\&\>button\]\:rounded-full>button{border-radius:9999px}.chatkit-wrapper .\[\&\>button\]\:p-1>button{padding:3px}.chatkit-wrapper .\[\&\>button\]\:opacity-100>button{opacity:1}.chatkit-wrapper .\[\&\>button\]\:\!ring-0>button{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.chatkit-wrapper .\[\&\>li\]\:mt-2>li{margin-top:6px}.chatkit-wrapper .\[\&\>li\]\:text-\[16px\]>li{font-size:16px}.chatkit-wrapper .\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chatkit-wrapper .\[\&\>span\]\:text-xs>span{font-size:9px;line-height:12px}.chatkit-wrapper .\[\&\>svg\]\:size-4>svg{height:12px;width:12px}.chatkit-wrapper .\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.chatkit-wrapper .\[\&\[align\=center\]\]\:text-center[align=center]{text-align:center}.chatkit-wrapper .\[\&\[align\=right\]\]\:text-right[align=right]{text-align:right}.chatkit-wrapper .\[\&_p\]\:-mb-2 p{margin-bottom:-6px}.chatkit-wrapper .\[\&_pre\]\:overflow-x-auto pre{overflow-x:auto}.chatkit-wrapper .\[\&_pre\]\:rounded-b-lg pre{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.chatkit-wrapper .\[\&_pre\]\:border pre{border-width:1px}.chatkit-wrapper .\[\&_pre\]\:p-4 pre{padding:12px}.chatkit-wrapper .\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){height:12px;width:12px}.chatkit-wrapper .\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.chatkit-wrapper .\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.chatkit-wrapper .\[\&_svg\]\:text-background svg{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.chatkit-wrapper .\[\&_svg\]\:text-black svg{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.chatkit-wrapper [data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-6px}.chatkit-wrapper [data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}.chatkit-wrapper [data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-6px}.chatkit-wrapper [data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@keyframes aui-pulse-chatkit{50%{opacity:.5;transform:scale(.7)}}.chatkit-wrapper .aui-root :where(.aui-md[data-status=running]):empty:after,.chatkit-wrapper .aui-root :where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child):after,.chatkit-wrapper .aui-root :where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,.chatkit-wrapper .aui-root :where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,.chatkit-wrapper .aui-root :where(.aui-md[data-status=running])>:where(:not(ol):not(ul):not(pre)):last-child:after,.chatkit-wrapper .aui-root :where(.aui-md[data-status=running])>pre:last-child code:after{--aui-content:"\25cf";animation:aui-pulse-chatkit 1.5s cubic-bezier(.4,0,.6,1) infinite;content:var(--aui-content);display:inline-block;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin-left:2.4px;margin-right:2.4px}.chatkit-wrapper .chatkit-md-text-p img,.chatkit-wrapper .chatkit-md-text-p video{max-width:400px}
1
+ :global(.chatkit-wrapper *),:global(.chatkit-wrapper :after),:global(.chatkit-wrapper :before){--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }:global(.chatkit-wrapper ::backdrop){--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
2
+ /* ! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com */:global(.chatkit-wrapper *),:global(.chatkit-wrapper :after),:global(.chatkit-wrapper :before){border:0 solid #e5e7eb;box-sizing:border-box}:global(.chatkit-wrapper :after),:global(.chatkit-wrapper :before){--tw-content:""}:global(.chatkit-wrapper :host),:global(.chatkit-wrapper){-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}:global(.chatkit-wrapper){line-height:inherit;margin:0}:global(.chatkit-wrapper hr){border-top-width:1px;color:inherit;height:0}:global(.chatkit-wrapper abbr:where([title])){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:global(.chatkit-wrapper h1),:global(.chatkit-wrapper h2),:global(.chatkit-wrapper h3),:global(.chatkit-wrapper h4),:global(.chatkit-wrapper h5),:global(.chatkit-wrapper h6){font-size:inherit;font-weight:inherit}:global(.chatkit-wrapper a){color:inherit;text-decoration:inherit}:global(.chatkit-wrapper b),:global(.chatkit-wrapper strong){font-weight:bolder}:global(.chatkit-wrapper code),:global(.chatkit-wrapper kbd),:global(.chatkit-wrapper pre),:global(.chatkit-wrapper samp){font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}:global(.chatkit-wrapper small){font-size:80%}:global(.chatkit-wrapper sub),:global(.chatkit-wrapper sup){font-size:75%;line-height:0;position:relative;vertical-align:baseline}:global(.chatkit-wrapper sub){bottom:-.25em}:global(.chatkit-wrapper sup){top:-.5em}:global(.chatkit-wrapper table){border-collapse:collapse;border-color:inherit;text-indent:0}:global(.chatkit-wrapper button),:global(.chatkit-wrapper input),:global(.chatkit-wrapper optgroup),:global(.chatkit-wrapper select),:global(.chatkit-wrapper textarea){font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}:global(.chatkit-wrapper button),:global(.chatkit-wrapper select){text-transform:none}:global(.chatkit-wrapper button),:global(.chatkit-wrapper input:where([type=button])),:global(.chatkit-wrapper input:where([type=reset])),:global(.chatkit-wrapper input:where([type=submit])){-webkit-appearance:button;background-color:transparent;background-image:none}:global(.chatkit-wrapper :-moz-focusring){outline:auto}:global(.chatkit-wrapper :-moz-ui-invalid){box-shadow:none}:global(.chatkit-wrapper progress){vertical-align:baseline}:global(.chatkit-wrapper ::-webkit-inner-spin-button),:global(.chatkit-wrapper ::-webkit-outer-spin-button){height:auto}:global(.chatkit-wrapper [type=search]){-webkit-appearance:textfield;outline-offset:-2px}:global(.chatkit-wrapper ::-webkit-search-decoration){-webkit-appearance:none}:global(.chatkit-wrapper ::-webkit-file-upload-button){-webkit-appearance:button;font:inherit}:global(.chatkit-wrapper summary){display:list-item}:global(.chatkit-wrapper blockquote),:global(.chatkit-wrapper dd),:global(.chatkit-wrapper dl),:global(.chatkit-wrapper figure),:global(.chatkit-wrapper h1),:global(.chatkit-wrapper h2),:global(.chatkit-wrapper h3),:global(.chatkit-wrapper h4),:global(.chatkit-wrapper h5),:global(.chatkit-wrapper h6),:global(.chatkit-wrapper hr),:global(.chatkit-wrapper p),:global(.chatkit-wrapper pre){margin:0}:global(.chatkit-wrapper fieldset){margin:0;padding:0}:global(.chatkit-wrapper legend){padding:0}:global(.chatkit-wrapper menu),:global(.chatkit-wrapper ol),:global(.chatkit-wrapper ul){list-style:none;margin:0;padding:0}:global(.chatkit-wrapper dialog){padding:0}:global(.chatkit-wrapper textarea){resize:vertical}:global(.chatkit-wrapper input::-moz-placeholder),:global(.chatkit-wrapper textarea::-moz-placeholder){color:#9ca3af;opacity:1}:global(.chatkit-wrapper input::placeholder),:global(.chatkit-wrapper textarea::placeholder){color:#9ca3af;opacity:1}:global(.chatkit-wrapper [role=button]),:global(.chatkit-wrapper button){cursor:pointer}:global(.chatkit-wrapper :disabled){cursor:default}:global(.chatkit-wrapper audio),:global(.chatkit-wrapper canvas),:global(.chatkit-wrapper embed),:global(.chatkit-wrapper iframe),:global(.chatkit-wrapper img),:global(.chatkit-wrapper object),:global(.chatkit-wrapper svg),:global(.chatkit-wrapper video){display:block;vertical-align:middle}:global(.chatkit-wrapper img),:global(.chatkit-wrapper video){height:auto;max-width:100%}:global(.chatkit-wrapper [hidden]:where(:not([hidden=until-found]))){display:none}:global(.chatkit-wrapper .container){width:100%}@media (min-width:640px){.chatkit-wrapper .container{max-width:640px}}@media (min-width:768px){.chatkit-wrapper .container{max-width:768px}}@media (min-width:1024px){.chatkit-wrapper .container{max-width:1024px}}@media (min-width:1280px){.chatkit-wrapper .container{max-width:1280px}}@media (min-width:1536px){.chatkit-wrapper .container{max-width:1536px}}:global(.chatkit-wrapper .sr-only){clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}:global(.chatkit-wrapper .pointer-events-none){pointer-events:none}:global(.chatkit-wrapper .pointer-events-auto){pointer-events:auto}:global(.chatkit-wrapper .invisible){visibility:hidden}:global(.chatkit-wrapper .collapse){visibility:collapse}:global(.chatkit-wrapper .static){position:static}:global(.chatkit-wrapper .fixed){position:fixed}:global(.chatkit-wrapper .absolute){position:absolute}:global(.chatkit-wrapper .relative){position:relative}:global(.chatkit-wrapper .sticky){position:sticky}:global(.chatkit-wrapper .inset-0){inset:0}:global(.chatkit-wrapper .inset-x-0){left:0;right:0}:global(.chatkit-wrapper .inset-y-0){bottom:0;top:0}:global(.chatkit-wrapper .-top-12){top:-36px}:global(.chatkit-wrapper .bottom-0){bottom:0}:global(.chatkit-wrapper .left-0){left:0}:global(.chatkit-wrapper .left-\[50\%\]){left:50%}:global(.chatkit-wrapper .right-0){right:0}:global(.chatkit-wrapper .right-1){right:3px}:global(.chatkit-wrapper .right-1\.5){right:4.5px}:global(.chatkit-wrapper .right-2){right:6px}:global(.chatkit-wrapper .right-3){right:9px}:global(.chatkit-wrapper .right-4){right:12px}:global(.chatkit-wrapper .top-0){top:0}:global(.chatkit-wrapper .top-1\.5){top:4.5px}:global(.chatkit-wrapper .top-2){top:6px}:global(.chatkit-wrapper .top-3\.5){top:10.5px}:global(.chatkit-wrapper .top-4){top:12px}:global(.chatkit-wrapper .top-\[50\%\]){top:50%}:global(.chatkit-wrapper .z-0){z-index:0}:global(.chatkit-wrapper .z-10){z-index:10}:global(.chatkit-wrapper .z-20){z-index:20}:global(.chatkit-wrapper .z-50){z-index:50}:global(.chatkit-wrapper .z-\[100\]){z-index:100}:global(.chatkit-wrapper .col-span-full){grid-column:1/-1}:global(.chatkit-wrapper .col-start-1){grid-column-start:1}:global(.chatkit-wrapper .col-start-2){grid-column-start:2}:global(.chatkit-wrapper .col-start-3){grid-column-start:3}:global(.chatkit-wrapper .row-start-1){grid-row-start:1}:global(.chatkit-wrapper .row-start-2){grid-row-start:2}:global(.chatkit-wrapper .row-start-3){grid-row-start:3}:global(.chatkit-wrapper .m-0){margin:0}:global(.chatkit-wrapper .m-\[4px\]){margin:4px}:global(.chatkit-wrapper .-mx-2){margin-left:-6px;margin-right:-6px}:global(.chatkit-wrapper .mx-2){margin-left:6px;margin-right:6px}:global(.chatkit-wrapper .mx-3){margin-left:9px;margin-right:9px}:global(.chatkit-wrapper .mx-3\.5){margin-left:10.5px;margin-right:10.5px}:global(.chatkit-wrapper .mx-auto){margin-left:auto;margin-right:auto}:global(.chatkit-wrapper .my-2){margin-bottom:6px;margin-top:6px}:global(.chatkit-wrapper .my-4){margin-bottom:12px;margin-top:12px}:global(.chatkit-wrapper .my-5){margin-bottom:15px;margin-top:15px}:global(.chatkit-wrapper .my-\[12px\]){margin-bottom:12px;margin-top:12px}:global(.chatkit-wrapper .-ml-1){margin-left:-3px}:global(.chatkit-wrapper .-ml-2){margin-left:-6px}:global(.chatkit-wrapper .-mr-1){margin-right:-3px}:global(.chatkit-wrapper .mb-1){margin-bottom:3px}:global(.chatkit-wrapper .mb-2){margin-bottom:6px}:global(.chatkit-wrapper .mb-3){margin-bottom:9px}:global(.chatkit-wrapper .mb-4){margin-bottom:12px}:global(.chatkit-wrapper .mb-6){margin-bottom:18px}:global(.chatkit-wrapper .mb-\[10px\]){margin-bottom:10px}:global(.chatkit-wrapper .mb-\[12px\]){margin-bottom:12px}:global(.chatkit-wrapper .mb-\[4px\]){margin-bottom:4px}:global(.chatkit-wrapper .mb-\[6px\]){margin-bottom:6px}:global(.chatkit-wrapper .ml-2){margin-left:6px}:global(.chatkit-wrapper .ml-3){margin-left:9px}:global(.chatkit-wrapper .ml-6){margin-left:18px}:global(.chatkit-wrapper .ml-\[24px\]){margin-left:24px}:global(.chatkit-wrapper .ml-\[50px\]){margin-left:50px}:global(.chatkit-wrapper .ml-auto){margin-left:auto}:global(.chatkit-wrapper .mr-1){margin-right:3px}:global(.chatkit-wrapper .mr-1\.5){margin-right:4.5px}:global(.chatkit-wrapper .mr-2){margin-right:6px}:global(.chatkit-wrapper .mr-3){margin-right:9px}:global(.chatkit-wrapper .mr-4){margin-right:12px}:global(.chatkit-wrapper .mr-6){margin-right:18px}:global(.chatkit-wrapper .mr-\[12px\]){margin-right:12px}:global(.chatkit-wrapper .mt-0\.5){margin-top:1.5px}:global(.chatkit-wrapper .mt-1){margin-top:3px}:global(.chatkit-wrapper .mt-1\.5){margin-top:4.5px}:global(.chatkit-wrapper .mt-2){margin-top:6px}:global(.chatkit-wrapper .mt-4){margin-top:12px}:global(.chatkit-wrapper .mt-6){margin-top:18px}:global(.chatkit-wrapper .mt-\[12px\]){margin-top:12px}:global(.chatkit-wrapper .mt-\[8px\]){margin-top:8px}:global(.chatkit-wrapper .mt-auto){margin-top:auto}:global(.chatkit-wrapper .line-clamp-1){-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;overflow:hidden}:global(.chatkit-wrapper .line-clamp-2){-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden}:global(.chatkit-wrapper .block){display:block}:global(.chatkit-wrapper .inline-block){display:inline-block}:global(.chatkit-wrapper .flex){display:flex}:global(.chatkit-wrapper .inline-flex){display:inline-flex}:global(.chatkit-wrapper .table){display:table}:global(.chatkit-wrapper .grid){display:grid}:global(.chatkit-wrapper .\!contents){display:contents!important}:global(.chatkit-wrapper .contents){display:contents}:global(.chatkit-wrapper .hidden){display:none}:global(.chatkit-wrapper .aspect-square){aspect-ratio:1/1}:global(.chatkit-wrapper .size-10){height:30px;width:30px}:global(.chatkit-wrapper .size-2\.5){height:7.5px;width:7.5px}:global(.chatkit-wrapper .size-3){height:9px;width:9px}:global(.chatkit-wrapper .size-3\.5){height:10.5px;width:10.5px}:global(.chatkit-wrapper .size-4){height:12px;width:12px}:global(.chatkit-wrapper .size-6){height:18px;width:18px}:global(.chatkit-wrapper .size-7){height:21px;width:21px}:global(.chatkit-wrapper .size-8){height:24px;width:24px}:global(.chatkit-wrapper .size-9){height:27px;width:27px}:global(.chatkit-wrapper .size-\[16px\]){height:16px;width:16px}:global(.chatkit-wrapper .size-\[28px\]){height:28px;width:28px}:global(.chatkit-wrapper .size-\[38px\]){height:38px;width:38px}:global(.chatkit-wrapper .size-\[unset\]){height:unset;width:unset}:global(.chatkit-wrapper .size-full){height:100%;width:100%}:global(.chatkit-wrapper .h-10){height:30px}:global(.chatkit-wrapper .h-11){height:33px}:global(.chatkit-wrapper .h-12){height:36px}:global(.chatkit-wrapper .h-16){height:48px}:global(.chatkit-wrapper .h-2\.5){height:7.5px}:global(.chatkit-wrapper .h-3){height:9px}:global(.chatkit-wrapper .h-3\.5){height:10.5px}:global(.chatkit-wrapper .h-4){height:12px}:global(.chatkit-wrapper .h-5){height:15px}:global(.chatkit-wrapper .h-7){height:21px}:global(.chatkit-wrapper .h-8){height:24px}:global(.chatkit-wrapper .h-9){height:27px}:global(.chatkit-wrapper .h-\[12px\]){height:12px}:global(.chatkit-wrapper .h-\[180px\]){height:180px}:global(.chatkit-wrapper .h-\[22px\]){height:22px}:global(.chatkit-wrapper .h-\[24px\]){height:24px}:global(.chatkit-wrapper .h-\[28px\]){height:28px}:global(.chatkit-wrapper .h-\[32px\]){height:32px}:global(.chatkit-wrapper .h-\[38px\]){height:38px}:global(.chatkit-wrapper .h-\[61px\]){height:61px}:global(.chatkit-wrapper .h-\[calc\(100\%-65px\)\]){height:calc(100% - 65px)}:global(.chatkit-wrapper .h-auto){height:auto}:global(.chatkit-wrapper .h-fit){height:-moz-fit-content;height:fit-content}:global(.chatkit-wrapper .h-full){height:100%}:global(.chatkit-wrapper .h-svh){height:100svh}:global(.chatkit-wrapper .max-h-\[200px\]){max-height:200px}:global(.chatkit-wrapper .max-h-\[500px\]){max-height:500px}:global(.chatkit-wrapper .max-h-\[600px\]){max-height:600px}:global(.chatkit-wrapper .max-h-\[60px\]){max-height:60px}:global(.chatkit-wrapper .max-h-\[80dvh\]){max-height:80dvh}:global(.chatkit-wrapper .max-h-\[80vh\]){max-height:80vh}:global(.chatkit-wrapper .max-h-\[calc\(90vh-140px\)\]){max-height:calc(90vh - 140px)}:global(.chatkit-wrapper .max-h-screen){max-height:100vh}:global(.chatkit-wrapper .min-h-0){min-height:0}:global(.chatkit-wrapper .min-h-12){min-height:36px}:global(.chatkit-wrapper .min-h-\[400px\]){min-height:400px}:global(.chatkit-wrapper .min-h-\[60px\]){min-height:60px}:global(.chatkit-wrapper .min-h-\[84px\]){min-height:84px}:global(.chatkit-wrapper .min-h-svh){min-height:100svh}:global(.chatkit-wrapper .w-10){width:30px}:global(.chatkit-wrapper .w-16){width:48px}:global(.chatkit-wrapper .w-2\.5){width:7.5px}:global(.chatkit-wrapper .w-3){width:9px}:global(.chatkit-wrapper .w-3\.5){width:10.5px}:global(.chatkit-wrapper .w-3\/4){width:75%}:global(.chatkit-wrapper .w-4){width:12px}:global(.chatkit-wrapper .w-5){width:15px}:global(.chatkit-wrapper .w-5\/6){width:83.333333%}:global(.chatkit-wrapper .w-7){width:21px}:global(.chatkit-wrapper .w-8){width:24px}:global(.chatkit-wrapper .w-\[160px\]){width:160px}:global(.chatkit-wrapper .w-\[180px\]){width:180px}:global(.chatkit-wrapper .w-\[1px\]){width:1px}:global(.chatkit-wrapper .w-\[200px\]){width:200px}:global(.chatkit-wrapper .w-\[28px\]){width:28px}:global(.chatkit-wrapper .w-\[32px\]){width:32px}:global(.chatkit-wrapper .w-auto){width:auto}:global(.chatkit-wrapper .w-fit){width:-moz-fit-content;width:fit-content}:global(.chatkit-wrapper .w-full){width:100%}:global(.chatkit-wrapper .w-max){width:-moz-max-content;width:max-content}:global(.chatkit-wrapper .min-w-0){min-width:0}:global(.chatkit-wrapper .min-w-5){min-width:15px}:global(.chatkit-wrapper .min-w-\[80px\]){min-width:80px}:global(.chatkit-wrapper .min-w-full){min-width:100%}:global(.chatkit-wrapper .max-w-2xl){max-width:504px}:global(.chatkit-wrapper .max-w-3xl){max-width:576px}:global(.chatkit-wrapper .max-w-4xl){max-width:672px}:global(.chatkit-wrapper .max-w-\[240px\]){max-width:240px}:global(.chatkit-wrapper .max-w-\[300px\]){max-width:300px}:global(.chatkit-wrapper .max-w-\[720px\]){max-width:720px}:global(.chatkit-wrapper .max-w-\[800px\]){max-width:800px}:global(.chatkit-wrapper .max-w-\[80px\]){max-width:80px}:global(.chatkit-wrapper .max-w-\[90\%\]){max-width:90%}:global(.chatkit-wrapper .max-w-\[calc\(100\%-2rem\)\]){max-width:calc(100% - 24px)}:global(.chatkit-wrapper .max-w-\[var\(--thread-max-width\)\]){max-width:var(--thread-max-width)}:global(.chatkit-wrapper .max-w-full){max-width:100%}:global(.chatkit-wrapper .flex-1){flex:1 1 0%}:global(.chatkit-wrapper .flex-shrink-0){flex-shrink:0}:global(.chatkit-wrapper .shrink-0){flex-shrink:0}:global(.chatkit-wrapper .flex-grow){flex-grow:1}:global(.chatkit-wrapper .flex-grow-0){flex-grow:0}:global(.chatkit-wrapper .grow){flex-grow:1}:global(.chatkit-wrapper .border-separate){border-collapse:separate}:global(.chatkit-wrapper .border-spacing-0){--tw-border-spacing-x:0px;--tw-border-spacing-y:0px;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}:global(.chatkit-wrapper .-translate-x-1\/2){--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .-translate-x-px){--tw-translate-x:-1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .translate-x-\[-50\%\]){--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .translate-x-px){--tw-translate-x:1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .translate-y-\[-50\%\]){--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .translate-y-\[calc\(-50\%_-_2px\)\]){--tw-translate-y:calc(-50% - 2px);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .rotate-0){--tw-rotate:0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .rotate-180){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .rotate-45){--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .rotate-90){--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .transform-gpu){transform:translate3d(var(--tw-translate-x),var(--tw-translate-y),0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}:global(.chatkit-wrapper .animate-pulse){animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}:global(.chatkit-wrapper .animate-spin){animation:spin 1s linear infinite}:global(.chatkit-wrapper .cursor-not-allowed){cursor:not-allowed}:global(.chatkit-wrapper .cursor-pointer){cursor:pointer}:global(.chatkit-wrapper .select-none){-webkit-user-select:none;-moz-user-select:none;user-select:none}:global(.chatkit-wrapper .resize-none){resize:none}:global(.chatkit-wrapper .scroll-m-20){scroll-margin:60px}:global(.chatkit-wrapper .list-decimal){list-style-type:decimal}:global(.chatkit-wrapper .list-disc){list-style-type:disc}:global(.chatkit-wrapper .auto-rows-auto){grid-auto-rows:auto}:global(.chatkit-wrapper .grid-cols-\[minmax\(72px\2c 1fr\)_auto\]){grid-template-columns:minmax(72px,1fr) auto}:global(.chatkit-wrapper .flex-row){flex-direction:row}:global(.chatkit-wrapper .flex-col){flex-direction:column}:global(.chatkit-wrapper .flex-col-reverse){flex-direction:column-reverse}:global(.chatkit-wrapper .items-start){align-items:flex-start}:global(.chatkit-wrapper .items-end){align-items:flex-end}:global(.chatkit-wrapper .items-center){align-items:center}:global(.chatkit-wrapper .items-stretch){align-items:stretch}:global(.chatkit-wrapper .justify-start){justify-content:flex-start}:global(.chatkit-wrapper .justify-end){justify-content:flex-end}:global(.chatkit-wrapper .justify-center){justify-content:center}:global(.chatkit-wrapper .justify-between){justify-content:space-between}:global(.chatkit-wrapper .gap-0){gap:0}:global(.chatkit-wrapper .gap-0\.5){gap:1.5px}:global(.chatkit-wrapper .gap-1){gap:3px}:global(.chatkit-wrapper .gap-1\.5){gap:4.5px}:global(.chatkit-wrapper .gap-2){gap:6px}:global(.chatkit-wrapper .gap-3){gap:9px}:global(.chatkit-wrapper .gap-4){gap:12px}:global(.chatkit-wrapper .gap-\[12px\]){gap:12px}:global(.chatkit-wrapper .gap-\[8px\]){gap:8px}:global(.chatkit-wrapper .gap-y-2){row-gap:6px}:global(.chatkit-wrapper .space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-left:calc(12px*(1 - var(--tw-space-x-reverse)));margin-right:calc(12px*var(--tw-space-x-reverse))}:global(.chatkit-wrapper .space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}:global(.chatkit-wrapper .space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(3px*var(--tw-space-y-reverse));margin-top:calc(3px*(1 - var(--tw-space-y-reverse)))}:global(.chatkit-wrapper .space-y-1\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(4.5px*var(--tw-space-y-reverse));margin-top:calc(4.5px*(1 - var(--tw-space-y-reverse)))}:global(.chatkit-wrapper .space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(6px*var(--tw-space-y-reverse));margin-top:calc(6px*(1 - var(--tw-space-y-reverse)))}:global(.chatkit-wrapper .space-y-2\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(7.5px*var(--tw-space-y-reverse));margin-top:calc(7.5px*(1 - var(--tw-space-y-reverse)))}:global(.chatkit-wrapper .space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(9px*var(--tw-space-y-reverse));margin-top:calc(9px*(1 - var(--tw-space-y-reverse)))}:global(.chatkit-wrapper .space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(12px*var(--tw-space-y-reverse));margin-top:calc(12px*(1 - var(--tw-space-y-reverse)))}:global(.chatkit-wrapper .space-y-5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(15px*var(--tw-space-y-reverse));margin-top:calc(15px*(1 - var(--tw-space-y-reverse)))}:global(.chatkit-wrapper .space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(18px*var(--tw-space-y-reverse));margin-top:calc(18px*(1 - var(--tw-space-y-reverse)))}:global(.chatkit-wrapper .divide-y>:not([hidden])~:not([hidden])){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}:global(.chatkit-wrapper .divide-gray-100>:not([hidden])~:not([hidden])){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity,1))}:global(.chatkit-wrapper .self-end){align-self:flex-end}:global(.chatkit-wrapper .self-center){align-self:center}:global(.chatkit-wrapper .overflow-auto){overflow:auto}:global(.chatkit-wrapper .overflow-hidden){overflow:hidden}:global(.chatkit-wrapper .overflow-visible){overflow:visible}:global(.chatkit-wrapper .overflow-x-auto){overflow-x:auto}:global(.chatkit-wrapper .overflow-y-auto){overflow-y:auto}:global(.chatkit-wrapper .truncate){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:global(.chatkit-wrapper .whitespace-nowrap){white-space:nowrap}:global(.chatkit-wrapper .whitespace-pre-wrap){white-space:pre-wrap}:global(.chatkit-wrapper .text-balance){text-wrap:balance}:global(.chatkit-wrapper .break-words){overflow-wrap:break-word}:global(.chatkit-wrapper .break-all){word-break:break-all}:global(.chatkit-wrapper .rounded){border-radius:3px}:global(.chatkit-wrapper .rounded-2xl){border-radius:12px}:global(.chatkit-wrapper .rounded-\[10px\]){border-radius:10px}:global(.chatkit-wrapper .rounded-\[16px\]){border-radius:16px}:global(.chatkit-wrapper .rounded-\[2px\]){border-radius:2px}:global(.chatkit-wrapper .rounded-\[4px\]){border-radius:4px}:global(.chatkit-wrapper .rounded-\[6px\]){border-radius:6px}:global(.chatkit-wrapper .rounded-\[8px\]){border-radius:8px}:global(.chatkit-wrapper .rounded-full){border-radius:9999px}:global(.chatkit-wrapper .rounded-lg){border-radius:6px}:global(.chatkit-wrapper .rounded-md){border-radius:4.5px}:global(.chatkit-wrapper .rounded-none){border-radius:0}:global(.chatkit-wrapper .rounded-sm){border-radius:1.5px}:global(.chatkit-wrapper .rounded-xl){border-radius:9px}:global(.chatkit-wrapper .\!rounded-t-none){border-top-left-radius:0!important;border-top-right-radius:0!important}:global(.chatkit-wrapper .rounded-b-lg){border-bottom-left-radius:6px;border-bottom-right-radius:6px}:global(.chatkit-wrapper .rounded-t-lg){border-top-left-radius:6px;border-top-right-radius:6px}:global(.chatkit-wrapper .border){border-width:1px}:global(.chatkit-wrapper .border-0){border-width:0}:global(.chatkit-wrapper .border-2){border-width:2px}:global(.chatkit-wrapper .border-\[1px\]){border-width:1px}:global(.chatkit-wrapper .border-b){border-bottom-width:1px}:global(.chatkit-wrapper .border-l){border-left-width:1px}:global(.chatkit-wrapper .border-r){border-right-width:1px}:global(.chatkit-wrapper .border-t){border-top-width:1px}:global(.chatkit-wrapper .border-t-0){border-top-width:0}:global(.chatkit-wrapper .border-solid){border-style:solid}:global(.chatkit-wrapper .border-dashed){border-style:dashed}:global(.chatkit-wrapper .border-none){border-style:none}:global(.chatkit-wrapper .border-\[\#0000000A\]){border-color:#0000000a}:global(.chatkit-wrapper .border-\[\#0000001A\]){border-color:#0000001a}:global(.chatkit-wrapper .border-\[\#0000001a\]){border-color:#0000001a}:global(.chatkit-wrapper .border-\[\#1664FF1A\]){border-color:#1664ff1a}:global(.chatkit-wrapper .border-\[\#E5E6EB\]){--tw-border-opacity:1;border-color:rgb(229 230 235/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .border-\[\#E5E7EB\]){--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .border-\[\#EAEDF1\]){--tw-border-opacity:1;border-color:rgb(234 237 241/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .border-gray-100){--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .border-gray-200){--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .border-gray-200\/80){border-color:rgba(229,231,235,.8)}:global(.chatkit-wrapper .border-gray-300){--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .border-red-200){--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .border-transparent){border-color:transparent}:global(.chatkit-wrapper .bg-\[\#0000000A\]){background-color:#0000000a}:global(.chatkit-wrapper .bg-\[\#5252FF\]){--tw-bg-opacity:1;background-color:rgb(82 82 255/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-\[\#D7312A\]){--tw-bg-opacity:1;background-color:rgb(215 49 42/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-\[\#DDE2E9\]){--tw-bg-opacity:1;background-color:rgb(221 226 233/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-\[\#E5E7EB\]){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-\[\#E8F3FF\]){--tw-bg-opacity:1;background-color:rgb(232 243 255/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-\[\#EBF1FF\]){--tw-bg-opacity:1;background-color:rgb(235 241 255/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-\[\#EDEFFC\]){--tw-bg-opacity:1;background-color:rgb(237 239 252/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-\[\#F6F8FA\]){--tw-bg-opacity:1;background-color:rgb(246 248 250/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-\[\#F7F8FA\]){--tw-bg-opacity:1;background-color:rgb(247 248 250/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-\[\#FAFBFC\]){--tw-bg-opacity:1;background-color:rgb(250 251 252/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-background){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-black){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-black\/50){background-color:rgba(0,0,0,.5)}:global(.chatkit-wrapper .bg-gray-100){--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-gray-400){--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-gray-50\/50){background-color:rgba(249,250,251,.5)}:global(.chatkit-wrapper .bg-gray-500){--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-red-500){--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-transparent){background-color:transparent}:global(.chatkit-wrapper .bg-white){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .bg-white\/95){background-color:hsla(0,0%,100%,.95)}:global(.chatkit-wrapper .bg-\[linear-gradient\(to_top\2c var\(--color-background\)\2c transparent\)\]){background-image:linear-gradient(to top,var(--color-background),transparent)}:global(.chatkit-wrapper .bg-gradient-to-br){background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}:global(.chatkit-wrapper .bg-gradient-to-r){background-image:linear-gradient(to right,var(--tw-gradient-stops))}:global(.chatkit-wrapper .from-blue-50){--tw-gradient-from:#eff6ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:global(.chatkit-wrapper .from-blue-500){--tw-gradient-from:#3b82f6 var(--tw-gradient-from-position);--tw-gradient-to:rgba(59,130,246,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:global(.chatkit-wrapper .from-blue-600){--tw-gradient-from:#2563eb var(--tw-gradient-from-position);--tw-gradient-to:rgba(37,99,235,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:global(.chatkit-wrapper .from-gray-50\/30){--tw-gradient-from:rgba(249,250,251,.3) var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,250,251,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:global(.chatkit-wrapper .from-gray-50\/50){--tw-gradient-from:rgba(249,250,251,.5) var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,250,251,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:global(.chatkit-wrapper .to-blue-100){--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}:global(.chatkit-wrapper .to-blue-600){--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}:global(.chatkit-wrapper .to-blue-700){--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}:global(.chatkit-wrapper .to-white){--tw-gradient-to:#fff var(--tw-gradient-to-position)}:global(.chatkit-wrapper .fill-amber-500){fill:#f59e0b}:global(.chatkit-wrapper .fill-white){fill:#fff}:global(.chatkit-wrapper .object-contain){-o-object-fit:contain;object-fit:contain}:global(.chatkit-wrapper .object-cover){-o-object-fit:cover;object-fit:cover}:global(.chatkit-wrapper .p-0){padding:0}:global(.chatkit-wrapper .p-1){padding:3px}:global(.chatkit-wrapper .p-1\.5){padding:4.5px}:global(.chatkit-wrapper .p-2){padding:6px}:global(.chatkit-wrapper .p-3){padding:9px}:global(.chatkit-wrapper .p-4){padding:12px}:global(.chatkit-wrapper .p-6){padding:18px}:global(.chatkit-wrapper .p-8){padding:24px}:global(.chatkit-wrapper .px-1){padding-left:3px;padding-right:3px}:global(.chatkit-wrapper .px-1\.5){padding-left:4.5px;padding-right:4.5px}:global(.chatkit-wrapper .px-2){padding-left:6px;padding-right:6px}:global(.chatkit-wrapper .px-2\.5){padding-left:7.5px;padding-right:7.5px}:global(.chatkit-wrapper .px-3){padding-left:9px;padding-right:9px}:global(.chatkit-wrapper .px-4){padding-left:12px;padding-right:12px}:global(.chatkit-wrapper .px-6){padding-left:18px;padding-right:18px}:global(.chatkit-wrapper .px-8){padding-left:24px;padding-right:24px}:global(.chatkit-wrapper .px-\[12px\]){padding-left:12px;padding-right:12px}:global(.chatkit-wrapper .px-\[15px\]){padding-left:15px;padding-right:15px}:global(.chatkit-wrapper .px-\[2px\]){padding-left:2px;padding-right:2px}:global(.chatkit-wrapper .px-\[6px\]){padding-left:6px;padding-right:6px}:global(.chatkit-wrapper .py-0){padding-bottom:0;padding-top:0}:global(.chatkit-wrapper .py-0\.5){padding-bottom:1.5px;padding-top:1.5px}:global(.chatkit-wrapper .py-1){padding-bottom:3px;padding-top:3px}:global(.chatkit-wrapper .py-1\.5){padding-bottom:4.5px;padding-top:4.5px}:global(.chatkit-wrapper .py-10){padding-bottom:30px;padding-top:30px}:global(.chatkit-wrapper .py-16){padding-bottom:48px;padding-top:48px}:global(.chatkit-wrapper .py-2){padding-bottom:6px;padding-top:6px}:global(.chatkit-wrapper .py-3){padding-bottom:9px;padding-top:9px}:global(.chatkit-wrapper .py-4){padding-bottom:12px;padding-top:12px}:global(.chatkit-wrapper .py-5){padding-bottom:15px;padding-top:15px}:global(.chatkit-wrapper .py-6){padding-bottom:18px;padding-top:18px}:global(.chatkit-wrapper .py-8){padding-bottom:24px;padding-top:24px}:global(.chatkit-wrapper .py-\[10px\]){padding-bottom:10px;padding-top:10px}:global(.chatkit-wrapper .py-\[12px\]){padding-bottom:12px;padding-top:12px}:global(.chatkit-wrapper .py-\[6px\]){padding-bottom:6px;padding-top:6px}:global(.chatkit-wrapper .py-\[8px\]){padding-bottom:8px;padding-top:8px}:global(.chatkit-wrapper .pb-1){padding-bottom:3px}:global(.chatkit-wrapper .pb-3){padding-bottom:9px}:global(.chatkit-wrapper .pb-4){padding-bottom:12px}:global(.chatkit-wrapper .pb-6){padding-bottom:18px}:global(.chatkit-wrapper .pl-10){padding-left:30px}:global(.chatkit-wrapper .pl-4){padding-left:12px}:global(.chatkit-wrapper .pl-6){padding-left:18px}:global(.chatkit-wrapper .pl-\[14px\]){padding-left:14px}:global(.chatkit-wrapper .pl-\[16px\]){padding-left:16px}:global(.chatkit-wrapper .pl-\[8px\]){padding-left:8px}:global(.chatkit-wrapper .pr-2){padding-right:6px}:global(.chatkit-wrapper .pr-4){padding-right:12px}:global(.chatkit-wrapper .pr-8){padding-right:24px}:global(.chatkit-wrapper .pr-\[12px\]){padding-right:12px}:global(.chatkit-wrapper .pt-0){padding-top:0}:global(.chatkit-wrapper .pt-0\.5){padding-top:1.5px}:global(.chatkit-wrapper .pt-1){padding-top:3px}:global(.chatkit-wrapper .pt-2){padding-top:6px}:global(.chatkit-wrapper .pt-3){padding-top:9px}:global(.chatkit-wrapper .pt-4){padding-top:12px}:global(.chatkit-wrapper .pt-6){padding-top:18px}:global(.chatkit-wrapper .pt-\[8px\]){padding-top:8px}:global(.chatkit-wrapper .text-left){text-align:left}:global(.chatkit-wrapper .text-center){text-align:center}:global(.chatkit-wrapper .text-start){text-align:start}:global(.chatkit-wrapper .font-mono){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}:global(.chatkit-wrapper .text-2xl){font-size:18px;line-height:24px}:global(.chatkit-wrapper .text-\[13px\]){font-size:13px}:global(.chatkit-wrapper .text-\[14px\]){font-size:14px}:global(.chatkit-wrapper .text-\[15px\]){font-size:15px}:global(.chatkit-wrapper .text-\[16px\]){font-size:16px}:global(.chatkit-wrapper .text-\[18px\]){font-size:18px}:global(.chatkit-wrapper .text-\[20px\]){font-size:20px}:global(.chatkit-wrapper .text-\[22px\]){font-size:22px}:global(.chatkit-wrapper .text-\[24px\]){font-size:24px}:global(.chatkit-wrapper .text-\[26px\]){font-size:26px}:global(.chatkit-wrapper .text-base){font-size:12px;line-height:18px}:global(.chatkit-wrapper .text-lg){font-size:13.5px;line-height:21px}:global(.chatkit-wrapper .text-sm){font-size:10.5px;line-height:15px}:global(.chatkit-wrapper .text-xl){font-size:15px;line-height:21px}:global(.chatkit-wrapper .text-xs){font-size:9px;line-height:12px}:global(.chatkit-wrapper .font-\[400\]){font-weight:400}:global(.chatkit-wrapper .font-\[500\]){font-weight:500}:global(.chatkit-wrapper .font-bold){font-weight:700}:global(.chatkit-wrapper .font-extrabold){font-weight:800}:global(.chatkit-wrapper .font-medium){font-weight:500}:global(.chatkit-wrapper .font-normal){font-weight:400}:global(.chatkit-wrapper .font-semibold){font-weight:600}:global(.chatkit-wrapper .lowercase){text-transform:lowercase}:global(.chatkit-wrapper .italic){font-style:italic}:global(.chatkit-wrapper .tabular-nums){--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}:global(.chatkit-wrapper .leading-7){line-height:21px}:global(.chatkit-wrapper .leading-\[100\%\]){line-height:100%}:global(.chatkit-wrapper .leading-\[22px\]){line-height:22px}:global(.chatkit-wrapper .leading-\[24px\]){line-height:24px}:global(.chatkit-wrapper .leading-\[25px\]){line-height:25px}:global(.chatkit-wrapper .leading-\[28px\]){line-height:28px}:global(.chatkit-wrapper .leading-\[30px\]){line-height:30px}:global(.chatkit-wrapper .leading-\[37px\]){line-height:37px}:global(.chatkit-wrapper .leading-none){line-height:1}:global(.chatkit-wrapper .leading-relaxed){line-height:1.625}:global(.chatkit-wrapper .tracking-\[0\.3\%\]){letter-spacing:.3%}:global(.chatkit-wrapper .tracking-tight){letter-spacing:-.025em}:global(.chatkit-wrapper .text-\[\#0C0D0E\]){--tw-text-opacity:1;color:rgb(12 13 14/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-\[\#1664FF\]){--tw-text-opacity:1;color:rgb(22 100 255/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-\[\#1677FF\]){--tw-text-opacity:1;color:rgb(22 119 255/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-\[\#1D2129\]){--tw-text-opacity:1;color:rgb(29 33 41/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-\[\#808388\]){--tw-text-opacity:1;color:rgb(128 131 136/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-\[\#86909C\]){--tw-text-opacity:1;color:rgb(134 144 156/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-amber-500){--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-background){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-blue-500){--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-blue-600){--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-gray-500){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-gray-600){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-gray-700){--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-gray-800){--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-gray-900){--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-red-500){--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-red-600){--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .underline){text-decoration-line:underline}:global(.chatkit-wrapper .underline-offset-4){text-underline-offset:4px}:global(.chatkit-wrapper .opacity-0){opacity:0}:global(.chatkit-wrapper .opacity-100){opacity:1}:global(.chatkit-wrapper .opacity-50){opacity:.5}:global(.chatkit-wrapper .opacity-70){opacity:.7}:global(.chatkit-wrapper .opacity-90){opacity:.9}:global(.chatkit-wrapper .shadow-2xl){--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]){--tw-shadow:0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .shadow-lg){--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .shadow-md){--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .shadow-none){--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .shadow-sm){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .outline-none){outline:2px solid transparent;outline-offset:2px}:global(.chatkit-wrapper .outline){outline-style:solid}:global(.chatkit-wrapper .ring-offset-background){--tw-ring-offset-color:#fff}:global(.chatkit-wrapper .filter){filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:global(.chatkit-wrapper .backdrop-blur-sm){--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}:global(.chatkit-wrapper .transition){transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .transition-\[color\2c box-shadow\]){transition-duration:.15s;transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .transition-\[left\2c right\2c width\]){transition-duration:.15s;transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .transition-\[margin\2c opacity\]){transition-duration:.15s;transition-property:margin,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .transition-\[transform\2c opacity\]){transition-duration:.15s;transition-property:transform,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .transition-\[width\2c height\2c padding\]){transition-duration:.15s;transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .transition-\[width\]){transition-duration:.15s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .transition-all){transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .transition-colors){transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .transition-opacity){transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .transition-transform){transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .duration-150){transition-duration:.15s}:global(.chatkit-wrapper .duration-200){transition-duration:.2s}:global(.chatkit-wrapper .ease-in-out){transition-timing-function:cubic-bezier(.4,0,.2,1)}:global(.chatkit-wrapper .ease-linear){transition-timing-function:linear}:global(.chatkit-wrapper .ease-out){transition-timing-function:cubic-bezier(0,0,.2,1)}:global(.chatkit-wrapper .chatkit-wrapper){.chatkit-wrapper *,.chatkit-wrapper :after,.chatkit-wrapper :before{border:0 solid #e5e7eb;box-sizing:border-box}.chatkit-wrapper :after,.chatkit-wrapper :before{--tw-content:""}.chatkit-wrapper{line-height:inherit;margin:0}.chatkit-wrapper hr{border-top-width:1px;color:inherit;height:0}.chatkit-wrapper abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.chatkit-wrapper h1,.chatkit-wrapper h2,.chatkit-wrapper h3,.chatkit-wrapper h4,.chatkit-wrapper h5,.chatkit-wrapper h6{font-size:inherit;font-weight:inherit}.chatkit-wrapper a{color:inherit;text-decoration:inherit}.chatkit-wrapper b,.chatkit-wrapper strong{font-weight:bolder}.chatkit-wrapper small{font-size:80%}.chatkit-wrapper sub,.chatkit-wrapper sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.chatkit-wrapper sub{bottom:-.25em}.chatkit-wrapper sup{top:-.5em}.chatkit-wrapper table{border-collapse:collapse;border-color:inherit;text-indent:0}.chatkit-wrapper button,.chatkit-wrapper input,.chatkit-wrapper optgroup,.chatkit-wrapper select,.chatkit-wrapper textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}.chatkit-wrapper button,.chatkit-wrapper select{text-transform:none}.chatkit-wrapper button,.chatkit-wrapper input:where([type=button]),.chatkit-wrapper input:where([type=reset]),.chatkit-wrapper input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}.chatkit-wrapper :-moz-focusring{outline:auto}.chatkit-wrapper :-moz-ui-invalid{box-shadow:none}.chatkit-wrapper progress{vertical-align:baseline}.chatkit-wrapper ::-webkit-inner-spin-button,.chatkit-wrapper ::-webkit-outer-spin-button{height:auto}.chatkit-wrapper [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.chatkit-wrapper ::-webkit-search-decoration{-webkit-appearance:none}.chatkit-wrapper ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.chatkit-wrapper summary{display:list-item}.chatkit-wrapper blockquote,.chatkit-wrapper dd,.chatkit-wrapper dl,.chatkit-wrapper figure,.chatkit-wrapper h1,.chatkit-wrapper h2,.chatkit-wrapper h3,.chatkit-wrapper h4,.chatkit-wrapper h5,.chatkit-wrapper h6,.chatkit-wrapper hr,.chatkit-wrapper p,.chatkit-wrapper pre{margin:0}.chatkit-wrapper fieldset{margin:0;padding:0}.chatkit-wrapper legend{padding:0}.chatkit-wrapper menu,.chatkit-wrapper ol,.chatkit-wrapper ul{list-style:none;margin:0;padding:0}.chatkit-wrapper dialog{padding:0}.chatkit-wrapper textarea{resize:vertical}.chatkit-wrapper input::-moz-placeholder,.chatkit-wrapper textarea::-moz-placeholder{color:#9ca3af;opacity:1}.chatkit-wrapper input::placeholder,.chatkit-wrapper textarea::placeholder{color:#9ca3af;opacity:1}.chatkit-wrapper [role=button],.chatkit-wrapper button{cursor:pointer}.chatkit-wrapper :disabled{cursor:default}.chatkit-wrapper audio,.chatkit-wrapper canvas,.chatkit-wrapper embed,.chatkit-wrapper iframe,.chatkit-wrapper img,.chatkit-wrapper object,.chatkit-wrapper svg,.chatkit-wrapper video{display:block;vertical-align:middle}.chatkit-wrapper img,.chatkit-wrapper video{height:auto;max-width:100%}.chatkit-wrapper [hidden]:where(:not([hidden=until-found])){display:none}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}:global(.chatkit-wrapper .file\:inline-flex::file-selector-button){display:inline-flex}:global(.chatkit-wrapper .file\:h-7::file-selector-button){height:21px}:global(.chatkit-wrapper .file\:border-0::file-selector-button){border-width:0}:global(.chatkit-wrapper .file\:bg-transparent::file-selector-button){background-color:transparent}:global(.chatkit-wrapper .file\:text-sm::file-selector-button){font-size:10.5px;line-height:15px}:global(.chatkit-wrapper .file\:font-medium::file-selector-button){font-weight:500}:global(.chatkit-wrapper .after\:absolute:after){content:var(--tw-content);position:absolute}:global(.chatkit-wrapper .after\:-inset-2:after){content:var(--tw-content);inset:-6px}:global(.chatkit-wrapper .after\:inset-y-0:after){bottom:0;content:var(--tw-content);top:0}:global(.chatkit-wrapper .after\:left-1\/2:after){content:var(--tw-content);left:50%}:global(.chatkit-wrapper .after\:w-\[2px\]:after){content:var(--tw-content);width:2px}:global(.chatkit-wrapper .first\:mt-0:first-child){margin-top:0}:global(.chatkit-wrapper .first\:mt-3:first-child){margin-top:9px}:global(.chatkit-wrapper .first\:mt-4:first-child){margin-top:12px}:global(.chatkit-wrapper .first\:rounded-tl-lg:first-child){border-top-left-radius:6px}:global(.chatkit-wrapper .first\:border-t:first-child){border-top-width:1px}:global(.chatkit-wrapper .last\:mb-0:last-child){margin-bottom:0}:global(.chatkit-wrapper .last\:mb-24:last-child){margin-bottom:72px}:global(.chatkit-wrapper .last\:mb-5:last-child){margin-bottom:15px}:global(.chatkit-wrapper .last\:rounded-tr-lg:last-child){border-top-right-radius:6px}:global(.chatkit-wrapper .last\:border-r:last-child){border-right-width:1px}:global(.chatkit-wrapper .empty\:hidden:empty){display:none}:global(.chatkit-wrapper .hover\:visible:hover){visibility:visible}:global(.chatkit-wrapper .hover\:scale-\[1\.02\]:hover){--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .hover\:border-blue-200:hover){--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .hover\:border-gray-300:hover){--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .hover\:border-gray-400:hover){--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .hover\:border-red-300:hover){--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .hover\:\!bg-white:hover){--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))!important}:global(.chatkit-wrapper .hover\:bg-\[rgba\(46\2c 50\2c 56\2c 0\.05\)\]:hover){background-color:rgba(46,50,56,.05)}:global(.chatkit-wrapper .hover\:bg-gray-100:hover){--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .hover\:bg-gray-200:hover){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .hover\:bg-gray-50:hover){--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .hover\:bg-gray-50\/50:hover){background-color:rgba(249,250,251,.5)}:global(.chatkit-wrapper .hover\:bg-red-50:hover){--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .hover\:bg-red-600:hover){--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .hover\:from-blue-700:hover){--tw-gradient-from:#1d4ed8 var(--tw-gradient-from-position);--tw-gradient-to:rgba(29,78,216,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:global(.chatkit-wrapper .hover\:to-blue-800:hover){--tw-gradient-to:#1e40af var(--tw-gradient-to-position)}:global(.chatkit-wrapper .hover\:text-gray-600:hover){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .hover\:text-gray-900:hover){--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .hover\:underline:hover){text-decoration-line:underline}:global(.chatkit-wrapper .hover\:opacity-100:hover){opacity:1}:global(.chatkit-wrapper .hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover){--tw-shadow:0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .hover\:shadow-lg:hover){--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .hover\:shadow-md:hover){--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .focus\:border-blue-400:focus){--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}:global(.chatkit-wrapper .focus\:opacity-100:focus){opacity:1}:global(.chatkit-wrapper .focus\:outline-none:focus){outline:2px solid transparent;outline-offset:2px}:global(.chatkit-wrapper .focus\:ring-2:focus){--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}:global(.chatkit-wrapper .focus\:ring-4:focus){--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}:global(.chatkit-wrapper .focus\:ring-blue-50:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(239 246 255/var(--tw-ring-opacity,1))}:global(.chatkit-wrapper .focus\:ring-offset-2:focus){--tw-ring-offset-width:2px}:global(.chatkit-wrapper .focus-visible\:outline-none:focus-visible){outline:2px solid transparent;outline-offset:2px}:global(.chatkit-wrapper .focus-visible\:ring-2:focus-visible){--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}:global(.chatkit-wrapper .focus-visible\:ring-\[3px\]:focus-visible){--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}:global(.chatkit-wrapper .focus-visible\:ring-offset-0:focus-visible){--tw-ring-offset-width:0px}:global(.chatkit-wrapper .focus-visible\:ring-offset-2:focus-visible){--tw-ring-offset-width:2px}:global(.chatkit-wrapper .active\:scale-95:active){--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .disabled\:pointer-events-none:disabled){pointer-events:none}:global(.chatkit-wrapper .disabled\:invisible:disabled){visibility:hidden}:global(.chatkit-wrapper .disabled\:cursor-not-allowed:disabled){cursor:not-allowed}:global(.chatkit-wrapper .disabled\:from-gray-300:disabled){--tw-gradient-from:#d1d5db var(--tw-gradient-from-position);--tw-gradient-to:rgba(209,213,219,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:global(.chatkit-wrapper .disabled\:to-gray-300:disabled){--tw-gradient-to:#d1d5db var(--tw-gradient-to-position)}:global(.chatkit-wrapper .disabled\:opacity-50:disabled){opacity:.5}:global(.chatkit-wrapper .group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100){opacity:1}:global(.chatkit-wrapper .group:hover .group-hover\:visible){visibility:visible}:global(.chatkit-wrapper .group:hover .group-hover\:translate-x-1){--tw-translate-x:3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .group:hover .group-hover\:text-gray-600){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .group:hover .group-hover\:underline){text-decoration-line:underline}:global(.chatkit-wrapper .group\/menu-item:hover .group-hover\/menu-item\:opacity-100){opacity:1}:global(.chatkit-wrapper .group:hover .group-hover\:opacity-100){opacity:1}:global(.chatkit-wrapper .group.destructive .group-\[\.destructive\]\:text-red-300){--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover){--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}:global(.chatkit-wrapper .group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus){--tw-ring-offset-color:#dc2626}:global(.chatkit-wrapper .has-\[\>svg\]\:px-2\.5:has(>svg)){padding-left:7.5px;padding-right:7.5px}:global(.chatkit-wrapper .has-\[\>svg\]\:px-3:has(>svg)){padding-left:9px;padding-right:9px}:global(.chatkit-wrapper .has-\[\>svg\]\:px-4:has(>svg)){padding-left:12px;padding-right:12px}:global(.chatkit-wrapper .aria-disabled\:pointer-events-none[aria-disabled=true]){pointer-events:none}:global(.chatkit-wrapper .aria-disabled\:opacity-50[aria-disabled=true]){opacity:.5}:global(.chatkit-wrapper .data-\[state\=closed\]\:pointer-events-none[data-state=closed]){pointer-events:none}:global(.chatkit-wrapper .data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]){height:1px}:global(.chatkit-wrapper .data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]){height:100%}:global(.chatkit-wrapper .data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]){width:100%}:global(.chatkit-wrapper .data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]){width:1px}:global(.chatkit-wrapper .data-\[state\=closed\]\:w-\[160px\][data-state=closed]){width:160px}:global(.chatkit-wrapper .data-\[state\=open\]\:w-full[data-state=open]){width:100%}:global(.chatkit-wrapper .data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]){--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]){--tw-translate-x:var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]){--tw-translate-x:var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .data-\[state\=open\]\:border-b[data-state=open]){border-bottom-width:1px}:global(.chatkit-wrapper .data-\[state\=active\]\:bg-background[data-state=active]){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}:global(.chatkit-wrapper .data-\[active\=true\]\:font-medium[data-active=true]){font-weight:500}:global(.chatkit-wrapper .data-\[state\=open\]\:opacity-100[data-state=open]){opacity:1}:global(.chatkit-wrapper .data-\[state\=active\]\:shadow-sm[data-state=active]){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .data-\[swipe\=move\]\:transition-none[data-swipe=move]){transition-property:none}:global(.chatkit-wrapper .data-\[state\=closed\]\:duration-300[data-state=closed]){transition-duration:.3s}:global(.chatkit-wrapper .data-\[state\=open\]\:duration-500[data-state=open]){transition-duration:.5s}:global(.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]){left:calc(var(--sidebar-width)*-1)}:global(.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]){right:calc(var(--sidebar-width)*-1)}:global(.chatkit-wrapper .group[data-side=left] .group-data-\[side\=left\]\:-right-4){right:-12px}:global(.chatkit-wrapper .group[data-side=right] .group-data-\[side\=right\]\:left-0){left:0}:global(.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8){margin-top:-24px}:global(.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden){display:none}:global(.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]){width:calc(var(--sidebar-width-icon) + (--spacing(4)))}:global(.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]){width:calc(var(--sidebar-width-icon) + (--spacing(4)) + 2px)}:global(.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0){width:0}:global(.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0){--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .group[data-side=right] .group-data-\[side\=right\]\:rotate-180){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .group\/trigger[data-state=closed] .group-data-\[state\=closed\]\/trigger\:-rotate-90){--tw-rotate:-90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .group\/trigger[data-state=open] .group-data-\[state\=open\]\/trigger\:rotate-0){--tw-rotate:0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:global(.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden){overflow:hidden}:global(.chatkit-wrapper .group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg){border-radius:6px}:global(.chatkit-wrapper .group[data-variant=floating] .group-data-\[variant\=floating\]\:border){border-width:1px}:global(.chatkit-wrapper .group[data-side=left] .group-data-\[side\=left\]\:border-r){border-right-width:1px}:global(.chatkit-wrapper .group[data-side=right] .group-data-\[side\=right\]\:border-l){border-left-width:1px}:global(.chatkit-wrapper .group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0){opacity:0}:global(.chatkit-wrapper .group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow-sm){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:global(.chatkit-wrapper .group\/collapsible-content[data-state=open] .group-data-\[state\=open\]\/collapsible-content\:delay-\[calc\(var\(--animation-duration\)\*0\.75\)\]){transition-delay:calc(var(--animation-duration)*.75)}:global(.chatkit-wrapper .group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after){content:var(--tw-content);left:100%}:global(.chatkit-wrapper .peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5){top:4.5px}:global(.chatkit-wrapper .peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5){top:7.5px}:global(.chatkit-wrapper .peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1){top:3px}@media (min-width:640px){.chatkit-wrapper .sm\:bottom-0{bottom:0}.chatkit-wrapper .sm\:right-0{right:0}.chatkit-wrapper .sm\:top-auto{top:auto}.chatkit-wrapper .sm\:flex{display:flex}.chatkit-wrapper .sm\:max-h-\[90vh\]{max-height:90vh}.chatkit-wrapper .sm\:max-w-3xl{max-width:576px}.chatkit-wrapper .sm\:max-w-\[425px\]{max-width:425px}.chatkit-wrapper .sm\:max-w-\[480px\]{max-width:480px}.chatkit-wrapper .sm\:max-w-\[90vw\]{max-width:90vw}.chatkit-wrapper .sm\:max-w-lg{max-width:384px}.chatkit-wrapper .sm\:max-w-sm{max-width:288px}.chatkit-wrapper .sm\:flex-row{flex-direction:row}.chatkit-wrapper .sm\:flex-col{flex-direction:column}.chatkit-wrapper .sm\:justify-end{justify-content:flex-end}.chatkit-wrapper .sm\:text-left{text-align:left}}@media (min-width:768px){.chatkit-wrapper .md\:block{display:block}.chatkit-wrapper .md\:flex{display:flex}.chatkit-wrapper .md\:max-w-\[420px\]{max-width:420px}.chatkit-wrapper .md\:pb-6{padding-bottom:18px}.chatkit-wrapper .md\:text-sm{font-size:10.5px;line-height:15px}.chatkit-wrapper .md\:opacity-0{opacity:0}.chatkit-wrapper .md\:after\:hidden:after{content:var(--tw-content);display:none}.chatkit-wrapper .peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:6px}.chatkit-wrapper .peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.chatkit-wrapper .peer[data-variant=inset][data-state=collapsed]~.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2{margin-left:6px}.chatkit-wrapper .peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:9px}.chatkit-wrapper .peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (prefers-color-scheme:dark){.chatkit-wrapper .dark\:bg-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.chatkit-wrapper .dark\:text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}}:global(.chatkit-wrapper .\[\&\:last-child\>td\:first-child\]\:rounded-bl-lg:last-child>td:first-child){border-bottom-left-radius:6px}:global(.chatkit-wrapper .\[\&\:last-child\>td\:last-child\]\:rounded-br-lg:last-child>td:last-child){border-bottom-right-radius:6px}:global(.chatkit-wrapper .\[\&\:where\(\>\*\)\]\:col-start-2:where(>*)){grid-column-start:2}:global(.chatkit-wrapper .only\:\[\&\>\#attachment-tile\]\:size-24>#attachment-tile:only-child){height:72px;width:72px}:global(.chatkit-wrapper .\[\&\>a\]\:text-xs>a){font-size:9px;line-height:12px}:global(.chatkit-wrapper .\[\&\>a\]\:no-underline>a){text-decoration-line:none}:global(.chatkit-wrapper .\[\&\>button\]\:hidden>button){display:none}:global(.chatkit-wrapper .\[\&\>button\]\:rounded-full>button){border-radius:9999px}:global(.chatkit-wrapper .\[\&\>button\]\:p-1>button){padding:3px}:global(.chatkit-wrapper .\[\&\>button\]\:opacity-100>button){opacity:1}:global(.chatkit-wrapper .\[\&\>button\]\:\!ring-0>button){--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}:global(.chatkit-wrapper .\[\&\>li\]\:mt-2>li){margin-top:6px}:global(.chatkit-wrapper .\[\&\>li\]\:text-\[16px\]>li){font-size:16px}:global(.chatkit-wrapper .\[\&\>span\:last-child\]\:truncate>span:last-child){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:global(.chatkit-wrapper .\[\&\>span\]\:text-xs>span){font-size:9px;line-height:12px}:global(.chatkit-wrapper .\[\&\>svg\]\:size-4>svg){height:12px;width:12px}:global(.chatkit-wrapper .\[\&\>svg\]\:shrink-0>svg){flex-shrink:0}:global(.chatkit-wrapper .\[\&\[align\=center\]\]\:text-center[align=center]){text-align:center}:global(.chatkit-wrapper .\[\&\[align\=right\]\]\:text-right[align=right]){text-align:right}:global(.chatkit-wrapper .\[\&_p\]\:-mb-2 p){margin-bottom:-6px}:global(.chatkit-wrapper .\[\&_pre\]\:overflow-x-auto pre){overflow-x:auto}:global(.chatkit-wrapper .\[\&_pre\]\:rounded-b-lg pre){border-bottom-left-radius:6px;border-bottom-right-radius:6px}:global(.chatkit-wrapper .\[\&_pre\]\:border pre){border-width:1px}:global(.chatkit-wrapper .\[\&_pre\]\:p-4 pre){padding:12px}:global(.chatkit-wrapper .\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-])){height:12px;width:12px}:global(.chatkit-wrapper .\[\&_svg\]\:pointer-events-none svg){pointer-events:none}:global(.chatkit-wrapper .\[\&_svg\]\:shrink-0 svg){flex-shrink:0}:global(.chatkit-wrapper .\[\&_svg\]\:text-background svg){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}:global(.chatkit-wrapper .\[\&_svg\]\:text-black svg){--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}:global(.chatkit-wrapper [data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2){right:-6px}:global(.chatkit-wrapper [data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize){cursor:e-resize}:global(.chatkit-wrapper [data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2){left:-6px}:global(.chatkit-wrapper [data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize){cursor:w-resize}@keyframes aui-pulse-chatkit{50%{opacity:.5;transform:scale(.7)}}:global(.chatkit-wrapper .aui-root :where(.aui-md[data-status=running]):empty:after),:global(.chatkit-wrapper .aui-root :where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child):after),:global(.chatkit-wrapper .aui-root :where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after),:global(.chatkit-wrapper .aui-root :where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after),:global(.chatkit-wrapper .aui-root :where(.aui-md[data-status=running])>:where(:not(ol):not(ul):not(pre)):last-child:after),:global(.chatkit-wrapper .aui-root :where(.aui-md[data-status=running])>pre:last-child code:after){--aui-content:"\25cf";animation:aui-pulse-chatkit 1.5s cubic-bezier(.4,0,.6,1) infinite;content:var(--aui-content);display:inline-block;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin-left:2.4px;margin-right:2.4px}:global(.chatkit-wrapper .chatkit-md-text-p img),:global(.chatkit-wrapper .chatkit-md-text-p video){max-width:400px}
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var dayjs = require('dayjs');
3
4
  var lodashEs = require('lodash-es');
4
5
 
5
6
  /**
@@ -81,7 +82,7 @@ onResponse, }) {
81
82
  // 完成后更新状态为成功
82
83
  message.status = message.status !== "error" ? "success" : "error";
83
84
  // 设置结束时间
84
- message.endedAt = Date.now();
85
+ message.endedAt = dayjs().unix();
85
86
  onResponse(message);
86
87
  return message;
87
88
  }
@@ -96,7 +97,7 @@ onResponse, }) {
96
97
  // };
97
98
  onResponse({
98
99
  status: "error",
99
- endedAt: Date.now(),
100
+ endedAt: dayjs().unix(),
100
101
  error: {
101
102
  message: error.message || "未知错误",
102
103
  stack: error.stack,
@@ -1 +1 @@
1
- {"version":3,"file":"chatCompletion.cjs","sources":["../../src/utils/chatCompletion.ts"],"sourcesContent":["import { Message, Topic } from \"@/types\";\nimport { CompletionsParams } from \"@/types/completion\";\nimport { isArray, last } from \"lodash-es\";\n\n/**\n * 聊天\n */\nexport async function fetchChatCompletion({\n message,\n messages,\n completions,\n // topic,\n onResponse,\n}: {\n // 最新的模型回答消息,空消息\n message: Message;\n // 所有消息\n messages: Message[];\n // 话题信息,用于获取话题级别的提示词变量\n topic?: Topic;\n onResponse: (message: Partial<Message>) => void;\n // 调用完成回调\n completions: (params: CompletionsParams) => Promise<void>;\n}) {\n // 获取提供者和AI实例\n\n try {\n const onChunk = ({\n text,\n reasoningContent,\n functionCall,\n functionResponse,\n error,\n }: Parameters<CompletionsParams[\"onChunk\"]>[0]) => {\n if (text) {\n if (isArray(message.content)) {\n const lastItem = last(message.content);\n if (typeof lastItem === \"string\") {\n message.content = [\n ...message.content.slice(0, -1),\n lastItem + text,\n ];\n } else {\n message.content = [...message.content, text];\n }\n } else {\n // text\n message.content = (message.content || \"\") + text;\n }\n }\n\n if (reasoningContent) {\n message.reasoningContent =\n (message.reasoningContent || \"\") + reasoningContent;\n }\n\n if (functionCall) {\n message.metadata.functionCall = [\n ...(message.metadata.functionCall || []),\n ...functionCall,\n ];\n\n if (isArray(message.content)) {\n message.content = [...message.content, ...functionCall];\n } else {\n // functionCall\n message.content = [message.content, ...functionCall];\n }\n }\n\n if (functionResponse) {\n // 找到对应id相同的function call并进行替换\n if (message.metadata.functionCall) {\n message.metadata.functionCall = message.metadata.functionCall.map(\n (existingCall) => {\n const responseCall = functionResponse.find(\n (response) => response.id === existingCall.id\n );\n return responseCall || existingCall;\n }\n );\n }\n // 同时更新content中的function call\n if (isArray(message.content)) {\n message.content = message.content.map((item) => {\n if (typeof item === \"object\" && \"id\" in item) {\n const responseCall = functionResponse.find(\n (response) => response.id === item.id\n );\n return responseCall || item;\n }\n return item;\n });\n }\n }\n if (error) {\n message.status = \"error\";\n message.error = { message: error || \"未知错误\" };\n onResponse(message);\n return;\n }\n\n // 通知更新\n onResponse({ ...message, status: \"pending\" });\n };\n\n await completions({\n onChunk,\n });\n // todo: 校验这个赋值\n // 完成后更新状态为成功\n message.status = message.status !== \"error\" ? \"success\" : \"error\";\n // 设置结束时间\n message.endedAt = Date.now();\n onResponse(message);\n\n return message;\n } catch (error: any) {\n // 处理错误\n // message.status = \"error\";\n // // 设置结束时间(错误情况下也需要记录结束时间)\n // message.endedAt = Date.now();\n // message.error = {\n // message: error.message || \"未知错误\",\n // stack: error.stack,\n // };\n onResponse({\n status: \"error\",\n endedAt: Date.now(),\n error: {\n message: error.message || \"未知错误\",\n stack: error.stack,\n },\n });\n return message;\n }\n}\n"],"names":["isArray","last"],"mappings":"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"}
1
+ {"version":3,"file":"chatCompletion.cjs","sources":["../../src/utils/chatCompletion.ts"],"sourcesContent":["import { Message, Topic } from \"@/types\";\nimport { CompletionsParams } from \"@/types/completion\";\nimport dayjs from \"dayjs\";\nimport { isArray, last } from \"lodash-es\";\n\n/**\n * 聊天\n */\nexport async function fetchChatCompletion({\n message,\n messages,\n completions,\n // topic,\n onResponse,\n}: {\n // 最新的模型回答消息,空消息\n message: Message;\n // 所有消息\n messages: Message[];\n // 话题信息,用于获取话题级别的提示词变量\n topic?: Topic;\n onResponse: (message: Partial<Message>) => void;\n // 调用完成回调\n completions: (params: CompletionsParams) => Promise<void>;\n}) {\n // 获取提供者和AI实例\n\n try {\n const onChunk = ({\n text,\n reasoningContent,\n functionCall,\n functionResponse,\n error,\n }: Parameters<CompletionsParams[\"onChunk\"]>[0]) => {\n if (text) {\n if (isArray(message.content)) {\n const lastItem = last(message.content);\n if (typeof lastItem === \"string\") {\n message.content = [\n ...message.content.slice(0, -1),\n lastItem + text,\n ];\n } else {\n message.content = [...message.content, text];\n }\n } else {\n // text\n message.content = (message.content || \"\") + text;\n }\n }\n\n if (reasoningContent) {\n message.reasoningContent =\n (message.reasoningContent || \"\") + reasoningContent;\n }\n\n if (functionCall) {\n message.metadata.functionCall = [\n ...(message.metadata.functionCall || []),\n ...functionCall,\n ];\n\n if (isArray(message.content)) {\n message.content = [...message.content, ...functionCall];\n } else {\n // functionCall\n message.content = [message.content, ...functionCall];\n }\n }\n\n if (functionResponse) {\n // 找到对应id相同的function call并进行替换\n if (message.metadata.functionCall) {\n message.metadata.functionCall = message.metadata.functionCall.map(\n (existingCall) => {\n const responseCall = functionResponse.find(\n (response) => response.id === existingCall.id\n );\n return responseCall || existingCall;\n }\n );\n }\n // 同时更新content中的function call\n if (isArray(message.content)) {\n message.content = message.content.map((item) => {\n if (typeof item === \"object\" && \"id\" in item) {\n const responseCall = functionResponse.find(\n (response) => response.id === item.id\n );\n return responseCall || item;\n }\n return item;\n });\n }\n }\n if (error) {\n message.status = \"error\";\n message.error = { message: error || \"未知错误\" };\n onResponse(message);\n return;\n }\n\n // 通知更新\n onResponse({ ...message, status: \"pending\" });\n };\n\n await completions({\n onChunk,\n });\n // todo: 校验这个赋值\n // 完成后更新状态为成功\n message.status = message.status !== \"error\" ? \"success\" : \"error\";\n // 设置结束时间\n message.endedAt = dayjs().unix();\n onResponse(message);\n\n return message;\n } catch (error: any) {\n // 处理错误\n // message.status = \"error\";\n // // 设置结束时间(错误情况下也需要记录结束时间)\n // message.endedAt = Date.now();\n // message.error = {\n // message: error.message || \"未知错误\",\n // stack: error.stack,\n // };\n onResponse({\n status: \"error\",\n endedAt: dayjs().unix(),\n error: {\n message: error.message || \"未知错误\",\n stack: error.stack,\n },\n });\n return message;\n }\n}\n"],"names":["isArray","last"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chatCompletion.d.ts","sourceRoot":"","sources":["../../src/utils/chatCompletion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,EACxC,OAAO,EACP,QAAQ,EACR,WAAW,EAEX,UAAU,GACX,EAAE;IAED,OAAO,EAAE,OAAO,CAAC;IAEjB,QAAQ,EAAE,OAAO,EAAE,CAAC;IAEpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAEhD,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D,oBAiHA"}
1
+ {"version":3,"file":"chatCompletion.d.ts","sourceRoot":"","sources":["../../src/utils/chatCompletion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAIvD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,EACxC,OAAO,EACP,QAAQ,EACR,WAAW,EAEX,UAAU,GACX,EAAE;IAED,OAAO,EAAE,OAAO,CAAC;IAEjB,QAAQ,EAAE,OAAO,EAAE,CAAC;IAEpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAEhD,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D,oBAiHA"}
@@ -1,3 +1,4 @@
1
+ import dayjs from 'dayjs';
1
2
  import { isArray, last } from 'lodash-es';
2
3
 
3
4
  /**
@@ -79,7 +80,7 @@ onResponse, }) {
79
80
  // 完成后更新状态为成功
80
81
  message.status = message.status !== "error" ? "success" : "error";
81
82
  // 设置结束时间
82
- message.endedAt = Date.now();
83
+ message.endedAt = dayjs().unix();
83
84
  onResponse(message);
84
85
  return message;
85
86
  }
@@ -94,7 +95,7 @@ onResponse, }) {
94
95
  // };
95
96
  onResponse({
96
97
  status: "error",
97
- endedAt: Date.now(),
98
+ endedAt: dayjs().unix(),
98
99
  error: {
99
100
  message: error.message || "未知错误",
100
101
  stack: error.stack,
@@ -1 +1 @@
1
- {"version":3,"file":"chatCompletion.js","sources":["../../src/utils/chatCompletion.ts"],"sourcesContent":["import { Message, Topic } from \"@/types\";\nimport { CompletionsParams } from \"@/types/completion\";\nimport { isArray, last } from \"lodash-es\";\n\n/**\n * 聊天\n */\nexport async function fetchChatCompletion({\n message,\n messages,\n completions,\n // topic,\n onResponse,\n}: {\n // 最新的模型回答消息,空消息\n message: Message;\n // 所有消息\n messages: Message[];\n // 话题信息,用于获取话题级别的提示词变量\n topic?: Topic;\n onResponse: (message: Partial<Message>) => void;\n // 调用完成回调\n completions: (params: CompletionsParams) => Promise<void>;\n}) {\n // 获取提供者和AI实例\n\n try {\n const onChunk = ({\n text,\n reasoningContent,\n functionCall,\n functionResponse,\n error,\n }: Parameters<CompletionsParams[\"onChunk\"]>[0]) => {\n if (text) {\n if (isArray(message.content)) {\n const lastItem = last(message.content);\n if (typeof lastItem === \"string\") {\n message.content = [\n ...message.content.slice(0, -1),\n lastItem + text,\n ];\n } else {\n message.content = [...message.content, text];\n }\n } else {\n // text\n message.content = (message.content || \"\") + text;\n }\n }\n\n if (reasoningContent) {\n message.reasoningContent =\n (message.reasoningContent || \"\") + reasoningContent;\n }\n\n if (functionCall) {\n message.metadata.functionCall = [\n ...(message.metadata.functionCall || []),\n ...functionCall,\n ];\n\n if (isArray(message.content)) {\n message.content = [...message.content, ...functionCall];\n } else {\n // functionCall\n message.content = [message.content, ...functionCall];\n }\n }\n\n if (functionResponse) {\n // 找到对应id相同的function call并进行替换\n if (message.metadata.functionCall) {\n message.metadata.functionCall = message.metadata.functionCall.map(\n (existingCall) => {\n const responseCall = functionResponse.find(\n (response) => response.id === existingCall.id\n );\n return responseCall || existingCall;\n }\n );\n }\n // 同时更新content中的function call\n if (isArray(message.content)) {\n message.content = message.content.map((item) => {\n if (typeof item === \"object\" && \"id\" in item) {\n const responseCall = functionResponse.find(\n (response) => response.id === item.id\n );\n return responseCall || item;\n }\n return item;\n });\n }\n }\n if (error) {\n message.status = \"error\";\n message.error = { message: error || \"未知错误\" };\n onResponse(message);\n return;\n }\n\n // 通知更新\n onResponse({ ...message, status: \"pending\" });\n };\n\n await completions({\n onChunk,\n });\n // todo: 校验这个赋值\n // 完成后更新状态为成功\n message.status = message.status !== \"error\" ? \"success\" : \"error\";\n // 设置结束时间\n message.endedAt = Date.now();\n onResponse(message);\n\n return message;\n } catch (error: any) {\n // 处理错误\n // message.status = \"error\";\n // // 设置结束时间(错误情况下也需要记录结束时间)\n // message.endedAt = Date.now();\n // message.error = {\n // message: error.message || \"未知错误\",\n // stack: error.stack,\n // };\n onResponse({\n status: \"error\",\n endedAt: Date.now(),\n error: {\n message: error.message || \"未知错误\",\n stack: error.stack,\n },\n });\n return message;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatCompletion.js","sources":["../../src/utils/chatCompletion.ts"],"sourcesContent":["import { Message, Topic } from \"@/types\";\nimport { CompletionsParams } from \"@/types/completion\";\nimport dayjs from \"dayjs\";\nimport { isArray, last } from \"lodash-es\";\n\n/**\n * 聊天\n */\nexport async function fetchChatCompletion({\n message,\n messages,\n completions,\n // topic,\n onResponse,\n}: {\n // 最新的模型回答消息,空消息\n message: Message;\n // 所有消息\n messages: Message[];\n // 话题信息,用于获取话题级别的提示词变量\n topic?: Topic;\n onResponse: (message: Partial<Message>) => void;\n // 调用完成回调\n completions: (params: CompletionsParams) => Promise<void>;\n}) {\n // 获取提供者和AI实例\n\n try {\n const onChunk = ({\n text,\n reasoningContent,\n functionCall,\n functionResponse,\n error,\n }: Parameters<CompletionsParams[\"onChunk\"]>[0]) => {\n if (text) {\n if (isArray(message.content)) {\n const lastItem = last(message.content);\n if (typeof lastItem === \"string\") {\n message.content = [\n ...message.content.slice(0, -1),\n lastItem + text,\n ];\n } else {\n message.content = [...message.content, text];\n }\n } else {\n // text\n message.content = (message.content || \"\") + text;\n }\n }\n\n if (reasoningContent) {\n message.reasoningContent =\n (message.reasoningContent || \"\") + reasoningContent;\n }\n\n if (functionCall) {\n message.metadata.functionCall = [\n ...(message.metadata.functionCall || []),\n ...functionCall,\n ];\n\n if (isArray(message.content)) {\n message.content = [...message.content, ...functionCall];\n } else {\n // functionCall\n message.content = [message.content, ...functionCall];\n }\n }\n\n if (functionResponse) {\n // 找到对应id相同的function call并进行替换\n if (message.metadata.functionCall) {\n message.metadata.functionCall = message.metadata.functionCall.map(\n (existingCall) => {\n const responseCall = functionResponse.find(\n (response) => response.id === existingCall.id\n );\n return responseCall || existingCall;\n }\n );\n }\n // 同时更新content中的function call\n if (isArray(message.content)) {\n message.content = message.content.map((item) => {\n if (typeof item === \"object\" && \"id\" in item) {\n const responseCall = functionResponse.find(\n (response) => response.id === item.id\n );\n return responseCall || item;\n }\n return item;\n });\n }\n }\n if (error) {\n message.status = \"error\";\n message.error = { message: error || \"未知错误\" };\n onResponse(message);\n return;\n }\n\n // 通知更新\n onResponse({ ...message, status: \"pending\" });\n };\n\n await completions({\n onChunk,\n });\n // todo: 校验这个赋值\n // 完成后更新状态为成功\n message.status = message.status !== \"error\" ? \"success\" : \"error\";\n // 设置结束时间\n message.endedAt = dayjs().unix();\n onResponse(message);\n\n return message;\n } catch (error: any) {\n // 处理错误\n // message.status = \"error\";\n // // 设置结束时间(错误情况下也需要记录结束时间)\n // message.endedAt = Date.now();\n // message.error = {\n // message: error.message || \"未知错误\",\n // stack: error.stack,\n // };\n onResponse({\n status: \"error\",\n endedAt: dayjs().unix(),\n error: {\n message: error.message || \"未知错误\",\n stack: error.stack,\n },\n });\n return message;\n }\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chat-lab/ui",
3
- "version": "0.1.0-beta.80",
3
+ "version": "0.1.0-beta.82",
4
4
  "type": "module",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",