@chat-lab/ui 0.1.0-beta.27 → 0.1.0-beta.29

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.
@@ -61,6 +61,7 @@ const Chatkit = (props, refFromProps) => {
61
61
  const runtime = useExternalStoreRuntime.useExternalStoreRuntime({
62
62
  messages: uiMessages,
63
63
  isLoading: currentThread?.sending,
64
+ isDisabled: !!(currentThread?.metadata["isInitingSession"]),
64
65
  convertMessage: (message) => message,
65
66
  onNew: async (message) => {
66
67
  const attachments = await Promise.all(message.attachments?.map(async (item) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["\nimport {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { v4 as uuid } from \"uuid\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { cloneDeep, compact, findLastIndex, isString, values } from \"lodash-es\";\nimport { ChatkitProvider, useChatkitRef } from \"@/contexts/ChatkitContext\";\nimport useImperativeHandleChatkitRef from \"./ref\";\nimport useThread from \"@/hooks/useThread\";\nimport { Thread } from \"../assistant-ui/thread\";\nimport {\n AssistantRuntimeProvider,\n ThreadMessageLike,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { useThreadManagerStore, sendMessage, Message } from \"@chatkit/core\";\nimport convertToAssistantMessage from \"@/utils/convertToAssistantMessage\";\nimport ThreadList from \"../thread-list\";\nimport { Thread as ThreadType } from \"@chatkit/core/src/types/Thread\";\nimport { Toaster } from \"../ui/toaster\";\nimport { toast } from \"@/hooks/use-toast\";\nimport ExecutionCard from \"../assistant-ui-tools/execution-card\";\nimport { convertToBase64 } from \"@/utils/convertToBase64\";\nimport checkMedia from \"@/utils/checkMedia\";\nimport { TextMessage } from \"@chatkit/core/src/types/Message\";\nimport Recommend from \"../welcome\";\nimport \"./style.less\";\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps[\"initialConfig\"];\n welcome?: React.ReactNode;\n recommends?: string[];\n plugins?: React.ReactNode[];\n onError?: (error: Error) => void;\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | boolean\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n showHeader?: boolean;\n expandToolGroup?: boolean;\n expandToolDetail?: boolean;\n },\n ref: ForwardedRef<ChatkitRef>\n ) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup = false,\n expandToolDetail = false,\n } = props;\n const { threadMap } = useThreadManagerStore();\n useImperativeHandleChatkitRef(ref, initialConfig, onError);\n return (\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || \"请输入内容\",\n showHeader,\n expandToolGroup,\n expandToolDetail,\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === \"function\" ? (\n threadList({\n threadList: cloneDeep(values(threadMap)) as ThreadType[],\n })\n ) : (\n <ThreadList />\n ))}\n <div className=\"flex-1 h-full\">\n <Thread welcome={welcome} recommends={recommends} />\n </div>\n </div>\n </ChatkitProvider>\n );\n }\n);\n\nconst Chatkit = (\n props: ChatkitProps,\n refFromProps: ForwardedRef<ChatkitRef>\n) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n toolDisplay,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup,\n expandToolDetail,\n } = props;\n\n const { currentThread } = useThread();\n\n const { threadMap } = useThreadManagerStore();\n const messages =\n cloneDeep(threadMap[currentThread?.id || \"\"]?.messages || []) || [];\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<Message>[], {\n toolDisplay: toolDisplay || \"group\",\n }),\n [messages]\n );\n\n const innerRef = useRef<ChatkitRef>(null);\n\n let ref: MutableRefObject<ChatkitRef | null>;\n if (typeof refFromProps === \"function\") {\n refFromProps(innerRef.current);\n ref = innerRef;\n } else if (refFromProps === null) {\n ref = innerRef;\n } else {\n ref = refFromProps;\n }\n\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n convertMessage: (message) => message,\n onNew: async (message) => {\n const attachments = await Promise.all(\n message.attachments?.map(async (item) => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || []\n );\n\n ref.current?.sendMessage({\n attaches: attachments.map((item) => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: \"success\",\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map((item) => {\n if (item.type === \"text\") {\n return {\n type: \"text\",\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n ref.current?.reloadMessage(currentThread?.id, parentId);\n else {\n onError?.(new Error(\"未找到对应的对话\"));\n toast({\n title: \"重载失败\",\n description: \"未找到对应的对话\",\n });\n }\n },\n onCancel: async () => {\n ref.current?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: \"image\",\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: \"image\",\n image: file.name,\n },\n ],\n status: {\n type: \"complete\",\n },\n file,\n };\n },\n accept: \"image/*\",\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: \"image\",\n name: file.name,\n contentType: file.type,\n status: {\n type: \"running\",\n reason: \"uploading\",\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n return (\n <div className={\"chatkit-wrapper\"} style={{ height: \"100%\" }} data-chatkit>\n <AssistantRuntimeProvider runtime={runtime}>\n <ChatkitImpl\n ref={ref}\n showHeader={showHeader}\n recommends={recommends}\n initialConfig={initialConfig}\n expandToolGroup={expandToolGroup}\n expandToolDetail={expandToolDetail}\n placeholder={placeholder}\n welcome={welcome}\n onError={onError}\n plugins={plugins}\n threadList={threadList}\n />\n <Toaster />\n <ExecutionCard />\n </AssistantRuntimeProvider>\n </div>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["forwardRef","ref","threadList","useThreadManagerStore","useImperativeHandleChatkitRef","_jsx","ChatkitProvider","_jsxs","ThreadList","Thread","useMemo","useRef","useExternalStoreRuntime","convertToBase64","toast","uuid","AssistantRuntimeProvider","Toaster","ExecutionCard"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["\nimport {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { v4 as uuid } from \"uuid\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { cloneDeep, compact, findLastIndex, isString, values } from \"lodash-es\";\nimport { ChatkitProvider, useChatkitRef } from \"@/contexts/ChatkitContext\";\nimport useImperativeHandleChatkitRef from \"./ref\";\nimport useThread from \"@/hooks/useThread\";\nimport { Thread } from \"../assistant-ui/thread\";\nimport {\n AssistantRuntimeProvider,\n ThreadMessageLike,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { useThreadManagerStore, sendMessage, Message } from \"@chatkit/core\";\nimport convertToAssistantMessage from \"@/utils/convertToAssistantMessage\";\nimport ThreadList from \"../thread-list\";\nimport { Thread as ThreadType } from \"@chatkit/core/src/types/Thread\";\nimport { Toaster } from \"../ui/toaster\";\nimport { toast } from \"@/hooks/use-toast\";\nimport ExecutionCard from \"../assistant-ui-tools/execution-card\";\nimport { convertToBase64 } from \"@/utils/convertToBase64\";\nimport checkMedia from \"@/utils/checkMedia\";\nimport { TextMessage } from \"@chatkit/core/src/types/Message\";\nimport Recommend from \"../welcome\";\nimport \"./style.less\";\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps[\"initialConfig\"];\n welcome?: React.ReactNode;\n recommends?: string[];\n plugins?: React.ReactNode[];\n onError?: (error: Error) => void;\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | boolean\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n showHeader?: boolean;\n expandToolGroup?: boolean;\n expandToolDetail?: boolean;\n },\n ref: ForwardedRef<ChatkitRef>\n ) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup = false,\n expandToolDetail = false,\n } = props;\n const { threadMap } = useThreadManagerStore();\n useImperativeHandleChatkitRef(ref, initialConfig, onError);\n return (\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || \"请输入内容\",\n showHeader,\n expandToolGroup,\n expandToolDetail,\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === \"function\" ? (\n threadList({\n threadList: cloneDeep(values(threadMap)) as ThreadType[],\n })\n ) : (\n <ThreadList />\n ))}\n <div className=\"flex-1 h-full\">\n <Thread welcome={welcome} recommends={recommends} />\n </div>\n </div>\n </ChatkitProvider>\n );\n }\n);\n\nconst Chatkit = (\n props: ChatkitProps,\n refFromProps: ForwardedRef<ChatkitRef>\n) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n toolDisplay,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup,\n expandToolDetail,\n } = props;\n\n const { currentThread } = useThread();\n\n const { threadMap } = useThreadManagerStore();\n const messages =\n cloneDeep(threadMap[currentThread?.id || \"\"]?.messages || []) || [];\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<Message>[], {\n toolDisplay: toolDisplay || \"group\",\n }),\n [messages]\n );\n\n const innerRef = useRef<ChatkitRef>(null);\n\n let ref: MutableRefObject<ChatkitRef | null>;\n if (typeof refFromProps === \"function\") {\n refFromProps(innerRef.current);\n ref = innerRef;\n } else if (refFromProps === null) {\n ref = innerRef;\n } else {\n ref = refFromProps;\n }\n\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n isDisabled: !!(currentThread?.metadata[\"isInitingSession\"]),\n convertMessage: (message) => message,\n onNew: async (message) => {\n const attachments = await Promise.all(\n message.attachments?.map(async (item) => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || []\n );\n\n ref.current?.sendMessage({\n attaches: attachments.map((item) => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: \"success\",\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map((item) => {\n if (item.type === \"text\") {\n return {\n type: \"text\",\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n ref.current?.reloadMessage(currentThread?.id, parentId);\n else {\n onError?.(new Error(\"未找到对应的对话\"));\n toast({\n title: \"重载失败\",\n description: \"未找到对应的对话\",\n });\n }\n },\n onCancel: async () => {\n ref.current?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: \"image\",\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: \"image\",\n image: file.name,\n },\n ],\n status: {\n type: \"complete\",\n },\n file,\n };\n },\n accept: \"image/*\",\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: \"image\",\n name: file.name,\n contentType: file.type,\n status: {\n type: \"running\",\n reason: \"uploading\",\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n return (\n <div className={\"chatkit-wrapper\"} style={{ height: \"100%\" }} data-chatkit>\n <AssistantRuntimeProvider runtime={runtime}>\n <ChatkitImpl\n ref={ref}\n showHeader={showHeader}\n recommends={recommends}\n initialConfig={initialConfig}\n expandToolGroup={expandToolGroup}\n expandToolDetail={expandToolDetail}\n placeholder={placeholder}\n welcome={welcome}\n onError={onError}\n plugins={plugins}\n threadList={threadList}\n />\n <Toaster />\n <ExecutionCard />\n </AssistantRuntimeProvider>\n </div>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["forwardRef","ref","threadList","useThreadManagerStore","useImperativeHandleChatkitRef","_jsx","ChatkitProvider","_jsxs","ThreadList","Thread","useMemo","useRef","useExternalStoreRuntime","convertToBase64","toast","uuid","AssistantRuntimeProvider","Toaster","ExecutionCard"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Chatkit/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAsBnD,OAAO,cAAc,CAAC;;AA8NtB,wBAAmC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Chatkit/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAsBnD,OAAO,cAAc,CAAC;;AA+NtB,wBAAmC"}
@@ -59,6 +59,7 @@ const Chatkit = (props, refFromProps) => {
59
59
  const runtime = useExternalStoreRuntime({
60
60
  messages: uiMessages,
61
61
  isLoading: currentThread?.sending,
62
+ isDisabled: !!(currentThread?.metadata["isInitingSession"]),
62
63
  convertMessage: (message) => message,
63
64
  onNew: async (message) => {
64
65
  const attachments = await Promise.all(message.attachments?.map(async (item) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["\nimport {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { v4 as uuid } from \"uuid\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { cloneDeep, compact, findLastIndex, isString, values } from \"lodash-es\";\nimport { ChatkitProvider, useChatkitRef } from \"@/contexts/ChatkitContext\";\nimport useImperativeHandleChatkitRef from \"./ref\";\nimport useThread from \"@/hooks/useThread\";\nimport { Thread } from \"../assistant-ui/thread\";\nimport {\n AssistantRuntimeProvider,\n ThreadMessageLike,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { useThreadManagerStore, sendMessage, Message } from \"@chatkit/core\";\nimport convertToAssistantMessage from \"@/utils/convertToAssistantMessage\";\nimport ThreadList from \"../thread-list\";\nimport { Thread as ThreadType } from \"@chatkit/core/src/types/Thread\";\nimport { Toaster } from \"../ui/toaster\";\nimport { toast } from \"@/hooks/use-toast\";\nimport ExecutionCard from \"../assistant-ui-tools/execution-card\";\nimport { convertToBase64 } from \"@/utils/convertToBase64\";\nimport checkMedia from \"@/utils/checkMedia\";\nimport { TextMessage } from \"@chatkit/core/src/types/Message\";\nimport Recommend from \"../welcome\";\nimport \"./style.less\";\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps[\"initialConfig\"];\n welcome?: React.ReactNode;\n recommends?: string[];\n plugins?: React.ReactNode[];\n onError?: (error: Error) => void;\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | boolean\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n showHeader?: boolean;\n expandToolGroup?: boolean;\n expandToolDetail?: boolean;\n },\n ref: ForwardedRef<ChatkitRef>\n ) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup = false,\n expandToolDetail = false,\n } = props;\n const { threadMap } = useThreadManagerStore();\n useImperativeHandleChatkitRef(ref, initialConfig, onError);\n return (\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || \"请输入内容\",\n showHeader,\n expandToolGroup,\n expandToolDetail,\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === \"function\" ? (\n threadList({\n threadList: cloneDeep(values(threadMap)) as ThreadType[],\n })\n ) : (\n <ThreadList />\n ))}\n <div className=\"flex-1 h-full\">\n <Thread welcome={welcome} recommends={recommends} />\n </div>\n </div>\n </ChatkitProvider>\n );\n }\n);\n\nconst Chatkit = (\n props: ChatkitProps,\n refFromProps: ForwardedRef<ChatkitRef>\n) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n toolDisplay,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup,\n expandToolDetail,\n } = props;\n\n const { currentThread } = useThread();\n\n const { threadMap } = useThreadManagerStore();\n const messages =\n cloneDeep(threadMap[currentThread?.id || \"\"]?.messages || []) || [];\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<Message>[], {\n toolDisplay: toolDisplay || \"group\",\n }),\n [messages]\n );\n\n const innerRef = useRef<ChatkitRef>(null);\n\n let ref: MutableRefObject<ChatkitRef | null>;\n if (typeof refFromProps === \"function\") {\n refFromProps(innerRef.current);\n ref = innerRef;\n } else if (refFromProps === null) {\n ref = innerRef;\n } else {\n ref = refFromProps;\n }\n\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n convertMessage: (message) => message,\n onNew: async (message) => {\n const attachments = await Promise.all(\n message.attachments?.map(async (item) => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || []\n );\n\n ref.current?.sendMessage({\n attaches: attachments.map((item) => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: \"success\",\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map((item) => {\n if (item.type === \"text\") {\n return {\n type: \"text\",\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n ref.current?.reloadMessage(currentThread?.id, parentId);\n else {\n onError?.(new Error(\"未找到对应的对话\"));\n toast({\n title: \"重载失败\",\n description: \"未找到对应的对话\",\n });\n }\n },\n onCancel: async () => {\n ref.current?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: \"image\",\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: \"image\",\n image: file.name,\n },\n ],\n status: {\n type: \"complete\",\n },\n file,\n };\n },\n accept: \"image/*\",\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: \"image\",\n name: file.name,\n contentType: file.type,\n status: {\n type: \"running\",\n reason: \"uploading\",\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n return (\n <div className={\"chatkit-wrapper\"} style={{ height: \"100%\" }} data-chatkit>\n <AssistantRuntimeProvider runtime={runtime}>\n <ChatkitImpl\n ref={ref}\n showHeader={showHeader}\n recommends={recommends}\n initialConfig={initialConfig}\n expandToolGroup={expandToolGroup}\n expandToolDetail={expandToolDetail}\n placeholder={placeholder}\n welcome={welcome}\n onError={onError}\n plugins={plugins}\n threadList={threadList}\n />\n <Toaster />\n <ExecutionCard />\n </AssistantRuntimeProvider>\n </div>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["_jsx","_jsxs","uuid"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["\nimport {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { v4 as uuid } from \"uuid\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { cloneDeep, compact, findLastIndex, isString, values } from \"lodash-es\";\nimport { ChatkitProvider, useChatkitRef } from \"@/contexts/ChatkitContext\";\nimport useImperativeHandleChatkitRef from \"./ref\";\nimport useThread from \"@/hooks/useThread\";\nimport { Thread } from \"../assistant-ui/thread\";\nimport {\n AssistantRuntimeProvider,\n ThreadMessageLike,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { useThreadManagerStore, sendMessage, Message } from \"@chatkit/core\";\nimport convertToAssistantMessage from \"@/utils/convertToAssistantMessage\";\nimport ThreadList from \"../thread-list\";\nimport { Thread as ThreadType } from \"@chatkit/core/src/types/Thread\";\nimport { Toaster } from \"../ui/toaster\";\nimport { toast } from \"@/hooks/use-toast\";\nimport ExecutionCard from \"../assistant-ui-tools/execution-card\";\nimport { convertToBase64 } from \"@/utils/convertToBase64\";\nimport checkMedia from \"@/utils/checkMedia\";\nimport { TextMessage } from \"@chatkit/core/src/types/Message\";\nimport Recommend from \"../welcome\";\nimport \"./style.less\";\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps[\"initialConfig\"];\n welcome?: React.ReactNode;\n recommends?: string[];\n plugins?: React.ReactNode[];\n onError?: (error: Error) => void;\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | boolean\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n showHeader?: boolean;\n expandToolGroup?: boolean;\n expandToolDetail?: boolean;\n },\n ref: ForwardedRef<ChatkitRef>\n ) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup = false,\n expandToolDetail = false,\n } = props;\n const { threadMap } = useThreadManagerStore();\n useImperativeHandleChatkitRef(ref, initialConfig, onError);\n return (\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || \"请输入内容\",\n showHeader,\n expandToolGroup,\n expandToolDetail,\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === \"function\" ? (\n threadList({\n threadList: cloneDeep(values(threadMap)) as ThreadType[],\n })\n ) : (\n <ThreadList />\n ))}\n <div className=\"flex-1 h-full\">\n <Thread welcome={welcome} recommends={recommends} />\n </div>\n </div>\n </ChatkitProvider>\n );\n }\n);\n\nconst Chatkit = (\n props: ChatkitProps,\n refFromProps: ForwardedRef<ChatkitRef>\n) => {\n const {\n initialConfig,\n welcome,\n recommends,\n onError,\n toolDisplay,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n expandToolGroup,\n expandToolDetail,\n } = props;\n\n const { currentThread } = useThread();\n\n const { threadMap } = useThreadManagerStore();\n const messages =\n cloneDeep(threadMap[currentThread?.id || \"\"]?.messages || []) || [];\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<Message>[], {\n toolDisplay: toolDisplay || \"group\",\n }),\n [messages]\n );\n\n const innerRef = useRef<ChatkitRef>(null);\n\n let ref: MutableRefObject<ChatkitRef | null>;\n if (typeof refFromProps === \"function\") {\n refFromProps(innerRef.current);\n ref = innerRef;\n } else if (refFromProps === null) {\n ref = innerRef;\n } else {\n ref = refFromProps;\n }\n\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n isDisabled: !!(currentThread?.metadata[\"isInitingSession\"]),\n convertMessage: (message) => message,\n onNew: async (message) => {\n const attachments = await Promise.all(\n message.attachments?.map(async (item) => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || []\n );\n\n ref.current?.sendMessage({\n attaches: attachments.map((item) => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: \"success\",\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map((item) => {\n if (item.type === \"text\") {\n return {\n type: \"text\",\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n ref.current?.reloadMessage(currentThread?.id, parentId);\n else {\n onError?.(new Error(\"未找到对应的对话\"));\n toast({\n title: \"重载失败\",\n description: \"未找到对应的对话\",\n });\n }\n },\n onCancel: async () => {\n ref.current?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: \"image\",\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: \"image\",\n image: file.name,\n },\n ],\n status: {\n type: \"complete\",\n },\n file,\n };\n },\n accept: \"image/*\",\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: \"image\",\n name: file.name,\n contentType: file.type,\n status: {\n type: \"running\",\n reason: \"uploading\",\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n return (\n <div className={\"chatkit-wrapper\"} style={{ height: \"100%\" }} data-chatkit>\n <AssistantRuntimeProvider runtime={runtime}>\n <ChatkitImpl\n ref={ref}\n showHeader={showHeader}\n recommends={recommends}\n initialConfig={initialConfig}\n expandToolGroup={expandToolGroup}\n expandToolDetail={expandToolDetail}\n placeholder={placeholder}\n welcome={welcome}\n onError={onError}\n plugins={plugins}\n threadList={threadList}\n />\n <Toaster />\n <ExecutionCard />\n </AssistantRuntimeProvider>\n </div>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["_jsx","_jsxs","uuid"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkCA,MAAM,WAAW,GAAG,UAAU,CAC5B,CACE,KAcC,EACD,GAA6B,KAC3B;AACF,IAAA,MAAM,EACJ,aAAa,EACb,OAAO,EACP,UAAU,EACV,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,GAAG,IAAI,EACjB,WAAW,EACX,eAAe,GAAG,KAAK,EACvB,gBAAgB,GAAG,KAAK,GACzB,GAAG,KAAK,CAAC;AACV,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,qBAAqB,EAAE,CAAC;AAC9C,IAAA,6BAA6B,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAC3D,IAAA,QACEA,GAAA,CAAC,eAAe,EAAA,EACd,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,GAA0C;YAC/C,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,cAAc,EAAE,UAAU,KAAK,KAAK;YACpC,WAAW,EAAE,WAAW,IAAI,OAAO;YACnC,UAAU;YACV,eAAe;YACf,gBAAgB;AACjB,SAAA,EAAA,QAAA,EAEDC,cAAK,SAAS,EAAC,oBAAoB,EAChC,QAAA,EAAA,CAAA,UAAU,KAAK,KAAK;qBAClB,OAAO,UAAU,KAAK,UAAU,IAC/B,UAAU,CAAC;AACT,wBAAA,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAiB;AACzD,qBAAA,CAAC,KAEFD,GAAA,CAAC,UAAU,EAAA,EAAA,CAAG,CACf,CAAC,EACJA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAC5B,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAI,CAAA,EAAA,CAChD,CACF,EAAA,CAAA,EAAA,CACU,EAClB;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,OAAO,GAAG,CACd,KAAmB,EACnB,YAAsC,KACpC;IACF,MAAM,EACJ,aAAa,EACb,OAAO,EACP,UAAU,EACV,OAAO,EACP,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,GAAG,IAAI,EACjB,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,GAAG,KAAK,CAAC;AAEV,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;AAEtC,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,qBAAqB,EAAE,CAAC;AAC9C,IAAA,MAAM,QAAQ,GACZ,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,UAAU,GAAG,OAAO,CACxB,MACE,yBAAyB,CAAC,QAA+B,EAAE;QACzD,WAAW,EAAE,WAAW,IAAI,OAAO;AACpC,KAAA,CAAC,EACJ,CAAC,QAAQ,CAAC,CACX,CAAC;AAEF,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAa,IAAI,CAAC,CAAC;AAE1C,IAAA,IAAI,GAAwC,CAAC;AAC7C,IAAA,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;AACtC,QAAA,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,GAAG,GAAG,QAAQ,CAAC;KAChB;AAAM,SAAA,IAAI,YAAY,KAAK,IAAI,EAAE;QAChC,GAAG,GAAG,QAAQ,CAAC;KAChB;SAAM;QACL,GAAG,GAAG,YAAY,CAAC;KACpB;IAGD,MAAM,OAAO,GAAG,uBAAuB,CAAC;AACtC,QAAA,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,aAAa,EAAE,OAAO;QACjC,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAC3D,QAAA,cAAc,EAAE,CAAC,OAAO,KAAK,OAAO;AACpC,QAAA,KAAK,EAAE,OAAO,OAAO,KAAI;AACvB,YAAA,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,IAAI,KAAI;gBACtC,OAAO;AACL,oBAAA,GAAG,IAAI;AACP,oBAAA,MAAM,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC,IAAY,CAAC;iBACjD,CAAC;AACJ,aAAC,CAAC,IAAI,EAAE,CACT,CAAC;AAEF,YAAA,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC;gBACvB,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;oBACnC,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,QAAQ,EAAE,IAAI,CAAC,EAAE;oBACjB,GAAG,EAAE,IAAI,CAAC,MAAM;AAChB,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;oBAClC,QAAQ,EAAE,IAAI,CAAC,WAAW;AAC3B,iBAAA,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,CAAC;oBACf,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAC9B,wBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;4BACxB,OAAO;AACL,gCAAA,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,IAAI,CAAC,IAAI;6BACD,CAAC;yBAClB;AACH,qBAAC,CAAC;iBACH,CAAC;AACH,aAAA,CAAC,CAAC;SACJ;AACD,QAAA,QAAQ,EAAE,OAAO,QAAQ,EAAE,MAAM,KAAI;AACnC,YAAA,IAAI,aAAa,EAAE,EAAE,IAAI,QAAQ;gBAC/B,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;iBACrD;gBACH,OAAO,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACjC,gBAAA,KAAK,CAAC;AACJ,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,WAAW,EAAE,UAAU;AACxB,iBAAA,CAAC,CAAC;aACJ;SACF;QACD,QAAQ,EAAE,YAAW;AACnB,YAAA,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;SAC7B;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,WAAW,EAAE;AACX,gBAAA,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAI;AACvB,oBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACjB;gBACD,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAI;oBAC3B,OAAO;wBACL,EAAE;AACF,wBAAA,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,WAAW,EAAE,IAAI,CAAC,IAAI;AACtB,wBAAA,OAAO,EAAE;AACP,4BAAA;AACE,gCAAA,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,IAAI,CAAC,IAAI;AACjB,6BAAA;AACF,yBAAA;AACD,wBAAA,MAAM,EAAE;AACN,4BAAA,IAAI,EAAE,UAAU;AACjB,yBAAA;wBACD,IAAI;qBACL,CAAC;iBACH;AACD,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAI;oBACtB,OAAO;wBACL,IAAI;wBACJ,EAAE,EAAEE,EAAI,EAAE;AACV,wBAAA,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,WAAW,EAAE,IAAI,CAAC,IAAI;AACtB,wBAAA,MAAM,EAAE;AACN,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,MAAM,EAAE,WAAW;AACnB,4BAAA,QAAQ,EAAE,CAAC;AACZ,yBAAA;qBACF,CAAC;iBACH;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAC;AAEH,IAAA,QACEF,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAC1D,cAAA,EAAA,IAAA,EAAA,QAAA,EAAAC,IAAA,CAAC,wBAAwB,EAAC,EAAA,OAAO,EAAE,OAAO,aACxCD,GAAC,CAAA,WAAW,EACV,EAAA,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,GACtB,EACFA,GAAA,CAAC,OAAO,EAAA,EAAA,CAAG,EACXA,GAAC,CAAA,aAAa,KAAG,CACQ,EAAA,CAAA,EAAA,CACvB,EACN;AACJ,CAAC,CAAC;AAEF,YAAe,UAAU,CAAC,OAAO,CAAC;;;;"}
@@ -84,7 +84,7 @@ const Thread = ({ welcome: welcome$1, recommends }) => {
84
84
  UserMessage,
85
85
  EditComposer,
86
86
  AssistantMessage,
87
- } }), jsxRuntime.jsx("div", { className: "aui-thread-viewport-spacer min-h-12 grow z-9 bg-white" }), jsxRuntime.jsx(Composer, {})] }) }), jsxRuntime.jsx(ThreadIf.ThreadPrimitiveIf, { empty: true, children: jsxRuntime.jsxs(ThreadViewport.ThreadPrimitiveViewport, { className: "aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4 justify-center gap-[80px] ", children: [jsxRuntime.jsx("div", { className: "min-h-12 grow z-9 bg-white" }), currentThread?.loading ? (jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-1.5 h-[180px]", children: [jsxRuntime.jsx("span", { className: "w-2.5 h-2.5 bg-gray-500 rounded-full", style: {
87
+ } }), jsxRuntime.jsx("div", { className: "aui-thread-viewport-spacer min-h-12 grow z-9 bg-white" }), jsxRuntime.jsx(Composer, {})] }) }), jsxRuntime.jsx(ThreadIf.ThreadPrimitiveIf, { empty: true, children: jsxRuntime.jsxs(ThreadViewport.ThreadPrimitiveViewport, { className: "aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4 justify-center", children: [jsxRuntime.jsx("div", { className: " aui-thread-viewport-spacer min-h-12 grow z-9 bg-white" }), currentThread?.loading ? (jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-1.5 h-[180px]", children: [jsxRuntime.jsx("span", { className: "w-2.5 h-2.5 bg-gray-500 rounded-full", style: {
88
88
  animation: "bounce 1s ease-in-out infinite",
89
89
  animationDelay: "0ms",
90
90
  } }), jsxRuntime.jsx("span", { className: "w-2.5 h-2.5 bg-gray-500 rounded-full", style: {
@@ -93,7 +93,7 @@ const Thread = ({ welcome: welcome$1, recommends }) => {
93
93
  } }), jsxRuntime.jsx("span", { className: "w-2.5 h-2.5 bg-gray-500 rounded-full", style: {
94
94
  animation: "bounce 1s ease-in-out infinite",
95
95
  animationDelay: "300ms",
96
- } })] })) : (welcomeElement ?? jsxRuntime.jsx(ThreadWelcome, {})), jsxRuntime.jsx("div", { className: "min-h-12 grow z-9 bg-white" }), jsxRuntime.jsx("div", { className: "flex items-center", children: jsxRuntime.jsx(Composer, {}) })] }) })] }) }) })] }));
96
+ } })] })) : (welcomeElement ?? jsxRuntime.jsx(ThreadWelcome, {})), jsxRuntime.jsx("div", { className: "aui-thread-viewport-spacer min-h-12 grow z-9 bg-white" }), jsxRuntime.jsx(Composer, {})] }) })] }) }) })] }));
97
97
  };
