@pstdio/ui 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/{MermaidComponent-DDCxR-Gs.js → MermaidComponent-D7Baqkwx.js} +2 -2
  2. package/dist/{MermaidComponent-DDCxR-Gs.js.map → MermaidComponent-D7Baqkwx.js.map} +1 -1
  3. package/dist/chat-ui.js +11 -9
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/components/activity/activity-avatar.d.ts +9 -0
  6. package/dist/components/activity/activity-comment.d.ts +19 -0
  7. package/dist/components/activity/activity-composer.d.ts +18 -0
  8. package/dist/components/activity/activity-event.d.ts +12 -0
  9. package/dist/components/activity/activity-root.d.ts +15 -0
  10. package/dist/components/activity/activity-timeline.d.ts +6 -0
  11. package/dist/components/activity/activity.types.d.ts +5 -0
  12. package/dist/components/activity/index.d.ts +25 -0
  13. package/dist/components/chat-ui/components/ai-conversation.d.ts +4 -4
  14. package/dist/components/rich-text/shared/editor-config.d.ts +1 -0
  15. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +16 -0
  16. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/commands.d.ts +2 -0
  17. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/index.d.ts +3 -0
  18. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/link-editor-content.d.ts +18 -0
  19. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.d.ts +1 -0
  20. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.d.ts +2 -0
  21. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +1 -1
  22. package/dist/components/rich-text/shared/transformers/markdown-transformers-test-utils.d.ts +3 -0
  23. package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +1 -0
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.js +2047 -1786
  26. package/dist/index.js.map +1 -1
  27. package/dist/{rich-message-DeJwzVeV.js → rich-message-33DPxuWJ.js} +502 -464
  28. package/dist/rich-message-33DPxuWJ.js.map +1 -0
  29. package/dist/rich-text.js +738 -414
  30. package/dist/rich-text.js.map +1 -1
  31. package/dist/style.css +1 -1
  32. package/dist/theme/recipes/alert.d.ts +1 -1
  33. package/dist/theme/recipes/dialog.d.ts +1 -1
  34. package/dist/theme/recipes/drawer.d.ts +1 -1
  35. package/dist/theme/recipes/menu.d.ts +1 -1
  36. package/dist/theme/recipes/popover.d.ts +1 -1
  37. package/dist/theme/tokens/borders.d.ts +6 -24
  38. package/dist/theme/tokens/colors.d.ts +168 -168
  39. package/dist/theme/tokens/shadows.d.ts +5 -5
  40. package/dist/{theme-Dq4r3aRE.js → theme-0SQvHr1t.js} +140 -158
  41. package/dist/theme-0SQvHr1t.js.map +1 -0
  42. package/dist/theme.js +1 -1
  43. package/package.json +1 -1
  44. package/dist/rich-message-DeJwzVeV.js.map +0 -1
  45. package/dist/theme-Dq4r3aRE.js.map +0 -1
@@ -5,7 +5,7 @@ import { useLexicalEditable as K } from "@lexical/react/useLexicalEditable";
5
5
  import { $getNodeByKey as U } from "lexical";
6
6
  import $ from "mermaid";
7
7
  import { useState as t, useRef as W, useId as q, useEffect as v } from "react";
8
- import { $ as G } from "./rich-message-DeJwzVeV.js";
8
+ import { $ as G } from "./rich-message-33DPxuWJ.js";
9
9
  let k = !1;
