@anvia/studio 1.1.1 → 1.2.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.
- package/README.md +52 -0
- package/dist/index.d.ts +31 -4
- package/dist/index.js +19806 -626
- package/dist/index.js.map +1 -1
- package/dist/ui/assets/ArrowClockwise.es-Dn4lp0ac.js +2 -0
- package/dist/ui/assets/{ArrowClockwise.es-5vr4h4OH.js.map → ArrowClockwise.es-Dn4lp0ac.js.map} +1 -1
- package/dist/ui/assets/Check.es-BaQZo8Jl.js +2 -0
- package/dist/ui/assets/{Check.es-DgvuCllR.js.map → Check.es-BaQZo8Jl.js.map} +1 -1
- package/dist/ui/assets/Combination-Cj4UR5tg.js +42 -0
- package/dist/ui/assets/Combination-Cj4UR5tg.js.map +1 -0
- package/dist/ui/assets/Copy.es-CU5v9Pav.js +2 -0
- package/dist/ui/assets/{Copy.es-DV7tb_eC.js.map → Copy.es-CU5v9Pav.js.map} +1 -1
- package/dist/ui/assets/MagnifyingGlass.es-C72UX0bz.js +2 -0
- package/dist/ui/assets/{MagnifyingGlass.es-yzEp9c89.js.map → MagnifyingGlass.es-C72UX0bz.js.map} +1 -1
- package/dist/ui/assets/Wrench.es-Q3fLRWow.js +2 -0
- package/dist/ui/assets/{Wrench.es-rRuP3Mrh.js.map → Wrench.es-Q3fLRWow.js.map} +1 -1
- package/dist/ui/assets/agents-page-6DCSMWnZ.js +2 -0
- package/dist/ui/assets/{agents-page-ByhvVYOx.js.map → agents-page-6DCSMWnZ.js.map} +1 -1
- package/dist/ui/assets/badge-DUs0RCHV.js +2 -0
- package/dist/ui/assets/{badge-C3fkxijh.js.map → badge-DUs0RCHV.js.map} +1 -1
- package/dist/ui/assets/button-BWxpVW85.js +2 -0
- package/dist/ui/assets/{button-B_AoswCu.js.map → button-BWxpVW85.js.map} +1 -1
- package/dist/ui/assets/dialog-DauYXFnG.js +2 -0
- package/dist/ui/assets/{dialog-BfKpnby4.js.map → dialog-DauYXFnG.js.map} +1 -1
- package/dist/ui/assets/dist-BmLOFYIW.js +2 -0
- package/dist/ui/assets/{dist-Dr6EWOhl.js.map → dist-BmLOFYIW.js.map} +1 -1
- package/dist/ui/assets/dist-CHLp-Np4.js +2 -0
- package/dist/ui/assets/dist-CHLp-Np4.js.map +1 -0
- package/dist/ui/assets/dist-DD97Shn_.js +2 -0
- package/dist/ui/assets/{dist-CUv0NHNl.js.map → dist-DD97Shn_.js.map} +1 -1
- package/dist/ui/assets/graphs-page-BA0jzknS.js +2 -0
- package/dist/ui/assets/{graphs-page-vBCjLEva.js.map → graphs-page-BA0jzknS.js.map} +1 -1
- package/dist/ui/assets/icon-ksPSRwE8.js +2 -0
- package/dist/ui/assets/{icon-DyadsXLr.js.map → icon-ksPSRwE8.js.map} +1 -1
- package/dist/ui/assets/index-DDzW7QMd.css +2 -0
- package/dist/ui/assets/{index-D7rMlAzl.js → index-Dyjst4Yt.js} +5 -5
- package/dist/ui/assets/index-Dyjst4Yt.js.map +1 -0
- package/dist/ui/assets/input-DdUxz9c8.js +2 -0
- package/dist/ui/assets/{input-DuERdYTl.js.map → input-DdUxz9c8.js.map} +1 -1
- package/dist/ui/assets/knowledge-page-BVVc4w3w.js +2 -0
- package/dist/ui/assets/{knowledge-page-ZeAUXg01.js.map → knowledge-page-BVVc4w3w.js.map} +1 -1
- package/dist/ui/assets/mcps-page-BfF4B22U.js +2 -0
- package/dist/ui/assets/{mcps-page-BSkygYJM.js.map → mcps-page-BfF4B22U.js.map} +1 -1
- package/dist/ui/assets/{memory-page-B2pWZ4in.js → memory-page-BQkt2BAW.js} +2 -2
- package/dist/ui/assets/memory-page-BQkt2BAW.js.map +1 -0
- package/dist/ui/assets/pipelines-page-Xx2kQNCI.js +2 -0
- package/dist/ui/assets/pipelines-page-Xx2kQNCI.js.map +1 -0
- package/dist/ui/assets/{renderers-DRD34eUr.js → renderers-CrjMPAR2.js} +5 -5
- package/dist/ui/assets/{renderers-DRD34eUr.js.map → renderers-CrjMPAR2.js.map} +1 -1
- package/dist/ui/assets/{request-DbgMKweq.js → request-DYxy87Kp.js} +3 -3
- package/dist/ui/assets/{request-DbgMKweq.js.map → request-DYxy87Kp.js.map} +1 -1
- package/dist/ui/assets/sandboxes-page-BwidNA5G.js +2 -0
- package/dist/ui/assets/{sandboxes-page-Bo4S4ILL.js.map → sandboxes-page-BwidNA5G.js.map} +1 -1
- package/dist/ui/assets/select-C4MbvpHr.js +2 -0
- package/dist/ui/assets/{select-BdCBnmXx.js.map → select-C4MbvpHr.js.map} +1 -1
- package/dist/ui/assets/sessions-page-C3dJDjJb.js +2 -0
- package/dist/ui/assets/{sessions-page-BMnR-r_F.js.map → sessions-page-C3dJDjJb.js.map} +1 -1
- package/dist/ui/assets/status-page-92JD9Hj8.js +2 -0
- package/dist/ui/assets/{status-page-CqmMMSo2.js.map → status-page-92JD9Hj8.js.map} +1 -1
- package/dist/ui/assets/studio-CtQdOoHK.js +2 -0
- package/dist/ui/assets/{studio-DzEdCFsX.js.map → studio-CtQdOoHK.js.map} +1 -1
- package/dist/ui/assets/style-CrHHNFw2.js +8 -0
- package/dist/ui/assets/{style-FGiH1LIC.js.map → style-CrHHNFw2.js.map} +1 -1
- package/dist/ui/assets/team-playground-GcG3j0Hl.js +2 -0
- package/dist/ui/assets/team-playground-GcG3j0Hl.js.map +1 -0
- package/dist/ui/assets/textarea-gPj9-ALc.js +2 -0
- package/dist/ui/assets/{textarea-fAtCF2cf.js.map → textarea-gPj9-ALc.js.map} +1 -1
- package/dist/ui/assets/tool-runner-xLspgGPa.js +2 -0
- package/dist/ui/assets/{tool-runner-CExWna8k.js.map → tool-runner-xLspgGPa.js.map} +1 -1
- package/dist/ui/assets/tools-page-BMyx2xRT.js +2 -0
- package/dist/ui/assets/{tools-page-CdkExqNd.js.map → tools-page-BMyx2xRT.js.map} +1 -1
- package/dist/ui/assets/trace-browser-Axd-aif6.js +4 -0
- package/dist/ui/assets/{trace-browser-Co9iS9HR.js.map → trace-browser-Axd-aif6.js.map} +1 -1
- package/dist/ui/assets/transcript-item-Bl3Yl-NT.js +3 -0
- package/dist/ui/assets/{transcript-item-D9NWsnsD.js.map → transcript-item-Bl3Yl-NT.js.map} +1 -1
- package/dist/ui/assets/with-selector-BIQdjRiO.js +2 -0
- package/dist/ui/assets/{with-selector-B8ah9Wvu.js.map → with-selector-BIQdjRiO.js.map} +1 -1
- package/dist/ui/index.html +17 -17
- package/package.json +8 -8
- package/dist/ui/assets/ArrowClockwise.es-5vr4h4OH.js +0 -2
- package/dist/ui/assets/Check.es-DgvuCllR.js +0 -2
- package/dist/ui/assets/Copy.es-DV7tb_eC.js +0 -2
- package/dist/ui/assets/MagnifyingGlass.es-yzEp9c89.js +0 -2
- package/dist/ui/assets/Wrench.es-rRuP3Mrh.js +0 -2
- package/dist/ui/assets/agents-page-ByhvVYOx.js +0 -2
- package/dist/ui/assets/badge-C3fkxijh.js +0 -2
- package/dist/ui/assets/button-B_AoswCu.js +0 -2
- package/dist/ui/assets/dialog-BfKpnby4.js +0 -2
- package/dist/ui/assets/dist-CUv0NHNl.js +0 -2
- package/dist/ui/assets/dist-Dr6EWOhl.js +0 -2
- package/dist/ui/assets/es2015-DGcxtKLK.js +0 -42
- package/dist/ui/assets/es2015-DGcxtKLK.js.map +0 -1
- package/dist/ui/assets/graphs-page-vBCjLEva.js +0 -2
- package/dist/ui/assets/icon-DyadsXLr.js +0 -2
- package/dist/ui/assets/index-BGl7eOVR.css +0 -2
- package/dist/ui/assets/index-D7rMlAzl.js.map +0 -1
- package/dist/ui/assets/input-DuERdYTl.js +0 -2
- package/dist/ui/assets/knowledge-page-ZeAUXg01.js +0 -2
- package/dist/ui/assets/mcps-page-BSkygYJM.js +0 -2
- package/dist/ui/assets/memory-page-B2pWZ4in.js.map +0 -1
- package/dist/ui/assets/pipelines-page-DAqa699J.js +0 -2
- package/dist/ui/assets/pipelines-page-DAqa699J.js.map +0 -1
- package/dist/ui/assets/sandboxes-page-Bo4S4ILL.js +0 -2
- package/dist/ui/assets/select-BdCBnmXx.js +0 -2
- package/dist/ui/assets/sessions-page-BMnR-r_F.js +0 -2
- package/dist/ui/assets/status-page-CqmMMSo2.js +0 -2
- package/dist/ui/assets/studio-DzEdCFsX.js +0 -2
- package/dist/ui/assets/style-FGiH1LIC.js +0 -8
- package/dist/ui/assets/textarea-fAtCF2cf.js +0 -2
- package/dist/ui/assets/tool-runner-CExWna8k.js +0 -2
- package/dist/ui/assets/tools-page-CdkExqNd.js +0 -2
- package/dist/ui/assets/trace-browser-Co9iS9HR.js +0 -4
- package/dist/ui/assets/transcript-item-D9NWsnsD.js +0 -3
- package/dist/ui/assets/utils-DzstcfqT.js +0 -2
- package/dist/ui/assets/utils-DzstcfqT.js.map +0 -1
- package/dist/ui/assets/with-selector-B8ah9Wvu.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphs-page-vBCjLEva.js","names":["t"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Plus.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Plus.es.js","../../../../react/dist/graph-explorer/index.js","../../../../react-ui/dist/chunk-E73S3SOF.js","../../../../react-ui/dist/graph-explorer/index.js","../../../src/ui/app/modules/graphs/graph-flow.tsx","../../../src/ui/app/modules/graphs/graphs-page.tsx"],"sourcesContent":["import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228,128a12,12,0,0,1-12,12H140v76a12,12,0,0,1-24,0V140H40a12,12,0,0,1,0-24h76V40a12,12,0,0,1,24,0v76h76A12,12,0,0,1,228,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H136v48a8,8,0,0,1-16,0V136H72a8,8,0,0,1,0-16h48V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M222,128a6,6,0,0,1-6,6H134v82a6,6,0,0,1-12,0V134H40a6,6,0,0,1,0-12h82V40a6,6,0,0,1,12,0v82h82A6,6,0,0,1,222,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M220,128a4,4,0,0,1-4,4H132v84a4,4,0,0,1-8,0V132H40a4,4,0,0,1,0-8h84V40a4,4,0,0,1,8,0v84h84A4,4,0,0,1,220,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Plus.es.js\";\nconst e = o.forwardRef((r, s) => /* @__PURE__ */ o.createElement(t, { ref: s, ...r, weights: a }));\ne.displayName = \"PlusIcon\";\nconst n = e;\nexport {\n n as Plus,\n e as PlusIcon\n};\n","// src/graph-explorer/use-graph-explorer.ts\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nvar emptyResult = {\n nodes: [],\n relationships: [],\n truncated: { nodes: false, relationships: false }\n};\nfunction useGraphExplorer(options) {\n const { explore: load, searchText } = options;\n const [result, setResult] = useState(options.initialResult ?? emptyResult);\n const [selectedNodeId, setSelectedNodeId] = useState();\n const [query, setQuery] = useState(options.initialQuery ?? \"\");\n const [status, setStatus] = useState(\n options.initialResult === void 0 ? \"idle\" : \"ready\"\n );\n const [error, setError] = useState();\n const abortRef = useRef(void 0);\n const requestIdRef = useRef(0);\n const overviewRef = useRef({ mode: \"overview\" });\n const expansionDefaultsRef = useRef({});\n useEffect(() => () => abortRef.current?.abort(), []);\n const explore = useCallback(\n async (request) => {\n abortRef.current?.abort();\n const controller = new AbortController();\n abortRef.current = controller;\n const requestId = ++requestIdRef.current;\n const externalSignal = request.abortSignal;\n const abortFromExternal = () => {\n controller.abort();\n if (requestId === requestIdRef.current) {\n abortRef.current = void 0;\n setStatus(\"ready\");\n }\n };\n if (externalSignal?.aborted === true) {\n abortFromExternal();\n setError(void 0);\n return void 0;\n }\n externalSignal?.addEventListener(\"abort\", abortFromExternal, { once: true });\n const nextRequest = {\n ...request,\n abortSignal: controller.signal\n };\n if (request.mode === \"overview\") overviewRef.current = withoutAbortSignal(request);\n setStatus(\"loading\");\n setError(void 0);\n try {\n const next = await load(nextRequest);\n if (controller.signal.aborted || requestId !== requestIdRef.current) return void 0;\n setResult(\n (current) => request.mode === \"expand\" ? mergeGraphExploreResults(current, next) : next\n );\n if (request.mode === \"overview\") {\n expansionDefaultsRef.current = expansionDefaults(request);\n setSelectedNodeId(\n (current) => next.nodes.some((node) => node.id === current) ? current : void 0\n );\n }\n setStatus(\"ready\");\n return next;\n } catch (caught) {\n if (controller.signal.aborted || requestId !== requestIdRef.current) return void 0;\n setError(caught);\n setStatus(\"error\");\n throw caught;\n } finally {\n externalSignal?.removeEventListener(\"abort\", abortFromExternal);\n if (abortRef.current === controller) abortRef.current = void 0;\n }\n },\n [load]\n );\n const expandNode = useCallback(\n (nodeId, expandOptions = {}) => {\n if (nodeId.length === 0) throw new TypeError(\"Graph explorer node id must be non-empty.\");\n return explore({\n ...expansionDefaultsRef.current,\n ...expandOptions,\n mode: \"expand\",\n nodeIds: [nodeId]\n });\n },\n [explore]\n );\n const refresh = useCallback(() => explore(overviewRef.current), [explore]);\n const stop = useCallback(() => {\n requestIdRef.current += 1;\n abortRef.current?.abort();\n abortRef.current = void 0;\n setError(void 0);\n setStatus(\"ready\");\n }, []);\n const reset = useCallback(() => {\n requestIdRef.current += 1;\n abortRef.current?.abort();\n abortRef.current = void 0;\n overviewRef.current = { mode: \"overview\" };\n expansionDefaultsRef.current = {};\n setResult(emptyResult);\n setSelectedNodeId(void 0);\n setQuery(\"\");\n setError(void 0);\n setStatus(\"idle\");\n }, []);\n const nodeById = useMemo(\n () => new Map(result.nodes.map((node) => [node.id, node])),\n [result.nodes]\n );\n const selectedNode = selectedNodeId === void 0 ? void 0 : nodeById.get(selectedNodeId);\n const matchedNodeIds = useMemo(\n () => new Set(\n result.nodes.filter((node) => graphExplorerNodeMatches(node, query, searchText)).map((node) => node.id)\n ),\n [query, result.nodes, searchText]\n );\n return useMemo(\n () => ({\n nodes: result.nodes,\n nodeById,\n relationships: result.relationships,\n truncated: result.truncated,\n selectedNodeId,\n selectedNode,\n query,\n matchedNodeIds,\n status,\n error,\n explore,\n expandNode,\n refresh,\n selectNode: setSelectedNodeId,\n setQuery,\n stop,\n reset\n }),\n [\n error,\n expandNode,\n explore,\n matchedNodeIds,\n nodeById,\n query,\n refresh,\n reset,\n result,\n selectedNode,\n selectedNodeId,\n status,\n stop\n ]\n );\n}\nfunction mergeGraphExploreResults(current, next) {\n const nodes = new Map(current.nodes.map((node) => [node.id, node]));\n const relationships = new Map(\n current.relationships.map((relationship) => [relationship.id, relationship])\n );\n for (const node of next.nodes) nodes.set(node.id, node);\n for (const relationship of next.relationships) relationships.set(relationship.id, relationship);\n return {\n nodes: [...nodes.values()],\n relationships: [...relationships.values()],\n truncated: {\n nodes: current.truncated.nodes || next.truncated.nodes,\n relationships: current.truncated.relationships || next.truncated.relationships\n }\n };\n}\nfunction graphExplorerNodeMatches(node, query, searchText) {\n const normalizedQuery = query.trim().toLocaleLowerCase();\n if (normalizedQuery.length === 0) return true;\n if (searchText !== void 0) {\n return searchText(node).toLocaleLowerCase().includes(normalizedQuery);\n }\n return defaultGraphExplorerNodeSearchValues(node).some(\n (value) => String(value ?? \"\").toLocaleLowerCase().includes(normalizedQuery)\n );\n}\nfunction defaultGraphExplorerNodeSearchValues(node) {\n const properties = Object.entries(node.properties).flatMap(([key, value]) => [\n key,\n Array.isArray(value) ? value.join(\" \") : String(value)\n ]);\n return [node.type, node.key, ...Object.values(node.identity), ...properties];\n}\nfunction withoutAbortSignal(options) {\n const { abortSignal: _abortSignal, ...request } = options;\n return request;\n}\nfunction expansionDefaults(options) {\n return {\n nodeTypes: options.nodeTypes,\n relationships: options.relationships,\n includeProvenance: options.includeProvenance,\n maxNodes: options.maxNodes,\n maxRelationships: options.maxRelationships\n };\n}\nexport {\n graphExplorerNodeMatches,\n mergeGraphExploreResults,\n useGraphExplorer\n};\n//# sourceMappingURL=index.js.map","// src/contexts/attachment.tsx\nimport { createContext, createElement, useContext } from \"react\";\nvar AttachmentContext = createContext(void 0);\nfunction InternalAttachmentProvider({\n value,\n children\n}) {\n return createElement(AttachmentContext.Provider, { value }, children);\n}\nfunction useAttachment() {\n const value = useContext(AttachmentContext);\n if (value === void 0) {\n throw new Error(\"Attachment primitives must be used inside AttachmentPrimitive.Root.\");\n }\n return value;\n}\nfunction useOptionalAttachment() {\n return useContext(AttachmentContext);\n}\n\n// src/contexts/chat.tsx\nimport { createContext as createContext2, createElement as createElement2, useContext as useContext2 } from \"react\";\nvar ChatContext = createContext2(void 0);\nfunction ChatProvider({ controller, children }) {\n return createElement2(\n ChatContext.Provider,\n { value: controller },\n children\n );\n}\nfunction useChatContext() {\n const value = useContext2(ChatContext);\n if (value === void 0) {\n throw new Error(\"Anvia chat primitives must be used inside ChatProvider.\");\n }\n return value;\n}\nfunction useHumanInput() {\n const interactions = useChatContext().interactions;\n const approvals = interactions.all.filter(\n (item) => item.request.type === \"tool-approval\"\n );\n const questions = interactions.all.filter(\n (item) => item.request.type === \"tool-question\"\n );\n return {\n approvals: {\n all: approvals,\n pending: approvals.filter((item) => item.status === \"pending\")\n },\n questions: {\n all: questions,\n pending: questions.filter((item) => item.status === \"pending\")\n }\n };\n}\n\n// src/contexts/completion.tsx\nimport { createContext as createContext3, createElement as createElement3, useContext as useContext3 } from \"react\";\nvar CompletionContext = createContext3(void 0);\nfunction CompletionProvider({ controller, children }) {\n return createElement3(\n CompletionContext.Provider,\n { value: controller },\n children\n );\n}\nfunction useCompletionContext() {\n const value = useContext3(CompletionContext);\n if (value === void 0) {\n throw new Error(\"Anvia completion primitives must be used inside CompletionProvider.\");\n }\n return value;\n}\n\n// src/contexts/graph-explorer.tsx\nimport { createContext as createContext4, createElement as createElement4, useContext as useContext4 } from \"react\";\nvar GraphExplorerContext = createContext4(void 0);\nvar GraphExplorerNodeContext = createContext4(\n void 0\n);\nfunction GraphExplorerProvider({\n controller,\n children\n}) {\n return createElement4(\n GraphExplorerContext.Provider,\n { value: controller },\n children\n );\n}\nfunction InternalGraphExplorerNodeProvider({\n value,\n children\n}) {\n return createElement4(GraphExplorerNodeContext.Provider, { value }, children);\n}\nfunction useGraphExplorerContext() {\n const value = useContext4(GraphExplorerContext);\n if (value === void 0) {\n throw new Error(\"Graph explorer primitives must be used inside GraphExplorerProvider.\");\n }\n return value;\n}\nfunction useGraphExplorerNode() {\n const value = useContext4(GraphExplorerNodeContext);\n if (value === void 0) {\n throw new Error(\n \"Graph explorer node primitives must be used inside GraphExplorerNodePrimitive.Root or GraphExplorerPrimitive.Nodes.\"\n );\n }\n return value;\n}\nfunction useOptionalGraphExplorerNode() {\n return useContext4(GraphExplorerNodeContext);\n}\n\n// src/contexts/completion-input.tsx\nimport { createContext as createContext5, createElement as createElement5, useContext as useContext5 } from \"react\";\nvar CompletionInputContext = createContext5(void 0);\nfunction InternalCompletionInputProvider({\n value,\n children\n}) {\n return createElement5(CompletionInputContext.Provider, { value }, children);\n}\nfunction useCompletionInput() {\n const value = useContext5(CompletionInputContext);\n if (value === void 0) {\n throw new Error(\"Completion input primitives must be used inside CompletionPrimitive.Form.\");\n }\n return value;\n}\n\n// src/contexts/composer.tsx\nimport { createContext as createContext6, createElement as createElement6, useContext as useContext6 } from \"react\";\nvar ComposerContext = createContext6(void 0);\nfunction InternalComposerProvider({\n value,\n children\n}) {\n return createElement6(ComposerContext.Provider, { value }, children);\n}\nfunction useComposer() {\n const value = useContext6(ComposerContext);\n if (value === void 0) {\n throw new Error(\"Composer primitives must be used inside ComposerPrimitive.Root.\");\n }\n return value;\n}\n\n// src/contexts/human-input.tsx\nimport {\n createContext as createContext7,\n createElement as createElement7,\n useContext as useContext7,\n useMemo,\n useState\n} from \"react\";\nvar ApprovalContext = createContext7(void 0);\nvar QuestionContext = createContext7(void 0);\nvar QuestionPromptContext = createContext7(void 0);\nfunction InternalApprovalProvider({\n approval,\n children\n}) {\n const [reason, setReason] = useState(\"\");\n const value = useMemo(\n () => ({ approval, reason, setReason }),\n [approval, reason]\n );\n return createElement7(ApprovalContext.Provider, { value }, children);\n}\nfunction InternalQuestionProvider({\n value,\n children\n}) {\n return createElement7(QuestionContext.Provider, { value }, children);\n}\nfunction InternalQuestionPromptProvider({\n prompt,\n children\n}) {\n return createElement7(QuestionPromptContext.Provider, { value: { prompt } }, children);\n}\nfunction useApproval() {\n const value = useContext7(ApprovalContext);\n if (value === void 0) {\n throw new Error(\"Approval primitives must be used inside HumanInputPrimitive.Approval.\");\n }\n return value;\n}\nfunction useQuestion() {\n const value = useContext7(QuestionContext);\n if (value === void 0) {\n throw new Error(\"Question primitives must be used inside HumanInputPrimitive.Question.\");\n }\n return value;\n}\nfunction useQuestionPrompt() {\n const value = useContext7(QuestionPromptContext);\n if (value === void 0) {\n throw new Error(\n \"Question choice primitives must be used inside HumanInputPrimitive.QuestionPrompt.\"\n );\n }\n return value;\n}\n\n// src/contexts/image.tsx\nimport { createContext as createContext8, createElement as createElement8, useContext as useContext8 } from \"react\";\nvar ImageContext = createContext8(void 0);\nfunction InternalImageProvider({\n value,\n children\n}) {\n return createElement8(ImageContext.Provider, { value }, children);\n}\nfunction useImage() {\n const value = useContext8(ImageContext);\n if (value === void 0) {\n throw new Error(\"Image primitives must be used inside ImagePrimitive.Root.\");\n }\n return value;\n}\n\n// src/contexts/message.tsx\nimport { createContext as createContext9, createElement as createElement9, useContext as useContext9 } from \"react\";\nvar MessageContext = createContext9(void 0);\nvar MessagePartContext = createContext9(void 0);\nfunction InternalMessageProvider({\n message,\n children\n}) {\n return createElement9(MessageContext.Provider, { value: { message } }, children);\n}\nfunction InternalMessagePartProvider({\n part,\n isLive = false,\n streamControlled = false,\n children\n}) {\n return createElement9(\n MessagePartContext.Provider,\n { value: { isLive, part, streamControlled } },\n children\n );\n}\nfunction useMessage() {\n const value = useContext9(MessageContext);\n if (value === void 0) {\n throw new Error(\n \"Message primitives must be used inside MessagePrimitive.Root or ThreadPrimitive.Messages.\"\n );\n }\n return value;\n}\nfunction useMessagePart() {\n const value = useContext9(MessagePartContext);\n if (value === void 0) {\n throw new Error(\n \"Message part primitives must be used inside MessagePrimitive.Parts or MessagePrimitive.Part.\"\n );\n }\n return value;\n}\nfunction useOptionalMessagePart() {\n return useContext9(MessagePartContext);\n}\n\n// src/contexts/selection-toolbar.tsx\nimport { createContext as createContext10, createElement as createElement10, useContext as useContext10 } from \"react\";\nvar SelectionToolbarContext = createContext10(void 0);\nfunction InternalSelectionToolbarProvider({\n value,\n children\n}) {\n return createElement10(SelectionToolbarContext.Provider, { value }, children);\n}\nfunction useSelectionToolbar() {\n const value = useContext10(SelectionToolbarContext);\n if (value === void 0) {\n throw new Error(\n \"SelectionToolbar primitives must be used inside SelectionToolbarPrimitive.Root.\"\n );\n }\n return value;\n}\n\n// src/contexts/thread.tsx\nimport {\n createContext as createContext11,\n createElement as createElement11,\n useContext as useContext11\n} from \"react\";\nvar ThreadContext = createContext11(void 0);\nfunction InternalThreadProvider({\n value,\n children\n}) {\n return createElement11(ThreadContext.Provider, { value }, children);\n}\nfunction useThread() {\n const value = useContext11(ThreadContext);\n if (value === void 0) {\n throw new Error(\"Thread primitives must be used inside ThreadPrimitive.Root.\");\n }\n return value;\n}\n\n// src/contexts/thread-list.tsx\nimport {\n createContext as createContext12,\n createElement as createElement12,\n useContext as useContext12\n} from \"react\";\nvar ThreadListContext = createContext12(void 0);\nvar ThreadListItemContext = createContext12(void 0);\nvar ThreadListRootContext = createContext12(\n void 0\n);\nfunction ThreadListProvider({\n controller,\n children\n}) {\n return createElement12(ThreadListContext.Provider, { value: controller }, children);\n}\nfunction InternalThreadListItemProvider({\n value,\n children\n}) {\n return createElement12(ThreadListItemContext.Provider, { value }, children);\n}\nfunction InternalThreadListRootProvider({\n value,\n children\n}) {\n return createElement12(ThreadListRootContext.Provider, { value }, children);\n}\nfunction useThreadList() {\n const value = useContext12(ThreadListContext);\n if (value === void 0) {\n throw new Error(\"ThreadList primitives must be used inside ThreadListProvider.\");\n }\n return value;\n}\nfunction useThreadListItem() {\n const value = useContext12(ThreadListItemContext);\n if (value === void 0) {\n throw new Error(\"ThreadListItem primitives must be used inside ThreadListPrimitive.Items.\");\n }\n return value;\n}\nfunction useInternalThreadListRoot() {\n const value = useContext12(ThreadListRootContext);\n if (value === void 0) {\n throw new Error(\"Thread-list primitives must be used inside ThreadListPrimitive.Root.\");\n }\n return value;\n}\n\nexport {\n InternalAttachmentProvider,\n useAttachment,\n useOptionalAttachment,\n ChatProvider,\n useChatContext,\n useHumanInput,\n CompletionProvider,\n useCompletionContext,\n GraphExplorerProvider,\n InternalGraphExplorerNodeProvider,\n useGraphExplorerContext,\n useGraphExplorerNode,\n useOptionalGraphExplorerNode,\n InternalCompletionInputProvider,\n useCompletionInput,\n InternalComposerProvider,\n useComposer,\n InternalApprovalProvider,\n InternalQuestionProvider,\n InternalQuestionPromptProvider,\n useApproval,\n useQuestion,\n useQuestionPrompt,\n InternalImageProvider,\n useImage,\n InternalMessageProvider,\n InternalMessagePartProvider,\n useMessage,\n useMessagePart,\n useOptionalMessagePart,\n InternalSelectionToolbarProvider,\n useSelectionToolbar,\n InternalThreadProvider,\n useThread,\n ThreadListProvider,\n InternalThreadListItemProvider,\n InternalThreadListRootProvider,\n useThreadList,\n useThreadListItem,\n useInternalThreadListRoot\n};\n//# sourceMappingURL=chunk-E73S3SOF.js.map","import {\n renderPrimitive\n} from \"../chunk-T3ZFZ3NP.js\";\nimport {\n GraphExplorerProvider,\n InternalGraphExplorerNodeProvider,\n useGraphExplorerContext,\n useGraphExplorerNode,\n useOptionalGraphExplorerNode\n} from \"../chunk-E73S3SOF.js\";\n\n// src/graph-explorer/parts.tsx\nimport { forwardRef, useCallback } from \"react\";\n\n// src/graph-explorer/helpers.ts\nfunction graphExplorerNodeLabel(node) {\n for (const key of [\"name\", \"title\", \"label\"]) {\n const value = node.properties[key];\n if (typeof value === \"string\" && value.trim().length > 0) return value;\n }\n if (node.key !== void 0) return node.key;\n return `${node.type} ${node.id}`;\n}\n\n// src/graph-explorer/parts.tsx\nimport { jsx } from \"react/jsx-runtime\";\nvar GraphExplorerRoot = forwardRef(\n function GraphExplorerRoot2(props, ref) {\n const explorer = useGraphExplorerContext();\n const truncated = explorer.truncated.nodes || explorer.truncated.relationships;\n return renderPrimitive(\n \"div\",\n {\n ...props,\n \"aria-busy\": explorer.status === \"loading\",\n \"data-role\": \"graph-explorer\",\n \"data-state\": explorer.status,\n \"data-truncated\": truncated ? \"true\" : \"false\"\n },\n ref\n );\n }\n);\nvar GraphExplorerSearch = forwardRef(\n function GraphExplorerSearch2({ onChange, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const handleChange = useCallback(\n (event) => {\n onChange?.(event);\n if (!event.defaultPrevented) explorer.setQuery(event.currentTarget.value);\n },\n [explorer, onChange]\n );\n return renderPrimitive(\n \"input\",\n {\n ...props,\n \"aria-label\": props[\"aria-label\"] ?? \"Search graph\",\n \"data-state\": explorer.query.length === 0 ? \"empty\" : \"populated\",\n onChange: handleChange,\n type: props.type ?? \"search\",\n value: explorer.query\n },\n ref\n );\n }\n);\nvar GraphExplorerViewport = forwardRef(\n function GraphExplorerViewport2(props, ref) {\n return renderPrimitive(\n \"div\",\n { ...props, \"data-role\": \"graph-explorer-viewport\" },\n ref\n );\n }\n);\nvar GraphExplorerNodes = forwardRef(\n function GraphExplorerNodes2({ children, keepMounted = false, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const empty = explorer.nodes.length === 0;\n if (empty && !keepMounted) return null;\n return renderPrimitive(\n \"div\",\n {\n ...props,\n children: explorer.nodes.map((node) => {\n const state = {\n node,\n selected: node.id === explorer.selectedNodeId,\n matched: explorer.matchedNodeIds.has(node.id)\n };\n return /* @__PURE__ */ jsx(InternalGraphExplorerNodeProvider, { value: state, children: typeof children === \"function\" ? children(node, state) : children ?? /* @__PURE__ */ jsx(GraphExplorerNodeRoot, { children: /* @__PURE__ */ jsx(GraphExplorerNodeTrigger, {}) }) }, node.id);\n }),\n \"data-state\": empty ? \"empty\" : \"populated\",\n role: props.role ?? \"list\"\n },\n ref\n );\n }\n);\nvar GraphExplorerEmpty = forwardRef(\n function GraphExplorerEmpty2(props, ref) {\n const explorer = useGraphExplorerContext();\n if (explorer.nodes.length > 0 || explorer.status === \"loading\") return null;\n return renderPrimitive(\n \"div\",\n { ...props, children: props.children ?? \"No graph nodes.\" },\n ref\n );\n }\n);\nvar GraphExplorerStatus = forwardRef(\n function GraphExplorerStatus2({ children, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const content = typeof children === \"function\" ? children(explorer) : children ?? statusText(explorer);\n return renderPrimitive(\n \"div\",\n {\n ...props,\n children: content,\n \"data-state\": explorer.status,\n role: props.role ?? \"status\"\n },\n ref\n );\n }\n);\nvar GraphExplorerRefresh = forwardRef(\n function GraphExplorerRefresh2({ onClick, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const disabled = props.disabled ?? explorer.status === \"loading\";\n const handleClick = useAsyncAction(onClick, disabled, explorer.refresh);\n return renderPrimitive(\n \"button\",\n {\n ...props,\n children: props.children ?? \"Refresh graph\",\n disabled,\n onClick: handleClick,\n type: props.type ?? \"button\"\n },\n ref\n );\n }\n);\nvar GraphExplorerNodeRoot = forwardRef(\n function GraphExplorerNodeRoot2({ nodeId, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const inherited = useOptionalGraphExplorerNode();\n const node = nodeId === void 0 ? inherited?.node : explorer.nodeById.get(nodeId);\n if (node === void 0) {\n throw new Error(\n nodeId === void 0 ? \"GraphExplorerNodePrimitive.Root requires a nodeId outside GraphExplorerPrimitive.Nodes.\" : `Graph explorer node ${nodeId} is not loaded.`\n );\n }\n const state = {\n node,\n selected: node.id === explorer.selectedNodeId,\n matched: explorer.matchedNodeIds.has(node.id)\n };\n return /* @__PURE__ */ jsx(InternalGraphExplorerNodeProvider, { value: state, children: renderPrimitive(\n \"div\",\n {\n ...props,\n \"data-match\": state.matched ? \"matched\" : \"unmatched\",\n \"data-node-id\": state.node.id,\n \"data-node-type\": state.node.type,\n \"data-state\": state.selected ? \"selected\" : \"unselected\",\n role: props.role ?? (inherited === void 0 ? void 0 : \"listitem\")\n },\n ref\n ) });\n }\n);\nvar GraphExplorerNodeTrigger = forwardRef(\n function GraphExplorerNodeTrigger2({ onClick, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const state = useGraphExplorerNode();\n const handleClick = useCallback(\n (event) => {\n onClick?.(event);\n if (!event.defaultPrevented && !props.disabled) explorer.selectNode(state.node.id);\n },\n [explorer, onClick, props.disabled, state.node.id]\n );\n return renderPrimitive(\n \"button\",\n {\n ...props,\n children: props.children ?? graphExplorerNodeLabel(state.node),\n onClick: handleClick,\n type: props.type ?? \"button\",\n \"aria-pressed\": state.selected\n },\n ref\n );\n }\n);\nvar GraphExplorerNodeExpand = forwardRef(\n function GraphExplorerNodeExpand2({ onClick, options, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const state = useGraphExplorerNode();\n const disabled = props.disabled ?? explorer.status === \"loading\";\n const expand = useCallback(\n () => explorer.expandNode(state.node.id, options),\n [explorer, options, state.node.id]\n );\n const handleClick = useAsyncAction(onClick, disabled, expand);\n return renderPrimitive(\n \"button\",\n {\n ...props,\n children: props.children ?? \"Expand\",\n disabled,\n onClick: handleClick,\n type: props.type ?? \"button\"\n },\n ref\n );\n }\n);\nfunction useAsyncAction(onClick, disabled, action) {\n return useCallback(\n (event) => {\n onClick?.(event);\n if (event.defaultPrevented || disabled) return;\n void action().catch(() => void 0);\n },\n [action, disabled, onClick]\n );\n}\nfunction statusText(explorer) {\n if (explorer.status === \"loading\") return \"Loading graph.\";\n if (explorer.status === \"error\") return \"Graph exploration failed.\";\n return `${explorer.nodes.length} nodes, ${explorer.relationships.length} relationships.`;\n}\n\n// src/graph-explorer/index.ts\nvar GraphExplorerPrimitive = {\n Root: GraphExplorerRoot,\n Viewport: GraphExplorerViewport,\n Search: GraphExplorerSearch,\n Nodes: GraphExplorerNodes,\n Empty: GraphExplorerEmpty,\n Status: GraphExplorerStatus,\n Refresh: GraphExplorerRefresh\n};\nvar GraphExplorerNodePrimitive = {\n Root: GraphExplorerNodeRoot,\n Trigger: GraphExplorerNodeTrigger,\n Expand: GraphExplorerNodeExpand\n};\nexport {\n GraphExplorerNodePrimitive,\n GraphExplorerPrimitive,\n GraphExplorerProvider,\n graphExplorerNodeLabel,\n useGraphExplorerContext,\n useGraphExplorerNode\n};\n//# sourceMappingURL=index.js.map","import { Handle, MarkerType, type Node, type NodeProps, Position } from \"@xyflow/react\";\nimport type { GraphExploreNode, GraphExploreRelationship, GraphExploreResult } from \"@anvia/graph\";\nimport { graphExplorerNodeLabel, GraphExplorerNodePrimitive } from \"@anvia/react-ui/graph-explorer\";\n\nexport type ExplorerNodeData = {\n label: string;\n type: string;\n color: string;\n};\n\nexport type ExplorerFlowNode = Node<ExplorerNodeData, \"graphEntity\">;\n\nexport const explorerNodeTypes = {\n graphEntity: GraphEntityNode,\n};\n\nexport function toExplorerFlow(result: GraphExploreResult, matchedNodeIds: ReadonlySet<string>) {\n const visibleNodes = result.nodes.filter((node) => matchedNodeIds.has(node.id));\n const visibleIds = new Set(visibleNodes.map((node) => node.id));\n const nodes = positionNodes(visibleNodes);\n const edges = result.relationships\n .filter((relationship) => visibleIds.has(relationship.from) && visibleIds.has(relationship.to))\n .map((relationship) => relationshipEdge(relationship));\n return { nodes, edges };\n}\n\nfunction GraphEntityNode(props: NodeProps<ExplorerFlowNode>) {\n return (\n <GraphExplorerNodePrimitive.Root nodeId={props.id} asChild>\n <article\n className={[\n \"relative w-[180px] rounded-xl border bg-card px-3 py-2.5 text-left shadow-sm transition\",\n props.selected ? \"border-foreground shadow-md\" : \"border-border/80\",\n ].join(\" \")}\n >\n <Handle\n type=\"target\"\n position={Position.Top}\n className=\"!size-1.5 !border-0 !bg-muted-foreground/50\"\n />\n <div className=\"flex min-w-0 items-center gap-2.5\">\n <span className={[\"size-2.5 shrink-0 rounded-full\", props.data.color].join(\" \")} />\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold text-foreground\">{props.data.label}</div>\n <div className=\"mt-0.5 truncate text-[10px] font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n {props.data.type}\n </div>\n </div>\n </div>\n <Handle\n type=\"source\"\n position={Position.Bottom}\n className=\"!size-1.5 !border-0 !bg-muted-foreground/50\"\n />\n </article>\n </GraphExplorerNodePrimitive.Root>\n );\n}\n\nfunction positionNodes(nodes: readonly GraphExploreNode[]): ExplorerFlowNode[] {\n return nodes.map((node, index) => {\n const angle = index * 2.399963;\n const radius = 180 * Math.sqrt(index);\n return {\n id: node.id,\n type: \"graphEntity\",\n position: {\n x: Math.cos(angle) * radius,\n y: Math.sin(angle) * radius,\n },\n data: {\n label: graphExplorerNodeLabel(node),\n type: node.type,\n color: nodeTypeColor(node.type),\n },\n };\n });\n}\n\nfunction relationshipEdge(relationship: GraphExploreRelationship) {\n return {\n id: relationship.id,\n source: relationship.from,\n target: relationship.to,\n label: relationship.type,\n type: \"smoothstep\",\n markerEnd: { type: MarkerType.ArrowClosed, width: 14, height: 14 },\n labelStyle: { fontSize: 10, fontWeight: 600 },\n style: { strokeWidth: 1.5 },\n };\n}\n\nfunction nodeTypeColor(type: string): string {\n const colors = [\n \"bg-emerald-500\",\n \"bg-sky-500\",\n \"bg-violet-500\",\n \"bg-amber-500\",\n \"bg-rose-500\",\n \"bg-cyan-500\",\n \"bg-fuchsia-500\",\n ];\n let hash = 0;\n for (const character of type) hash = (hash * 31 + character.charCodeAt(0)) >>> 0;\n return colors[hash % colors.length] ?? \"bg-muted-foreground\";\n}\n","import { Background, BackgroundVariant, Controls, ReactFlow } from \"@xyflow/react\";\nimport \"@xyflow/react/dist/style.css\";\nimport { ArrowClockwise, MagnifyingGlass, Plus } from \"@phosphor-icons/react\";\nimport type {\n GraphExploreNode,\n GraphExploreOptions,\n GraphExploreResult,\n GraphSchemaLike,\n} from \"@anvia/graph\";\nimport { useGraphExplorer } from \"@anvia/react/graph-explorer\";\nimport { graphExplorerNodeLabel, GraphExplorerProvider } from \"@anvia/react-ui/graph-explorer\";\nimport { type CSSProperties, useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { StudioConfig } from \"../../../../types\";\nimport { Button } from \"../../components/ui/button\";\nimport { Input } from \"../../components/ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport {\n StudioEmptyState,\n StudioPageShell,\n StudioStatusBadge,\n StudioSurface,\n} from \"../../components/ui/studio\";\nimport { errorMessage } from \"../shared/format\";\nimport { JsonSyntax } from \"../shared/renderers\";\nimport { requestJson } from \"../shared/request\";\nimport { explorerNodeTypes, toExplorerFlow } from \"./graph-flow\";\n\nexport function GraphsPage(props: {\n graphs: StudioConfig[\"graphs\"];\n enabled: boolean;\n theme: \"light\" | \"dark\";\n onError: (message: string) => void;\n onStatus: (message: string) => void;\n}) {\n const { onError, onStatus } = props;\n const [selectedGraphId, setSelectedGraphId] = useState(props.graphs[0]?.id ?? \"\");\n const [selectedNodeTypes, setSelectedNodeTypes] = useState<string[]>([]);\n const [selectedRelationships, setSelectedRelationships] = useState<string[]>([]);\n const graph = props.graphs.find((item) => item.id === selectedGraphId) ?? props.graphs[0];\n const loadGraph = useCallback(\n async (request: GraphExploreOptions<GraphSchemaLike>) => {\n if (graph === undefined) throw new Error(\"Graph explorer unavailable\");\n const { abortSignal, ...body } = request;\n onStatus(\"Loading graph\");\n try {\n const next = await requestJson<GraphExploreResult>(\n `/graphs/${encodeURIComponent(graph.id)}/explore`,\n \"Graph explorer\",\n abortSignal,\n \"no-store\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n },\n );\n if (abortSignal?.aborted !== true) onStatus(\"Connected\");\n return next;\n } catch (loadError) {\n if (abortSignal?.aborted !== true) {\n onError(errorMessage(loadError));\n onStatus(\"Graph error\");\n }\n throw loadError;\n }\n },\n [graph, onError, onStatus],\n );\n const explorer = useGraphExplorer({ explore: loadGraph });\n const result = useMemo<GraphExploreResult>(\n () => ({\n nodes: explorer.nodes,\n relationships: explorer.relationships,\n truncated: explorer.truncated,\n }),\n [explorer.nodes, explorer.relationships, explorer.truncated],\n );\n const flow = useMemo(\n () => toExplorerFlow(result, explorer.matchedNodeIds),\n [explorer.matchedNodeIds, result],\n );\n const loading = explorer.status === \"loading\";\n const selectedNode = explorer.selectedNode;\n const explore = explorer.explore;\n const resetExplorer = explorer.reset;\n const selectNode = explorer.selectNode;\n\n useEffect(() => {\n if (graph === undefined) return;\n const nodeTypes = graph.nodeTypes.map((item) => item.name);\n const relationships = graph.relationshipTypes.map((item) => item.name);\n setSelectedGraphId(graph.id);\n setSelectedNodeTypes(nodeTypes);\n setSelectedRelationships(relationships);\n resetExplorer();\n void explore({ mode: \"overview\", nodeTypes, relationships })\n .then((next) => {\n if (next !== undefined) selectNode(next.nodes[0]?.id);\n })\n .catch(() => undefined);\n }, [explore, graph, resetExplorer, selectNode]);\n\n if (!props.enabled || props.graphs.length === 0) {\n return (\n <StudioPageShell aria-label=\"Graphs\">\n <StudioEmptyState\n title={props.enabled ? \"No graphs\" : \"Graph explorer unavailable\"}\n text={\n props.enabled\n ? \"Register a graph in Studio to inspect its nodes and relationships.\"\n : \"This Studio runtime does not expose a graph explorer.\"\n }\n />\n </StudioPageShell>\n );\n }\n\n function reloadOverview() {\n void explore({\n mode: \"overview\",\n nodeTypes: selectedNodeTypes,\n relationships: selectedRelationships,\n })\n .then((next) => {\n if (next !== undefined) selectNode(next.nodes[0]?.id);\n })\n .catch(() => undefined);\n }\n\n function expandSelected() {\n if (selectedNode === undefined) return;\n void explorer\n .expandNode(selectedNode.id, {\n nodeTypes: selectedNodeTypes,\n relationships: selectedRelationships,\n direction: \"both\",\n maxDepth: 1,\n })\n .catch(() => undefined);\n }\n\n return (\n <GraphExplorerProvider controller={explorer}>\n <StudioPageShell aria-label=\"Graphs\">\n <div className=\"grid min-h-0 min-w-0 pb-6 pr-6\">\n <StudioSurface className=\"grid grid-cols-[minmax(0,2fr)_340px] max-lg:grid-cols-1\">\n <div className=\"relative min-h-0 min-w-0 overflow-hidden border-r border-border/80 bg-card/25 max-lg:min-h-96 max-lg:border-b max-lg:border-r-0\">\n <div className=\"absolute left-4 top-4 z-10 flex max-w-[calc(100%-2rem)] items-center gap-2 rounded-xl border border-border/80 bg-background/90 p-2 shadow-sm backdrop-blur\">\n <div className=\"relative min-w-0 flex-1\">\n <MagnifyingGlass className=\"pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n aria-label=\"Search loaded nodes\"\n className=\"w-64 pl-8\"\n placeholder=\"Search loaded nodes\"\n value={explorer.query}\n onChange={(event) => explorer.setQuery(event.currentTarget.value)}\n />\n </div>\n <StudioStatusBadge>{flow.nodes.length} nodes</StudioStatusBadge>\n <StudioStatusBadge>{flow.edges.length} relations</StudioStatusBadge>\n </div>\n {loading && result.nodes.length === 0 ? (\n <div className=\"grid h-full min-h-96 place-items-center text-sm text-muted-foreground\">\n Loading graph…\n </div>\n ) : null}\n {!loading && result.nodes.length === 0 ? (\n <StudioEmptyState\n className=\"h-full border-0\"\n title=\"No nodes found\"\n text=\"Try another graph or broaden the selected node and relationship types.\"\n />\n ) : null}\n {result.nodes.length > 0 ? (\n <ReactFlow\n key={`${graph?.id}:${result.nodes.length}:${result.relationships.length}`}\n nodes={flow.nodes}\n edges={flow.edges}\n className=\"graph-explorer-flow\"\n colorMode={props.theme}\n nodeTypes={explorerNodeTypes}\n fitView\n fitViewOptions={{ padding: 0.2, maxZoom: 1 }}\n minZoom={0.2}\n maxZoom={1.7}\n proOptions={{ hideAttribution: true }}\n defaultEdgeOptions={{ focusable: true }}\n style={\n {\n \"--xy-edge-stroke\": \"var(--muted-foreground)\",\n \"--xy-edge-stroke-width\": \"1.4\",\n \"--xy-edge-stroke-selected\": \"var(--foreground)\",\n } as CSSProperties\n }\n onNodeClick={(_, node) => explorer.selectNode(node.id)}\n >\n <Background\n variant={BackgroundVariant.Dots}\n gap={16}\n size={1.5}\n color=\"var(--muted-foreground)\"\n className=\"opacity-30\"\n />\n <Controls showInteractive={false} />\n </ReactFlow>\n ) : null}\n </div>\n <GraphInspector\n graph={graph}\n graphs={props.graphs}\n loading={loading}\n result={result}\n selectedGraphId={selectedGraphId}\n selectedNode={selectedNode}\n selectedNodeTypes={selectedNodeTypes}\n selectedRelationships={selectedRelationships}\n onExpand={expandSelected}\n onReload={reloadOverview}\n onSelectGraph={setSelectedGraphId}\n onToggleNodeType={(type) => setSelectedNodeTypes((types) => toggled(types, type))}\n onToggleRelationship={(type) =>\n setSelectedRelationships((types) => toggled(types, type))\n }\n />\n </StudioSurface>\n </div>\n </StudioPageShell>\n </GraphExplorerProvider>\n );\n}\n\nfunction GraphInspector(props: {\n graph: StudioConfig[\"graphs\"][number] | undefined;\n graphs: StudioConfig[\"graphs\"];\n loading: boolean;\n result: GraphExploreResult;\n selectedGraphId: string;\n selectedNode: GraphExploreNode | undefined;\n selectedNodeTypes: string[];\n selectedRelationships: string[];\n onExpand: () => void;\n onReload: () => void;\n onSelectGraph: (id: string) => void;\n onToggleNodeType: (type: string) => void;\n onToggleRelationship: (type: string) => void;\n}) {\n const truncated = props.result.truncated.nodes || props.result.truncated.relationships;\n return (\n <aside className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/70\">\n <header className=\"grid gap-3 border-b border-border/80 bg-card/35 p-4\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <h1 className=\"truncate text-base font-semibold\">\n {props.graph?.name ?? \"Graph explorer\"}\n </h1>\n <p className=\"mt-1 line-clamp-2 text-xs leading-5 text-muted-foreground\">\n {props.graph?.description ?? \"Explore a bounded view of nodes and relationships.\"}\n </p>\n </div>\n {truncated ? (\n <StudioStatusBadge title=\"The configured result limit was reached\">\n Limited\n </StudioStatusBadge>\n ) : null}\n </div>\n <Select value={props.selectedGraphId} onValueChange={props.onSelectGraph}>\n <SelectTrigger className=\"h-8 w-full text-xs\">\n <SelectValue placeholder=\"Select graph\" />\n </SelectTrigger>\n <SelectContent>\n {props.graphs.map((graph) => (\n <SelectItem key={graph.id} value={graph.id}>\n {graph.name ?? graph.id}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <div className=\"flex gap-2\">\n <Button\n className=\"flex-1\"\n variant=\"secondary\"\n disabled={props.loading || props.selectedNodeTypes.length === 0}\n onClick={props.onReload}\n >\n <ArrowClockwise /> Refresh\n </Button>\n <Button\n className=\"flex-1\"\n disabled={props.loading || props.selectedNode === undefined}\n onClick={props.onExpand}\n >\n <Plus /> Expand\n </Button>\n </div>\n </header>\n <div className=\"min-h-0 overflow-y-auto p-4\">\n <FilterGroup\n label=\"Node types\"\n items={props.graph?.nodeTypes.map((item) => item.name) ?? []}\n selected={props.selectedNodeTypes}\n onToggle={props.onToggleNodeType}\n />\n <FilterGroup\n label=\"Relationships\"\n items={props.graph?.relationshipTypes.map((item) => item.name) ?? []}\n selected={props.selectedRelationships}\n onToggle={props.onToggleRelationship}\n />\n <div className=\"mt-5 border-t border-border/80 pt-4\">\n {props.selectedNode === undefined ? (\n <p className=\"text-sm text-muted-foreground\">\n Select a node to inspect its properties.\n </p>\n ) : (\n <NodeInspector node={props.selectedNode} />\n )}\n </div>\n </div>\n </aside>\n );\n}\n\nfunction FilterGroup(props: {\n label: string;\n items: string[];\n selected: string[];\n onToggle: (value: string) => void;\n}) {\n return (\n <section className=\"mb-4\">\n <h2 className=\"mb-2 text-[10px] font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.label}\n </h2>\n <div className=\"flex flex-wrap gap-1.5\">\n {props.items.map((item) => {\n const active = props.selected.includes(item);\n return (\n <button\n key={item}\n type=\"button\"\n aria-pressed={active}\n className={[\n \"rounded-full border px-2 py-1 text-xs transition-colors\",\n active\n ? \"border-foreground/30 bg-foreground text-background\"\n : \"border-border bg-card text-muted-foreground hover:text-foreground\",\n ].join(\" \")}\n onClick={() => props.onToggle(item)}\n >\n {item}\n </button>\n );\n })}\n </div>\n </section>\n );\n}\n\nfunction NodeInspector(props: { node: GraphExploreNode }) {\n const json = JSON.stringify(\n { identity: props.node.identity, properties: props.node.properties },\n null,\n 2,\n );\n return (\n <section>\n <StudioStatusBadge>{props.node.type}</StudioStatusBadge>\n <h2 className=\"mt-2 break-words text-base font-semibold\">\n {graphExplorerNodeLabel(props.node)}\n </h2>\n <p className=\"mt-1 break-all text-xs text-muted-foreground\">ID {props.node.id}</p>\n <pre className=\"mt-4 overflow-x-auto rounded-xl border border-border/80 bg-card p-3 text-xs leading-5\">\n <code>\n <JsonSyntax text={json} />\n </code>\n </pre>\n </section>\n );\n}\n\nfunction toggled(values: string[], value: string): string[] {\n if (values.includes(value)) return values.filter((item) => item !== value);\n return [...values, value];\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"graphs-page-BA0jzknS.js","names":["t"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Plus.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Plus.es.js","../../../../react/dist/graph-explorer/index.js","../../../../react-ui/dist/chunk-E73S3SOF.js","../../../../react-ui/dist/graph-explorer/index.js","../../../src/ui/app/modules/graphs/graph-flow.tsx","../../../src/ui/app/modules/graphs/graphs-page.tsx"],"sourcesContent":["import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228,128a12,12,0,0,1-12,12H140v76a12,12,0,0,1-24,0V140H40a12,12,0,0,1,0-24h76V40a12,12,0,0,1,24,0v76h76A12,12,0,0,1,228,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H136v48a8,8,0,0,1-16,0V136H72a8,8,0,0,1,0-16h48V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M222,128a6,6,0,0,1-6,6H134v82a6,6,0,0,1-12,0V134H40a6,6,0,0,1,0-12h82V40a6,6,0,0,1,12,0v82h82A6,6,0,0,1,222,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M220,128a4,4,0,0,1-4,4H132v84a4,4,0,0,1-8,0V132H40a4,4,0,0,1,0-8h84V40a4,4,0,0,1,8,0v84h84A4,4,0,0,1,220,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Plus.es.js\";\nconst e = o.forwardRef((r, s) => /* @__PURE__ */ o.createElement(t, { ref: s, ...r, weights: a }));\ne.displayName = \"PlusIcon\";\nconst n = e;\nexport {\n n as Plus,\n e as PlusIcon\n};\n","// src/graph-explorer/use-graph-explorer.ts\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nvar emptyResult = {\n nodes: [],\n relationships: [],\n truncated: { nodes: false, relationships: false }\n};\nfunction useGraphExplorer(options) {\n const { explore: load, searchText } = options;\n const [result, setResult] = useState(options.initialResult ?? emptyResult);\n const [selectedNodeId, setSelectedNodeId] = useState();\n const [query, setQuery] = useState(options.initialQuery ?? \"\");\n const [status, setStatus] = useState(\n options.initialResult === void 0 ? \"idle\" : \"ready\"\n );\n const [error, setError] = useState();\n const abortRef = useRef(void 0);\n const requestIdRef = useRef(0);\n const overviewRef = useRef({ mode: \"overview\" });\n const expansionDefaultsRef = useRef({});\n useEffect(() => () => abortRef.current?.abort(), []);\n const explore = useCallback(\n async (request) => {\n abortRef.current?.abort();\n const controller = new AbortController();\n abortRef.current = controller;\n const requestId = ++requestIdRef.current;\n const externalSignal = request.abortSignal;\n const abortFromExternal = () => {\n controller.abort();\n if (requestId === requestIdRef.current) {\n abortRef.current = void 0;\n setStatus(\"ready\");\n }\n };\n if (externalSignal?.aborted === true) {\n abortFromExternal();\n setError(void 0);\n return void 0;\n }\n externalSignal?.addEventListener(\"abort\", abortFromExternal, { once: true });\n const nextRequest = {\n ...request,\n abortSignal: controller.signal\n };\n if (request.mode === \"overview\") overviewRef.current = withoutAbortSignal(request);\n setStatus(\"loading\");\n setError(void 0);\n try {\n const next = await load(nextRequest);\n if (controller.signal.aborted || requestId !== requestIdRef.current) return void 0;\n setResult(\n (current) => request.mode === \"expand\" ? mergeGraphExploreResults(current, next) : next\n );\n if (request.mode === \"overview\") {\n expansionDefaultsRef.current = expansionDefaults(request);\n setSelectedNodeId(\n (current) => next.nodes.some((node) => node.id === current) ? current : void 0\n );\n }\n setStatus(\"ready\");\n return next;\n } catch (caught) {\n if (controller.signal.aborted || requestId !== requestIdRef.current) return void 0;\n setError(caught);\n setStatus(\"error\");\n throw caught;\n } finally {\n externalSignal?.removeEventListener(\"abort\", abortFromExternal);\n if (abortRef.current === controller) abortRef.current = void 0;\n }\n },\n [load]\n );\n const expandNode = useCallback(\n (nodeId, expandOptions = {}) => {\n if (nodeId.length === 0) throw new TypeError(\"Graph explorer node id must be non-empty.\");\n return explore({\n ...expansionDefaultsRef.current,\n ...expandOptions,\n mode: \"expand\",\n nodeIds: [nodeId]\n });\n },\n [explore]\n );\n const refresh = useCallback(() => explore(overviewRef.current), [explore]);\n const stop = useCallback(() => {\n requestIdRef.current += 1;\n abortRef.current?.abort();\n abortRef.current = void 0;\n setError(void 0);\n setStatus(\"ready\");\n }, []);\n const reset = useCallback(() => {\n requestIdRef.current += 1;\n abortRef.current?.abort();\n abortRef.current = void 0;\n overviewRef.current = { mode: \"overview\" };\n expansionDefaultsRef.current = {};\n setResult(emptyResult);\n setSelectedNodeId(void 0);\n setQuery(\"\");\n setError(void 0);\n setStatus(\"idle\");\n }, []);\n const nodeById = useMemo(\n () => new Map(result.nodes.map((node) => [node.id, node])),\n [result.nodes]\n );\n const selectedNode = selectedNodeId === void 0 ? void 0 : nodeById.get(selectedNodeId);\n const matchedNodeIds = useMemo(\n () => new Set(\n result.nodes.filter((node) => graphExplorerNodeMatches(node, query, searchText)).map((node) => node.id)\n ),\n [query, result.nodes, searchText]\n );\n return useMemo(\n () => ({\n nodes: result.nodes,\n nodeById,\n relationships: result.relationships,\n truncated: result.truncated,\n selectedNodeId,\n selectedNode,\n query,\n matchedNodeIds,\n status,\n error,\n explore,\n expandNode,\n refresh,\n selectNode: setSelectedNodeId,\n setQuery,\n stop,\n reset\n }),\n [\n error,\n expandNode,\n explore,\n matchedNodeIds,\n nodeById,\n query,\n refresh,\n reset,\n result,\n selectedNode,\n selectedNodeId,\n status,\n stop\n ]\n );\n}\nfunction mergeGraphExploreResults(current, next) {\n const nodes = new Map(current.nodes.map((node) => [node.id, node]));\n const relationships = new Map(\n current.relationships.map((relationship) => [relationship.id, relationship])\n );\n for (const node of next.nodes) nodes.set(node.id, node);\n for (const relationship of next.relationships) relationships.set(relationship.id, relationship);\n return {\n nodes: [...nodes.values()],\n relationships: [...relationships.values()],\n truncated: {\n nodes: current.truncated.nodes || next.truncated.nodes,\n relationships: current.truncated.relationships || next.truncated.relationships\n }\n };\n}\nfunction graphExplorerNodeMatches(node, query, searchText) {\n const normalizedQuery = query.trim().toLocaleLowerCase();\n if (normalizedQuery.length === 0) return true;\n if (searchText !== void 0) {\n return searchText(node).toLocaleLowerCase().includes(normalizedQuery);\n }\n return defaultGraphExplorerNodeSearchValues(node).some(\n (value) => String(value ?? \"\").toLocaleLowerCase().includes(normalizedQuery)\n );\n}\nfunction defaultGraphExplorerNodeSearchValues(node) {\n const properties = Object.entries(node.properties).flatMap(([key, value]) => [\n key,\n Array.isArray(value) ? value.join(\" \") : String(value)\n ]);\n return [node.type, node.key, ...Object.values(node.identity), ...properties];\n}\nfunction withoutAbortSignal(options) {\n const { abortSignal: _abortSignal, ...request } = options;\n return request;\n}\nfunction expansionDefaults(options) {\n return {\n nodeTypes: options.nodeTypes,\n relationships: options.relationships,\n includeProvenance: options.includeProvenance,\n maxNodes: options.maxNodes,\n maxRelationships: options.maxRelationships\n };\n}\nexport {\n graphExplorerNodeMatches,\n mergeGraphExploreResults,\n useGraphExplorer\n};\n//# sourceMappingURL=index.js.map","// src/contexts/attachment.tsx\nimport { createContext, createElement, useContext } from \"react\";\nvar AttachmentContext = createContext(void 0);\nfunction InternalAttachmentProvider({\n value,\n children\n}) {\n return createElement(AttachmentContext.Provider, { value }, children);\n}\nfunction useAttachment() {\n const value = useContext(AttachmentContext);\n if (value === void 0) {\n throw new Error(\"Attachment primitives must be used inside AttachmentPrimitive.Root.\");\n }\n return value;\n}\nfunction useOptionalAttachment() {\n return useContext(AttachmentContext);\n}\n\n// src/contexts/chat.tsx\nimport { createContext as createContext2, createElement as createElement2, useContext as useContext2 } from \"react\";\nvar ChatContext = createContext2(void 0);\nfunction ChatProvider({ controller, children }) {\n return createElement2(\n ChatContext.Provider,\n { value: controller },\n children\n );\n}\nfunction useChatContext() {\n const value = useContext2(ChatContext);\n if (value === void 0) {\n throw new Error(\"Anvia chat primitives must be used inside ChatProvider.\");\n }\n return value;\n}\nfunction useHumanInput() {\n const interactions = useChatContext().interactions;\n const approvals = interactions.all.filter(\n (item) => item.request.type === \"tool-approval\"\n );\n const questions = interactions.all.filter(\n (item) => item.request.type === \"tool-question\"\n );\n return {\n approvals: {\n all: approvals,\n pending: approvals.filter((item) => item.status === \"pending\")\n },\n questions: {\n all: questions,\n pending: questions.filter((item) => item.status === \"pending\")\n }\n };\n}\n\n// src/contexts/completion.tsx\nimport { createContext as createContext3, createElement as createElement3, useContext as useContext3 } from \"react\";\nvar CompletionContext = createContext3(void 0);\nfunction CompletionProvider({ controller, children }) {\n return createElement3(\n CompletionContext.Provider,\n { value: controller },\n children\n );\n}\nfunction useCompletionContext() {\n const value = useContext3(CompletionContext);\n if (value === void 0) {\n throw new Error(\"Anvia completion primitives must be used inside CompletionProvider.\");\n }\n return value;\n}\n\n// src/contexts/graph-explorer.tsx\nimport { createContext as createContext4, createElement as createElement4, useContext as useContext4 } from \"react\";\nvar GraphExplorerContext = createContext4(void 0);\nvar GraphExplorerNodeContext = createContext4(\n void 0\n);\nfunction GraphExplorerProvider({\n controller,\n children\n}) {\n return createElement4(\n GraphExplorerContext.Provider,\n { value: controller },\n children\n );\n}\nfunction InternalGraphExplorerNodeProvider({\n value,\n children\n}) {\n return createElement4(GraphExplorerNodeContext.Provider, { value }, children);\n}\nfunction useGraphExplorerContext() {\n const value = useContext4(GraphExplorerContext);\n if (value === void 0) {\n throw new Error(\"Graph explorer primitives must be used inside GraphExplorerProvider.\");\n }\n return value;\n}\nfunction useGraphExplorerNode() {\n const value = useContext4(GraphExplorerNodeContext);\n if (value === void 0) {\n throw new Error(\n \"Graph explorer node primitives must be used inside GraphExplorerNodePrimitive.Root or GraphExplorerPrimitive.Nodes.\"\n );\n }\n return value;\n}\nfunction useOptionalGraphExplorerNode() {\n return useContext4(GraphExplorerNodeContext);\n}\n\n// src/contexts/completion-input.tsx\nimport { createContext as createContext5, createElement as createElement5, useContext as useContext5 } from \"react\";\nvar CompletionInputContext = createContext5(void 0);\nfunction InternalCompletionInputProvider({\n value,\n children\n}) {\n return createElement5(CompletionInputContext.Provider, { value }, children);\n}\nfunction useCompletionInput() {\n const value = useContext5(CompletionInputContext);\n if (value === void 0) {\n throw new Error(\"Completion input primitives must be used inside CompletionPrimitive.Form.\");\n }\n return value;\n}\n\n// src/contexts/composer.tsx\nimport { createContext as createContext6, createElement as createElement6, useContext as useContext6 } from \"react\";\nvar ComposerContext = createContext6(void 0);\nfunction InternalComposerProvider({\n value,\n children\n}) {\n return createElement6(ComposerContext.Provider, { value }, children);\n}\nfunction useComposer() {\n const value = useContext6(ComposerContext);\n if (value === void 0) {\n throw new Error(\"Composer primitives must be used inside ComposerPrimitive.Root.\");\n }\n return value;\n}\n\n// src/contexts/human-input.tsx\nimport {\n createContext as createContext7,\n createElement as createElement7,\n useContext as useContext7,\n useMemo,\n useState\n} from \"react\";\nvar ApprovalContext = createContext7(void 0);\nvar QuestionContext = createContext7(void 0);\nvar QuestionPromptContext = createContext7(void 0);\nfunction InternalApprovalProvider({\n approval,\n children\n}) {\n const [reason, setReason] = useState(\"\");\n const value = useMemo(\n () => ({ approval, reason, setReason }),\n [approval, reason]\n );\n return createElement7(ApprovalContext.Provider, { value }, children);\n}\nfunction InternalQuestionProvider({\n value,\n children\n}) {\n return createElement7(QuestionContext.Provider, { value }, children);\n}\nfunction InternalQuestionPromptProvider({\n prompt,\n children\n}) {\n return createElement7(QuestionPromptContext.Provider, { value: { prompt } }, children);\n}\nfunction useApproval() {\n const value = useContext7(ApprovalContext);\n if (value === void 0) {\n throw new Error(\"Approval primitives must be used inside HumanInputPrimitive.Approval.\");\n }\n return value;\n}\nfunction useQuestion() {\n const value = useContext7(QuestionContext);\n if (value === void 0) {\n throw new Error(\"Question primitives must be used inside HumanInputPrimitive.Question.\");\n }\n return value;\n}\nfunction useQuestionPrompt() {\n const value = useContext7(QuestionPromptContext);\n if (value === void 0) {\n throw new Error(\n \"Question choice primitives must be used inside HumanInputPrimitive.QuestionPrompt.\"\n );\n }\n return value;\n}\n\n// src/contexts/image.tsx\nimport { createContext as createContext8, createElement as createElement8, useContext as useContext8 } from \"react\";\nvar ImageContext = createContext8(void 0);\nfunction InternalImageProvider({\n value,\n children\n}) {\n return createElement8(ImageContext.Provider, { value }, children);\n}\nfunction useImage() {\n const value = useContext8(ImageContext);\n if (value === void 0) {\n throw new Error(\"Image primitives must be used inside ImagePrimitive.Root.\");\n }\n return value;\n}\n\n// src/contexts/message.tsx\nimport { createContext as createContext9, createElement as createElement9, useContext as useContext9 } from \"react\";\nvar MessageContext = createContext9(void 0);\nvar MessagePartContext = createContext9(void 0);\nfunction InternalMessageProvider({\n message,\n children\n}) {\n return createElement9(MessageContext.Provider, { value: { message } }, children);\n}\nfunction InternalMessagePartProvider({\n part,\n isLive = false,\n streamControlled = false,\n children\n}) {\n return createElement9(\n MessagePartContext.Provider,\n { value: { isLive, part, streamControlled } },\n children\n );\n}\nfunction useMessage() {\n const value = useContext9(MessageContext);\n if (value === void 0) {\n throw new Error(\n \"Message primitives must be used inside MessagePrimitive.Root or ThreadPrimitive.Messages.\"\n );\n }\n return value;\n}\nfunction useMessagePart() {\n const value = useContext9(MessagePartContext);\n if (value === void 0) {\n throw new Error(\n \"Message part primitives must be used inside MessagePrimitive.Parts or MessagePrimitive.Part.\"\n );\n }\n return value;\n}\nfunction useOptionalMessagePart() {\n return useContext9(MessagePartContext);\n}\n\n// src/contexts/selection-toolbar.tsx\nimport { createContext as createContext10, createElement as createElement10, useContext as useContext10 } from \"react\";\nvar SelectionToolbarContext = createContext10(void 0);\nfunction InternalSelectionToolbarProvider({\n value,\n children\n}) {\n return createElement10(SelectionToolbarContext.Provider, { value }, children);\n}\nfunction useSelectionToolbar() {\n const value = useContext10(SelectionToolbarContext);\n if (value === void 0) {\n throw new Error(\n \"SelectionToolbar primitives must be used inside SelectionToolbarPrimitive.Root.\"\n );\n }\n return value;\n}\n\n// src/contexts/thread.tsx\nimport {\n createContext as createContext11,\n createElement as createElement11,\n useContext as useContext11\n} from \"react\";\nvar ThreadContext = createContext11(void 0);\nfunction InternalThreadProvider({\n value,\n children\n}) {\n return createElement11(ThreadContext.Provider, { value }, children);\n}\nfunction useThread() {\n const value = useContext11(ThreadContext);\n if (value === void 0) {\n throw new Error(\"Thread primitives must be used inside ThreadPrimitive.Root.\");\n }\n return value;\n}\n\n// src/contexts/thread-list.tsx\nimport {\n createContext as createContext12,\n createElement as createElement12,\n useContext as useContext12\n} from \"react\";\nvar ThreadListContext = createContext12(void 0);\nvar ThreadListItemContext = createContext12(void 0);\nvar ThreadListRootContext = createContext12(\n void 0\n);\nfunction ThreadListProvider({\n controller,\n children\n}) {\n return createElement12(ThreadListContext.Provider, { value: controller }, children);\n}\nfunction InternalThreadListItemProvider({\n value,\n children\n}) {\n return createElement12(ThreadListItemContext.Provider, { value }, children);\n}\nfunction InternalThreadListRootProvider({\n value,\n children\n}) {\n return createElement12(ThreadListRootContext.Provider, { value }, children);\n}\nfunction useThreadList() {\n const value = useContext12(ThreadListContext);\n if (value === void 0) {\n throw new Error(\"ThreadList primitives must be used inside ThreadListProvider.\");\n }\n return value;\n}\nfunction useThreadListItem() {\n const value = useContext12(ThreadListItemContext);\n if (value === void 0) {\n throw new Error(\"ThreadListItem primitives must be used inside ThreadListPrimitive.Items.\");\n }\n return value;\n}\nfunction useInternalThreadListRoot() {\n const value = useContext12(ThreadListRootContext);\n if (value === void 0) {\n throw new Error(\"Thread-list primitives must be used inside ThreadListPrimitive.Root.\");\n }\n return value;\n}\n\nexport {\n InternalAttachmentProvider,\n useAttachment,\n useOptionalAttachment,\n ChatProvider,\n useChatContext,\n useHumanInput,\n CompletionProvider,\n useCompletionContext,\n GraphExplorerProvider,\n InternalGraphExplorerNodeProvider,\n useGraphExplorerContext,\n useGraphExplorerNode,\n useOptionalGraphExplorerNode,\n InternalCompletionInputProvider,\n useCompletionInput,\n InternalComposerProvider,\n useComposer,\n InternalApprovalProvider,\n InternalQuestionProvider,\n InternalQuestionPromptProvider,\n useApproval,\n useQuestion,\n useQuestionPrompt,\n InternalImageProvider,\n useImage,\n InternalMessageProvider,\n InternalMessagePartProvider,\n useMessage,\n useMessagePart,\n useOptionalMessagePart,\n InternalSelectionToolbarProvider,\n useSelectionToolbar,\n InternalThreadProvider,\n useThread,\n ThreadListProvider,\n InternalThreadListItemProvider,\n InternalThreadListRootProvider,\n useThreadList,\n useThreadListItem,\n useInternalThreadListRoot\n};\n//# sourceMappingURL=chunk-E73S3SOF.js.map","import {\n renderPrimitive\n} from \"../chunk-T3ZFZ3NP.js\";\nimport {\n GraphExplorerProvider,\n InternalGraphExplorerNodeProvider,\n useGraphExplorerContext,\n useGraphExplorerNode,\n useOptionalGraphExplorerNode\n} from \"../chunk-E73S3SOF.js\";\n\n// src/graph-explorer/parts.tsx\nimport { forwardRef, useCallback } from \"react\";\n\n// src/graph-explorer/helpers.ts\nfunction graphExplorerNodeLabel(node) {\n for (const key of [\"name\", \"title\", \"label\"]) {\n const value = node.properties[key];\n if (typeof value === \"string\" && value.trim().length > 0) return value;\n }\n if (node.key !== void 0) return node.key;\n return `${node.type} ${node.id}`;\n}\n\n// src/graph-explorer/parts.tsx\nimport { jsx } from \"react/jsx-runtime\";\nvar GraphExplorerRoot = forwardRef(\n function GraphExplorerRoot2(props, ref) {\n const explorer = useGraphExplorerContext();\n const truncated = explorer.truncated.nodes || explorer.truncated.relationships;\n return renderPrimitive(\n \"div\",\n {\n ...props,\n \"aria-busy\": explorer.status === \"loading\",\n \"data-role\": \"graph-explorer\",\n \"data-state\": explorer.status,\n \"data-truncated\": truncated ? \"true\" : \"false\"\n },\n ref\n );\n }\n);\nvar GraphExplorerSearch = forwardRef(\n function GraphExplorerSearch2({ onChange, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const handleChange = useCallback(\n (event) => {\n onChange?.(event);\n if (!event.defaultPrevented) explorer.setQuery(event.currentTarget.value);\n },\n [explorer, onChange]\n );\n return renderPrimitive(\n \"input\",\n {\n ...props,\n \"aria-label\": props[\"aria-label\"] ?? \"Search graph\",\n \"data-state\": explorer.query.length === 0 ? \"empty\" : \"populated\",\n onChange: handleChange,\n type: props.type ?? \"search\",\n value: explorer.query\n },\n ref\n );\n }\n);\nvar GraphExplorerViewport = forwardRef(\n function GraphExplorerViewport2(props, ref) {\n return renderPrimitive(\n \"div\",\n { ...props, \"data-role\": \"graph-explorer-viewport\" },\n ref\n );\n }\n);\nvar GraphExplorerNodes = forwardRef(\n function GraphExplorerNodes2({ children, keepMounted = false, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const empty = explorer.nodes.length === 0;\n if (empty && !keepMounted) return null;\n return renderPrimitive(\n \"div\",\n {\n ...props,\n children: explorer.nodes.map((node) => {\n const state = {\n node,\n selected: node.id === explorer.selectedNodeId,\n matched: explorer.matchedNodeIds.has(node.id)\n };\n return /* @__PURE__ */ jsx(InternalGraphExplorerNodeProvider, { value: state, children: typeof children === \"function\" ? children(node, state) : children ?? /* @__PURE__ */ jsx(GraphExplorerNodeRoot, { children: /* @__PURE__ */ jsx(GraphExplorerNodeTrigger, {}) }) }, node.id);\n }),\n \"data-state\": empty ? \"empty\" : \"populated\",\n role: props.role ?? \"list\"\n },\n ref\n );\n }\n);\nvar GraphExplorerEmpty = forwardRef(\n function GraphExplorerEmpty2(props, ref) {\n const explorer = useGraphExplorerContext();\n if (explorer.nodes.length > 0 || explorer.status === \"loading\") return null;\n return renderPrimitive(\n \"div\",\n { ...props, children: props.children ?? \"No graph nodes.\" },\n ref\n );\n }\n);\nvar GraphExplorerStatus = forwardRef(\n function GraphExplorerStatus2({ children, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const content = typeof children === \"function\" ? children(explorer) : children ?? statusText(explorer);\n return renderPrimitive(\n \"div\",\n {\n ...props,\n children: content,\n \"data-state\": explorer.status,\n role: props.role ?? \"status\"\n },\n ref\n );\n }\n);\nvar GraphExplorerRefresh = forwardRef(\n function GraphExplorerRefresh2({ onClick, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const disabled = props.disabled ?? explorer.status === \"loading\";\n const handleClick = useAsyncAction(onClick, disabled, explorer.refresh);\n return renderPrimitive(\n \"button\",\n {\n ...props,\n children: props.children ?? \"Refresh graph\",\n disabled,\n onClick: handleClick,\n type: props.type ?? \"button\"\n },\n ref\n );\n }\n);\nvar GraphExplorerNodeRoot = forwardRef(\n function GraphExplorerNodeRoot2({ nodeId, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const inherited = useOptionalGraphExplorerNode();\n const node = nodeId === void 0 ? inherited?.node : explorer.nodeById.get(nodeId);\n if (node === void 0) {\n throw new Error(\n nodeId === void 0 ? \"GraphExplorerNodePrimitive.Root requires a nodeId outside GraphExplorerPrimitive.Nodes.\" : `Graph explorer node ${nodeId} is not loaded.`\n );\n }\n const state = {\n node,\n selected: node.id === explorer.selectedNodeId,\n matched: explorer.matchedNodeIds.has(node.id)\n };\n return /* @__PURE__ */ jsx(InternalGraphExplorerNodeProvider, { value: state, children: renderPrimitive(\n \"div\",\n {\n ...props,\n \"data-match\": state.matched ? \"matched\" : \"unmatched\",\n \"data-node-id\": state.node.id,\n \"data-node-type\": state.node.type,\n \"data-state\": state.selected ? \"selected\" : \"unselected\",\n role: props.role ?? (inherited === void 0 ? void 0 : \"listitem\")\n },\n ref\n ) });\n }\n);\nvar GraphExplorerNodeTrigger = forwardRef(\n function GraphExplorerNodeTrigger2({ onClick, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const state = useGraphExplorerNode();\n const handleClick = useCallback(\n (event) => {\n onClick?.(event);\n if (!event.defaultPrevented && !props.disabled) explorer.selectNode(state.node.id);\n },\n [explorer, onClick, props.disabled, state.node.id]\n );\n return renderPrimitive(\n \"button\",\n {\n ...props,\n children: props.children ?? graphExplorerNodeLabel(state.node),\n onClick: handleClick,\n type: props.type ?? \"button\",\n \"aria-pressed\": state.selected\n },\n ref\n );\n }\n);\nvar GraphExplorerNodeExpand = forwardRef(\n function GraphExplorerNodeExpand2({ onClick, options, ...props }, ref) {\n const explorer = useGraphExplorerContext();\n const state = useGraphExplorerNode();\n const disabled = props.disabled ?? explorer.status === \"loading\";\n const expand = useCallback(\n () => explorer.expandNode(state.node.id, options),\n [explorer, options, state.node.id]\n );\n const handleClick = useAsyncAction(onClick, disabled, expand);\n return renderPrimitive(\n \"button\",\n {\n ...props,\n children: props.children ?? \"Expand\",\n disabled,\n onClick: handleClick,\n type: props.type ?? \"button\"\n },\n ref\n );\n }\n);\nfunction useAsyncAction(onClick, disabled, action) {\n return useCallback(\n (event) => {\n onClick?.(event);\n if (event.defaultPrevented || disabled) return;\n void action().catch(() => void 0);\n },\n [action, disabled, onClick]\n );\n}\nfunction statusText(explorer) {\n if (explorer.status === \"loading\") return \"Loading graph.\";\n if (explorer.status === \"error\") return \"Graph exploration failed.\";\n return `${explorer.nodes.length} nodes, ${explorer.relationships.length} relationships.`;\n}\n\n// src/graph-explorer/index.ts\nvar GraphExplorerPrimitive = {\n Root: GraphExplorerRoot,\n Viewport: GraphExplorerViewport,\n Search: GraphExplorerSearch,\n Nodes: GraphExplorerNodes,\n Empty: GraphExplorerEmpty,\n Status: GraphExplorerStatus,\n Refresh: GraphExplorerRefresh\n};\nvar GraphExplorerNodePrimitive = {\n Root: GraphExplorerNodeRoot,\n Trigger: GraphExplorerNodeTrigger,\n Expand: GraphExplorerNodeExpand\n};\nexport {\n GraphExplorerNodePrimitive,\n GraphExplorerPrimitive,\n GraphExplorerProvider,\n graphExplorerNodeLabel,\n useGraphExplorerContext,\n useGraphExplorerNode\n};\n//# sourceMappingURL=index.js.map","import { Handle, MarkerType, type Node, type NodeProps, Position } from \"@xyflow/react\";\nimport type { GraphExploreNode, GraphExploreRelationship, GraphExploreResult } from \"@anvia/graph\";\nimport { graphExplorerNodeLabel, GraphExplorerNodePrimitive } from \"@anvia/react-ui/graph-explorer\";\n\nexport type ExplorerNodeData = {\n label: string;\n type: string;\n color: string;\n};\n\nexport type ExplorerFlowNode = Node<ExplorerNodeData, \"graphEntity\">;\n\nexport const explorerNodeTypes = {\n graphEntity: GraphEntityNode,\n};\n\nexport function toExplorerFlow(result: GraphExploreResult, matchedNodeIds: ReadonlySet<string>) {\n const visibleNodes = result.nodes.filter((node) => matchedNodeIds.has(node.id));\n const visibleIds = new Set(visibleNodes.map((node) => node.id));\n const nodes = positionNodes(visibleNodes);\n const edges = result.relationships\n .filter((relationship) => visibleIds.has(relationship.from) && visibleIds.has(relationship.to))\n .map((relationship) => relationshipEdge(relationship));\n return { nodes, edges };\n}\n\nfunction GraphEntityNode(props: NodeProps<ExplorerFlowNode>) {\n return (\n <GraphExplorerNodePrimitive.Root nodeId={props.id} asChild>\n <article\n className={[\n \"relative w-[180px] rounded-xl border bg-card px-3 py-2.5 text-left shadow-sm transition\",\n props.selected ? \"border-foreground shadow-md\" : \"border-border/80\",\n ].join(\" \")}\n >\n <Handle\n type=\"target\"\n position={Position.Top}\n className=\"!size-1.5 !border-0 !bg-muted-foreground/50\"\n />\n <div className=\"flex min-w-0 items-center gap-2.5\">\n <span className={[\"size-2.5 shrink-0 rounded-full\", props.data.color].join(\" \")} />\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold text-foreground\">{props.data.label}</div>\n <div className=\"mt-0.5 truncate text-[10px] font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n {props.data.type}\n </div>\n </div>\n </div>\n <Handle\n type=\"source\"\n position={Position.Bottom}\n className=\"!size-1.5 !border-0 !bg-muted-foreground/50\"\n />\n </article>\n </GraphExplorerNodePrimitive.Root>\n );\n}\n\nfunction positionNodes(nodes: readonly GraphExploreNode[]): ExplorerFlowNode[] {\n return nodes.map((node, index) => {\n const angle = index * 2.399963;\n const radius = 180 * Math.sqrt(index);\n return {\n id: node.id,\n type: \"graphEntity\",\n position: {\n x: Math.cos(angle) * radius,\n y: Math.sin(angle) * radius,\n },\n data: {\n label: graphExplorerNodeLabel(node),\n type: node.type,\n color: nodeTypeColor(node.type),\n },\n };\n });\n}\n\nfunction relationshipEdge(relationship: GraphExploreRelationship) {\n return {\n id: relationship.id,\n source: relationship.from,\n target: relationship.to,\n label: relationship.type,\n type: \"smoothstep\",\n markerEnd: { type: MarkerType.ArrowClosed, width: 14, height: 14 },\n labelStyle: { fontSize: 10, fontWeight: 600 },\n style: { strokeWidth: 1.5 },\n };\n}\n\nfunction nodeTypeColor(type: string): string {\n const colors = [\n \"bg-emerald-500\",\n \"bg-sky-500\",\n \"bg-violet-500\",\n \"bg-amber-500\",\n \"bg-rose-500\",\n \"bg-cyan-500\",\n \"bg-fuchsia-500\",\n ];\n let hash = 0;\n for (const character of type) hash = (hash * 31 + character.charCodeAt(0)) >>> 0;\n return colors[hash % colors.length] ?? \"bg-muted-foreground\";\n}\n","import { Background, BackgroundVariant, Controls, ReactFlow } from \"@xyflow/react\";\nimport \"@xyflow/react/dist/style.css\";\nimport { ArrowClockwise, MagnifyingGlass, Plus } from \"@phosphor-icons/react\";\nimport type {\n GraphExploreNode,\n GraphExploreOptions,\n GraphExploreResult,\n GraphSchemaLike,\n} from \"@anvia/graph\";\nimport { useGraphExplorer } from \"@anvia/react/graph-explorer\";\nimport { graphExplorerNodeLabel, GraphExplorerProvider } from \"@anvia/react-ui/graph-explorer\";\nimport { type CSSProperties, useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { StudioConfig } from \"../../../../types\";\nimport { Button } from \"../../components/ui/button\";\nimport { Input } from \"../../components/ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport {\n StudioEmptyState,\n StudioPageShell,\n StudioStatusBadge,\n StudioSurface,\n} from \"../../components/ui/studio\";\nimport { errorMessage } from \"../shared/format\";\nimport { JsonSyntax } from \"../shared/renderers\";\nimport { requestJson } from \"../shared/request\";\nimport { explorerNodeTypes, toExplorerFlow } from \"./graph-flow\";\n\nexport function GraphsPage(props: {\n graphs: StudioConfig[\"graphs\"];\n enabled: boolean;\n theme: \"light\" | \"dark\";\n onError: (message: string) => void;\n onStatus: (message: string) => void;\n}) {\n const { onError, onStatus } = props;\n const [selectedGraphId, setSelectedGraphId] = useState(props.graphs[0]?.id ?? \"\");\n const [selectedNodeTypes, setSelectedNodeTypes] = useState<string[]>([]);\n const [selectedRelationships, setSelectedRelationships] = useState<string[]>([]);\n const graph = props.graphs.find((item) => item.id === selectedGraphId) ?? props.graphs[0];\n const loadGraph = useCallback(\n async (request: GraphExploreOptions<GraphSchemaLike>) => {\n if (graph === undefined) throw new Error(\"Graph explorer unavailable\");\n const { abortSignal, ...body } = request;\n onStatus(\"Loading graph\");\n try {\n const next = await requestJson<GraphExploreResult>(\n `/graphs/${encodeURIComponent(graph.id)}/explore`,\n \"Graph explorer\",\n abortSignal,\n \"no-store\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n },\n );\n if (abortSignal?.aborted !== true) onStatus(\"Connected\");\n return next;\n } catch (loadError) {\n if (abortSignal?.aborted !== true) {\n onError(errorMessage(loadError));\n onStatus(\"Graph error\");\n }\n throw loadError;\n }\n },\n [graph, onError, onStatus],\n );\n const explorer = useGraphExplorer({ explore: loadGraph });\n const result = useMemo<GraphExploreResult>(\n () => ({\n nodes: explorer.nodes,\n relationships: explorer.relationships,\n truncated: explorer.truncated,\n }),\n [explorer.nodes, explorer.relationships, explorer.truncated],\n );\n const flow = useMemo(\n () => toExplorerFlow(result, explorer.matchedNodeIds),\n [explorer.matchedNodeIds, result],\n );\n const loading = explorer.status === \"loading\";\n const selectedNode = explorer.selectedNode;\n const explore = explorer.explore;\n const resetExplorer = explorer.reset;\n const selectNode = explorer.selectNode;\n\n useEffect(() => {\n if (graph === undefined) return;\n const nodeTypes = graph.nodeTypes.map((item) => item.name);\n const relationships = graph.relationshipTypes.map((item) => item.name);\n setSelectedGraphId(graph.id);\n setSelectedNodeTypes(nodeTypes);\n setSelectedRelationships(relationships);\n resetExplorer();\n void explore({ mode: \"overview\", nodeTypes, relationships })\n .then((next) => {\n if (next !== undefined) selectNode(next.nodes[0]?.id);\n })\n .catch(() => undefined);\n }, [explore, graph, resetExplorer, selectNode]);\n\n if (!props.enabled || props.graphs.length === 0) {\n return (\n <StudioPageShell aria-label=\"Graphs\">\n <StudioEmptyState\n title={props.enabled ? \"No graphs\" : \"Graph explorer unavailable\"}\n text={\n props.enabled\n ? \"Register a graph in Studio to inspect its nodes and relationships.\"\n : \"This Studio runtime does not expose a graph explorer.\"\n }\n />\n </StudioPageShell>\n );\n }\n\n function reloadOverview() {\n void explore({\n mode: \"overview\",\n nodeTypes: selectedNodeTypes,\n relationships: selectedRelationships,\n })\n .then((next) => {\n if (next !== undefined) selectNode(next.nodes[0]?.id);\n })\n .catch(() => undefined);\n }\n\n function expandSelected() {\n if (selectedNode === undefined) return;\n void explorer\n .expandNode(selectedNode.id, {\n nodeTypes: selectedNodeTypes,\n relationships: selectedRelationships,\n direction: \"both\",\n maxDepth: 1,\n })\n .catch(() => undefined);\n }\n\n return (\n <GraphExplorerProvider controller={explorer}>\n <StudioPageShell aria-label=\"Graphs\">\n <div className=\"grid min-h-0 min-w-0 pb-6 pr-6\">\n <StudioSurface className=\"grid grid-cols-[minmax(0,2fr)_340px] max-lg:grid-cols-1\">\n <div className=\"relative min-h-0 min-w-0 overflow-hidden border-r border-border/80 bg-card/25 max-lg:min-h-96 max-lg:border-b max-lg:border-r-0\">\n <div className=\"absolute left-4 top-4 z-10 flex max-w-[calc(100%-2rem)] items-center gap-2 rounded-xl border border-border/80 bg-background/90 p-2 shadow-sm backdrop-blur\">\n <div className=\"relative min-w-0 flex-1\">\n <MagnifyingGlass className=\"pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n aria-label=\"Search loaded nodes\"\n className=\"w-64 pl-8\"\n placeholder=\"Search loaded nodes\"\n value={explorer.query}\n onChange={(event) => explorer.setQuery(event.currentTarget.value)}\n />\n </div>\n <StudioStatusBadge>{flow.nodes.length} nodes</StudioStatusBadge>\n <StudioStatusBadge>{flow.edges.length} relations</StudioStatusBadge>\n </div>\n {loading && result.nodes.length === 0 ? (\n <div className=\"grid h-full min-h-96 place-items-center text-sm text-muted-foreground\">\n Loading graph…\n </div>\n ) : null}\n {!loading && result.nodes.length === 0 ? (\n <StudioEmptyState\n className=\"h-full border-0\"\n title=\"No nodes found\"\n text=\"Try another graph or broaden the selected node and relationship types.\"\n />\n ) : null}\n {result.nodes.length > 0 ? (\n <ReactFlow\n key={`${graph?.id}:${result.nodes.length}:${result.relationships.length}`}\n nodes={flow.nodes}\n edges={flow.edges}\n className=\"graph-explorer-flow\"\n colorMode={props.theme}\n nodeTypes={explorerNodeTypes}\n fitView\n fitViewOptions={{ padding: 0.2, maxZoom: 1 }}\n minZoom={0.2}\n maxZoom={1.7}\n proOptions={{ hideAttribution: true }}\n defaultEdgeOptions={{ focusable: true }}\n style={\n {\n \"--xy-edge-stroke\": \"var(--muted-foreground)\",\n \"--xy-edge-stroke-width\": \"1.4\",\n \"--xy-edge-stroke-selected\": \"var(--foreground)\",\n } as CSSProperties\n }\n onNodeClick={(_, node) => explorer.selectNode(node.id)}\n >\n <Background\n variant={BackgroundVariant.Dots}\n gap={16}\n size={1.5}\n color=\"var(--muted-foreground)\"\n className=\"opacity-30\"\n />\n <Controls showInteractive={false} />\n </ReactFlow>\n ) : null}\n </div>\n <GraphInspector\n graph={graph}\n graphs={props.graphs}\n loading={loading}\n result={result}\n selectedGraphId={selectedGraphId}\n selectedNode={selectedNode}\n selectedNodeTypes={selectedNodeTypes}\n selectedRelationships={selectedRelationships}\n onExpand={expandSelected}\n onReload={reloadOverview}\n onSelectGraph={setSelectedGraphId}\n onToggleNodeType={(type) => setSelectedNodeTypes((types) => toggled(types, type))}\n onToggleRelationship={(type) =>\n setSelectedRelationships((types) => toggled(types, type))\n }\n />\n </StudioSurface>\n </div>\n </StudioPageShell>\n </GraphExplorerProvider>\n );\n}\n\nfunction GraphInspector(props: {\n graph: StudioConfig[\"graphs\"][number] | undefined;\n graphs: StudioConfig[\"graphs\"];\n loading: boolean;\n result: GraphExploreResult;\n selectedGraphId: string;\n selectedNode: GraphExploreNode | undefined;\n selectedNodeTypes: string[];\n selectedRelationships: string[];\n onExpand: () => void;\n onReload: () => void;\n onSelectGraph: (id: string) => void;\n onToggleNodeType: (type: string) => void;\n onToggleRelationship: (type: string) => void;\n}) {\n const truncated = props.result.truncated.nodes || props.result.truncated.relationships;\n return (\n <aside className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/70\">\n <header className=\"grid gap-3 border-b border-border/80 bg-card/35 p-4\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <h1 className=\"truncate text-base font-semibold\">\n {props.graph?.name ?? \"Graph explorer\"}\n </h1>\n <p className=\"mt-1 line-clamp-2 text-xs leading-5 text-muted-foreground\">\n {props.graph?.description ?? \"Explore a bounded view of nodes and relationships.\"}\n </p>\n </div>\n {truncated ? (\n <StudioStatusBadge title=\"The configured result limit was reached\">\n Limited\n </StudioStatusBadge>\n ) : null}\n </div>\n <Select value={props.selectedGraphId} onValueChange={props.onSelectGraph}>\n <SelectTrigger className=\"h-8 w-full text-xs\">\n <SelectValue placeholder=\"Select graph\" />\n </SelectTrigger>\n <SelectContent>\n {props.graphs.map((graph) => (\n <SelectItem key={graph.id} value={graph.id}>\n {graph.name ?? graph.id}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <div className=\"flex gap-2\">\n <Button\n className=\"flex-1\"\n variant=\"secondary\"\n disabled={props.loading || props.selectedNodeTypes.length === 0}\n onClick={props.onReload}\n >\n <ArrowClockwise /> Refresh\n </Button>\n <Button\n className=\"flex-1\"\n disabled={props.loading || props.selectedNode === undefined}\n onClick={props.onExpand}\n >\n <Plus /> Expand\n </Button>\n </div>\n </header>\n <div className=\"min-h-0 overflow-y-auto p-4\">\n <FilterGroup\n label=\"Node types\"\n items={props.graph?.nodeTypes.map((item) => item.name) ?? []}\n selected={props.selectedNodeTypes}\n onToggle={props.onToggleNodeType}\n />\n <FilterGroup\n label=\"Relationships\"\n items={props.graph?.relationshipTypes.map((item) => item.name) ?? []}\n selected={props.selectedRelationships}\n onToggle={props.onToggleRelationship}\n />\n <div className=\"mt-5 border-t border-border/80 pt-4\">\n {props.selectedNode === undefined ? (\n <p className=\"text-sm text-muted-foreground\">\n Select a node to inspect its properties.\n </p>\n ) : (\n <NodeInspector node={props.selectedNode} />\n )}\n </div>\n </div>\n </aside>\n );\n}\n\nfunction FilterGroup(props: {\n label: string;\n items: string[];\n selected: string[];\n onToggle: (value: string) => void;\n}) {\n return (\n <section className=\"mb-4\">\n <h2 className=\"mb-2 text-[10px] font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.label}\n </h2>\n <div className=\"flex flex-wrap gap-1.5\">\n {props.items.map((item) => {\n const active = props.selected.includes(item);\n return (\n <button\n key={item}\n type=\"button\"\n aria-pressed={active}\n className={[\n \"rounded-full border px-2 py-1 text-xs transition-colors\",\n active\n ? \"border-foreground/30 bg-foreground text-background\"\n : \"border-border bg-card text-muted-foreground hover:text-foreground\",\n ].join(\" \")}\n onClick={() => props.onToggle(item)}\n >\n {item}\n </button>\n );\n })}\n </div>\n </section>\n );\n}\n\nfunction NodeInspector(props: { node: GraphExploreNode }) {\n const json = JSON.stringify(\n { identity: props.node.identity, properties: props.node.properties },\n null,\n 2,\n );\n return (\n <section>\n <StudioStatusBadge>{props.node.type}</StudioStatusBadge>\n <h2 className=\"mt-2 break-words text-base font-semibold\">\n {graphExplorerNodeLabel(props.node)}\n </h2>\n <p className=\"mt-1 break-all text-xs text-muted-foreground\">ID {props.node.id}</p>\n <pre className=\"mt-4 overflow-x-auto rounded-xl border border-border/80 bg-card p-3 text-xs leading-5\">\n <code>\n <JsonSyntax text={json} />\n </code>\n </pre>\n </section>\n );\n}\n\nfunction toggled(values: string[], value: string): string[] {\n if (values.includes(value)) return values.filter((item) => item !== value);\n return [...values, value];\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e,r as t,s as n}from"./dist-CHLp-Np4.js";var r=n(e(),1),i=(0,r.createContext)({color:`currentColor`,size:`1em`,weight:`regular`,mirrored:!1}),a=r.forwardRef((e,t)=>{let{alt:n,color:a,size:o,weight:s,mirrored:c,children:l,weights:u,...d}=e,{color:f=`currentColor`,size:p,weight:m=`regular`,mirrored:h=!1,...g}=r.useContext(i);return r.createElement(`svg`,{ref:t,xmlns:`http://www.w3.org/2000/svg`,width:o??p,height:o??p,fill:a??f,viewBox:`0 0 256 256`,transform:c||h?`scale(-1, 1)`:void 0,...g,...d},!!n&&r.createElement(`title`,null,n),l,u.get(s??m))});a.displayName=`IconBase`;var o=t();function s({icon:e,weight:t=`regular`,...n}){return(0,o.jsx)(e,{weight:t,...n})}export{a as n,s as t};
|
|
2
|
+
//# sourceMappingURL=icon-ksPSRwE8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-
|
|
1
|
+
{"version":3,"file":"icon-ksPSRwE8.js","names":["r","o","h"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/lib/context.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/lib/IconBase.es.js","../../../src/ui/app/components/ui/icon.tsx"],"sourcesContent":["import { createContext as r } from \"react\";\nconst o = r({\n color: \"currentColor\",\n size: \"1em\",\n weight: \"regular\",\n mirrored: !1\n});\nexport {\n o as IconContext\n};\n","import * as e from \"react\";\nimport { IconContext as h } from \"./context.es.js\";\nconst p = e.forwardRef(\n (s, a) => {\n const {\n alt: n,\n color: r,\n size: t,\n weight: o,\n mirrored: c,\n children: i,\n weights: m,\n ...x\n } = s, {\n color: d = \"currentColor\",\n size: l,\n weight: f = \"regular\",\n mirrored: g = !1,\n ...w\n } = e.useContext(h);\n return /* @__PURE__ */ e.createElement(\n \"svg\",\n {\n ref: a,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: t != null ? t : l,\n height: t != null ? t : l,\n fill: r != null ? r : d,\n viewBox: \"0 0 256 256\",\n transform: c || g ? \"scale(-1, 1)\" : void 0,\n ...w,\n ...x\n },\n !!n && /* @__PURE__ */ e.createElement(\"title\", null, n),\n i,\n m.get(o != null ? o : f)\n );\n }\n);\np.displayName = \"IconBase\";\nexport {\n p as default\n};\n","import type { Icon, IconProps } from \"@phosphor-icons/react\";\n\nexport type StudioIconProps = IconProps & {\n icon: Icon;\n};\n\nexport function StudioIcon({ icon: IconComponent, weight = \"regular\", ...props }: StudioIconProps) {\n return <IconComponent weight={weight} {...props} />;\n}\n"],"x_google_ignoreList":[0,1],"mappings":"oEACM,GAAA,EAAIA,EAAAA,cAAAA,CAAE,CACV,MAAO,eACP,KAAM,MACN,OAAQ,UACR,SAAU,CAAC,CACb,CAAC,ECJK,EAAA,EAAM,YACT,EAAG,IAAM,CACR,GAAM,CACJ,IAAK,EACL,MAAO,EACP,KAAM,EACN,OAAQC,EACR,SAAU,EACV,SAAU,EACV,QAAS,EACT,GAAG,GACD,EAAG,CACL,MAAO,EAAI,eACX,KAAM,EACN,OAAQ,EAAI,UACZ,SAAU,EAAI,CAAC,EACf,GAAG,GAAA,EACC,WAAWC,CAAC,EAClB,OAAuB,EAAE,cACvB,MACA,CACE,IAAK,EACL,MAAO,6BACP,MAAO,GAAgB,EACvB,OAAQ,GAAgB,EACxB,KAAM,GAAgB,EACtB,QAAS,cACT,UAAW,GAAK,EAAI,eAAiB,IAAK,GAC1C,GAAG,EACH,GAAG,CACL,EACA,CAAC,CAAC,GAAqB,EAAE,cAAc,QAAS,KAAM,CAAC,EACvD,EACA,EAAE,IAAID,GAAgB,CAAC,CACzB,CACF,CACF,EACA,EAAE,YAAc,qBCjChB,SAAgB,EAAW,CAAE,KAAM,EAAe,SAAS,UAAW,GAAG,GAA0B,CACjG,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAuB,SAAQ,GAAI,CAAQ,CAAA,CACpD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-outline-style:solid;--tw-divide-x-reverse:0;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Geist Variable", sans-serif;--color-amber-500:oklch(76.9% .188 70.08);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-500:oklch(71.5% .143 215.221);--color-sky-500:oklch(68.5% .169 237.323);--color-violet-500:oklch(60.6% .25 292.717);--color-fuchsia-500:oklch(66.7% .295 322.15);--color-rose-500:oklch(64.5% .246 16.439);--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-xl:36rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-lg:var(--radius);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Geist Variable", sans-serif;--default-mono-font-family:"Geist Mono Variable", monospace}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring);box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--sb-scrollbar) transparent}html{background:var(--background);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;max-width:100%;height:100%;font-size:16px;overflow:hidden}html.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background-color:var(--background);color:var(--foreground);min-width:320px;max-width:100%;height:100%;font-family:var(--font-sans);font-feature-settings:"cv02", "cv03", "cv04", "cv11";font-variant-numeric:tabular-nums;margin:0;font-size:1rem;line-height:1.5;overflow:hidden}#anvia-ui{width:100%;max-width:100%;height:100dvh;overflow:hidden}::selection{background:var(--sb-selection)}.shell-loading{background:var(--background);min-height:100vh;color:var(--foreground);font-family:var(--font-sans);place-items:center;display:grid}.studio-logo-lockup{justify-content:center;align-items:center;gap:.5rem;max-width:100%;display:inline-flex}.studio-logo-image{object-fit:contain;width:10rem;max-width:52vw;height:auto;display:block}.studio-logo-badge{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--secondary);min-height:1.25rem;color:var(--secondary-foreground);white-space:nowrap;align-items:center;padding:.125rem .5rem;font-size:.6875rem;font-weight:500;line-height:1;display:inline-flex}:focus-visible{outline:2px solid var(--ring);outline-offset:3px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--sb-scrollbar);border-radius:999px}::-webkit-scrollbar-thumb:hover{background-color:var(--sb-scrollbar-hover)}.xterm .xterm-viewport{scrollbar-width:none}.xterm .xterm-viewport::-webkit-scrollbar{width:0;height:0}.pipeline-flow .react-flow__edge.pipeline-flow-edge .react-flow__edge-path{stroke:var(--muted-foreground);stroke-width:1.6px;opacity:.78}.pipeline-flow .react-flow__edges marker path{fill:var(--muted-foreground);stroke:var(--muted-foreground)}.code-keyword{color:var(--sb-code-keyword)}.code-type{color:var(--sb-code-type)}.code-function{color:var(--sb-code-function)}.code-string{color:var(--sb-code-string)}.code-number{color:var(--sb-code-number)}.code-literal{color:var(--sb-code-literal)}.code-comment{color:var(--sb-code-comment)}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-full{top:100%}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.bottom-0{bottom:calc(var(--spacing) * 0)}.-left-1{left:calc(var(--spacing) * -1)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-4{left:calc(var(--spacing) * 4)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.col-span-4{grid-column:span 4/span 4}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing) * 2)}.my-4{margin-block:calc(var(--spacing) * 4)}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.71429}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-inline-start:1.11111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.8em;font-size:2.14286em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:.8em;font-size:1.42857em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.55556em;margin-bottom:.444444em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.42857em;margin-bottom:.571429em;line-height:1.42857}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.142857em;padding-inline-end:.357143em;padding-bottom:.142857em;border-radius:.3125rem;padding-inline-start:.357143em;font-size:.857143em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;border-radius:.25rem;margin-top:1.66667em;margin-bottom:1.66667em;padding-inline-start:1em;font-size:.857143em;line-height:1.66667}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em;padding-inline-start:1.57143em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;margin-bottom:.285714em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.85714em;margin-bottom:2.85714em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;font-size:.857143em;line-height:1.33333}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.table{display:table}.\!size-1\.5{width:calc(var(--spacing) * 1.5)!important;height:calc(var(--spacing) * 1.5)!important}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.\!h-0{height:calc(var(--spacing) * 0)!important}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-1\/2{height:50%}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-\[100dvh\]{height:100dvh}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[28rem\]{max-height:28rem}.max-h-\[32rem\]{max-height:32rem}.max-h-\[calc\(100dvh-32px\)\]{max-height:calc(100dvh - 32px)}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-24{min-height:calc(var(--spacing) * 24)}.min-h-32{min-height:calc(var(--spacing) * 32)}.min-h-36{min-height:calc(var(--spacing) * 36)}.min-h-44{min-height:calc(var(--spacing) * 44)}.min-h-48{min-height:calc(var(--spacing) * 48)}.min-h-64{min-height:calc(var(--spacing) * 64)}.min-h-96{min-height:calc(var(--spacing) * 96)}.min-h-\[74px\]{min-height:74px}.min-h-\[480px\]{min-height:480px}.min-h-full{min-height:100%}.\!w-0{width:calc(var(--spacing) * 0)!important}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-4\/5{width:80%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-14{width:calc(var(--spacing) * 14)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-\[180px\]{width:180px}.w-\[210px\]{width:210px}.w-\[min\(420px\,calc\(100vw-32px\)\)\]{width:min(420px,100vw - 32px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-3xl{max-width:var(--container-3xl)}.max-w-44{max-width:calc(var(--spacing) * 44)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-200{max-width:calc(var(--spacing) * 200)}.max-w-205{max-width:calc(var(--spacing) * 205)}.max-w-\[62ch\]{max-width:62ch}.max-w-\[64ch\]{max-width:64ch}.max-w-\[68ch\]{max-width:68ch}.max-w-\[72ch\]{max-width:72ch}.max-w-\[260px\]{max-width:260px}.max-w-\[280px\]{max-width:280px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[min\(64ch\,82\%\)\]{max-width:min(64ch,82%)}.max-w-\[min\(82ch\,100\%\)\]{max-width:min(82ch,100%)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-225{min-width:calc(var(--spacing) * 225)}.min-w-280{min-width:calc(var(--spacing) * 280)}.min-w-\[980px\]{min-width:980px}.min-w-\[1040px\]{min-width:1040px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing) * 0);--tw-border-spacing-y:calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-90{rotate:90deg}.animate-pulse{animation:var(--animate-pulse)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-\[6\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:6.5rem minmax(0,1fr)}.grid-cols-\[16px_auto\]{grid-template-columns:16px auto}.grid-cols-\[18px_minmax\(0\,1fr\)_auto\]{grid-template-columns:18px minmax(0,1fr) auto}.grid-cols-\[82px_minmax\(0\,1fr\)\]{grid-template-columns:82px minmax(0,1fr)}.grid-cols-\[90px_minmax\(0\,1fr\)\]{grid-template-columns:90px minmax(0,1fr)}.grid-cols-\[250px_minmax\(300px\,0\.8fr\)_minmax\(400px\,1\.2fr\)\]{grid-template-columns:250px minmax(300px,.8fr) minmax(400px,1.2fr)}.grid-cols-\[260px_minmax\(320px\,0\.78fr\)_minmax\(0\,1\.22fr\)\]{grid-template-columns:260px minmax(320px,.78fr) minmax(0,1.22fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,460px\)\]{grid-template-columns:minmax(0,1fr) minmax(0,460px)}.grid-cols-\[minmax\(0\,2fr\)_340px\]{grid-template-columns:minmax(0,2fr) 340px}.grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.grid-cols-\[minmax\(7rem\,0\.34fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(7rem,.34fr) minmax(0,1fr)}.grid-cols-\[minmax\(8rem\,0\.42fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(8rem,.42fr) minmax(0,1fr)}.grid-cols-\[minmax\(92px\,max-content\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(92px,max-content) minmax(0,1fr)}.grid-cols-\[minmax\(120px\,0\.5fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(120px,.5fr) minmax(0,1fr)}.grid-cols-\[minmax\(140px\,0\.24fr\)_minmax\(96px\,0\.14fr\)_minmax\(96px\,0\.14fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(140px,.24fr) minmax(96px,.14fr) minmax(96px,.14fr) minmax(0,1fr)}.grid-cols-\[minmax\(220px\,1\.3fr\)_150px_120px_120px_120px_120px_110px_90px\]{grid-template-columns:minmax(220px,1.3fr) 150px 120px 120px 120px 120px 110px 90px}.grid-cols-\[minmax\(220px\,1\.3fr\)_180px_120px_120px\]{grid-template-columns:minmax(220px,1.3fr) 180px 120px 120px}.grid-cols-\[minmax\(220px\,1\.3fr\)_180px_120px_120px_72px\]{grid-template-columns:minmax(220px,1.3fr) 180px 120px 120px 72px}.grid-cols-\[minmax\(270px\,0\.34fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(270px,.34fr) minmax(0,1fr)}.grid-cols-\[minmax\(280px\,36\%\)_minmax\(420px\,64\%\)\]{grid-template-columns:minmax(280px,36%) minmax(420px,64%)}.grid-cols-\[minmax\(300px\,0\.75fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(300px,.75fr) minmax(0,1fr)}.grid-rows-\[56px_minmax\(0\,1fr\)\]{grid-template-rows:56px minmax(0,1fr)}.grid-rows-\[auto_auto_minmax\(0\,1fr\)\]{grid-template-rows:auto auto minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-rows:auto minmax(0,1fr) auto}.grid-rows-\[minmax\(0\,1fr\)\]{grid-template-rows:minmax(0,1fr)}.grid-rows-\[minmax\(0\,1fr\)_auto\]{grid-template-rows:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch stretch}.content-center{align-content:center}.content-start{align-content:flex-start}.content-stretch{align-content:stretch}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.justify-items-center{justify-items:center}.justify-items-end{justify-items:end}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-hair>:not(:last-child)){border-color:var(--sb-hair)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.justify-self-start{justify-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-4xl{border-radius:calc(var(--radius) * 2.6)}.rounded-\[5px\]{border-radius:5px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-b-lg{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.rounded-bl-sm{border-bottom-left-radius:calc(var(--radius) * .6)}.\!border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border,.border-border\/80{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/80{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.border-destructive{border-color:var(--destructive)}.border-foreground,.border-foreground\/30{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/30{border-color:color-mix(in oklab, var(--foreground) 30%, transparent)}}.border-hair{border-color:var(--sb-hair)}.border-input{border-color:var(--input)}.border-muted-foreground{border-color:var(--muted-foreground)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-status-danger-ink{border-color:var(--sb-status-danger-ink)}.border-tone-tool{border-color:var(--sb-tone-tool)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.\!bg-muted-foreground\/50{background-color:var(--muted-foreground)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-muted-foreground\/50{background-color:color-mix(in oklab, var(--muted-foreground) 50%, transparent)!important}}.\!bg-transparent{background-color:#0000!important}.bg-\[var\(--sb-overlay\)\]{background-color:var(--sb-overlay)}.bg-accent{background-color:var(--accent)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-background,.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab, var(--background) 70%, transparent)}}.bg-background\/90{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/90{background-color:color-mix(in oklab, var(--background) 90%, transparent)}}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/25{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/25{background-color:color-mix(in oklab, var(--card) 25%, transparent)}}.bg-card\/35{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/35{background-color:color-mix(in oklab, var(--card) 35%, transparent)}}.bg-current{background-color:currentColor}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-destructive{background-color:var(--destructive)}.bg-dim{background-color:var(--sb-dim)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-foreground{background-color:var(--foreground)}.bg-fuchsia-500{background-color:var(--color-fuchsia-500)}.bg-header{background-color:var(--sb-header)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-row-selected{background-color:var(--sb-row-selected)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-status-danger-fill{background-color:var(--sb-status-danger-fill)}.bg-status-neutral-fill{background-color:var(--sb-status-neutral-fill)}.bg-status-pending-fill{background-color:var(--sb-status-pending-fill)}.bg-status-success-fill{background-color:var(--sb-status-success-fill)}.bg-tone-agent{background-color:var(--sb-tone-agent)}.bg-tone-generation{background-color:var(--sb-tone-generation)}.bg-tone-tool{background-color:var(--sb-tone-tool)}.bg-transparent{background-color:#0000}.bg-violet-500{background-color:var(--color-violet-500)}.bg-clip-padding{background-clip:padding-box}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-px{padding:1px}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-heading{font-family:var(--font-sans)}.font-mono{font-family:Geist Mono Variable,monospace}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/relaxed{font-size:var(--text-sm);line-height:var(--leading-relaxed)}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-\[400\]{--tw-font-weight:400;font-weight:400}.font-\[450\]{--tw-font-weight:450;font-weight:450}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.006em\]{--tw-tracking:-.006em;letter-spacing:-.006em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-dim{color:var(--sb-dim)}.text-foreground{color:var(--foreground)}.text-inherit{color:inherit}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.text-sidebar-foreground{color:var(--sidebar-foreground)}.text-status-danger-ink{color:var(--sb-status-danger-ink)}.text-status-neutral-ink{color:var(--sb-status-neutral-ink)}.text-status-pending-ink{color:var(--sb-status-pending-ink)}.text-status-success-ink{color:var(--sb-status-success-ink)}.text-tone-text{color:var(--sb-tone-text)}.text-tone-tool{color:var(--sb-tone-tool)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.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,)}.accent-foreground{accent-color:var(--foreground)}.\!opacity-0{opacity:0!important}.opacity-30{opacity:.3}.opacity-35{opacity:.35}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-\[inset_0_1px_0_var\(--sb-inset-highlight\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,var(--sb-inset-highlight));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-\[var\(--sb-popover-ring\)\]{--tw-ring-color:var(--sb-popover-ring)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-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,);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,)}.backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-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,);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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}.\[overflow-anchor\:none\]{overflow-anchor:none}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.group-last\/row\:border-b-0:is(:where(.group\/row):last-child *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.group-open\:hidden:is(:where(.group):is([open],:popover-open,:open) *){display:none}.group-open\:inline:is(:where(.group):is([open],:popover-open,:open) *){display:inline}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}.group-open\:text-foreground:is(:where(.group):is([open],:popover-open,:open) *){color:var(--foreground)}.group-open\/additional\:rotate-90:is(:where(.group\/additional):is([open],:popover-open,:open) *),.group-open\/row\:rotate-90:is(:where(.group\/row):is([open],:popover-open,:open) *){rotate:90deg}.group-focus-within\:grid:is(:where(.group):focus-within *){display:grid}.group-focus-within\:inline-flex:is(:where(.group):focus-within *){display:inline-flex}@media (hover:hover){.group-hover\:grid:is(:where(.group):hover *){display:grid}.group-hover\:inline-flex:is(:where(.group):hover *){display:inline-flex}}.marker\:hidden ::marker{display:none}.marker\:hidden::marker{display:none}.marker\:hidden ::-webkit-details-marker{display:none}.marker\:hidden::-webkit-details-marker{display:none}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.first\:pt-3:first-child{padding-top:calc(var(--spacing) * 3)}.first\:pl-0:first-child{padding-left:calc(var(--spacing) * 0)}.first\:pl-5:first-child{padding-left:calc(var(--spacing) * 5)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pr-0:last-child{padding-right:calc(var(--spacing) * 0)}.last\:pr-5:last-child{padding-right:calc(var(--spacing) * 5)}.focus-within\:outline-2:focus-within{outline-style:var(--tw-outline-style);outline-width:2px}.focus-within\:outline-offset-3:focus-within{outline-offset:3px}.focus-within\:outline-ring:focus-within{outline-color:var(--ring)}@media (hover:hover){.hover\:border-foreground:hover,.hover\:border-foreground\/90:hover{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-foreground\/90:hover{border-color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.hover\:border-hair:hover{border-color:var(--sb-hair)}.hover\:border-status-danger-ink:hover{border-color:var(--sb-status-danger-ink)}.hover\:bg-action-muted:hover{background-color:var(--sb-action-muted)}.hover\:bg-foreground\/90:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/90:hover{background-color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-status-danger-fill:hover{background-color:var(--sb-status-danger-fill)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-background:hover{color:var(--background)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-inherit:hover{color:inherit}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:opacity-100:hover{opacity:1}}.focus\:border-foreground:focus{border-color:var(--foreground)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:border-transparent:focus-visible{border-color:#0000}.focus-visible\:bg-action-muted:focus-visible{background-color:var(--sb-action-muted)}.focus-visible\:bg-sidebar-accent:focus-visible{background-color:var(--sidebar-accent)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-offset-3:focus-visible{--tw-ring-offset-width:3px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:translate-y-px:active{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-border:disabled{border-color:var(--border)}.disabled\:bg-muted:disabled{background-color:var(--muted)}.disabled\:text-muted-foreground:disabled{color:var(--muted-foreground)}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-\[highlighted\]\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}@media not all and (width>=80rem){.max-xl\:col-span-2{grid-column:span 2/span 2}.max-xl\:hidden{display:none}.max-xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-xl\:grid-cols-\[240px_minmax\(0\,1fr\)\]{grid-template-columns:240px minmax(0,1fr)}.max-xl\:grid-rows-\[minmax\(240px\,0\.42fr\)_minmax\(0\,1fr\)\]{grid-template-rows:minmax(240px,.42fr) minmax(0,1fr)}.max-xl\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-xl\:pr-0{padding-right:calc(var(--spacing) * 0)}.max-xl\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media not all and (width>=64rem){.max-lg\:min-h-96{min-height:calc(var(--spacing) * 96)}.max-lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-lg\:grid-rows-\[minmax\(220px\,0\.44fr\)_minmax\(0\,1fr\)\]{grid-template-rows:minmax(220px,.44fr) minmax(0,1fr)}.max-lg\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-lg\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.max-lg\:pr-0{padding-right:calc(var(--spacing) * 0)}.max-lg\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media not all and (width>=48rem){.max-md\:col-span-1{grid-column:span 1/span 1}.max-md\:grid{display:grid}.max-md\:max-h-80{max-height:calc(var(--spacing) * 80)}.max-md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-md\:grid-rows-\[auto_minmax\(240px\,0\.38fr\)_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(240px,.38fr) minmax(0,1fr)}.max-md\:justify-start{justify-content:flex-start}.max-md\:gap-1{gap:calc(var(--spacing) * 1)}.max-md\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.max-md\:px-0{padding-inline:calc(var(--spacing) * 0)}.max-md\:pr-0{padding-right:calc(var(--spacing) * 0)}}@media not all and (width>=40rem){.max-sm\:w-full{width:100%}.max-sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-sm\:justify-start{justify-content:flex-start}.max-sm\:gap-1{gap:calc(var(--spacing) * 1)}}@media (width>=40rem){.sm\:max-w-72{max-width:calc(var(--spacing) * 72)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}:where(.sm\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.sm\:divide-hair>:not(:last-child)){border-color:var(--sb-hair)}.sm\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@media (width>=48rem){.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:pt-6{padding-top:calc(var(--spacing) * 6)}.md\:pb-6{padding-bottom:calc(var(--spacing) * 6)}}@media (width>=64rem){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:min-h-0{min-height:calc(var(--spacing) * 0)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1fr\)_360px\]{grid-template-columns:minmax(0,1fr) 360px}.lg\:overflow-hidden{overflow:hidden}.lg\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.lg\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}}@media (width>=80rem){.xl\:grid-cols-\[minmax\(0\,1\.05fr\)_minmax\(0\,0\.95fr\)\]{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_420px\]{grid-template-columns:minmax(0,1fr) 420px}.xl\:grid-cols-\[minmax\(260px\,0\.42fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(260px,.42fr) minmax(0,1fr)}.xl\:grid-cols-\[minmax\(280px\,0\.58fr\)_minmax\(0\,1\.42fr\)\]{grid-template-columns:minmax(280px,.58fr) minmax(0,1.42fr)}.xl\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.xl\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.xl\:pr-5{padding-right:calc(var(--spacing) * 5)}.xl\:pb-0{padding-bottom:calc(var(--spacing) * 0)}}.dark\:bg-muted:is(.dark *){background-color:var(--muted)}.dark\:bg-transparent:is(.dark *){background-color:#0000}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.dark\:disabled\:bg-muted:is(.dark *):disabled{background-color:var(--muted)}.prose-headings\:font-semibold :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-headings\:text-current :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-headings\:text-current:is(.dark *) :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-p\:leading-7 :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.prose-p\:text-current :where(p):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-p\:text-current:is(.dark *) :where(p):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-a\:text-current :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-a\:decoration-muted-foreground :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){-webkit-text-decoration-color:var(--muted-foreground);-webkit-text-decoration-color:var(--muted-foreground);-webkit-text-decoration-color:var(--muted-foreground);text-decoration-color:var(--muted-foreground)}.prose-a\:underline-offset-2 :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){text-underline-offset:2px}.prose-blockquote\:border-border :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}.prose-blockquote\:text-muted-foreground :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--muted-foreground)}.prose-strong\:text-current :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-strong\:text-current:is(.dark *) :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-code\:rounded-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius)}.prose-code\:border :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:1px}.prose-code\:border-hair :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--sb-hair)}.prose-code\:bg-muted :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--muted)}.prose-code\:px-1 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline:calc(var(--spacing) * 1)}.prose-code\:py-0\.5 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){padding-block:calc(var(--spacing) * .5)}.prose-code\:text-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.prose-code\:font-semibold :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-code\:text-current :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-code\:before\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose-code\:after\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:var(--tw-content);--tw-content:none;content:none}.dark\:prose-code\:text-current:is(.dark *) :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-pre\:overflow-auto :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){overflow:auto}.prose-pre\:rounded-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius)}.prose-pre\:border :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:1px}.prose-pre\:border-hair :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--sb-hair)}.prose-pre\:bg-card :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--card)}.prose-pre\:text-current :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.dark\:prose-pre\:bg-card:is(.dark *) :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--card)}.dark\:prose-pre\:text-current:is(.dark *) :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *)) ::marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *)) ::-webkit-details-marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *))::-webkit-details-marker{color:var(--muted-foreground)}.prose-table\:m-0 :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){margin:calc(var(--spacing) * 0)}.prose-thead\:border-0 :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-tr\:border-0 :where(tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:0}.prose-th\:p-0 :where(th):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-td\:p-0 :where(td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:calc(var(--spacing) * 0)}.prose-hr\:border-border :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}.\[\&_\.grid\]\:mt-2 .grid{margin-top:calc(var(--spacing) * 2)}.\[\&_\.grid\]\:border-l .grid{border-left-style:var(--tw-border-style);border-left-width:1px}.\[\&_\.grid\]\:border-border .grid{border-color:var(--border)}.\[\&_\.grid\]\:pl-3 .grid{padding-left:calc(var(--spacing) * 3)}.\[\&_canvas\]\:outline-none canvas{--tw-outline-style:none;outline-style:none}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:\!size-3 svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}.\[\&_svg\]\:size-2\.5 svg{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.\[\&_svg\]\:size-3\.5 svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:h-3 svg{height:calc(var(--spacing) * 3)}.\[\&_svg\]\:h-3\.5 svg{height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:h-4 svg{height:calc(var(--spacing) * 4)}.\[\&_svg\]\:w-3 svg{width:calc(var(--spacing) * 3)}.\[\&_svg\]\:w-3\.5 svg{width:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:w-4 svg{width:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\>\[data-entry-kind\=tool\]\+\[data-entry-kind\=tool\]\]\:-mt-3>[data-entry-kind=tool]+[data-entry-kind=tool]{margin-top:calc(var(--spacing) * -3)}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--black:#000;--white:#fff;--zinc-50:#fafafa;--zinc-100:#f4f4f5;--zinc-200:#e4e4e7;--zinc-300:#d4d4d8;--zinc-400:#a1a1aa;--zinc-500:#71717a;--zinc-600:#52525b;--zinc-700:#3f3f46;--zinc-800:#27272a;--zinc-900:#18181b;--zinc-950:#09090b;--ops-bg:var(--zinc-100);--ops-sheet:var(--zinc-50);--ops-card:var(--zinc-100);--ops-ink:var(--zinc-900);--ops-muted:var(--zinc-600);--ops-dim:var(--zinc-400);--ops-line:var(--zinc-300);--ops-hair:var(--zinc-200);--ops-strong:var(--zinc-900);--ops-strong-text:var(--zinc-50);--ops-hover-surface:transparent;--ops-control-active:var(--zinc-200);--ops-row-selected:var(--zinc-200);--ops-brand-bright:#2bf563;--ops-brand-bright-hover:#24dc59;--ops-viz-blue:#5b8def;--ops-viz-gold:#d8a640;--ops-viz-red:#db5b5b;--ops-status-success:#4fc77a;--ops-purple:#7c3aed;--ops-orange:#d97706;--sb-bg:var(--ops-sheet);--sb-card:var(--ops-card);--sb-hover:var(--ops-hover-surface);--sb-active:var(--ops-control-active);--sb-row-selected:var(--ops-row-selected);--sb-ink:var(--ops-ink);--sb-muted:var(--ops-muted);--sb-dim:var(--ops-dim);--sb-line:var(--ops-line);--sb-hair:var(--ops-hair);--sb-action:var(--ops-brand-bright);--sb-action-hover:var(--ops-brand-bright-hover);--sb-action-muted:var(--sb-action)}@supports (color:color-mix(in lab, red, red)){:root{--sb-action-muted:color-mix(in srgb, var(--sb-action) 35%, transparent)}}:root{--sb-action-text:var(--zinc-950);--sb-green:var(--ops-brand-bright);--sb-header:var(--sb-bg)}@supports (color:color-mix(in lab, red, red)){:root{--sb-header:color-mix(in srgb, var(--sb-bg) 95%, transparent)}}:root{--sb-status-success-ink:#166534;--sb-status-success-fill:#dcfce7;--sb-status-danger-ink:#991b1b;--sb-status-danger-fill:#fee2e2;--sb-status-pending-ink:#854d0e;--sb-status-pending-fill:#fef9c3;--sb-status-neutral-ink:var(--zinc-700);--sb-status-neutral-fill:var(--zinc-200);--sb-tone-agent:var(--ops-purple);--sb-tone-generation:var(--ops-viz-blue);--sb-tone-tool:var(--ops-orange);--sb-tone-text:var(--white);--sb-overlay:var(--black)}@supports (color:color-mix(in lab, red, red)){:root{--sb-overlay:color-mix(in srgb, var(--black) 12%, transparent)}}:root{--sb-popover-ring:var(--sb-ink)}@supports (color:color-mix(in lab, red, red)){:root{--sb-popover-ring:color-mix(in srgb, var(--sb-ink) 12%, transparent)}}:root{--sb-selection:var(--sb-ink)}@supports (color:color-mix(in lab, red, red)){:root{--sb-selection:color-mix(in srgb, var(--sb-ink) 18%, transparent)}}:root{--sb-scrollbar:var(--sb-muted)}@supports (color:color-mix(in lab, red, red)){:root{--sb-scrollbar:color-mix(in srgb, var(--sb-muted) 30%, transparent)}}:root{--sb-scrollbar-hover:var(--sb-muted)}@supports (color:color-mix(in lab, red, red)){:root{--sb-scrollbar-hover:color-mix(in srgb, var(--sb-muted) 52%, transparent)}}:root{--sb-inset-highlight:var(--sb-ink)}@supports (color:color-mix(in lab, red, red)){:root{--sb-inset-highlight:color-mix(in srgb, var(--sb-ink) 6%, transparent)}}:root{--sb-code:#48504c;--sb-code-keyword:#9c2c62;--sb-code-type:#087d78;--sb-code-function:#255fa6;--sb-code-string:#257044;--sb-code-number:#955810;--sb-code-literal:#7144a5;--sb-code-comment:#788079;--background:var(--sb-bg);--foreground:var(--sb-ink);--card:var(--sb-card);--card-foreground:var(--sb-ink);--popover:var(--sb-bg);--popover-foreground:var(--sb-ink);--primary:var(--sb-action);--primary-foreground:var(--sb-action-text);--secondary:var(--sb-card);--secondary-foreground:var(--sb-ink);--muted:var(--sb-card);--muted-foreground:var(--sb-muted);--accent:var(--sb-active);--accent-foreground:var(--sb-ink);--destructive:var(--sb-status-danger-ink);--destructive-foreground:var(--sb-status-danger-fill);--border:var(--sb-line);--input:var(--sb-line);--ring:var(--ops-strong);--chart-1:var(--ops-viz-gold);--chart-2:var(--ops-viz-blue);--chart-3:var(--ops-viz-red);--chart-4:var(--ops-status-success);--chart-5:var(--ops-brand-bright);--radius:.375rem;--sidebar:var(--sb-bg);--sidebar-foreground:var(--sb-ink);--sidebar-primary:var(--sb-action);--sidebar-primary-foreground:var(--sb-action-text);--sidebar-accent:var(--sb-active);--sidebar-accent-foreground:var(--sb-ink);--sidebar-border:var(--sb-line);--sidebar-ring:var(--ops-strong)}.dark,[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ops-bg:var(--black);--ops-sheet:var(--zinc-950);--ops-card:var(--zinc-900);--ops-ink:var(--zinc-300);--ops-muted:var(--zinc-500);--ops-dim:var(--zinc-700);--ops-line:var(--zinc-800);--ops-hair:var(--ops-line);--ops-strong:var(--white);--ops-strong-text:var(--zinc-950);--ops-control-active:var(--zinc-950);--ops-row-selected:var(--zinc-900);--sb-status-success-ink:#86efac;--sb-status-success-fill:#14532d;--sb-status-danger-ink:#fca5a5;--sb-status-danger-fill:#7f1d1d;--sb-status-pending-ink:#fde047;--sb-status-pending-fill:#713f12;--sb-status-neutral-ink:var(--zinc-300);--sb-status-neutral-fill:var(--zinc-800);--sb-code:#b7c0ca;--sb-code-keyword:#e6a15c;--sb-code-type:#62c3b5;--sb-code-function:#78aee8;--sb-code-string:#9fbd73;--sb-code-number:#bd93d8;--sb-code-literal:#df7d68;--sb-code-comment:#56606a}@keyframes studio-stream-gradient-settle{to{opacity:1}}.studio-markdown [data-state=revealing]{opacity:var(--anvia-stream-reveal-opacity,1);animation:studio-stream-gradient-settle var(--anvia-stream-reveal-duration,.18s) linear both}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.studio-markdown [data-state=revealing]{opacity:1;animation:none}}@property --tw-border-spacing-x{syntax:"<length>";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"<length>";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}
|