98
98
  const ThreadScrollToBottom = () => {
99
99
  return (jsxRuntime.jsx(ThreadScrollToBottom$1.ThreadPrimitiveScrollToBottom, { asChild: true, children: jsxRuntime.jsx(tooltipIconButton.TooltipIconButton, { tooltip: "Scroll to bottom", variant: "outline", 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", children: jsxRuntime.jsx(arrowDown.default, {}) }) }));
@@ -129,7 +129,7 @@ const ThreadWelcome = () => {
129
129
  };
130
130
  const Composer = () => {
131
131
  const { showThreadList, placeholder } = ChatkitContext.useChatkitContext();
132
- return (jsxRuntime.jsxs("div", { 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 pb-4 md:pb-6", children: [jsxRuntime.jsx(ThreadScrollToBottom, {}), jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntime.jsx("div", { className: "flex-shrink-0", children: showThreadList ? jsxRuntime.jsx(NewThread, {}) : jsxRuntime.jsx(ClearThread, {}) }), jsxRuntime.jsxs(ComposerRoot.ComposerPrimitiveRoot, { className: "aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[24px] border border-[#EAEDF1] bg-background px-4 py-3 shadow-sm transition-all outline-none focus-within:border-primary/50 focus-within:ring-1 focus-within:ring-primary/50 dark:bg-background dark:border-muted", children: [jsxRuntime.jsx(attachment.ComposerAttachments, {}), jsxRuntime.jsxs("div", { className: "flex items-center w-full gap-2", children: [jsxRuntime.jsx(ComposerInput.ComposerPrimitiveInput, { placeholder: placeholder, className: "aui-composer-input max-h-32 min-h-[24px] flex-1 resize-none bg-transparent py-0 text-[14px] leading-[22px] outline-none placeholder:text-muted-foreground", rows: 1, autoFocus: true, "aria-label": "Message input" }), jsxRuntime.jsx(ComposerAction, {})] })] })] })] }));
132
+ return (jsxRuntime.jsxs("div", { 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 pb-4 md:pb-6", children: [jsxRuntime.jsx(ThreadScrollToBottom, {}), jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntime.jsx("div", { className: "flex-shrink-0", children: showThreadList ? jsxRuntime.jsx(NewThread, {}) : jsxRuntime.jsx(ClearThread, {}) }), jsxRuntime.jsxs(ComposerRoot.ComposerPrimitiveRoot, { className: "aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[24px] border border-[#EAEDF1] bg-background px-[16px] py-[12px] shadow-sm transition-all", children: [jsxRuntime.jsx(attachment.ComposerAttachments, {}), jsxRuntime.jsxs("div", { className: "flex items-center w-full gap-2", children: [jsxRuntime.jsx(ComposerInput.ComposerPrimitiveInput, { placeholder: placeholder, className: "aui-composer-input max-h-32 min-h-[24px] flex-1 resize-none bg-transparent py-0 text-[14px] leading-[22px] outline-none placeholder:text-muted-foreground", rows: 1, autoFocus: true, "aria-label": "Message input" }), jsxRuntime.jsx(ComposerAction, {})] })] })] })] }));
133
133
  };
134
134
  const ComposerAction = () => {
135
135
  const { currentThread } = useThread();
@@ -188,7 +188,7 @@ const BranchPicker = ({ className, ...rest }) => {
188
188
  return (jsxRuntime.jsxs(BranchPickerRoot.BranchPickerPrimitiveRoot, { 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(BranchPickerPrevious.BranchPickerPrimitivePrevious, { asChild: true, children: jsxRuntime.jsx(tooltipIconButton.TooltipIconButton, { tooltip: "Previous", children: jsxRuntime.jsx(chevronLeft.default, {}) }) }), jsxRuntime.jsxs("span", { className: "aui-branch-picker-state font-medium", children: [jsxRuntime.jsx(BranchPickerNumber.BranchPickerPrimitiveNumber, {}), " / ", jsxRuntime.jsx(BranchPickerCount.BranchPickerPrimitiveCount, {})] }), jsxRuntime.jsx(BranchPickerNext.BranchPickerPrimitiveNext, { asChild: true, children: jsxRuntime.jsx(tooltipIconButton.TooltipIconButton, { tooltip: "Next", children: jsxRuntime.jsx(chevronRight.default, {}) }) })] }));
189
189
  };
190
190
  const UserMessage = () => {
191
- return (jsxRuntime.jsx(MessageRoot.MessagePrimitiveRoot, { asChild: true, children: jsxRuntime.jsxs("div", { 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-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]", children: jsxRuntime.jsx(MessageParts.MessagePrimitiveParts, {}) }) }), jsxRuntime.jsx(BranchPicker, { className: "aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end" })] }) }));
191
+ return (jsxRuntime.jsx(MessageRoot.MessagePrimitiveRoot, { asChild: true, children: jsxRuntime.jsxs("div", { 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-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]", children: jsxRuntime.jsx(MessageParts.MessagePrimitiveParts, {}) }) })] }) }));
192
192
  };
193
193
 
194
194
  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 useMessagePartText,\n} from \"@assistant-ui/react\";\n\nimport { useMemo, useState, type FC, type PropsWithChildren } from \"react\";\nimport { LazyMotion, MotionConfig, domAnimation } from \"motion/react\";\nimport * as m from \"motion/react-m\";\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 { Reasoning, ReasoningGroup } from \"./reasoning\";\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from \"@/contexts/ChatkitContext\";\nimport ThumbUpIcon from \"@/assets/ThumbUpIcon\";\nimport ThumbDownIcon from \"@/assets/ThumbDownIcon\";\nimport CopyIcon from \"@/assets/Copy\";\nimport RefreshIcon from \"@/assets/RefreshIcon\";\nimport ThreadHeader from \"./thread-header\";\nimport NewSession from \"@/assets/NewSession\";\nimport dayjs from \"dayjs\";\nimport useThread from \"@/hooks/useThread\";\nimport Recommend from \"../welcome\";\nimport { saveStringToMarkdown } from \"@/utils/download\";\nimport Download from \"@/assets/Download\";\nimport AbortMessage from \"@/assets/AbortMessage\";\nimport ClearIcon from \"@/assets/ClearIcon\";\n\nexport const Thread: FC<{\n welcome?: React.ReactNode;\n recommends?: string[];\n}> = ({ welcome, recommends }) => {\n const { currentThread } = useThread();\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.current?.sendMessage({\n content: [\n {\n type: \"text\",\n text: question,\n },\n ],\n });\n }}\n />\n );\n return undefined;\n }, [recommends]);\n const { showHeader } = useChatkitContext();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n {showHeader && (\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 }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4\">\n <ThreadPrimitive.Messages\n components={{\n UserMessage,\n EditComposer,\n AssistantMessage,\n }}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\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 gap-[80px] \">\n <div className=\"min-h-12 grow z-9 bg-white\" />\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 welcomeElement ?? <ThreadWelcome />\n )}\n <div className=\"min-h-12 grow z-9 bg-white\" />\n <div className=\"flex items-center\">\n <Composer />\n </div>\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => {\n return (\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};\n\nconst NewThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n // 新建会话的逻辑\n const id = `thread-${Date.now()}`;\n ref.current?.addThread({\n id,\n name: \"新对话\",\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n ref.current?.setCurrentThread(id);\n };\n\n return (\n <TooltipIconButton\n tooltip=\"新会话\"\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\nconst ClearThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n ref.current?.clearCurrentThread();\n };\n const { currentThread } = useThread();\n\n const disabled = currentThread?.messages.length === 0||currentThread?.loading;\n return (\n <TooltipIconButton\n tooltip=\"清空会话\"\n disabled={disabled}\n onClick={handleCreateNewThread}\n className={cn(\"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\", disabled && \"opacity-50 pointer-events-none\")}\n\n >\n <ClearIcon className=\"size-[16px]\" />\n </TooltipIconButton>\n );\n};\n\nconst ThreadWelcome: FC = () => {\n return (\n <div className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\">\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 你好\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n 你好\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const { showThreadList, placeholder } = useChatkitContext();\n return (\n <div 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 pb-4 md:pb-6\">\n <ThreadScrollToBottom />\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-shrink-0\">\n {showThreadList ? <NewThread /> : <ClearThread />}\n </div>\n <ComposerPrimitive.Root className=\"aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[24px] border border-[#EAEDF1] bg-background px-4 py-3 shadow-sm transition-all outline-none focus-within:border-primary/50 focus-within:ring-1 focus-within:ring-primary/50 dark:bg-background dark:border-muted\">\n <ComposerAttachments />\n <div className=\"flex items-center w-full gap-2\">\n <ComposerPrimitive.Input\n placeholder={placeholder}\n className=\"aui-composer-input max-h-32 min-h-[24px] flex-1 resize-none bg-transparent py-0 text-[14px] leading-[22px] outline-none placeholder:text-muted-foreground\"\n rows={1}\n autoFocus\n aria-label=\"Message input\"\n />\n <ComposerAction />\n </div>\n </ComposerPrimitive.Root>\n </div>\n </div>\n );\n};\n\nconst ComposerAction: FC = () => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n return (\n <div className=\"aui-composer-action-wrapper flex items-center gap-3\">\n \n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div\n key={idx}\n className=\"flex items-center justify-center\"\n >\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=\"发送\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[32px] bg-[#1664FF] rounded-full text-white text-primary hover:bg-primary/10 hover:text-primary p-0\"\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 <ComposerPrimitive.Cancel asChild>\n <TooltipIconButton\n tooltip=\"stop\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[32px] bg-[#1664FF] 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-[32px] fill-white\" />\n </TooltipIconButton>\n </ComposerPrimitive.Cancel>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\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 请求出现错误!\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} tool {toolCount === 1 ? \"call\" : \"calls\"}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\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={{\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n // ToolGroup,\n ReasoningGroup,\n }}\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 { currentThread } = useThread();\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 return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className=\"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 >\n <div\n className=\"flex items-center justify-center\"\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"positive\" ? undefined : \"positive\"\n )\n }\n >\n <TooltipIconButton tooltip=\"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={() =>\n setSubmittedFeedback(\n submittedFeedback === \"negative\" ? undefined : \"negative\"\n )\n }\n >\n <TooltipIconButton tooltip=\"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=\"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=\"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=\"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 return (\n <div 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 <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 variant=\"ghost\" size=\"sm\" aria-label=\"Cancel edit\">\n Cancel\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n 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 return (\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 /> / <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n};\n\nconst UserMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\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 <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]\">\n <MessagePrimitive.Parts />\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\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\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 tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["welcome","useChatkitRef","useMemo","_jsx","Recommend","useChatkitContext","_jsxs","ThreadHeader","LazyMotion","domAnimation","MotionConfig","ThreadPrimitive.Root","ThreadPrimitive.If","ThreadPrimitive.Viewport","ThreadPrimitive.Messages","ThreadPrimitive.ScrollToBottom","TooltipIconButton","ArrowDownIcon","dayjs","cn","ComposerPrimitive.Root","ComposerAttachments","ComposerPrimitive.Input","useChatkitPlugins","ComposerPrimitive.Send","LoaderCircle","ArrowUpIcon","ComposerPrimitive.Cancel","MessagePrimitive.Error","ErrorPrimitive.Root","ErrorPrimitive.Message","MessagePrimitive.Root","MessagePrimitive.Parts","MarkdownText","ToolFallback","File","Reasoning","ReasoningGroup","useState","useAssistantState","ActionBarPrimitive.Root","ActionBarPrimitive.Copy","MessagePrimitive.If","CheckIcon","CopyIcon","saveStringToMarkdown","ActionBarPrimitive.Reload","Button","BranchPickerPrimitive.Root","BranchPickerPrimitive.Previous","ChevronLeftIcon","BranchPickerPrimitive.Number","BranchPickerPrimitive.Count","BranchPickerPrimitive.Next","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 useMessagePartText,\n} from \"@assistant-ui/react\";\n\nimport { useMemo, useState, type FC, type PropsWithChildren } from \"react\";\nimport { LazyMotion, MotionConfig, domAnimation } from \"motion/react\";\nimport * as m from \"motion/react-m\";\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 { Reasoning, ReasoningGroup } from \"./reasoning\";\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from \"@/contexts/ChatkitContext\";\nimport ThumbUpIcon from \"@/assets/ThumbUpIcon\";\nimport ThumbDownIcon from \"@/assets/ThumbDownIcon\";\nimport CopyIcon from \"@/assets/Copy\";\nimport RefreshIcon from \"@/assets/RefreshIcon\";\nimport ThreadHeader from \"./thread-header\";\nimport NewSession from \"@/assets/NewSession\";\nimport dayjs from \"dayjs\";\nimport useThread from \"@/hooks/useThread\";\nimport Recommend from \"../welcome\";\nimport { saveStringToMarkdown } from \"@/utils/download\";\nimport Download from \"@/assets/Download\";\nimport AbortMessage from \"@/assets/AbortMessage\";\nimport ClearIcon from \"@/assets/ClearIcon\";\n\nexport const Thread: FC<{\n welcome?: React.ReactNode;\n recommends?: string[];\n}> = ({ welcome, recommends }) => {\n const { currentThread } = useThread();\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.current?.sendMessage({\n content: [\n {\n type: \"text\",\n text: question,\n },\n ],\n });\n }}\n />\n );\n return undefined;\n }, [recommends]);\n const { showHeader } = useChatkitContext();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n {showHeader && (\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 }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4\">\n <ThreadPrimitive.Messages\n components={{\n UserMessage,\n EditComposer,\n AssistantMessage,\n }}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\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\">\n <div className=\" aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\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 welcomeElement ?? <ThreadWelcome />\n )}\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\n \n <Composer />\n \n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => {\n return (\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};\n\nconst NewThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n // 新建会话的逻辑\n const id = `thread-${Date.now()}`;\n ref.current?.addThread({\n id,\n name: \"新对话\",\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n ref.current?.setCurrentThread(id);\n };\n\n return (\n <TooltipIconButton\n tooltip=\"新会话\"\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\nconst ClearThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n ref.current?.clearCurrentThread();\n };\n const { currentThread } = useThread();\n\n const disabled = currentThread?.messages.length === 0||currentThread?.loading;\n return (\n <TooltipIconButton\n tooltip=\"清空会话\"\n disabled={disabled}\n onClick={handleCreateNewThread}\n className={cn(\"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\", disabled && \"opacity-50 pointer-events-none\")}\n\n >\n <ClearIcon className=\"size-[16px]\" />\n </TooltipIconButton>\n );\n};\n\nconst ThreadWelcome: FC = () => {\n return (\n <div className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\">\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 你好\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n 你好\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const { showThreadList, placeholder } = useChatkitContext();\n return (\n <div 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 pb-4 md:pb-6\">\n <ThreadScrollToBottom />\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-shrink-0\">\n {showThreadList ? <NewThread /> : <ClearThread />}\n </div>\n <ComposerPrimitive.Root className=\"aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[24px] border border-[#EAEDF1] bg-background px-[16px] py-[12px] shadow-sm transition-all\">\n <ComposerAttachments />\n <div className=\"flex items-center w-full gap-2\">\n <ComposerPrimitive.Input\n placeholder={placeholder}\n className=\"aui-composer-input max-h-32 min-h-[24px] flex-1 resize-none bg-transparent py-0 text-[14px] leading-[22px] outline-none placeholder:text-muted-foreground\"\n rows={1}\n autoFocus\n aria-label=\"Message input\"\n />\n <ComposerAction />\n </div>\n </ComposerPrimitive.Root>\n </div>\n </div>\n );\n};\n\nconst ComposerAction: FC = () => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n return (\n <div className=\"aui-composer-action-wrapper flex items-center gap-3\">\n \n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div\n key={idx}\n className=\"flex items-center justify-center\"\n >\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=\"发送\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[32px] bg-[#1664FF] rounded-full text-white text-primary hover:bg-primary/10 hover:text-primary p-0\"\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 <ComposerPrimitive.Cancel asChild>\n <TooltipIconButton\n tooltip=\"stop\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[32px] bg-[#1664FF] 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-[32px] fill-white\" />\n </TooltipIconButton>\n </ComposerPrimitive.Cancel>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\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 请求出现错误!\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} tool {toolCount === 1 ? \"call\" : \"calls\"}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\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={{\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n // ToolGroup,\n ReasoningGroup,\n }}\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 { currentThread } = useThread();\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 return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className=\"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 >\n <div\n className=\"flex items-center justify-center\"\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"positive\" ? undefined : \"positive\"\n )\n }\n >\n <TooltipIconButton tooltip=\"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={() =>\n setSubmittedFeedback(\n submittedFeedback === \"negative\" ? undefined : \"negative\"\n )\n }\n >\n <TooltipIconButton tooltip=\"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=\"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=\"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=\"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 return (\n <div 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 <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 variant=\"ghost\" size=\"sm\" aria-label=\"Cancel edit\">\n Cancel\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n 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 return (\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 /> / <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n};\n\nconst UserMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\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 <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]\">\n <MessagePrimitive.Parts />\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\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\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 tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["welcome","useChatkitRef","useMemo","_jsx","Recommend","useChatkitContext","_jsxs","ThreadHeader","LazyMotion","domAnimation","MotionConfig","ThreadPrimitive.Root","ThreadPrimitive.If","ThreadPrimitive.Viewport","ThreadPrimitive.Messages","ThreadPrimitive.ScrollToBottom","TooltipIconButton","ArrowDownIcon","dayjs","cn","ComposerPrimitive.Root","ComposerAttachments","ComposerPrimitive.Input","useChatkitPlugins","ComposerPrimitive.Send","LoaderCircle","ArrowUpIcon","ComposerPrimitive.Cancel","MessagePrimitive.Error","ErrorPrimitive.Root","ErrorPrimitive.Message","MessagePrimitive.Root","MessagePrimitive.Parts","MarkdownText","ToolFallback","File","Reasoning","ReasoningGroup","useState","useAssistantState","ActionBarPrimitive.Root","ActionBarPrimitive.Copy","MessagePrimitive.If","CheckIcon","CopyIcon","saveStringToMarkdown","ActionBarPrimitive.Reload","Button","BranchPickerPrimitive.Root","BranchPickerPrimitive.Previous","ChevronLeftIcon","BranchPickerPrimitive.Number","BranchPickerPrimitive.Count","BranchPickerPrimitive.Next","ChevronRightIcon","UserMessageAttachments"],"mappings":"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"}
@@ -82,7 +82,7 @@ const Thread = ({ welcome, recommends }) => {
82
82
  UserMessage,
83
83
  EditComposer,
84
84
  AssistantMessage,
85
- } }), jsx("div", { className: "aui-thread-viewport-spacer min-h-12 grow z-9 bg-white" }), jsx(Composer, {})] }) }), jsx(ThreadPrimitiveIf, { empty: true, children: jsxs(ThreadPrimitiveViewport, { className: "aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4 justify-center gap-[80px] ", children: [jsx("div", { className: "min-h-12 grow z-9 bg-white" }), currentThread?.loading ? (jsxs("div", { className: "flex items-center justify-center gap-1.5 h-[180px]", children: [jsx("span", { className: "w-2.5 h-2.5 bg-gray-500 rounded-full", style: {
85
+ } }), jsx("div", { className: "aui-thread-viewport-spacer min-h-12 grow z-9 bg-white" }), jsx(Composer, {})] }) }), jsx(ThreadPrimitiveIf, { empty: true, children: jsxs(ThreadPrimitiveViewport, { className: "aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-auto px-4 justify-center", children: [jsx("div", { className: " aui-thread-viewport-spacer min-h-12 grow z-9 bg-white" }), currentThread?.loading ? (jsxs("div", { className: "flex items-center justify-center gap-1.5 h-[180px]", children: [jsx("span", { className: "w-2.5 h-2.5 bg-gray-500 rounded-full", style: {
86
86
  animation: "bounce 1s ease-in-out infinite",
87
87
  animationDelay: "0ms",
88
88
  } }), jsx("span", { className: "w-2.5 h-2.5 bg-gray-500 rounded-full", style: {
@@ -91,7 +91,7 @@ const Thread = ({ welcome, recommends }) => {
91
91
  } }), jsx("span", { className: "w-2.5 h-2.5 bg-gray-500 rounded-full", style: {
92
92
  animation: "bounce 1s ease-in-out infinite",
93
93
  animationDelay: "300ms",
94
- } })] })) : (welcomeElement ?? jsx(ThreadWelcome, {})), jsx("div", { className: "min-h-12 grow z-9 bg-white" }), jsx("div", { className: "flex items-center", children: jsx(Composer, {}) })] }) })] }) }) })] }));
94
+ } })] })) : (welcomeElement ?? jsx(ThreadWelcome, {})), jsx("div", { className: "aui-thread-viewport-spacer min-h-12 grow z-9 bg-white" }), jsx(Composer, {})] }) })] }) }) })] }));
95
95
  };