10
10
  function J() {
11
11
  k || ($.initialize({
@@ -121,4 +121,4 @@ function le(i) {
121
121
  export {
122
122
  le as default
123
123
  };
124
- //# sourceMappingURL=MermaidComponent-DDCxR-Gs.js.map
124
+ //# sourceMappingURL=MermaidComponent-D7Baqkwx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MermaidComponent-DDCxR-Gs.js","sources":["../src/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.tsx"],"sourcesContent":["import { Box, Button, Flex, NumberInput, Text, Textarea } from \"@chakra-ui/react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\";\nimport { $getNodeByKey } from \"lexical\";\nimport mermaid from \"mermaid\";\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport { $isMermaidNode } from \"./MermaidNode\";\n\nlet mermaidInitialized = false;\n\nfunction initializeMermaid() {\n if (mermaidInitialized) {\n return;\n }\n\n mermaid.initialize({\n startOnLoad: false,\n securityLevel: \"strict\",\n theme: \"default\",\n });\n\n mermaidInitialized = true;\n}\n\nfunction formatErrorMessage(error: unknown) {\n if (!(error instanceof Error)) {\n return \"Failed to render mermaid diagram.\";\n }\n\n return error.message;\n}\n\nconst MIN_ZOOM = 0;\nconst MAX_ZOOM = 2;\nconst ZOOM_STEP = 0.1;\n\nfunction clampZoom(value: number) {\n return Number(Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, value)).toFixed(2));\n}\n\ninterface MermaidComponentProps {\n code: string;\n nodeKey: string;\n}\n\nexport default function MermaidComponent(props: MermaidComponentProps) {\n const { code, nodeKey } = props;\n const [editor] = useLexicalComposerContext();\n const isEditable = useLexicalEditable();\n const [isEditing, setIsEditing] = useState(false);\n const [draftCode, setDraftCode] = useState(code);\n const [previewCode, setPreviewCode] = useState(code);\n const [svgMarkup, setSvgMarkup] = useState(\"\");\n const [renderError, setRenderError] = useState(\"\");\n const [isRendering, setIsRendering] = useState(false);\n const [zoom, setZoom] = useState(1);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [isPanning, setIsPanning] = useState(false);\n const panStartRef = useRef({ pointerId: -1, x: 0, y: 0 });\n const renderId = useId().replaceAll(\":\", \"-\");\n\n useEffect(() => {\n setDraftCode(code);\n setPreviewCode(code);\n }, [code]);\n\n useEffect(() => {\n let cancelled = false;\n\n async function renderDiagram() {\n initializeMermaid();\n setIsRendering(true);\n setRenderError(\"\");\n\n try {\n const { svg } = await mermaid.render(`mermaid-${renderId}`, previewCode);\n if (!cancelled) {\n setSvgMarkup(svg);\n }\n } catch (error) {\n if (!cancelled) {\n setSvgMarkup(\"\");\n setRenderError(formatErrorMessage(error));\n }\n } finally {\n if (!cancelled) {\n setIsRendering(false);\n }\n }\n }\n\n if (!isEditing) {\n void renderDiagram();\n }\n\n return () => {\n cancelled = true;\n };\n }, [isEditing, previewCode, renderId]);\n\n const commitCodeChanges = () => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isMermaidNode(node)) {\n node.setCode(draftCode);\n }\n });\n\n setPreviewCode(draftCode);\n resetView();\n setIsEditing(false);\n };\n\n const cancelEditing = () => {\n setDraftCode(previewCode);\n setIsEditing(false);\n };\n\n const resetView = () => {\n setZoom(1);\n setOffset({ x: 0, y: 0 });\n };\n\n return (\n <Box borderWidth=\"1px\" borderColor=\"border.muted\" borderRadius=\"md\" overflow=\"hidden\" width=\"100%\">\n <Flex justifyContent=\"flex-end\" alignItems=\"center\" gap=\"xs\" paddingX=\"sm\" paddingY=\"xs\" bg=\"bg.muted\">\n {!isEditing && !renderError && !isRendering ? (\n <NumberInput.Root\n size=\"xs\"\n width=\"64px\"\n defaultValue={\"100\"}\n min={MIN_ZOOM}\n max={MAX_ZOOM}\n step={ZOOM_STEP}\n formatOptions={{\n style: \"percent\",\n }}\n onValueChange={({ valueAsNumber }) => {\n if (Number.isNaN(valueAsNumber)) {\n return;\n }\n\n setZoom(clampZoom(valueAsNumber));\n }}\n >\n <NumberInput.Control />\n <NumberInput.Input aria-label=\"Zoom percentage\" />\n </NumberInput.Root>\n ) : null}\n\n {isEditable ? (\n isEditing ? (\n <Flex gap=\"xs\">\n <Button size=\"xs\" variant=\"surface\" onClick={cancelEditing}>\n Cancel\n </Button>\n <Button size=\"xs\" onClick={commitCodeChanges}>\n Preview\n </Button>\n </Flex>\n ) : (\n <Button size=\"xs\" variant=\"surface\" onClick={() => setIsEditing(true)}>\n Edit\n </Button>\n )\n ) : null}\n </Flex>\n\n {isEditing ? (\n <Box padding=\"sm\" bg=\"bg.muted\">\n <Textarea\n value={draftCode}\n onChange={(event) => setDraftCode(event.target.value)}\n minHeight=\"180px\"\n resize=\"vertical\"\n fontFamily=\"mono\"\n fontSize=\"sm\"\n spellCheck={false}\n />\n </Box>\n ) : (\n <Box paddingX=\"sm\" paddingBottom=\"sm\" background=\"bg.muted\">\n {isRendering ? <Text color=\"fg.muted\">Rendering diagram...</Text> : null}\n {renderError ? (\n <Box>\n <Text color=\"fg.error\" textStyle=\"label/S/medium\">\n Mermaid parse failed\n </Text>\n <Text color=\"fg.muted\" textStyle=\"label/S/regular\" marginTop=\"2xs\">\n {renderError}\n </Text>\n <Box as=\"pre\" marginTop=\"sm\" padding=\"sm\" borderRadius=\"sm\" bg=\"bg.panel\" overflowX=\"auto\">\n {previewCode}\n </Box>\n </Box>\n ) : (\n <Box\n borderRadius=\"sm\"\n overflow=\"hidden\"\n minHeight=\"160px\"\n onWheel={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n >\n <Box\n transform={`translate(${offset.x}px, ${offset.y}px) scale(${zoom})`}\n transformOrigin=\"top left\"\n cursor={isPanning ? \"grabbing\" : \"grab\"}\n touchAction=\"none\"\n onPointerDown={(event) => {\n panStartRef.current = {\n pointerId: event.pointerId,\n x: event.clientX - offset.x,\n y: event.clientY - offset.y,\n };\n setIsPanning(true);\n event.currentTarget.setPointerCapture(event.pointerId);\n }}\n onPointerMove={(event) => {\n if (!isPanning || panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setOffset({\n x: event.clientX - panStartRef.current.x,\n y: event.clientY - panStartRef.current.y,\n });\n }}\n onPointerUp={(event) => {\n if (panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setIsPanning(false);\n event.currentTarget.releasePointerCapture(event.pointerId);\n }}\n onPointerCancel={() => {\n setIsPanning(false);\n }}\n css={{\n \"& img\": {\n display: \"block\",\n width: \"100%\",\n height: \"auto\",\n userSelect: \"none\",\n },\n }}\n >\n <img\n alt=\"Mermaid diagram\"\n src={`data:image/svg+xml;utf8,${encodeURIComponent(svgMarkup)}`}\n draggable={false}\n />\n </Box>\n </Box>\n )}\n </Box>\n )}\n </Box>\n );\n}\n"],"names":["mermaidInitialized","initializeMermaid","mermaid","initialize","startOnLoad","securityLevel","theme","formatErrorMessage","error","Error","message","MIN_ZOOM","MAX_ZOOM","ZOOM_STEP","clampZoom","value","Number","Math","min","max","toFixed","MermaidComponent","props","code","nodeKey","editor","useLexicalComposerContext","isEditable","useLexicalEditable","isEditing","setIsEditing","useState","draftCode","setDraftCode","previewCode","setPreviewCode","svgMarkup","setSvgMarkup","renderError","setRenderError","isRendering","setIsRendering","zoom","setZoom","offset","setOffset","x","y","isPanning","setIsPanning","panStartRef","useRef","pointerId","renderId","useId","replaceAll","useEffect","cancelled","renderDiagram","svg","render","commitCodeChanges","update","node","$getNodeByKey","$isMermaidNode","setCode","resetView","cancelEditing","jsxs","Box","Flex","NumberInput","style","valueAsNumber","isNaN","jsx","Button","Textarea","event","target","Text","preventDefault","stopPropagation","current","clientX","clientY","currentTarget","setPointerCapture","releasePointerCapture","display","width","height","userSelect","encodeURIComponent"],"mappings":"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"}
1
+ {"version":3,"file":"MermaidComponent-D7Baqkwx.js","sources":["../src/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.tsx"],"sourcesContent":["import { Box, Button, Flex, NumberInput, Text, Textarea } from \"@chakra-ui/react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\";\nimport { $getNodeByKey } from \"lexical\";\nimport mermaid from \"mermaid\";\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport { $isMermaidNode } from \"./MermaidNode\";\n\nlet mermaidInitialized = false;\n\nfunction initializeMermaid() {\n if (mermaidInitialized) {\n return;\n }\n\n mermaid.initialize({\n startOnLoad: false,\n securityLevel: \"strict\",\n theme: \"default\",\n });\n\n mermaidInitialized = true;\n}\n\nfunction formatErrorMessage(error: unknown) {\n if (!(error instanceof Error)) {\n return \"Failed to render mermaid diagram.\";\n }\n\n return error.message;\n}\n\nconst MIN_ZOOM = 0;\nconst MAX_ZOOM = 2;\nconst ZOOM_STEP = 0.1;\n\nfunction clampZoom(value: number) {\n return Number(Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, value)).toFixed(2));\n}\n\ninterface MermaidComponentProps {\n code: string;\n nodeKey: string;\n}\n\nexport default function MermaidComponent(props: MermaidComponentProps) {\n const { code, nodeKey } = props;\n const [editor] = useLexicalComposerContext();\n const isEditable = useLexicalEditable();\n const [isEditing, setIsEditing] = useState(false);\n const [draftCode, setDraftCode] = useState(code);\n const [previewCode, setPreviewCode] = useState(code);\n const [svgMarkup, setSvgMarkup] = useState(\"\");\n const [renderError, setRenderError] = useState(\"\");\n const [isRendering, setIsRendering] = useState(false);\n const [zoom, setZoom] = useState(1);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [isPanning, setIsPanning] = useState(false);\n const panStartRef = useRef({ pointerId: -1, x: 0, y: 0 });\n const renderId = useId().replaceAll(\":\", \"-\");\n\n useEffect(() => {\n setDraftCode(code);\n setPreviewCode(code);\n }, [code]);\n\n useEffect(() => {\n let cancelled = false;\n\n async function renderDiagram() {\n initializeMermaid();\n setIsRendering(true);\n setRenderError(\"\");\n\n try {\n const { svg } = await mermaid.render(`mermaid-${renderId}`, previewCode);\n if (!cancelled) {\n setSvgMarkup(svg);\n }\n } catch (error) {\n if (!cancelled) {\n setSvgMarkup(\"\");\n setRenderError(formatErrorMessage(error));\n }\n } finally {\n if (!cancelled) {\n setIsRendering(false);\n }\n }\n }\n\n if (!isEditing) {\n void renderDiagram();\n }\n\n return () => {\n cancelled = true;\n };\n }, [isEditing, previewCode, renderId]);\n\n const commitCodeChanges = () => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isMermaidNode(node)) {\n node.setCode(draftCode);\n }\n });\n\n setPreviewCode(draftCode);\n resetView();\n setIsEditing(false);\n };\n\n const cancelEditing = () => {\n setDraftCode(previewCode);\n setIsEditing(false);\n };\n\n const resetView = () => {\n setZoom(1);\n setOffset({ x: 0, y: 0 });\n };\n\n return (\n <Box borderWidth=\"1px\" borderColor=\"border.muted\" borderRadius=\"md\" overflow=\"hidden\" width=\"100%\">\n <Flex justifyContent=\"flex-end\" alignItems=\"center\" gap=\"xs\" paddingX=\"sm\" paddingY=\"xs\" bg=\"bg.muted\">\n {!isEditing && !renderError && !isRendering ? (\n <NumberInput.Root\n size=\"xs\"\n width=\"64px\"\n defaultValue={\"100\"}\n min={MIN_ZOOM}\n max={MAX_ZOOM}\n step={ZOOM_STEP}\n formatOptions={{\n style: \"percent\",\n }}\n onValueChange={({ valueAsNumber }) => {\n if (Number.isNaN(valueAsNumber)) {\n return;\n }\n\n setZoom(clampZoom(valueAsNumber));\n }}\n >\n <NumberInput.Control />\n <NumberInput.Input aria-label=\"Zoom percentage\" />\n </NumberInput.Root>\n ) : null}\n\n {isEditable ? (\n isEditing ? (\n <Flex gap=\"xs\">\n <Button size=\"xs\" variant=\"surface\" onClick={cancelEditing}>\n Cancel\n </Button>\n <Button size=\"xs\" onClick={commitCodeChanges}>\n Preview\n </Button>\n </Flex>\n ) : (\n <Button size=\"xs\" variant=\"surface\" onClick={() => setIsEditing(true)}>\n Edit\n </Button>\n )\n ) : null}\n </Flex>\n\n {isEditing ? (\n <Box padding=\"sm\" bg=\"bg.muted\">\n <Textarea\n value={draftCode}\n onChange={(event) => setDraftCode(event.target.value)}\n minHeight=\"180px\"\n resize=\"vertical\"\n fontFamily=\"mono\"\n fontSize=\"sm\"\n spellCheck={false}\n />\n </Box>\n ) : (\n <Box paddingX=\"sm\" paddingBottom=\"sm\" background=\"bg.muted\">\n {isRendering ? <Text color=\"fg.muted\">Rendering diagram...</Text> : null}\n {renderError ? (\n <Box>\n <Text color=\"fg.error\" textStyle=\"label/S/medium\">\n Mermaid parse failed\n </Text>\n <Text color=\"fg.muted\" textStyle=\"label/S/regular\" marginTop=\"2xs\">\n {renderError}\n </Text>\n <Box as=\"pre\" marginTop=\"sm\" padding=\"sm\" borderRadius=\"sm\" bg=\"bg.panel\" overflowX=\"auto\">\n {previewCode}\n </Box>\n </Box>\n ) : (\n <Box\n borderRadius=\"sm\"\n overflow=\"hidden\"\n minHeight=\"160px\"\n onWheel={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n >\n <Box\n transform={`translate(${offset.x}px, ${offset.y}px) scale(${zoom})`}\n transformOrigin=\"top left\"\n cursor={isPanning ? \"grabbing\" : \"grab\"}\n touchAction=\"none\"\n onPointerDown={(event) => {\n panStartRef.current = {\n pointerId: event.pointerId,\n x: event.clientX - offset.x,\n y: event.clientY - offset.y,\n };\n setIsPanning(true);\n event.currentTarget.setPointerCapture(event.pointerId);\n }}\n onPointerMove={(event) => {\n if (!isPanning || panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setOffset({\n x: event.clientX - panStartRef.current.x,\n y: event.clientY - panStartRef.current.y,\n });\n }}\n onPointerUp={(event) => {\n if (panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setIsPanning(false);\n event.currentTarget.releasePointerCapture(event.pointerId);\n }}\n onPointerCancel={() => {\n setIsPanning(false);\n }}\n css={{\n \"& img\": {\n display: \"block\",\n width: \"100%\",\n height: \"auto\",\n userSelect: \"none\",\n },\n }}\n >\n <img\n alt=\"Mermaid diagram\"\n src={`data:image/svg+xml;utf8,${encodeURIComponent(svgMarkup)}`}\n draggable={false}\n />\n </Box>\n </Box>\n )}\n </Box>\n )}\n </Box>\n );\n}\n"],"names":["mermaidInitialized","initializeMermaid","mermaid","initialize","startOnLoad","securityLevel","theme","formatErrorMessage","error","Error","message","MIN_ZOOM","MAX_ZOOM","ZOOM_STEP","clampZoom","value","Number","Math","min","max","toFixed","MermaidComponent","props","code","nodeKey","editor","useLexicalComposerContext","isEditable","useLexicalEditable","isEditing","setIsEditing","useState","draftCode","setDraftCode","previewCode","setPreviewCode","svgMarkup","setSvgMarkup","renderError","setRenderError","isRendering","setIsRendering","zoom","setZoom","offset","setOffset","x","y","isPanning","setIsPanning","panStartRef","useRef","pointerId","renderId","useId","replaceAll","useEffect","cancelled","renderDiagram","svg","render","commitCodeChanges","update","node","$getNodeByKey","$isMermaidNode","setCode","resetView","cancelEditing","jsxs","Box","Flex","NumberInput","style","valueAsNumber","isNaN","jsx","Button","Textarea","event","target","Text","preventDefault","stopPropagation","current","clientX","clientY","currentTarget","setPointerCapture","releasePointerCapture","display","width","height","userSelect","encodeURIComponent"],"mappings":"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"}
package/dist/chat-ui.js CHANGED
@@ -5,7 +5,7 @@ import { ArrowDownIcon as Dn, ShieldX as Ln, ShieldCheck as qn, Check as vn, Squ
5
5
  import { StickToBottom as oo, useStickToBottomContext as Mt } from "use-stick-to-bottom";
6
6
  import { S as Yt, T as so } from "./get-file-type-icon-Bwqf1WXA.js";
7
7
  import { useRef as nt, useEffect as De, useState as Z } from "react";
8
- import { h as Tt, P as ro, g as io, R as Jt, i as lo } from "./rich-message-DeJwzVeV.js";
8
+ import { i as Tt, P as ro, h as io, R as Jt, j as lo } from "./rich-message-33DPxuWJ.js";
9
9
  import "@lexical/react/LexicalCollaborationContext";
10
10
  import "@lexical/react/LexicalCollaborationPlugin";
11
11
  import "@lexical/react/LexicalComposer";
@@ -22,6 +22,7 @@ import "@lexical/react/LexicalComposerContext";
22
22
  import "@lexical/utils";
23
23
  import "lexical";
24
24
  import "react-dom";
25
+ import "@lexical/link";
25
26
  import "@lexical/list";
26
27
  import "@lexical/rich-text";
27
28
  import "@lexical/selection";
@@ -31,6 +32,7 @@ import "@lexical/react/LexicalCheckListPlugin";
31
32
  import "@lexical/react/LexicalHistoryPlugin";
32
33
  import "@lexical/react/LexicalOnChangePlugin";
33
34
  import "@lexical/react/LexicalTreeView";
35
+ import "@lexical/react/LexicalClickableLinkPlugin";
34
36
  import { C as Zt, R as co, a as ao, D as uo, b as en, A as vt, E as fo } from "./radio-C42qncrD.js";
35
37
  const po = {
36
38
  "aria-roledescription": "conversation",
@@ -200,7 +202,7 @@ const po = {
200
202
  if (t == null) return null;
201
203
  const e = typeof t == "string" ? t : JSON.stringify(t, null, 2);
202
204
  return e.length === 0 ? null : e.length > 200 ? `${e.slice(0, 200)}...` : e;
203
- }, ki = (t) => {
205
+ }, Ti = (t) => {
204
206
  const e = S(19), {
205
207
  toolName: n,
206
208
  toolInput: s,
@@ -1895,7 +1897,7 @@ const Pr = (t) => t === "user" || t === "assistant" || t === "developer" ? t : "
1895
1897
  P,
1896
1898
  L
1897
1899
  ] }), e[39] = P, e[40] = L, e[41] = O) : O = e[41], O;
1898
- }, wi = (t) => {
1900
+ }, Ci = (t) => {
1899
1901
  const e = S(30), {
1900
1902
  messages: n,
1901
1903
  streaming: s,
@@ -1972,7 +1974,7 @@ function Qr(t, e) {
1972
1974
  function Fr() {
1973
1975
  return /* @__PURE__ */ new Set();
1974
1976
  }
1975
- const Vt = (t) => /* @__PURE__ */ l(z, { gap: "xs", w: "full", children: t.map((e, n) => /* @__PURE__ */ l(En, { height: "3", width: e, borderRadius: "xs" }, `${e}-${n}`)) }), Ti = () => {
1977
+ const Vt = (t) => /* @__PURE__ */ l(z, { gap: "xs", w: "full", children: t.map((e, n) => /* @__PURE__ */ l(En, { height: "3", width: e, borderRadius: "xs" }, `${e}-${n}`)) }), _i = () => {
1976
1978
  const t = S(2);
1977
1979
  let e;
1978
1980
  t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ l(de.Root, { from: "user", children: /* @__PURE__ */ l(de.Content, { from: "user", children: Vt(["72%", "46%"]) }) }), t[0] = e) : e = t[0];
@@ -1981,7 +1983,7 @@ const Vt = (t) => /* @__PURE__ */ l(z, { gap: "xs", w: "full", children: t.map((
1981
1983
  e,
1982
1984
  /* @__PURE__ */ l(de.Root, { from: "assistant", children: /* @__PURE__ */ l(de.Content, { from: "assistant", children: Vt(["76%", "62%", "40%"]) }) })
1983
1985
  ] }), t[1] = n) : n = t[1], n;
1984
- }, Ci = (t) => {
1986
+ }, Ai = (t) => {
1985
1987
  const e = S(14), {
1986
1988
  changesLabel: n,
1987
1989
  additions: s,
@@ -2009,14 +2011,14 @@ const Vt = (t) => /* @__PURE__ */ l(z, { gap: "xs", w: "full", children: t.map((
2009
2011
  ] }), e[9] = d, e[10] = f, e[11] = m, e[12] = p, e[13] = h) : h = e[13], h;
2010
2012
  };
2011
2013
  export {
2012
- ki as ApprovalPrompt,
2014
+ Ti as ApprovalPrompt,
2013
2015
  _o as AutoScroll,
2014
2016
  jo as ChatInput,
2015
2017
  de as ChatMessage,
2016
- wi as ChatPanel,
2018
+ Ci as ChatPanel,
2017
2019
  Ct as ChatPrimitives,
2018
- Ti as ChatSkeleton,
2019
- Ci as ChatWorkspaceHub,
2020
+ _i as ChatSkeleton,
2021
+ Ai as ChatWorkspaceHub,
2020
2022
  Ho as SendButton,
2021
2023
  Go as createSerializedPromptState
2022
2024
  };