96
96
  const ThreadScrollToBottom = () => {
97
97
  return (jsx(ThreadPrimitiveScrollToBottom, { asChild: true, children: jsx(TooltipIconButton, { tooltip: "Scroll to bottom", variant: "outline", 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", children: jsx(ArrowDown, {}) }) }));
@@ -127,7 +127,7 @@ const ThreadWelcome = () => {
127
127
  };
128
128
  const Composer = () => {
129
129
  const { showThreadList, placeholder } = useChatkitContext();
130
- return (jsxs("div", { 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 pb-4 md:pb-6", children: [jsx(ThreadScrollToBottom, {}), jsxs("div", { className: "flex items-center gap-2", children: [jsx("div", { className: "flex-shrink-0", children: showThreadList ? jsx(NewThread, {}) : jsx(ClearThread, {}) }), jsxs(ComposerPrimitiveRoot, { className: "aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[24px] border border-[#EAEDF1] bg-background px-4 py-3 shadow-sm transition-all outline-none focus-within:border-primary/50 focus-within:ring-1 focus-within:ring-primary/50 dark:bg-background dark:border-muted", children: [jsx(ComposerAttachments, {}), jsxs("div", { className: "flex items-center w-full gap-2", children: [jsx(ComposerPrimitiveInput, { placeholder: placeholder, className: "aui-composer-input max-h-32 min-h-[24px] flex-1 resize-none bg-transparent py-0 text-[14px] leading-[22px] outline-none placeholder:text-muted-foreground", rows: 1, autoFocus: true, "aria-label": "Message input" }), jsx(ComposerAction, {})] })] })] })] }));
130
+ return (jsxs("div", { 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 pb-4 md:pb-6", children: [jsx(ThreadScrollToBottom, {}), jsxs("div", { className: "flex items-center gap-2", children: [jsx("div", { className: "flex-shrink-0", children: showThreadList ? jsx(NewThread, {}) : jsx(ClearThread, {}) }), jsxs(ComposerPrimitiveRoot, { className: "aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[24px] border border-[#EAEDF1] bg-background px-[16px] py-[12px] shadow-sm transition-all", children: [jsx(ComposerAttachments, {}), jsxs("div", { className: "flex items-center w-full gap-2", children: [jsx(ComposerPrimitiveInput, { placeholder: placeholder, className: "aui-composer-input max-h-32 min-h-[24px] flex-1 resize-none bg-transparent py-0 text-[14px] leading-[22px] outline-none placeholder:text-muted-foreground", rows: 1, autoFocus: true, "aria-label": "Message input" }), jsx(ComposerAction, {})] })] })] })] }));
131
131
  };
132
132
  const ComposerAction = () => {
133
133
  const { currentThread } = useThread();
@@ -186,7 +186,7 @@ const BranchPicker = ({ className, ...rest }) => {
186
186
  return (jsxs(BranchPickerPrimitiveRoot, { 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(BranchPickerPrimitivePrevious, { asChild: true, children: jsx(TooltipIconButton, { tooltip: "Previous", children: jsx(ChevronLeft, {}) }) }), jsxs("span", { className: "aui-branch-picker-state font-medium", children: [jsx(BranchPickerPrimitiveNumber, {}), " / ", jsx(BranchPickerPrimitiveCount, {})] }), jsx(BranchPickerPrimitiveNext, { asChild: true, children: jsx(TooltipIconButton, { tooltip: "Next", children: jsx(ChevronRight, {}) }) })] }));
187
187
  };
188
188
  const UserMessage = () => {
189
- return (jsx(MessagePrimitiveRoot, { asChild: true, children: jsxs("div", { 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-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]", children: jsx(MessagePrimitiveParts, {}) }) }), jsx(BranchPicker, { className: "aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end" })] }) }));
189
+ return (jsx(MessagePrimitiveRoot, { asChild: true, children: jsxs("div", { 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-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]", children: jsx(MessagePrimitiveParts, {}) }) })] }) }));
190
190
  };
191
191
 
192
192
  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 useMessagePartText,\n} from \"@assistant-ui/react\";\n\nimport { useMemo, useState, type FC, type PropsWithChildren } from \"react\";\nimport { LazyMotion, MotionConfig, domAnimation } from \"motion/react\";\nimport * as m from \"motion/react-m\";\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 { Reasoning, ReasoningGroup } from \"./reasoning\";\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from \"@/contexts/ChatkitContext\";\nimport ThumbUpIcon from \"@/assets/ThumbUpIcon\";\nimport ThumbDownIcon from \"@/assets/ThumbDownIcon\";\nimport CopyIcon from \"@/assets/Copy\";\nimport RefreshIcon from \"@/assets/RefreshIcon\";\nimport ThreadHeader from \"./thread-header\";\nimport NewSession from \"@/assets/NewSession\";\nimport dayjs from \"dayjs\";\nimport useThread from \"@/hooks/useThread\";\nimport Recommend from \"../welcome\";\nimport { saveStringToMarkdown } from \"@/utils/download\";\nimport Download from \"@/assets/Download\";\nimport AbortMessage from \"@/assets/AbortMessage\";\nimport ClearIcon from \"@/assets/ClearIcon\";\n\nexport const Thread: FC<{\n welcome?: React.ReactNode;\n recommends?: string[];\n}> = ({ welcome, recommends }) => {\n const { currentThread } = useThread();\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.current?.sendMessage({\n content: [\n {\n type: \"text\",\n text: question,\n },\n ],\n });\n }}\n />\n );\n return undefined;\n }, [recommends]);\n const { showHeader } = useChatkitContext();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n {showHeader && (\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 }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4\">\n <ThreadPrimitive.Messages\n components={{\n UserMessage,\n EditComposer,\n AssistantMessage,\n }}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\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 gap-[80px] \">\n <div className=\"min-h-12 grow z-9 bg-white\" />\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 welcomeElement ?? <ThreadWelcome />\n )}\n <div className=\"min-h-12 grow z-9 bg-white\" />\n <div className=\"flex items-center\">\n <Composer />\n </div>\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => {\n return (\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};\n\nconst NewThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n // 新建会话的逻辑\n const id = `thread-${Date.now()}`;\n ref.current?.addThread({\n id,\n name: \"新对话\",\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n ref.current?.setCurrentThread(id);\n };\n\n return (\n <TooltipIconButton\n tooltip=\"新会话\"\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\nconst ClearThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n ref.current?.clearCurrentThread();\n };\n const { currentThread } = useThread();\n\n const disabled = currentThread?.messages.length === 0||currentThread?.loading;\n return (\n <TooltipIconButton\n tooltip=\"清空会话\"\n disabled={disabled}\n onClick={handleCreateNewThread}\n className={cn(\"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\", disabled && \"opacity-50 pointer-events-none\")}\n\n >\n <ClearIcon className=\"size-[16px]\" />\n </TooltipIconButton>\n );\n};\n\nconst ThreadWelcome: FC = () => {\n return (\n <div className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\">\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 你好\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n 你好\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const { showThreadList, placeholder } = useChatkitContext();\n return (\n <div 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 pb-4 md:pb-6\">\n <ThreadScrollToBottom />\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-shrink-0\">\n {showThreadList ? <NewThread /> : <ClearThread />}\n </div>\n <ComposerPrimitive.Root className=\"aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[24px] border border-[#EAEDF1] bg-background px-4 py-3 shadow-sm transition-all outline-none focus-within:border-primary/50 focus-within:ring-1 focus-within:ring-primary/50 dark:bg-background dark:border-muted\">\n <ComposerAttachments />\n <div className=\"flex items-center w-full gap-2\">\n <ComposerPrimitive.Input\n placeholder={placeholder}\n className=\"aui-composer-input max-h-32 min-h-[24px] flex-1 resize-none bg-transparent py-0 text-[14px] leading-[22px] outline-none placeholder:text-muted-foreground\"\n rows={1}\n autoFocus\n aria-label=\"Message input\"\n />\n <ComposerAction />\n </div>\n </ComposerPrimitive.Root>\n </div>\n </div>\n );\n};\n\nconst ComposerAction: FC = () => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n return (\n <div className=\"aui-composer-action-wrapper flex items-center gap-3\">\n \n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div\n key={idx}\n className=\"flex items-center justify-center\"\n >\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=\"发送\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[32px] bg-[#1664FF] rounded-full text-white text-primary hover:bg-primary/10 hover:text-primary p-0\"\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 <ComposerPrimitive.Cancel asChild>\n <TooltipIconButton\n tooltip=\"stop\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[32px] bg-[#1664FF] 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-[32px] fill-white\" />\n </TooltipIconButton>\n </ComposerPrimitive.Cancel>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\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 请求出现错误!\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} tool {toolCount === 1 ? \"call\" : \"calls\"}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\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={{\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n // ToolGroup,\n ReasoningGroup,\n }}\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 { currentThread } = useThread();\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 return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className=\"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 >\n <div\n className=\"flex items-center justify-center\"\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"positive\" ? undefined : \"positive\"\n )\n }\n >\n <TooltipIconButton tooltip=\"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={() =>\n setSubmittedFeedback(\n submittedFeedback === \"negative\" ? undefined : \"negative\"\n )\n }\n >\n <TooltipIconButton tooltip=\"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=\"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=\"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=\"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 return (\n <div 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 <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 variant=\"ghost\" size=\"sm\" aria-label=\"Cancel edit\">\n Cancel\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n 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 return (\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 /> / <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n};\n\nconst UserMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\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 <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]\">\n <MessagePrimitive.Parts />\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\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\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 tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["_jsx","_jsxs","ThreadPrimitive.Root","ThreadPrimitive.If","ThreadPrimitive.Viewport","ThreadPrimitive.Messages","ThreadPrimitive.ScrollToBottom","ArrowDownIcon","ComposerPrimitive.Root","ComposerPrimitive.Input","ComposerPrimitive.Send","ArrowUpIcon","ComposerPrimitive.Cancel","MessagePrimitive.Error","ErrorPrimitive.Root","ErrorPrimitive.Message","MessagePrimitive.Root","MessagePrimitive.Parts","ActionBarPrimitive.Root","ActionBarPrimitive.Copy","MessagePrimitive.If","CheckIcon","ActionBarPrimitive.Reload","BranchPickerPrimitive.Root","BranchPickerPrimitive.Previous","ChevronLeftIcon","BranchPickerPrimitive.Number","BranchPickerPrimitive.Count","BranchPickerPrimitive.Next","ChevronRightIcon"],"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 useMessagePartText,\n} from \"@assistant-ui/react\";\n\nimport { useMemo, useState, type FC, type PropsWithChildren } from \"react\";\nimport { LazyMotion, MotionConfig, domAnimation } from \"motion/react\";\nimport * as m from \"motion/react-m\";\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 { Reasoning, ReasoningGroup } from \"./reasoning\";\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from \"@/contexts/ChatkitContext\";\nimport ThumbUpIcon from \"@/assets/ThumbUpIcon\";\nimport ThumbDownIcon from \"@/assets/ThumbDownIcon\";\nimport CopyIcon from \"@/assets/Copy\";\nimport RefreshIcon from \"@/assets/RefreshIcon\";\nimport ThreadHeader from \"./thread-header\";\nimport NewSession from \"@/assets/NewSession\";\nimport dayjs from \"dayjs\";\nimport useThread from \"@/hooks/useThread\";\nimport Recommend from \"../welcome\";\nimport { saveStringToMarkdown } from \"@/utils/download\";\nimport Download from \"@/assets/Download\";\nimport AbortMessage from \"@/assets/AbortMessage\";\nimport ClearIcon from \"@/assets/ClearIcon\";\n\nexport const Thread: FC<{\n welcome?: React.ReactNode;\n recommends?: string[];\n}> = ({ welcome, recommends }) => {\n const { currentThread } = useThread();\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.current?.sendMessage({\n content: [\n {\n type: \"text\",\n text: question,\n },\n ],\n });\n }}\n />\n );\n return undefined;\n }, [recommends]);\n const { showHeader } = useChatkitContext();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n {showHeader && (\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 }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4\">\n <ThreadPrimitive.Messages\n components={{\n UserMessage,\n EditComposer,\n AssistantMessage,\n }}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\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\">\n <div className=\" aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\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 welcomeElement ?? <ThreadWelcome />\n )}\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\n \n <Composer />\n \n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => {\n return (\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};\n\nconst NewThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n // 新建会话的逻辑\n const id = `thread-${Date.now()}`;\n ref.current?.addThread({\n id,\n name: \"新对话\",\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n ref.current?.setCurrentThread(id);\n };\n\n return (\n <TooltipIconButton\n tooltip=\"新会话\"\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\nconst ClearThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n ref.current?.clearCurrentThread();\n };\n const { currentThread } = useThread();\n\n const disabled = currentThread?.messages.length === 0||currentThread?.loading;\n return (\n <TooltipIconButton\n tooltip=\"清空会话\"\n disabled={disabled}\n onClick={handleCreateNewThread}\n className={cn(\"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\", disabled && \"opacity-50 pointer-events-none\")}\n\n >\n <ClearIcon className=\"size-[16px]\" />\n </TooltipIconButton>\n );\n};\n\nconst ThreadWelcome: FC = () => {\n return (\n <div className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\">\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 你好\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n 你好\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const { showThreadList, placeholder } = useChatkitContext();\n return (\n <div 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 pb-4 md:pb-6\">\n <ThreadScrollToBottom />\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-shrink-0\">\n {showThreadList ? <NewThread /> : <ClearThread />}\n </div>\n <ComposerPrimitive.Root className=\"aui-composer-root group/input-group relative flex flex-1 flex-col rounded-[24px] border border-[#EAEDF1] bg-background px-[16px] py-[12px] shadow-sm transition-all\">\n <ComposerAttachments />\n <div className=\"flex items-center w-full gap-2\">\n <ComposerPrimitive.Input\n placeholder={placeholder}\n className=\"aui-composer-input max-h-32 min-h-[24px] flex-1 resize-none bg-transparent py-0 text-[14px] leading-[22px] outline-none placeholder:text-muted-foreground\"\n rows={1}\n autoFocus\n aria-label=\"Message input\"\n />\n <ComposerAction />\n </div>\n </ComposerPrimitive.Root>\n </div>\n </div>\n );\n};\n\nconst ComposerAction: FC = () => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n return (\n <div className=\"aui-composer-action-wrapper flex items-center gap-3\">\n \n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div\n key={idx}\n className=\"flex items-center justify-center\"\n >\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=\"发送\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[32px] bg-[#1664FF] rounded-full text-white text-primary hover:bg-primary/10 hover:text-primary p-0\"\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 <ComposerPrimitive.Cancel asChild>\n <TooltipIconButton\n tooltip=\"stop\"\n type=\"submit\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"aui-composer-send size-[32px] bg-[#1664FF] 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-[32px] fill-white\" />\n </TooltipIconButton>\n </ComposerPrimitive.Cancel>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\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 请求出现错误!\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} tool {toolCount === 1 ? \"call\" : \"calls\"}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\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={{\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n // ToolGroup,\n ReasoningGroup,\n }}\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 { currentThread } = useThread();\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 return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className=\"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 >\n <div\n className=\"flex items-center justify-center\"\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"positive\" ? undefined : \"positive\"\n )\n }\n >\n <TooltipIconButton tooltip=\"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={() =>\n setSubmittedFeedback(\n submittedFeedback === \"negative\" ? undefined : \"negative\"\n )\n }\n >\n <TooltipIconButton tooltip=\"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=\"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=\"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=\"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 return (\n <div 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 <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 variant=\"ghost\" size=\"sm\" aria-label=\"Cancel edit\">\n Cancel\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n 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 return (\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 /> / <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n};\n\nconst UserMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\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 <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]\">\n <MessagePrimitive.Parts />\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\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\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 tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["_jsx","_jsxs","ThreadPrimitive.Root","ThreadPrimitive.If","ThreadPrimitive.Viewport","ThreadPrimitive.Messages","ThreadPrimitive.ScrollToBottom","ArrowDownIcon","ComposerPrimitive.Root","ComposerPrimitive.Input","ComposerPrimitive.Send","ArrowUpIcon","ComposerPrimitive.Cancel","MessagePrimitive.Error","ErrorPrimitive.Root","ErrorPrimitive.Message","MessagePrimitive.Root","MessagePrimitive.Parts","ActionBarPrimitive.Root","ActionBarPrimitive.Copy","MessagePrimitive.If","CheckIcon","ActionBarPrimitive.Reload","BranchPickerPrimitive.Root","BranchPickerPrimitive.Previous","ChevronLeftIcon","BranchPickerPrimitive.Number","BranchPickerPrimitive.Count","BranchPickerPrimitive.Next","ChevronRightIcon"],"mappings":"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"}
package/dist/index.css CHANGED
@@ -1,2 +1,2 @@
1
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:-3rem}.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:.25rem}.chatkit-wrapper .right-1\.5{right:.375rem}.chatkit-wrapper .right-2{right:.5rem}.chatkit-wrapper .right-3{right:.75rem}.chatkit-wrapper .right-4{right:1rem}.chatkit-wrapper .top-0{top:0}.chatkit-wrapper .top-1\.5{top:.375rem}.chatkit-wrapper .top-2{top:.5rem}.chatkit-wrapper .top-3\.5{top:.875rem}.chatkit-wrapper .top-4{top:1rem}.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:-.5rem;margin-right:-.5rem}.chatkit-wrapper .mx-2{margin-left:.5rem;margin-right:.5rem}.chatkit-wrapper .mx-3{margin-left:.75rem;margin-right:.75rem}.chatkit-wrapper .mx-3\.5{margin-left:.875rem;margin-right:.875rem}.chatkit-wrapper .mx-auto{margin-left:auto;margin-right:auto}.chatkit-wrapper .my-2{margin-bottom:.5rem;margin-top:.5rem}.chatkit-wrapper .my-4{margin-bottom:1rem;margin-top:1rem}.chatkit-wrapper .my-5{margin-bottom:1.25rem;margin-top:1.25rem}.chatkit-wrapper .-ml-1{margin-left:-.25rem}.chatkit-wrapper .-ml-2{margin-left:-.5rem}.chatkit-wrapper .-mr-1{margin-right:-.25rem}.chatkit-wrapper .mb-1{margin-bottom:.25rem}.chatkit-wrapper .mb-2{margin-bottom:.5rem}.chatkit-wrapper .mb-3{margin-bottom:.75rem}.chatkit-wrapper .mb-4{margin-bottom:1rem}.chatkit-wrapper .mb-5{margin-bottom:1.25rem}.chatkit-wrapper .mb-6{margin-bottom:1.5rem}.chatkit-wrapper .mb-8{margin-bottom:2rem}.chatkit-wrapper .mb-\[4px\]{margin-bottom:4px}.chatkit-wrapper .ml-2{margin-left:.5rem}.chatkit-wrapper .ml-3{margin-left:.75rem}.chatkit-wrapper .ml-6{margin-left:1.5rem}.chatkit-wrapper .ml-\[24px\]{margin-left:24px}.chatkit-wrapper .ml-auto{margin-left:auto}.chatkit-wrapper .mr-1{margin-right:.25rem}.chatkit-wrapper .mr-1\.5{margin-right:.375rem}.chatkit-wrapper .mr-2{margin-right:.5rem}.chatkit-wrapper .mr-3{margin-right:.75rem}.chatkit-wrapper .mr-4{margin-right:1rem}.chatkit-wrapper .mr-6{margin-right:1.5rem}.chatkit-wrapper .mt-0\.5{margin-top:.125rem}.chatkit-wrapper .mt-1{margin-top:.25rem}.chatkit-wrapper .mt-1\.5{margin-top:.375rem}.chatkit-wrapper .mt-2{margin-top:.5rem}.chatkit-wrapper .mt-4{margin-top:1rem}.chatkit-wrapper .mt-5{margin-top:1.25rem}.chatkit-wrapper .mt-6{margin-top:1.5rem}.chatkit-wrapper .mt-8{margin-top:2rem}.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:2.5rem;width:2.5rem}.chatkit-wrapper .size-14{height:3.5rem;width:3.5rem}.chatkit-wrapper .size-2\.5{height:.625rem;width:.625rem}.chatkit-wrapper .size-3{height:.75rem;width:.75rem}.chatkit-wrapper .size-3\.5{height:.875rem;width:.875rem}.chatkit-wrapper .size-4{height:1rem;width:1rem}.chatkit-wrapper .size-6{height:1.5rem;width:1.5rem}.chatkit-wrapper .size-7{height:1.75rem;width:1.75rem}.chatkit-wrapper .size-8{height:2rem;width:2rem}.chatkit-wrapper .size-9{height:2.25rem;width:2.25rem}.chatkit-wrapper .size-\[16px\]{height:16px;width:16px}.chatkit-wrapper .size-\[32px\]{height:32px;width:32px}.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:2.5rem}.chatkit-wrapper .h-11{height:2.75rem}.chatkit-wrapper .h-12{height:3rem}.chatkit-wrapper .h-16{height:4rem}.chatkit-wrapper .h-2\.5{height:.625rem}.chatkit-wrapper .h-3{height:.75rem}.chatkit-wrapper .h-3\.5{height:.875rem}.chatkit-wrapper .h-4{height:1rem}.chatkit-wrapper .h-5{height:1.25rem}.chatkit-wrapper .h-7{height:1.75rem}.chatkit-wrapper .h-8{height:2rem}.chatkit-wrapper .h-9{height:2.25rem}.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-32{max-height:8rem}.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-\[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:3rem}.chatkit-wrapper .min-h-\[24px\]{min-height:24px}.chatkit-wrapper .min-h-\[400px\]{min-height:400px}.chatkit-wrapper .min-h-\[60px\]{min-height:60px}.chatkit-wrapper .min-h-svh{min-height:100svh}.chatkit-wrapper .w-1{width:.25rem}.chatkit-wrapper .w-16{width:4rem}.chatkit-wrapper .w-2\.5{width:.625rem}.chatkit-wrapper .w-3{width:.75rem}.chatkit-wrapper .w-3\.5{width:.875rem}.chatkit-wrapper .w-3\/4{width:75%}.chatkit-wrapper .w-4{width:1rem}.chatkit-wrapper .w-5{width:1.25rem}.chatkit-wrapper .w-5\/6{width:83.333333%}.chatkit-wrapper .w-7{width:1.75rem}.chatkit-wrapper .w-8{width:2rem}.chatkit-wrapper .w-\[160px\]{width:160px}.chatkit-wrapper .w-\[180px\]{width:180px}.chatkit-wrapper .w-\[1px\]{width:1px}.chatkit-wrapper .w-\[240px\]{width:240px}.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:1.25rem}.chatkit-wrapper .min-w-\[80px\]{min-width:80px}.chatkit-wrapper .min-w-full{min-width:100%}.chatkit-wrapper .max-w-2xl{max-width:42rem}.chatkit-wrapper .max-w-3xl{max-width:48rem}.chatkit-wrapper .max-w-4xl{max-width:56rem}.chatkit-wrapper .max-w-\[240px\]{max-width:240px}.chatkit-wrapper .max-w-\[800px\]{max-width:800px}.chatkit-wrapper .max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.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-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:5rem}.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:.125rem}.chatkit-wrapper .gap-1{gap:.25rem}.chatkit-wrapper .gap-1\.5{gap:.375rem}.chatkit-wrapper .gap-2{gap:.5rem}.chatkit-wrapper .gap-3{gap:.75rem}.chatkit-wrapper .gap-4{gap:1rem}.chatkit-wrapper .gap-\[12px\]{gap:12px}.chatkit-wrapper .gap-\[80px\]{gap:80px}.chatkit-wrapper .gap-\[8px\]{gap:8px}.chatkit-wrapper .gap-y-2{row-gap:.5rem}.chatkit-wrapper .space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*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(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.625rem*var(--tw-space-y-reverse));margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.25rem*var(--tw-space-y-reverse));margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(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 .overflow-y-scroll{overflow-y:scroll}.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:.25rem}.chatkit-wrapper .rounded-2xl{border-radius:1rem}.chatkit-wrapper .rounded-\[10px\]{border-radius:10px}.chatkit-wrapper .rounded-\[14px\]{border-radius:14px}.chatkit-wrapper .rounded-\[24px\]{border-radius:24px}.chatkit-wrapper .rounded-\[2px\]{border-radius:2px}.chatkit-wrapper .rounded-\[4px\]{border-radius:4px}.chatkit-wrapper .rounded-\[8px\]{border-radius:8px}.chatkit-wrapper .rounded-full{border-radius:9999px}.chatkit-wrapper .rounded-lg{border-radius:.5rem}.chatkit-wrapper .rounded-md{border-radius:.375rem}.chatkit-wrapper .rounded-none{border-radius:0}.chatkit-wrapper .rounded-xl{border-radius:.75rem}.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:.5rem;border-bottom-right-radius:.5rem}.chatkit-wrapper .rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.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-l-2{border-left-width:2px}.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-\[\#\#0000001a\]{border-color:##0000001a}.chatkit-wrapper .border-\[\#0000000A\]{border-color:#0000000a}.chatkit-wrapper .border-\[\#0000001A\]{border-color:#0000001a}.chatkit-wrapper .border-\[\#1664FF1A\]{border-color:#1664ff1a}.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-\[\#1664FF\]{--tw-bg-opacity:1;background-color:rgb(22 100 255/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-\[\#EBF1FF\]{--tw-bg-opacity:1;background-color:rgb(235 241 255/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#F3F7FF\]{--tw-bg-opacity:1;background-color:rgb(243 247 255/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-\[\#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-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-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.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 .from-red-500{--tw-gradient-from:#ef4444 var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,68,68,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-purple-500{--tw-gradient-to:#a855f7 var(--tw-gradient-to-position)}.chatkit-wrapper .to-red-600{--tw-gradient-to:#dc2626 var(--tw-gradient-to-position)}.chatkit-wrapper .to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.chatkit-wrapper .fill-white{fill:#fff}.chatkit-wrapper .stroke-\[2px\]{stroke-width:2px}.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:.25rem}.chatkit-wrapper .p-1\.5{padding:.375rem}.chatkit-wrapper .p-2{padding:.5rem}.chatkit-wrapper .p-3{padding:.75rem}.chatkit-wrapper .p-4{padding:1rem}.chatkit-wrapper .p-6{padding:1.5rem}.chatkit-wrapper .p-8{padding:2rem}.chatkit-wrapper .px-1{padding-left:.25rem;padding-right:.25rem}.chatkit-wrapper .px-1\.5{padding-left:.375rem;padding-right:.375rem}.chatkit-wrapper .px-2{padding-left:.5rem;padding-right:.5rem}.chatkit-wrapper .px-2\.5{padding-left:.625rem;padding-right:.625rem}.chatkit-wrapper .px-3{padding-left:.75rem;padding-right:.75rem}.chatkit-wrapper .px-4{padding-left:1rem;padding-right:1rem}.chatkit-wrapper .px-5{padding-left:1.25rem;padding-right:1.25rem}.chatkit-wrapper .px-6{padding-left:1.5rem;padding-right:1.5rem}.chatkit-wrapper .px-8{padding-left:2rem;padding-right:2rem}.chatkit-wrapper .px-\[15px\]{padding-left:15px;padding-right:15px}.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:.125rem;padding-top:.125rem}.chatkit-wrapper .py-1{padding-bottom:.25rem;padding-top:.25rem}.chatkit-wrapper .py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.chatkit-wrapper .py-10{padding-bottom:2.5rem;padding-top:2.5rem}.chatkit-wrapper .py-16{padding-bottom:4rem;padding-top:4rem}.chatkit-wrapper .py-2{padding-bottom:.5rem;padding-top:.5rem}.chatkit-wrapper .py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.chatkit-wrapper .py-3{padding-bottom:.75rem;padding-top:.75rem}.chatkit-wrapper .py-4{padding-bottom:1rem;padding-top:1rem}.chatkit-wrapper .py-5{padding-bottom:1.25rem;padding-top:1.25rem}.chatkit-wrapper .py-6{padding-bottom:1.5rem;padding-top:1.5rem}.chatkit-wrapper .py-8{padding-bottom:2rem;padding-top:2rem}.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:.25rem}.chatkit-wrapper .pb-3{padding-bottom:.75rem}.chatkit-wrapper .pb-4{padding-bottom:1rem}.chatkit-wrapper .pb-6{padding-bottom:1.5rem}.chatkit-wrapper .pl-10{padding-left:2.5rem}.chatkit-wrapper .pl-4{padding-left:1rem}.chatkit-wrapper .pl-6{padding-left:1.5rem}.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:.5rem}.chatkit-wrapper .pr-4{padding-right:1rem}.chatkit-wrapper .pr-8{padding-right:2rem}.chatkit-wrapper .pr-\[12px\]{padding-right:12px}.chatkit-wrapper .pt-0{padding-top:0}.chatkit-wrapper .pt-0\.5{padding-top:.125rem}.chatkit-wrapper .pt-1{padding-top:.25rem}.chatkit-wrapper .pt-2{padding-top:.5rem}.chatkit-wrapper .pt-3{padding-top:.75rem}.chatkit-wrapper .pt-4{padding-top:1rem}.chatkit-wrapper .pt-6{padding-top:1.5rem}.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:1.5rem;line-height:2rem}.chatkit-wrapper .text-3xl{font-size:1.875rem;line-height:2.25rem}.chatkit-wrapper .text-4xl{font-size:2.25rem;line-height:2.5rem}.chatkit-wrapper .text-\[13px\]{font-size:13px}.chatkit-wrapper .text-\[14px\]{font-size:14px}.chatkit-wrapper .text-\[16px\]{font-size:16px}.chatkit-wrapper .text-\[24px\]{font-size:24px}.chatkit-wrapper .text-base{font-size:1rem;line-height:1.5rem}.chatkit-wrapper .text-lg{font-size:1.125rem;line-height:1.75rem}.chatkit-wrapper .text-sm{font-size:.875rem;line-height:1.25rem}.chatkit-wrapper .text-xl{font-size:1.25rem;line-height:1.75rem}.chatkit-wrapper .text-xs{font-size:.75rem;line-height:1rem}.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:1.75rem}.chatkit-wrapper .leading-\[100\%\]{line-height:100%}.chatkit-wrapper .leading-\[22px\]{line-height:22px}.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-\[\#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-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/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,.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}}@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:1.75rem}.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:.875rem;line-height:1.25rem}.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:-.5rem}.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:.75rem}.chatkit-wrapper .first\:mt-4:first-child{margin-top:1rem}.chatkit-wrapper .first\:rounded-tl-lg:first-child{border-top-left-radius:.5rem}.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:6rem}.chatkit-wrapper .last\:mb-5:last-child{margin-bottom:1.25rem}.chatkit-wrapper .last\:rounded-tr-lg:last-child{border-top-right-radius:.5rem}.chatkit-wrapper .last\:border-r:last-child{border-right-width:1px}.chatkit-wrapper .empty\:hidden:empty{display:none}.chatkit-wrapper .focus-within\:ring-1:focus-within{--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(1px + 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 .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-600:hover{--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 .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\:from-red-600:hover{--tw-gradient-from:#dc2626 var(--tw-gradient-from-position);--tw-gradient-to:rgba(220,38,38,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.chatkit-wrapper .hover\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.chatkit-wrapper .hover\:to-blue-800:hover{--tw-gradient-to:#1e40af var(--tw-gradient-to-position)}.chatkit-wrapper .hover\:to-red-700:hover{--tw-gradient-to:#b91c1c 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\:opacity-75:hover{opacity:.75}.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 .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:0.25rem;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:.625rem;padding-right:.625rem}.chatkit-wrapper .has-\[\>svg\]\:px-3:has(>svg){padding-left:.75rem;padding-right:.75rem}.chatkit-wrapper .has-\[\>svg\]\:px-4:has(>svg){padding-left:1rem;padding-right:1rem}.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-\[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-\[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:-1rem}.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:-2rem}.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:.5rem}.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:.375rem}.chatkit-wrapper .peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.chatkit-wrapper .peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}@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:48rem}.chatkit-wrapper .sm\:max-w-\[440px\]{max-width:440px}.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:32rem}.chatkit-wrapper .sm\:max-w-sm{max-width:24rem}.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:1.5rem}.chatkit-wrapper .md\:text-sm{font-size:.875rem;line-height:1.25rem}.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:.5rem}.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:.5rem}.chatkit-wrapper .peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:.75rem}.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:.5rem}.chatkit-wrapper .\[\&\:last-child\>td\:last-child\]\:rounded-br-lg:last-child>td:last-child{border-bottom-right-radius:.5rem}.chatkit-wrapper .\[\&\:where\(\>\*\)\]\:col-start-2:where(>*){grid-column-start:2}.chatkit-wrapper .only\:\[\&\>\#attachment-tile\]\:size-24>#attachment-tile:only-child{height:6rem;width:6rem}.chatkit-wrapper .\[\&\>a\]\:text-xs>a{font-size:.75rem;line-height:1rem}.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:.25rem}.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:.5rem}.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:.75rem;line-height:1rem}.chatkit-wrapper .\[\&\>svg\]\:size-4>svg{height:1rem;width:1rem}.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:-.5rem}.chatkit-wrapper .\[\&_pre\]\:overflow-x-auto pre{overflow-x:auto}.chatkit-wrapper .\[\&_pre\]\:rounded-b-lg pre{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.chatkit-wrapper .\[\&_pre\]\:border pre{border-width:1px}.chatkit-wrapper .\[\&_pre\]\:p-4 pre{padding:1rem}.chatkit-wrapper .\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){height:1rem;width:1rem}.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:-.5rem}.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:-.5rem}.chatkit-wrapper [data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@keyframes aui-pulse{50%{opacity:.5}}.chatkit-wrapper :where(.aui-md[data-status=running]):empty:after,.chatkit-wrapper :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 :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 :where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,.chatkit-wrapper :where(.aui-md[data-status=running])>:where(:not(ol):not(ul):not(pre)):last-child:after,.chatkit-wrapper :where(.aui-md[data-status=running])>pre:last-child code:after{--aui-content:"\25cf";animation:aui-pulse 2s cubic-bezier(.4,0,.6,1) infinite;content:var(--aui-content);font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin-left:.25rem;margin-right:.25rem}.chatkit-wrapper .chatkit-md-text-p img,.chatkit-wrapper .chatkit-md-text-p video{max-width:600px}@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:.2rem;margin-right:.2rem}
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:-3rem}.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:.25rem}.chatkit-wrapper .right-1\.5{right:.375rem}.chatkit-wrapper .right-2{right:.5rem}.chatkit-wrapper .right-3{right:.75rem}.chatkit-wrapper .right-4{right:1rem}.chatkit-wrapper .top-0{top:0}.chatkit-wrapper .top-1\.5{top:.375rem}.chatkit-wrapper .top-2{top:.5rem}.chatkit-wrapper .top-3\.5{top:.875rem}.chatkit-wrapper .top-4{top:1rem}.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:-.5rem;margin-right:-.5rem}.chatkit-wrapper .mx-2{margin-left:.5rem;margin-right:.5rem}.chatkit-wrapper .mx-3{margin-left:.75rem;margin-right:.75rem}.chatkit-wrapper .mx-3\.5{margin-left:.875rem;margin-right:.875rem}.chatkit-wrapper .mx-auto{margin-left:auto;margin-right:auto}.chatkit-wrapper .my-2{margin-bottom:.5rem;margin-top:.5rem}.chatkit-wrapper .my-4{margin-bottom:1rem;margin-top:1rem}.chatkit-wrapper .my-5{margin-bottom:1.25rem;margin-top:1.25rem}.chatkit-wrapper .-ml-1{margin-left:-.25rem}.chatkit-wrapper .-ml-2{margin-left:-.5rem}.chatkit-wrapper .-mr-1{margin-right:-.25rem}.chatkit-wrapper .mb-1{margin-bottom:.25rem}.chatkit-wrapper .mb-2{margin-bottom:.5rem}.chatkit-wrapper .mb-3{margin-bottom:.75rem}.chatkit-wrapper .mb-4{margin-bottom:1rem}.chatkit-wrapper .mb-5{margin-bottom:1.25rem}.chatkit-wrapper .mb-6{margin-bottom:1.5rem}.chatkit-wrapper .mb-8{margin-bottom:2rem}.chatkit-wrapper .mb-\[4px\]{margin-bottom:4px}.chatkit-wrapper .ml-2{margin-left:.5rem}.chatkit-wrapper .ml-3{margin-left:.75rem}.chatkit-wrapper .ml-6{margin-left:1.5rem}.chatkit-wrapper .ml-\[24px\]{margin-left:24px}.chatkit-wrapper .ml-auto{margin-left:auto}.chatkit-wrapper .mr-1{margin-right:.25rem}.chatkit-wrapper .mr-1\.5{margin-right:.375rem}.chatkit-wrapper .mr-2{margin-right:.5rem}.chatkit-wrapper .mr-3{margin-right:.75rem}.chatkit-wrapper .mr-4{margin-right:1rem}.chatkit-wrapper .mr-6{margin-right:1.5rem}.chatkit-wrapper .mt-0\.5{margin-top:.125rem}.chatkit-wrapper .mt-1{margin-top:.25rem}.chatkit-wrapper .mt-1\.5{margin-top:.375rem}.chatkit-wrapper .mt-2{margin-top:.5rem}.chatkit-wrapper .mt-4{margin-top:1rem}.chatkit-wrapper .mt-5{margin-top:1.25rem}.chatkit-wrapper .mt-6{margin-top:1.5rem}.chatkit-wrapper .mt-8{margin-top:2rem}.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:2.5rem;width:2.5rem}.chatkit-wrapper .size-14{height:3.5rem;width:3.5rem}.chatkit-wrapper .size-2\.5{height:.625rem;width:.625rem}.chatkit-wrapper .size-3{height:.75rem;width:.75rem}.chatkit-wrapper .size-3\.5{height:.875rem;width:.875rem}.chatkit-wrapper .size-4{height:1rem;width:1rem}.chatkit-wrapper .size-6{height:1.5rem;width:1.5rem}.chatkit-wrapper .size-7{height:1.75rem;width:1.75rem}.chatkit-wrapper .size-8{height:2rem;width:2rem}.chatkit-wrapper .size-9{height:2.25rem;width:2.25rem}.chatkit-wrapper .size-\[16px\]{height:16px;width:16px}.chatkit-wrapper .size-\[32px\]{height:32px;width:32px}.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:2.5rem}.chatkit-wrapper .h-11{height:2.75rem}.chatkit-wrapper .h-12{height:3rem}.chatkit-wrapper .h-16{height:4rem}.chatkit-wrapper .h-2\.5{height:.625rem}.chatkit-wrapper .h-3{height:.75rem}.chatkit-wrapper .h-3\.5{height:.875rem}.chatkit-wrapper .h-4{height:1rem}.chatkit-wrapper .h-5{height:1.25rem}.chatkit-wrapper .h-7{height:1.75rem}.chatkit-wrapper .h-8{height:2rem}.chatkit-wrapper .h-9{height:2.25rem}.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-32{max-height:8rem}.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-\[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:3rem}.chatkit-wrapper .min-h-\[24px\]{min-height:24px}.chatkit-wrapper .min-h-\[400px\]{min-height:400px}.chatkit-wrapper .min-h-\[60px\]{min-height:60px}.chatkit-wrapper .min-h-svh{min-height:100svh}.chatkit-wrapper .w-1{width:.25rem}.chatkit-wrapper .w-16{width:4rem}.chatkit-wrapper .w-2\.5{width:.625rem}.chatkit-wrapper .w-3{width:.75rem}.chatkit-wrapper .w-3\.5{width:.875rem}.chatkit-wrapper .w-3\/4{width:75%}.chatkit-wrapper .w-4{width:1rem}.chatkit-wrapper .w-5{width:1.25rem}.chatkit-wrapper .w-5\/6{width:83.333333%}.chatkit-wrapper .w-7{width:1.75rem}.chatkit-wrapper .w-8{width:2rem}.chatkit-wrapper .w-\[160px\]{width:160px}.chatkit-wrapper .w-\[180px\]{width:180px}.chatkit-wrapper .w-\[1px\]{width:1px}.chatkit-wrapper .w-\[240px\]{width:240px}.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:1.25rem}.chatkit-wrapper .min-w-\[80px\]{min-width:80px}.chatkit-wrapper .min-w-full{min-width:100%}.chatkit-wrapper .max-w-2xl{max-width:42rem}.chatkit-wrapper .max-w-3xl{max-width:48rem}.chatkit-wrapper .max-w-4xl{max-width:56rem}.chatkit-wrapper .max-w-\[240px\]{max-width:240px}.chatkit-wrapper .max-w-\[800px\]{max-width:800px}.chatkit-wrapper .max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.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-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:5rem}.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:.125rem}.chatkit-wrapper .gap-1{gap:.25rem}.chatkit-wrapper .gap-1\.5{gap:.375rem}.chatkit-wrapper .gap-2{gap:.5rem}.chatkit-wrapper .gap-3{gap:.75rem}.chatkit-wrapper .gap-4{gap:1rem}.chatkit-wrapper .gap-\[12px\]{gap:12px}.chatkit-wrapper .gap-\[8px\]{gap:8px}.chatkit-wrapper .gap-y-2{row-gap:.5rem}.chatkit-wrapper .space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*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(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.625rem*var(--tw-space-y-reverse));margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.25rem*var(--tw-space-y-reverse));margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)))}.chatkit-wrapper .space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(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 .overflow-y-scroll{overflow-y:scroll}.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:.25rem}.chatkit-wrapper .rounded-2xl{border-radius:1rem}.chatkit-wrapper .rounded-\[10px\]{border-radius:10px}.chatkit-wrapper .rounded-\[14px\]{border-radius:14px}.chatkit-wrapper .rounded-\[24px\]{border-radius:24px}.chatkit-wrapper .rounded-\[2px\]{border-radius:2px}.chatkit-wrapper .rounded-\[4px\]{border-radius:4px}.chatkit-wrapper .rounded-\[8px\]{border-radius:8px}.chatkit-wrapper .rounded-full{border-radius:9999px}.chatkit-wrapper .rounded-lg{border-radius:.5rem}.chatkit-wrapper .rounded-md{border-radius:.375rem}.chatkit-wrapper .rounded-none{border-radius:0}.chatkit-wrapper .rounded-xl{border-radius:.75rem}.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:.5rem;border-bottom-right-radius:.5rem}.chatkit-wrapper .rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.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-l-2{border-left-width:2px}.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-\[\#\#0000001a\]{border-color:##0000001a}.chatkit-wrapper .border-\[\#0000000A\]{border-color:#0000000a}.chatkit-wrapper .border-\[\#0000001A\]{border-color:#0000001a}.chatkit-wrapper .border-\[\#1664FF1A\]{border-color:#1664ff1a}.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-\[\#1664FF\]{--tw-bg-opacity:1;background-color:rgb(22 100 255/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-\[\#EBF1FF\]{--tw-bg-opacity:1;background-color:rgb(235 241 255/var(--tw-bg-opacity,1))}.chatkit-wrapper .bg-\[\#F3F7FF\]{--tw-bg-opacity:1;background-color:rgb(243 247 255/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-\[\#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-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-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.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 .from-red-500{--tw-gradient-from:#ef4444 var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,68,68,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-purple-500{--tw-gradient-to:#a855f7 var(--tw-gradient-to-position)}.chatkit-wrapper .to-red-600{--tw-gradient-to:#dc2626 var(--tw-gradient-to-position)}.chatkit-wrapper .to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.chatkit-wrapper .fill-white{fill:#fff}.chatkit-wrapper .stroke-\[2px\]{stroke-width:2px}.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:.25rem}.chatkit-wrapper .p-1\.5{padding:.375rem}.chatkit-wrapper .p-2{padding:.5rem}.chatkit-wrapper .p-3{padding:.75rem}.chatkit-wrapper .p-4{padding:1rem}.chatkit-wrapper .p-6{padding:1.5rem}.chatkit-wrapper .p-8{padding:2rem}.chatkit-wrapper .px-1{padding-left:.25rem;padding-right:.25rem}.chatkit-wrapper .px-1\.5{padding-left:.375rem;padding-right:.375rem}.chatkit-wrapper .px-2{padding-left:.5rem;padding-right:.5rem}.chatkit-wrapper .px-2\.5{padding-left:.625rem;padding-right:.625rem}.chatkit-wrapper .px-3{padding-left:.75rem;padding-right:.75rem}.chatkit-wrapper .px-4{padding-left:1rem;padding-right:1rem}.chatkit-wrapper .px-5{padding-left:1.25rem;padding-right:1.25rem}.chatkit-wrapper .px-6{padding-left:1.5rem;padding-right:1.5rem}.chatkit-wrapper .px-8{padding-left:2rem;padding-right:2rem}.chatkit-wrapper .px-\[15px\]{padding-left:15px;padding-right:15px}.chatkit-wrapper .px-\[16px\]{padding-left:16px;padding-right:16px}.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:.125rem;padding-top:.125rem}.chatkit-wrapper .py-1{padding-bottom:.25rem;padding-top:.25rem}.chatkit-wrapper .py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.chatkit-wrapper .py-10{padding-bottom:2.5rem;padding-top:2.5rem}.chatkit-wrapper .py-16{padding-bottom:4rem;padding-top:4rem}.chatkit-wrapper .py-2{padding-bottom:.5rem;padding-top:.5rem}.chatkit-wrapper .py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.chatkit-wrapper .py-3{padding-bottom:.75rem;padding-top:.75rem}.chatkit-wrapper .py-4{padding-bottom:1rem;padding-top:1rem}.chatkit-wrapper .py-5{padding-bottom:1.25rem;padding-top:1.25rem}.chatkit-wrapper .py-6{padding-bottom:1.5rem;padding-top:1.5rem}.chatkit-wrapper .py-8{padding-bottom:2rem;padding-top:2rem}.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:.25rem}.chatkit-wrapper .pb-3{padding-bottom:.75rem}.chatkit-wrapper .pb-4{padding-bottom:1rem}.chatkit-wrapper .pb-6{padding-bottom:1.5rem}.chatkit-wrapper .pl-10{padding-left:2.5rem}.chatkit-wrapper .pl-4{padding-left:1rem}.chatkit-wrapper .pl-6{padding-left:1.5rem}.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:.5rem}.chatkit-wrapper .pr-4{padding-right:1rem}.chatkit-wrapper .pr-8{padding-right:2rem}.chatkit-wrapper .pr-\[12px\]{padding-right:12px}.chatkit-wrapper .pt-0{padding-top:0}.chatkit-wrapper .pt-0\.5{padding-top:.125rem}.chatkit-wrapper .pt-1{padding-top:.25rem}.chatkit-wrapper .pt-2{padding-top:.5rem}.chatkit-wrapper .pt-3{padding-top:.75rem}.chatkit-wrapper .pt-4{padding-top:1rem}.chatkit-wrapper .pt-6{padding-top:1.5rem}.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:1.5rem;line-height:2rem}.chatkit-wrapper .text-3xl{font-size:1.875rem;line-height:2.25rem}.chatkit-wrapper .text-4xl{font-size:2.25rem;line-height:2.5rem}.chatkit-wrapper .text-\[13px\]{font-size:13px}.chatkit-wrapper .text-\[14px\]{font-size:14px}.chatkit-wrapper .text-\[16px\]{font-size:16px}.chatkit-wrapper .text-\[24px\]{font-size:24px}.chatkit-wrapper .text-base{font-size:1rem;line-height:1.5rem}.chatkit-wrapper .text-lg{font-size:1.125rem;line-height:1.75rem}.chatkit-wrapper .text-sm{font-size:.875rem;line-height:1.25rem}.chatkit-wrapper .text-xl{font-size:1.25rem;line-height:1.75rem}.chatkit-wrapper .text-xs{font-size:.75rem;line-height:1rem}.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:1.75rem}.chatkit-wrapper .leading-\[100\%\]{line-height:100%}.chatkit-wrapper .leading-\[22px\]{line-height:22px}.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-\[\#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-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/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,.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}}@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:1.75rem}.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:.875rem;line-height:1.25rem}.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:-.5rem}.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:.75rem}.chatkit-wrapper .first\:mt-4:first-child{margin-top:1rem}.chatkit-wrapper .first\:rounded-tl-lg:first-child{border-top-left-radius:.5rem}.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:6rem}.chatkit-wrapper .last\:mb-5:last-child{margin-bottom:1.25rem}.chatkit-wrapper .last\:rounded-tr-lg:last-child{border-top-right-radius:.5rem}.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-600:hover{--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 .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\:from-red-600:hover{--tw-gradient-from:#dc2626 var(--tw-gradient-from-position);--tw-gradient-to:rgba(220,38,38,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.chatkit-wrapper .hover\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.chatkit-wrapper .hover\:to-blue-800:hover{--tw-gradient-to:#1e40af var(--tw-gradient-to-position)}.chatkit-wrapper .hover\:to-red-700:hover{--tw-gradient-to:#b91c1c 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\:opacity-75:hover{opacity:.75}.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 .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:0.25rem;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:.625rem;padding-right:.625rem}.chatkit-wrapper .has-\[\>svg\]\:px-3:has(>svg){padding-left:.75rem;padding-right:.75rem}.chatkit-wrapper .has-\[\>svg\]\:px-4:has(>svg){padding-left:1rem;padding-right:1rem}.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-\[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-\[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:-1rem}.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:-2rem}.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:.5rem}.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:.375rem}.chatkit-wrapper .peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.chatkit-wrapper .peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}@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:48rem}.chatkit-wrapper .sm\:max-w-\[440px\]{max-width:440px}.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:32rem}.chatkit-wrapper .sm\:max-w-sm{max-width:24rem}.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:1.5rem}.chatkit-wrapper .md\:text-sm{font-size:.875rem;line-height:1.25rem}.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:.5rem}.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:.5rem}.chatkit-wrapper .peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:.75rem}.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:.5rem}.chatkit-wrapper .\[\&\:last-child\>td\:last-child\]\:rounded-br-lg:last-child>td:last-child{border-bottom-right-radius:.5rem}.chatkit-wrapper .\[\&\:where\(\>\*\)\]\:col-start-2:where(>*){grid-column-start:2}.chatkit-wrapper .only\:\[\&\>\#attachment-tile\]\:size-24>#attachment-tile:only-child{height:6rem;width:6rem}.chatkit-wrapper .\[\&\>a\]\:text-xs>a{font-size:.75rem;line-height:1rem}.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:.25rem}.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:.5rem}.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:.75rem;line-height:1rem}.chatkit-wrapper .\[\&\>svg\]\:size-4>svg{height:1rem;width:1rem}.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:-.5rem}.chatkit-wrapper .\[\&_pre\]\:overflow-x-auto pre{overflow-x:auto}.chatkit-wrapper .\[\&_pre\]\:rounded-b-lg pre{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.chatkit-wrapper .\[\&_pre\]\:border pre{border-width:1px}.chatkit-wrapper .\[\&_pre\]\:p-4 pre{padding:1rem}.chatkit-wrapper .\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){height:1rem;width:1rem}.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:-.5rem}.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:-.5rem}.chatkit-wrapper [data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@keyframes aui-pulse{50%{opacity:.5}}.chatkit-wrapper :where(.aui-md[data-status=running]):empty:after,.chatkit-wrapper :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 :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 :where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,.chatkit-wrapper :where(.aui-md[data-status=running])>:where(:not(ol):not(ul):not(pre)):last-child:after,.chatkit-wrapper :where(.aui-md[data-status=running])>pre:last-child code:after{--aui-content:"\25cf";animation:aui-pulse 2s cubic-bezier(.4,0,.6,1) infinite;content:var(--aui-content);font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin-left:.25rem;margin-right:.25rem}.chatkit-wrapper .chatkit-md-text-p img,.chatkit-wrapper .chatkit-md-text-p video{max-width:600px}@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:.2rem;margin-right:.2rem}
@@ -24,6 +24,7 @@ const getAdkConfig = (options) => {
24
24
  beforeRequest: async (params) => {
25
25
  const requestOptions = params.requestOptions;
26
26
  const hasInitSession = params.thread.metadata["sessionInited"] || false;
27
+ const isInitingSession = params.thread.metadata["isInitingSession"] || false;
27
28
  if (!params.requestOptions.api ||
28
29
  !params.requestOptions.headers?.Authorization) {
29
30
  useToast.toast({
@@ -33,8 +34,14 @@ const getAdkConfig = (options) => {
33
34
  });
34
35
  return false;
35
36
  }
36
- if (!hasInitSession) {
37
+ if (!hasInitSession && !isInitingSession) {
37
38
  let res;
39
+ index.threadActions.updateThread(params.thread.id, {
40
+ metadata: {
41
+ ...params.thread.metadata,
42
+ ["isInitingSession"]: true,
43
+ },
44
+ });
38
45
  try {
39
46
  res = await fetch(`${requestOptions.api}/apps/${options.appName}/users/${options.userId}/sessions/${params.thread.id}`, {
40
47
  method: "POST",
@@ -62,6 +69,7 @@ const getAdkConfig = (options) => {
62
69
  metadata: {
63
70
  ...params.thread.metadata,
64
71
  ["sessionInited"]: true,
72
+ ["isInitingSession"]: false,
65
73
  sessionId: data.id,
66
74
  },
67
75
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getAdkConfig.cjs","sources":["../../src/plugins/getAdkConfig.ts"],"sourcesContent":["import { ProtocolBaseOption, threadActions } from \"@chatkit/core\";\nimport { ChatkitProps } from \"@/components/Chatkit/types\";\nimport { error } from \"console\";\nimport { toast } from \"@/hooks/use-toast\";\nimport { param } from \"motion/dist/react-m\";\n/**\n * 获取ADK协议配置 ,session 使用 threadID\n * @param options\n * @returns\n */\nconst getAdkConfig = (options: {\n appName: string;\n userId: string;\n url: string;\n token: string;\n}): ChatkitProps[\"initialConfig\"] => {\n return {\n protocolOptions: {\n protocol: \"ADK\",\n },\n requestOptions: {\n api: options.url,\n headers: {\n Authorization: `Bearer ${options.token}`,\n },\n defaultParams: {\n streaming: true,\n },\n beforeRequest: async (params) => {\n const requestOptions = params.requestOptions;\n const hasInitSession = params.thread.metadata[\"sessionInited\"] || false;\n if (\n !params.requestOptions.api ||\n !params.requestOptions.headers?.Authorization\n ) {\n toast({\n title: \"配置错误\",\n description: \"请配置ADK配置\",\n variant: \"destructive\",\n });\n return false;\n }\n if (!hasInitSession) {\n let res;\n try {\n res = await fetch(\n `${requestOptions.api}/apps/${options.appName}/users/${options.userId}/sessions/${params.thread.id}`,\n {\n method: \"POST\",\n headers: {\n Authorization: `${requestOptions.headers?.Authorization}`,\n },\n }\n );\n\n if (!res.ok) {\n const text = await res.text();\n params.onError?.(new Error(text));\n return false;\n }\n } catch (error) {\n console.error(\"Error initializing session:\", error);\n params.onError?.(error as Error);\n return false;\n }\n if (!threadActions.getThread(params.thread.id, false)) {\n // 用户可能清空了对话,重新创建了\n return false;\n }\n const data = await res.json();\n threadActions.updateThread(params.thread.id, {\n metadata: {\n ...params.thread.metadata,\n [\"sessionInited\"]: true,\n sessionId: data.id,\n },\n });\n return {\n dynamicParams: {\n sessionId: data.id,\n userId: options.userId,\n appName: options.appName,\n },\n requestOptions: {\n api: `${requestOptions.api}/run_sse`,\n },\n };\n }\n return {\n dynamicParams: {\n sessionId: params.thread.metadata[\"sessionId\"],\n userId: options.userId,\n appName: options.appName,\n },\n requestOptions: {\n api: `${requestOptions.api}/run_sse`,\n },\n };\n },\n },\n };\n};\n\nexport default getAdkConfig;\n"],"names":["toast","threadActions"],"mappings":";;;;;AAKA;;;;AAIG;AACH,MAAM,YAAY,GAAG,CAAC,OAKrB,KAAmC;IAClC,OAAO;AACL,QAAA,eAAe,EAAE;AACf,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA;AACD,QAAA,cAAc,EAAE;YACd,GAAG,EAAE,OAAO,CAAC,GAAG;AAChB,YAAA,OAAO,EAAE;AACP,gBAAA,aAAa,EAAE,CAAA,OAAA,EAAU,OAAO,CAAC,KAAK,CAAE,CAAA;AACzC,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA;AACD,YAAA,aAAa,EAAE,OAAO,MAAM,KAAI;AAC9B,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC7C,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC;AACxE,gBAAA,IACE,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG;oBAC1B,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,EAC7C;AACA,oBAAAA,cAAK,CAAC;AACJ,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,WAAW,EAAE,UAAU;AACvB,wBAAA,OAAO,EAAE,aAAa;AACvB,qBAAA,CAAC,CAAC;AACH,oBAAA,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAC,cAAc,EAAE;AACnB,oBAAA,IAAI,GAAG,CAAC;AACR,oBAAA,IAAI;wBACF,GAAG,GAAG,MAAM,KAAK,CACf,GAAG,cAAc,CAAC,GAAG,CAAA,MAAA,EAAS,OAAO,CAAC,OAAO,CAAU,OAAA,EAAA,OAAO,CAAC,MAAM,CAAa,UAAA,EAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE,EACpG;AACE,4BAAA,MAAM,EAAE,MAAM;AACd,4BAAA,OAAO,EAAE;AACP,gCAAA,aAAa,EAAE,CAAG,EAAA,cAAc,CAAC,OAAO,EAAE,aAAa,CAAE,CAAA;AAC1D,6BAAA;AACF,yBAAA,CACF,CAAC;AAEF,wBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;AACX,4BAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;4BAC9B,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,4BAAA,OAAO,KAAK,CAAC;yBACd;qBACF;oBAAC,OAAO,KAAK,EAAE;AACd,wBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;AACpD,wBAAA,MAAM,CAAC,OAAO,GAAG,KAAc,CAAC,CAAC;AACjC,wBAAA,OAAO,KAAK,CAAC;qBACd;AACD,oBAAA,IAAI,CAACC,mBAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE;;AAErD,wBAAA,OAAO,KAAK,CAAC;qBACd;AACD,oBAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC9BA,mBAAa,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;AAC3C,wBAAA,QAAQ,EAAE;AACR,4BAAA,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ;4BACzB,CAAC,eAAe,GAAG,IAAI;4BACvB,SAAS,EAAE,IAAI,CAAC,EAAE;AACnB,yBAAA;AACF,qBAAA,CAAC,CAAC;oBACH,OAAO;AACL,wBAAA,aAAa,EAAE;4BACb,SAAS,EAAE,IAAI,CAAC,EAAE;4BAClB,MAAM,EAAE,OAAO,CAAC,MAAM;4BACtB,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,yBAAA;AACD,wBAAA,cAAc,EAAE;AACd,4BAAA,GAAG,EAAE,CAAA,EAAG,cAAc,CAAC,GAAG,CAAU,QAAA,CAAA;AACrC,yBAAA;qBACF,CAAC;iBACH;gBACD,OAAO;AACL,oBAAA,aAAa,EAAE;wBACb,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAC9C,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,qBAAA;AACD,oBAAA,cAAc,EAAE;AACd,wBAAA,GAAG,EAAE,CAAA,EAAG,cAAc,CAAC,GAAG,CAAU,QAAA,CAAA;AACrC,qBAAA;iBACF,CAAC;aACH;AACF,SAAA;KACF,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"getAdkConfig.cjs","sources":["../../src/plugins/getAdkConfig.ts"],"sourcesContent":["import { ProtocolBaseOption, threadActions } from \"@chatkit/core\";\nimport { ChatkitProps } from \"@/components/Chatkit/types\";\nimport { error } from \"console\";\nimport { toast } from \"@/hooks/use-toast\";\nimport { param } from \"motion/dist/react-m\";\n/**\n * 获取ADK协议配置 ,session 使用 threadID\n * @param options\n * @returns\n */\nconst getAdkConfig = (options: {\n appName: string;\n userId: string;\n url: string;\n token: string;\n}): ChatkitProps[\"initialConfig\"] => {\n return {\n protocolOptions: {\n protocol: \"ADK\",\n },\n requestOptions: {\n api: options.url,\n headers: {\n Authorization: `Bearer ${options.token}`,\n },\n defaultParams: {\n streaming: true,\n },\n beforeRequest: async (params) => {\n const requestOptions = params.requestOptions;\n const hasInitSession = params.thread.metadata[\"sessionInited\"] || false;\n const isInitingSession = params.thread.metadata[\"isInitingSession\"] || false;\n if (\n !params.requestOptions.api ||\n !params.requestOptions.headers?.Authorization\n ) {\n toast({\n title: \"配置错误\",\n description: \"请配置ADK配置\",\n variant: \"destructive\",\n });\n return false;\n }\n if (!hasInitSession && !isInitingSession) {\n let res;\n threadActions.updateThread(params.thread.id, {\n metadata: {\n ...params.thread.metadata,\n [\"isInitingSession\"]: true,\n },\n });\n try {\n res = await fetch(\n `${requestOptions.api}/apps/${options.appName}/users/${options.userId}/sessions/${params.thread.id}`,\n {\n method: \"POST\",\n headers: {\n Authorization: `${requestOptions.headers?.Authorization}`,\n },\n }\n );\n\n if (!res.ok) {\n const text = await res.text();\n params.onError?.(new Error(text));\n return false;\n }\n } catch (error) {\n console.error(\"Error initializing session:\", error);\n params.onError?.(error as Error);\n return false;\n }\n if (!threadActions.getThread(params.thread.id, false)) {\n // 用户可能清空了对话,重新创建了\n return false;\n }\n const data = await res.json();\n threadActions.updateThread(params.thread.id, {\n metadata: {\n ...params.thread.metadata,\n [\"sessionInited\"]: true,\n [\"isInitingSession\"]: false,\n sessionId: data.id,\n },\n });\n return {\n dynamicParams: {\n sessionId: data.id,\n userId: options.userId,\n appName: options.appName,\n },\n requestOptions: {\n api: `${requestOptions.api}/run_sse`,\n },\n };\n }\n return {\n dynamicParams: {\n sessionId: params.thread.metadata[\"sessionId\"],\n userId: options.userId,\n appName: options.appName,\n },\n requestOptions: {\n api: `${requestOptions.api}/run_sse`,\n },\n };\n },\n },\n };\n};\n\nexport default getAdkConfig;\n"],"names":["toast","threadActions"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getAdkConfig.d.ts","sourceRoot":"","sources":["../../src/plugins/getAdkConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D;;;;GAIG;AACH,QAAA,MAAM,YAAY,GAAI,SAAS;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,KAAG,YAAY,CAAC,eAAe,CAsF/B,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"getAdkConfig.d.ts","sourceRoot":"","sources":["../../src/plugins/getAdkConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D;;;;GAIG;AACH,QAAA,MAAM,YAAY,GAAI,SAAS;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,KAAG,YAAY,CAAC,eAAe,CA8F/B,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -22,6 +22,7 @@ const getAdkConfig = (options) => {
22
22
  beforeRequest: async (params) => {
23
23
  const requestOptions = params.requestOptions;
24
24
  const hasInitSession = params.thread.metadata["sessionInited"] || false;
25
+ const isInitingSession = params.thread.metadata["isInitingSession"] || false;
25
26
  if (!params.requestOptions.api ||
26
27
  !params.requestOptions.headers?.Authorization) {
27
28
  toast({
@@ -31,8 +32,14 @@ const getAdkConfig = (options) => {
31
32
  });
32
33
  return false;
33
34
  }
34
- if (!hasInitSession) {
35
+ if (!hasInitSession && !isInitingSession) {
35
36
  let res;
37
+ threadActions.updateThread(params.thread.id, {
38
+ metadata: {
39
+ ...params.thread.metadata,
40
+ ["isInitingSession"]: true,
41
+ },
42
+ });
36
43
  try {
37
44
  res = await fetch(`${requestOptions.api}/apps/${options.appName}/users/${options.userId}/sessions/${params.thread.id}`, {
38
45
  method: "POST",
@@ -60,6 +67,7 @@ const getAdkConfig = (options) => {
60
67
  metadata: {
61
68
  ...params.thread.metadata,
62
69
  ["sessionInited"]: true,
70
+ ["isInitingSession"]: false,
63
71
  sessionId: data.id,
64
72
  },
65
73
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getAdkConfig.js","sources":["../../src/plugins/getAdkConfig.ts"],"sourcesContent":["import { ProtocolBaseOption, threadActions } from \"@chatkit/core\";\nimport { ChatkitProps } from \"@/components/Chatkit/types\";\nimport { error } from \"console\";\nimport { toast } from \"@/hooks/use-toast\";\nimport { param } from \"motion/dist/react-m\";\n/**\n * 获取ADK协议配置 ,session 使用 threadID\n * @param options\n * @returns\n */\nconst getAdkConfig = (options: {\n appName: string;\n userId: string;\n url: string;\n token: string;\n}): ChatkitProps[\"initialConfig\"] => {\n return {\n protocolOptions: {\n protocol: \"ADK\",\n },\n requestOptions: {\n api: options.url,\n headers: {\n Authorization: `Bearer ${options.token}`,\n },\n defaultParams: {\n streaming: true,\n },\n beforeRequest: async (params) => {\n const requestOptions = params.requestOptions;\n const hasInitSession = params.thread.metadata[\"sessionInited\"] || false;\n if (\n !params.requestOptions.api ||\n !params.requestOptions.headers?.Authorization\n ) {\n toast({\n title: \"配置错误\",\n description: \"请配置ADK配置\",\n variant: \"destructive\",\n });\n return false;\n }\n if (!hasInitSession) {\n let res;\n try {\n res = await fetch(\n `${requestOptions.api}/apps/${options.appName}/users/${options.userId}/sessions/${params.thread.id}`,\n {\n method: \"POST\",\n headers: {\n Authorization: `${requestOptions.headers?.Authorization}`,\n },\n }\n );\n\n if (!res.ok) {\n const text = await res.text();\n params.onError?.(new Error(text));\n return false;\n }\n } catch (error) {\n console.error(\"Error initializing session:\", error);\n params.onError?.(error as Error);\n return false;\n }\n if (!threadActions.getThread(params.thread.id, false)) {\n // 用户可能清空了对话,重新创建了\n return false;\n }\n const data = await res.json();\n threadActions.updateThread(params.thread.id, {\n metadata: {\n ...params.thread.metadata,\n [\"sessionInited\"]: true,\n sessionId: data.id,\n },\n });\n return {\n dynamicParams: {\n sessionId: data.id,\n userId: options.userId,\n appName: options.appName,\n },\n requestOptions: {\n api: `${requestOptions.api}/run_sse`,\n },\n };\n }\n return {\n dynamicParams: {\n sessionId: params.thread.metadata[\"sessionId\"],\n userId: options.userId,\n appName: options.appName,\n },\n requestOptions: {\n api: `${requestOptions.api}/run_sse`,\n },\n };\n },\n },\n };\n};\n\nexport default getAdkConfig;\n"],"names":[],"mappings":";;;AAKA;;;;AAIG;AACH,MAAM,YAAY,GAAG,CAAC,OAKrB,KAAmC;IAClC,OAAO;AACL,QAAA,eAAe,EAAE;AACf,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA;AACD,QAAA,cAAc,EAAE;YACd,GAAG,EAAE,OAAO,CAAC,GAAG;AAChB,YAAA,OAAO,EAAE;AACP,gBAAA,aAAa,EAAE,CAAA,OAAA,EAAU,OAAO,CAAC,KAAK,CAAE,CAAA;AACzC,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA;AACD,YAAA,aAAa,EAAE,OAAO,MAAM,KAAI;AAC9B,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC7C,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC;AACxE,gBAAA,IACE,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG;oBAC1B,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,EAC7C;AACA,oBAAA,KAAK,CAAC;AACJ,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,WAAW,EAAE,UAAU;AACvB,wBAAA,OAAO,EAAE,aAAa;AACvB,qBAAA,CAAC,CAAC;AACH,oBAAA,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAC,cAAc,EAAE;AACnB,oBAAA,IAAI,GAAG,CAAC;AACR,oBAAA,IAAI;wBACF,GAAG,GAAG,MAAM,KAAK,CACf,GAAG,cAAc,CAAC,GAAG,CAAA,MAAA,EAAS,OAAO,CAAC,OAAO,CAAU,OAAA,EAAA,OAAO,CAAC,MAAM,CAAa,UAAA,EAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE,EACpG;AACE,4BAAA,MAAM,EAAE,MAAM;AACd,4BAAA,OAAO,EAAE;AACP,gCAAA,aAAa,EAAE,CAAG,EAAA,cAAc,CAAC,OAAO,EAAE,aAAa,CAAE,CAAA;AAC1D,6BAAA;AACF,yBAAA,CACF,CAAC;AAEF,wBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;AACX,4BAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;4BAC9B,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,4BAAA,OAAO,KAAK,CAAC;yBACd;qBACF;oBAAC,OAAO,KAAK,EAAE;AACd,wBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;AACpD,wBAAA,MAAM,CAAC,OAAO,GAAG,KAAc,CAAC,CAAC;AACjC,wBAAA,OAAO,KAAK,CAAC;qBACd;AACD,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE;;AAErD,wBAAA,OAAO,KAAK,CAAC;qBACd;AACD,oBAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC9B,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;AAC3C,wBAAA,QAAQ,EAAE;AACR,4BAAA,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ;4BACzB,CAAC,eAAe,GAAG,IAAI;4BACvB,SAAS,EAAE,IAAI,CAAC,EAAE;AACnB,yBAAA;AACF,qBAAA,CAAC,CAAC;oBACH,OAAO;AACL,wBAAA,aAAa,EAAE;4BACb,SAAS,EAAE,IAAI,CAAC,EAAE;4BAClB,MAAM,EAAE,OAAO,CAAC,MAAM;4BACtB,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,yBAAA;AACD,wBAAA,cAAc,EAAE;AACd,4BAAA,GAAG,EAAE,CAAA,EAAG,cAAc,CAAC,GAAG,CAAU,QAAA,CAAA;AACrC,yBAAA;qBACF,CAAC;iBACH;gBACD,OAAO;AACL,oBAAA,aAAa,EAAE;wBACb,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAC9C,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,qBAAA;AACD,oBAAA,cAAc,EAAE;AACd,wBAAA,GAAG,EAAE,CAAA,EAAG,cAAc,CAAC,GAAG,CAAU,QAAA,CAAA;AACrC,qBAAA;iBACF,CAAC;aACH;AACF,SAAA;KACF,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"getAdkConfig.js","sources":["../../src/plugins/getAdkConfig.ts"],"sourcesContent":["import { ProtocolBaseOption, threadActions } from \"@chatkit/core\";\nimport { ChatkitProps } from \"@/components/Chatkit/types\";\nimport { error } from \"console\";\nimport { toast } from \"@/hooks/use-toast\";\nimport { param } from \"motion/dist/react-m\";\n/**\n * 获取ADK协议配置 ,session 使用 threadID\n * @param options\n * @returns\n */\nconst getAdkConfig = (options: {\n appName: string;\n userId: string;\n url: string;\n token: string;\n}): ChatkitProps[\"initialConfig\"] => {\n return {\n protocolOptions: {\n protocol: \"ADK\",\n },\n requestOptions: {\n api: options.url,\n headers: {\n Authorization: `Bearer ${options.token}`,\n },\n defaultParams: {\n streaming: true,\n },\n beforeRequest: async (params) => {\n const requestOptions = params.requestOptions;\n const hasInitSession = params.thread.metadata[\"sessionInited\"] || false;\n const isInitingSession = params.thread.metadata[\"isInitingSession\"] || false;\n if (\n !params.requestOptions.api ||\n !params.requestOptions.headers?.Authorization\n ) {\n toast({\n title: \"配置错误\",\n description: \"请配置ADK配置\",\n variant: \"destructive\",\n });\n return false;\n }\n if (!hasInitSession && !isInitingSession) {\n let res;\n threadActions.updateThread(params.thread.id, {\n metadata: {\n ...params.thread.metadata,\n [\"isInitingSession\"]: true,\n },\n });\n try {\n res = await fetch(\n `${requestOptions.api}/apps/${options.appName}/users/${options.userId}/sessions/${params.thread.id}`,\n {\n method: \"POST\",\n headers: {\n Authorization: `${requestOptions.headers?.Authorization}`,\n },\n }\n );\n\n if (!res.ok) {\n const text = await res.text();\n params.onError?.(new Error(text));\n return false;\n }\n } catch (error) {\n console.error(\"Error initializing session:\", error);\n params.onError?.(error as Error);\n return false;\n }\n if (!threadActions.getThread(params.thread.id, false)) {\n // 用户可能清空了对话,重新创建了\n return false;\n }\n const data = await res.json();\n threadActions.updateThread(params.thread.id, {\n metadata: {\n ...params.thread.metadata,\n [\"sessionInited\"]: true,\n [\"isInitingSession\"]: false,\n sessionId: data.id,\n },\n });\n return {\n dynamicParams: {\n sessionId: data.id,\n userId: options.userId,\n appName: options.appName,\n },\n requestOptions: {\n api: `${requestOptions.api}/run_sse`,\n },\n };\n }\n return {\n dynamicParams: {\n sessionId: params.thread.metadata[\"sessionId\"],\n userId: options.userId,\n appName: options.appName,\n },\n requestOptions: {\n api: `${requestOptions.api}/run_sse`,\n },\n };\n },\n },\n };\n};\n\nexport default getAdkConfig;\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.27",
3
+ "version": "0.1.0-beta.29",
4
4
  "type": "module",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",