@assistant-ui/react-devtools 1.2.9 → 1.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/DevToolsModal.js.map +1 -1
  2. package/dist/DevToolsModalImpl.js.map +1 -1
  3. package/dist/shell/DevToolsOverlay.js.map +1 -1
  4. package/dist/shell/DevToolsPanel.js.map +1 -1
  5. package/dist/shell/SplitLayout.js.map +1 -1
  6. package/dist/shell/tabs/ActivityTab.js.map +1 -1
  7. package/dist/shell/tabs/ContextTab.js.map +1 -1
  8. package/dist/shell/tabs/RawTab.js.map +1 -1
  9. package/dist/shell/tabs/ThreadTab.js.map +1 -1
  10. package/dist/styles/panel.generated.d.ts +1 -1
  11. package/dist/styles/panel.generated.js +1 -1
  12. package/dist/styles/panel.generated.js.map +1 -1
  13. package/dist/views/activity/EventLogRow.js.map +1 -1
  14. package/dist/views/activity/EventStreamPane.js.map +1 -1
  15. package/dist/views/activity/OrphansPane.js.map +1 -1
  16. package/dist/views/activity/RunDetailPane.js.map +1 -1
  17. package/dist/views/activity/activityNodes.d.ts.map +1 -1
  18. package/dist/views/attachments/AttachmentList.js.map +1 -1
  19. package/dist/views/attachments/MediaPartView.js.map +1 -1
  20. package/dist/views/context/ToolUIsView.js.map +1 -1
  21. package/dist/views/mcp/McpView.js.map +1 -1
  22. package/dist/views/message/ChainOfThought.js.map +1 -1
  23. package/dist/views/message/MessageDetailPane.js.map +1 -1
  24. package/dist/views/message/MessageItem.js.map +1 -1
  25. package/dist/views/message/MessageList.js.map +1 -1
  26. package/dist/views/message/MessageMetrics.js.map +1 -1
  27. package/dist/views/message/MessageTimeline.js.map +1 -1
  28. package/dist/views/message/PartDisclosure.js.map +1 -1
  29. package/dist/views/message/PartView.js.map +1 -1
  30. package/dist/views/message/RoleLabel.js.map +1 -1
  31. package/dist/views/message/StatusBadge.js.map +1 -1
  32. package/dist/views/message/ToolCallView.js.map +1 -1
  33. package/dist/views/message/TtftBar.js.map +1 -1
  34. package/dist/views/model-context/ModelContextView.js.map +1 -1
  35. package/dist/views/raw/RawDetail.js.map +1 -1
  36. package/dist/views/raw/statePreview.js.map +1 -1
  37. package/dist/views/runs/PayloadDiff.js.map +1 -1
  38. package/dist/views/scopes/ScopesView.js.map +1 -1
  39. package/dist/views/thread/ComposerFlags.js.map +1 -1
  40. package/dist/views/thread/ComposerQueue.js.map +1 -1
  41. package/dist/views/thread/ConversationList.js.map +1 -1
  42. package/dist/views/thread/ThreadDetails.js.map +1 -1
  43. package/dist/views/thread/Transcript.js.map +1 -1
  44. package/dist/views/ui/CopyButton.js.map +1 -1
  45. package/dist/views/ui/InfoCard.js.map +1 -1
  46. package/dist/views/ui/JSONTree.js.map +1 -1
  47. package/dist/views/ui/PaneHeader.js.map +1 -1
  48. package/dist/views/ui/RailTime.js.map +1 -1
  49. package/dist/views/ui/SelectableRow.d.ts.map +1 -1
  50. package/dist/views/ui/Sparkline.js.map +1 -1
  51. package/dist/views/ui/SummaryItem.js.map +1 -1
  52. package/dist/views/ui/useCopyToClipboard.d.ts.map +1 -1
  53. package/package.json +8 -8
  54. package/src/styles/panel.generated.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsModal.js","names":["c","_c","lazy","Suspense","DevToolsPanelPlugin","DevToolsClient","DevToolsModalProps","plugins","theme","client","DevToolsModalImpl","DevToolsModal","t0","$","t1","undefined","props","process","env","NODE_ENV","t2"],"sources":["../src/DevToolsModal.tsx"],"sourcesContent":["\"use client\";\n\nimport { lazy, Suspense } from \"react\";\nimport type { DevToolsPanelPlugin } from \"./shell/registry\";\nimport type { DevToolsClient } from \"./data/types\";\n\nexport interface DevToolsModalProps {\n /** Extra inspector tabs appended after the builtins. */\n plugins?: DevToolsPanelPlugin[];\n /** Force a theme. Defaults to \"system\", which follows the host `.dark` class. */\n theme?: \"light\" | \"dark\" | \"system\";\n /** Data source. Defaults to the in-process DevToolsHooks client. */\n client?: DevToolsClient;\n}\n\nconst DevToolsModalImpl = lazy(() => import(\"./DevToolsModalImpl\"));\n\n/**\n * Dev-only. In production the body returns null before the lazy panel chunk is\n * ever requested, so the panel and its compiled styles stay out of the\n * production bundle (the dynamic import is also code-split).\n */\nexport const DevToolsModal = (props: DevToolsModalProps = {}) => {\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV === \"production\"\n ) {\n return null;\n }\n\n return (\n <Suspense fallback={null}>\n <DevToolsModalImpl {...props} />\n </Suspense>\n );\n};\n"],"mappings":";;;;;AAeA,MAAMU,oBAAoBR,WAAW,OAAO,yBAAsB;;;;;;AAOlE,MAAaS,iBAAgBC,OAAA;CAAA,MAAAC,IAAAZ,EAAA,CAAA;CAAA,IAAAa;CAAA,IAAAD,EAAA,OAAAD,IAAA;EAACE,KAAAF,OAAAG,KAAAA,IAAA,CAA6B,IAA7BH;EAA8BC,EAAA,KAAAD;EAAAC,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAA9B,MAAAG,QAAAF;CAC5B,IACE,OAAOG,YAAY,eACnBA,QAAOC,KAAcC,aAAK,cAAY,OAE/B;CACR,IAAAC;CAAA,IAAAP,EAAA,OAAAG,OAAA;EAGCI,KAAA,oBAAC,UAAD;GAAoB,UAAA;aAClB,oBAAC,mBAAD,EAAkB,GAAKJ,MAAK,CAAA;EADrB,CAAA;EAEEH,EAAA,KAAAG;EAAAH,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAFXO;AAEW"}
1
+ {"version":3,"file":"DevToolsModal.js","names":["c","_c","lazy","Suspense","DevToolsPanelPlugin","DevToolsClient","DevToolsModalProps","plugins","theme","client","DevToolsModalImpl","DevToolsModal","t0","$","t1","undefined","props","process","env","NODE_ENV","t2"],"sources":["../src/DevToolsModal.tsx"],"sourcesContent":["\"use client\";\n\nimport { lazy, Suspense } from \"react\";\nimport type { DevToolsPanelPlugin } from \"./shell/registry\";\nimport type { DevToolsClient } from \"./data/types\";\n\nexport interface DevToolsModalProps {\n /** Extra inspector tabs appended after the builtins. */\n plugins?: DevToolsPanelPlugin[];\n /** Force a theme. Defaults to \"system\", which follows the host `.dark` class. */\n theme?: \"light\" | \"dark\" | \"system\";\n /** Data source. Defaults to the in-process DevToolsHooks client. */\n client?: DevToolsClient;\n}\n\nconst DevToolsModalImpl = lazy(() => import(\"./DevToolsModalImpl\"));\n\n/**\n * Dev-only. In production the body returns null before the lazy panel chunk is\n * ever requested, so the panel and its compiled styles stay out of the\n * production bundle (the dynamic import is also code-split).\n */\nexport const DevToolsModal = (props: DevToolsModalProps = {}) => {\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV === \"production\"\n ) {\n return null;\n }\n\n return (\n <Suspense fallback={null}>\n <DevToolsModalImpl {...props} />\n </Suspense>\n );\n};\n"],"mappings":";;;;;AAeA,MAAMU,oBAAoBR,WAAW,OAAO,yBAAsB;;;;;;AAOlE,MAAaS,iBAAgBC,OAAA;CAAA,MAAAC,IAAAZ,EAAA,CAAA;CAAA,IAAAa;CAAA,IAAAD,EAAA,OAAAD,IAAA;EAACE,KAAAF,OAAAG,KAAAA,IAAA,CAA6B,IAA7BH;EAA8BC,EAAA,KAAAD;EAAAC,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAA9B,MAAAG,QAAAF;CAC5B,IACE,OAAOG,YAAY,eACnBA,QAAOC,KAAcC,aAAK,cAAY,OAE/B;CACR,IAAAC;CAAA,IAAAP,EAAA,OAAAG,OAAA;EAGCI,KAAA,oBAAC,UAAD;GAAoB,UAAA;GAClB,UAAA,oBAAC,mBAAD,EAAkB,GAAKJ,MAAK,CAAA;EADrB,CAAA;EAEEH,EAAA,KAAAG;EAAAH,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAFXO;AAEW"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsModalImpl.js","names":["c","_c","useMemo","useSyncExternalStore","DevToolsOverlay","ShadowRoot","DevToolsModalProps","isDarkMode","document","documentElement","classList","contains","body","subscribeToThemeChanges","callback","MutationObserver","observer","observe","attributes","attributeFilter","disconnect","DevToolsModalImpl","t0","$","plugins","theme","t1","client","undefined","darkMode","_temp","resolved","t2","overlay","t3"],"sources":["../src/DevToolsModalImpl.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, useSyncExternalStore } from \"react\";\nimport { DevToolsOverlay } from \"./shell/DevToolsOverlay\";\nimport { ShadowRoot } from \"./shell/ShadowRoot\";\nimport type { DevToolsModalProps } from \"./DevToolsModal\";\n\nconst isDarkMode = (): boolean => {\n if (typeof document === \"undefined\") return false;\n return (\n document.documentElement.classList.contains(\"dark\") ||\n document.body.classList.contains(\"dark\")\n );\n};\n\nconst subscribeToThemeChanges = (callback: () => void) => {\n if (typeof MutationObserver === \"undefined\") {\n return () => {};\n }\n\n const observer = new MutationObserver(callback);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n if (document.body !== document.documentElement) {\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n }\n\n return () => observer.disconnect();\n};\n\nconst DevToolsModalImpl = ({\n plugins,\n theme = \"system\",\n client,\n}: DevToolsModalProps) => {\n const darkMode = useSyncExternalStore(\n subscribeToThemeChanges,\n isDarkMode,\n () => false,\n );\n const resolved = theme === \"system\" ? (darkMode ? \"dark\" : \"light\") : theme;\n\n // Stable element identity so the shadow root only re-renders on real changes,\n // not on every render of the host tree.\n const overlay = useMemo(\n () => (\n <DevToolsOverlay theme={resolved} plugins={plugins} client={client} />\n ),\n [resolved, plugins, client],\n );\n\n return <ShadowRoot theme={resolved}>{overlay}</ShadowRoot>;\n};\n\nexport default DevToolsModalImpl;\n"],"mappings":";;;;;;;AAOA,MAAMO,mBAA4B;CAChC,IAAI,OAAOC,aAAa,aAAa,OAAO;CAC5C,OACEA,SAASC,gBAAgBC,UAAUC,SAAS,MAAM,KAClDH,SAASI,KAAKF,UAAUC,SAAS,MAAM;AAE3C;AAEA,MAAME,2BAA2BC,aAAyB;CACxD,IAAI,OAAOC,qBAAqB,aAC9B,aAAa,CAAC;CAGhB,MAAMC,WAAW,IAAID,iBAAiBD,QAAQ;CAC9CE,SAASC,QAAQT,SAASC,iBAAiB;EACzCS,YAAY;EACZC,iBAAiB,CAAC,OAAO;CAC3B,CAAC;CACD,IAAIX,SAASI,SAASJ,SAASC,iBAC7BO,SAASC,QAAQT,SAASI,MAAM;EAC9BM,YAAY;EACZC,iBAAiB,CAAC,OAAO;CAC3B,CAAC;CAGH,aAAaH,SAASI,WAAW;AACnC;AAEA,MAAMC,qBAAoBC,OAAA;CAAA,MAAAC,IAAAtB,EAAA,CAAA;CAAC,MAAA,EAAAuB,SAAAC,OAAAC,IAAAC,WAAAL;CAEzB,MAAAG,QAAAC,OAAAE,KAAAA,IAAA,WAAAF;CAGA,MAAAG,WAAiB1B,qBACfU,yBACAN,YACAuB,KACF;CACA,MAAAC,WAAiBN,UAAU,WAAYI,WAAA,SAAA,UAAtBJ;CAA2D,IAAAO;CAAA,IAAAT,EAAA,OAAAI,UAAAJ,EAAA,OAAAC,WAAAD,EAAA,OAAAQ,UAAA;EAMxEC,KAAA,oBAAC,iBAAD;GAAwBD,OAAAA;GAAmBP;GAAiBG;EAAM,CAAA;EAAIJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAC;EAAAD,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAF1E,MAAAU,UAEID;CAGF,IAAAE;CAAA,IAAAX,EAAA,OAAAU,WAAAV,EAAA,OAAAQ,UAAA;EAEKG,KAAA,oBAAC,YAAD;GAAmBH,OAAAA;aAAWE;EAAnB,CAAA;EAAwCV,EAAA,KAAAU;EAAAV,EAAA,KAAAQ;EAAAR,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,OAAnDW;AAAmD;AArBlC,SAAAJ,QAAA;CAAA,OAQhB;AAAK"}
1
+ {"version":3,"file":"DevToolsModalImpl.js","names":["c","_c","useMemo","useSyncExternalStore","DevToolsOverlay","ShadowRoot","DevToolsModalProps","isDarkMode","document","documentElement","classList","contains","body","subscribeToThemeChanges","callback","MutationObserver","observer","observe","attributes","attributeFilter","disconnect","DevToolsModalImpl","t0","$","plugins","theme","t1","client","undefined","darkMode","_temp","resolved","t2","overlay","t3"],"sources":["../src/DevToolsModalImpl.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, useSyncExternalStore } from \"react\";\nimport { DevToolsOverlay } from \"./shell/DevToolsOverlay\";\nimport { ShadowRoot } from \"./shell/ShadowRoot\";\nimport type { DevToolsModalProps } from \"./DevToolsModal\";\n\nconst isDarkMode = (): boolean => {\n if (typeof document === \"undefined\") return false;\n return (\n document.documentElement.classList.contains(\"dark\") ||\n document.body.classList.contains(\"dark\")\n );\n};\n\nconst subscribeToThemeChanges = (callback: () => void) => {\n if (typeof MutationObserver === \"undefined\") {\n return () => {};\n }\n\n const observer = new MutationObserver(callback);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n if (document.body !== document.documentElement) {\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n }\n\n return () => observer.disconnect();\n};\n\nconst DevToolsModalImpl = ({\n plugins,\n theme = \"system\",\n client,\n}: DevToolsModalProps) => {\n const darkMode = useSyncExternalStore(\n subscribeToThemeChanges,\n isDarkMode,\n () => false,\n );\n const resolved = theme === \"system\" ? (darkMode ? \"dark\" : \"light\") : theme;\n\n // Stable element identity so the shadow root only re-renders on real changes,\n // not on every render of the host tree.\n const overlay = useMemo(\n () => (\n <DevToolsOverlay theme={resolved} plugins={plugins} client={client} />\n ),\n [resolved, plugins, client],\n );\n\n return <ShadowRoot theme={resolved}>{overlay}</ShadowRoot>;\n};\n\nexport default DevToolsModalImpl;\n"],"mappings":";;;;;;;AAOA,MAAMO,mBAA4B;CAChC,IAAI,OAAOC,aAAa,aAAa,OAAO;CAC5C,OACEA,SAASC,gBAAgBC,UAAUC,SAAS,MAAM,KAClDH,SAASI,KAAKF,UAAUC,SAAS,MAAM;AAE3C;AAEA,MAAME,2BAA2BC,aAAyB;CACxD,IAAI,OAAOC,qBAAqB,aAC9B,aAAa,CAAC;CAGhB,MAAMC,WAAW,IAAID,iBAAiBD,QAAQ;CAC9CE,SAASC,QAAQT,SAASC,iBAAiB;EACzCS,YAAY;EACZC,iBAAiB,CAAC,OAAO;CAC3B,CAAC;CACD,IAAIX,SAASI,SAASJ,SAASC,iBAC7BO,SAASC,QAAQT,SAASI,MAAM;EAC9BM,YAAY;EACZC,iBAAiB,CAAC,OAAO;CAC3B,CAAC;CAGH,aAAaH,SAASI,WAAW;AACnC;AAEA,MAAMC,qBAAoBC,OAAA;CAAA,MAAAC,IAAAtB,EAAA,CAAA;CAAC,MAAA,EAAAuB,SAAAC,OAAAC,IAAAC,WAAAL;CAEzB,MAAAG,QAAAC,OAAAE,KAAAA,IAAA,WAAAF;CAGA,MAAAG,WAAiB1B,qBACfU,yBACAN,YACAuB,KACF;CACA,MAAAC,WAAiBN,UAAU,WAAYI,WAAA,SAAA,UAAtBJ;CAA2D,IAAAO;CAAA,IAAAT,EAAA,OAAAI,UAAAJ,EAAA,OAAAC,WAAAD,EAAA,OAAAQ,UAAA;EAMxEC,KAAA,oBAAC,iBAAD;GAAwBD,OAAAA;GAAmBP;GAAiBG;EAAM,CAAA;EAAIJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAC;EAAAD,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAF1E,MAAAU,UAEID;CAGF,IAAAE;CAAA,IAAAX,EAAA,OAAAU,WAAAV,EAAA,OAAAQ,UAAA;EAEKG,KAAA,oBAAC,YAAD;GAAmBH,OAAAA;GAAWE,UAAAA;EAAnB,CAAA;EAAwCV,EAAA,KAAAU;EAAAV,EAAA,KAAAQ;EAAAR,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,OAAnDW;AAAmD;AArBlC,SAAAJ,QAAA;CAAA,OAQhB;AAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsOverlay.js","names":["c","_c","useEffect","useState","DevToolsPanel","DevToolsPanelPlugin","DevToolsClient","DevToolsOverlayProps","plugins","theme","client","DevToolsOverlay","t0","$","isOpen","setIsOpen","t1","t2","handleEscape","event","key","document","addEventListener","removeEventListener","t3","Symbol","for","t4","t5"],"sources":["../../src/shell/DevToolsOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { DevToolsPanel } from \"./DevToolsPanel\";\nimport type { DevToolsPanelPlugin } from \"./registry\";\nimport type { DevToolsClient } from \"../data/types\";\n\nexport interface DevToolsOverlayProps {\n plugins?: DevToolsPanelPlugin[] | undefined;\n theme: \"light\" | \"dark\";\n client?: DevToolsClient | undefined;\n}\n\n/**\n * The full devtools surface (floating launcher + window), rendered inside the\n * shadow root so every element is styled with the package's own Tailwind tokens\n * and isolated from the host page. The window floats over the live app with no\n * backdrop; close with the × or Escape.\n */\nexport const DevToolsOverlay = ({\n plugins,\n theme,\n client,\n}: DevToolsOverlayProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (!isOpen) return;\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") setIsOpen(false);\n };\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen]);\n\n if (!isOpen) {\n return (\n <button\n type=\"button\"\n onClick={() => setIsOpen(true)}\n aria-label=\"Open assistant-ui DevTools\"\n title=\"Open assistant-ui DevTools\"\n className=\"bg-foreground text-background fixed end-5 bottom-5 z-[2147483646] flex size-9 [animation:aui-dt-launcher-in_200ms_cubic-bezier(0.175,0.885,0.32,1.1)] items-center justify-center rounded-full shadow-[var(--shadow-launcher)] backdrop-blur-2xl transition-transform duration-150 ease-out hover:scale-105 active:scale-95\"\n >\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n );\n }\n\n return (\n <>\n <div\n onClick={() => setIsOpen(false)}\n className=\"fixed inset-0 z-[2147483646] [animation:aui-dt-fade-in_150ms_ease-out] bg-black/20 backdrop-blur-[3px]\"\n />\n <div\n role=\"dialog\"\n aria-label=\"assistant-ui DevTools\"\n className=\"bg-background text-foreground border-border fixed top-1/2 left-1/2 z-[2147483647] flex h-[min(560px,80vh)] w-[min(960px,92vw)] -translate-x-1/2 -translate-y-1/2 [animation:aui-dt-window-in_200ms_cubic-bezier(0.175,0.885,0.32,1.1)] flex-col overflow-hidden rounded-xl border shadow-[var(--shadow-window)]\"\n >\n <DevToolsPanel\n theme={theme}\n plugins={plugins}\n client={client}\n onClose={() => setIsOpen(false)}\n />\n </div>\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAmBA,MAAaW,mBAAkBC,OAAA;CAAA,MAAAC,IAAAZ,EAAA,EAAA;CAAC,MAAA,EAAAO,SAAAC,OAAAC,WAAAE;CAK9B,MAAA,CAAAE,QAAAC,aAA4BZ,SAAS,KAAK;CAAE,IAAAa;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAC,QAAA;EAElCE,WAAA;GACR,IAAI,CAACF,QAAM;GACX,MAAAI,gBAAqBC,UAAA;IACnB,IAAIA,MAAKC,QAAS,UAAUL,UAAU,KAAK;GAAE;GAE/CM,SAAQC,iBAAkB,WAAWJ,YAAY;GAAC,aACrCG,SAAQE,oBAAqB,WAAWL,YAAY;EAAC;EACjED,KAAA,CAACH,MAAM;EAACD,EAAA,KAAAC;EAAAD,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAPXX,UAAUc,IAOPC,EAAQ;CAEX,IAAI,CAACH,QAAM;EAAA,IAAAU;EAAA,IAAAX,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;GAIIF,WAAMT,UAAU,IAAI;GAACF,EAAA,KAAAW;EAAA,OAAAA,KAAAX,EAAA;EAAA,IAAAc;EAAA,IAAAd,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;GAFhCC,KAAA,oBAAA,UAAA;IACO,MAAA;IACI,SAAAH;IACE,cAAA;IACL,OAAA;IACI,WAAA;cAEV,oBAAA,OAAA;KACQ,OAAA;KACC,QAAA;KACC,SAAA;KACH,MAAA;KACO,eAAA;eAEZ,oBAAA,QAAA;MACI,GAAA;MACK,QAAA;MACK,aAAA;MACE,eAAA;MACC,gBAAA;KAAO,CAAA;IAEpB,CAAA;GACC,CAAA;GAAAX,EAAA,KAAAc;EAAA,OAAAA,KAAAd,EAAA;EAAA,OAtBTc;CAsBS;CAEZ,IAAAH;CAAA,IAAAX,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;EAIGF,KAAA,oBAAA,OAAA;GACW,eAAMT,UAAU,KAAK;GACpB,WAAA;EAAwG,CAAA;EAClHF,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;EAUWC,WAAMZ,UAAU,KAAK;EAACF,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAH,UAAAG,EAAA,OAAAL,WAAAK,EAAA,OAAAJ,OAAA;EAdrCmB,KAAA,qBAAA,YAAA,EAAA,UAAA,CACEJ,IAIA,oBAAA,OAAA;GACO,MAAA;GACM,cAAA;GACD,WAAA;aAEV,oBAAC,eAAD;IACSf;IACED;IACDE;IACC,SAAAiB;GAAsB,CAAA;EAE7B,CAAA,CAAA,EAAA,CAAA;EACLd,EAAA,KAAAH;EAAAG,EAAA,KAAAL;EAAAK,EAAA,KAAAJ;EAAAI,EAAA,MAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,OAjBHe;AAiBG"}
1
+ {"version":3,"file":"DevToolsOverlay.js","names":["c","_c","useEffect","useState","DevToolsPanel","DevToolsPanelPlugin","DevToolsClient","DevToolsOverlayProps","plugins","theme","client","DevToolsOverlay","t0","$","isOpen","setIsOpen","t1","t2","handleEscape","event","key","document","addEventListener","removeEventListener","t3","Symbol","for","t4","t5"],"sources":["../../src/shell/DevToolsOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { DevToolsPanel } from \"./DevToolsPanel\";\nimport type { DevToolsPanelPlugin } from \"./registry\";\nimport type { DevToolsClient } from \"../data/types\";\n\nexport interface DevToolsOverlayProps {\n plugins?: DevToolsPanelPlugin[] | undefined;\n theme: \"light\" | \"dark\";\n client?: DevToolsClient | undefined;\n}\n\n/**\n * The full devtools surface (floating launcher + window), rendered inside the\n * shadow root so every element is styled with the package's own Tailwind tokens\n * and isolated from the host page. The window floats over the live app with no\n * backdrop; close with the × or Escape.\n */\nexport const DevToolsOverlay = ({\n plugins,\n theme,\n client,\n}: DevToolsOverlayProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (!isOpen) return;\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") setIsOpen(false);\n };\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen]);\n\n if (!isOpen) {\n return (\n <button\n type=\"button\"\n onClick={() => setIsOpen(true)}\n aria-label=\"Open assistant-ui DevTools\"\n title=\"Open assistant-ui DevTools\"\n className=\"bg-foreground text-background fixed end-5 bottom-5 z-[2147483646] flex size-9 [animation:aui-dt-launcher-in_200ms_cubic-bezier(0.175,0.885,0.32,1.1)] items-center justify-center rounded-full shadow-[var(--shadow-launcher)] backdrop-blur-2xl transition-transform duration-150 ease-out hover:scale-105 active:scale-95\"\n >\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n );\n }\n\n return (\n <>\n <div\n onClick={() => setIsOpen(false)}\n className=\"fixed inset-0 z-[2147483646] [animation:aui-dt-fade-in_150ms_ease-out] bg-black/20 backdrop-blur-[3px]\"\n />\n <div\n role=\"dialog\"\n aria-label=\"assistant-ui DevTools\"\n className=\"bg-background text-foreground border-border fixed top-1/2 left-1/2 z-[2147483647] flex h-[min(560px,80vh)] w-[min(960px,92vw)] -translate-x-1/2 -translate-y-1/2 [animation:aui-dt-window-in_200ms_cubic-bezier(0.175,0.885,0.32,1.1)] flex-col overflow-hidden rounded-xl border shadow-[var(--shadow-window)]\"\n >\n <DevToolsPanel\n theme={theme}\n plugins={plugins}\n client={client}\n onClose={() => setIsOpen(false)}\n />\n </div>\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAmBA,MAAaW,mBAAkBC,OAAA;CAAA,MAAAC,IAAAZ,EAAA,EAAA;CAAC,MAAA,EAAAO,SAAAC,OAAAC,WAAAE;CAK9B,MAAA,CAAAE,QAAAC,aAA4BZ,SAAS,KAAK;CAAE,IAAAa;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAC,QAAA;EAElCE,WAAA;GACR,IAAI,CAACF,QAAM;GACX,MAAAI,gBAAqBC,UAAA;IACnB,IAAIA,MAAKC,QAAS,UAAUL,UAAU,KAAK;GAAE;GAE/CM,SAAQC,iBAAkB,WAAWJ,YAAY;GAAC,aACrCG,SAAQE,oBAAqB,WAAWL,YAAY;EAAC;EACjED,KAAA,CAACH,MAAM;EAACD,EAAA,KAAAC;EAAAD,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAPXX,UAAUc,IAOPC,EAAQ;CAEX,IAAI,CAACH,QAAM;EAAA,IAAAU;EAAA,IAAAX,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;GAIIF,WAAMT,UAAU,IAAI;GAACF,EAAA,KAAAW;EAAA,OAAAA,KAAAX,EAAA;EAAA,IAAAc;EAAA,IAAAd,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;GAFhCC,KAAA,oBAAA,UAAA;IACO,MAAA;IACI,SAAAH;IACE,cAAA;IACL,OAAA;IACI,WAAA;IAEV,UAAA,oBAAA,OAAA;KACQ,OAAA;KACC,QAAA;KACC,SAAA;KACH,MAAA;KACO,eAAA;KAEZ,UAAA,oBAAA,QAAA;MACI,GAAA;MACK,QAAA;MACK,aAAA;MACE,eAAA;MACC,gBAAA;KAAO,CAAA;IAEpB,CAAA;GACC,CAAA;GAAAX,EAAA,KAAAc;EAAA,OAAAA,KAAAd,EAAA;EAAA,OAtBTc;CAsBS;CAEZ,IAAAH;CAAA,IAAAX,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;EAIGF,KAAA,oBAAA,OAAA;GACW,eAAMT,UAAU,KAAK;GACpB,WAAA;EAAwG,CAAA;EAClHF,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;EAUWC,WAAMZ,UAAU,KAAK;EAACF,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAH,UAAAG,EAAA,OAAAL,WAAAK,EAAA,OAAAJ,OAAA;EAdrCmB,KAAA,qBAAA,YAAA,EAAA,UAAA,CACEJ,IAIA,oBAAA,OAAA;GACO,MAAA;GACM,cAAA;GACD,WAAA;GAEV,UAAA,oBAAC,eAAD;IACSf;IACED;IACDE;IACC,SAAAiB;GAAsB,CAAA;EAE7B,CAAA,CAAA,EAAA,CAAA;EACLd,EAAA,KAAAH;EAAAG,EAAA,KAAAL;EAAAK,EAAA,KAAAJ;EAAAI,EAAA,MAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,OAjBHe;AAiBG"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsPanel.js","names":["c","_c","useCallback","useEffect","useMemo","useState","clsx","useDevToolsClient","inProcessClient","DevToolsClient","CenteredMessage","builtinPlugins","DevToolsPanelPlugin","DevToolsTabContext","DevToolsPanelProps","plugins","theme","onClose","client","DevToolsPanel","t0","$","t1","undefined","resolvedClient","selectedApiId","setSelectedApiId","activeTabId","setActiveTabId","t2","Symbol","for","selectionByApi","setSelectionByApi","apiIds","selected","clearEvents","switchToThread","t3","t4","includes","t5","sort","_temp","allPlugins","t6","apiId","tabId","nodeId","prev","setSelectionFor","t7","filter","plugin","isAvailable","data","selection","setSelection","_temp2","visiblePlugins","t8","find","plugin_0","id","activePlugin","t9","nodeId_0","threadId","ctx","t10","t11","plugin_1","active","label","map","t12","length","event","value","Number","target","isNaN","_temp3","t13","t14","t15","t16","t17","t18","t19","t20","a","b","order"],"sources":["../../src/shell/DevToolsPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { useDevToolsClient } from \"../data/useDevToolsClient\";\nimport { inProcessClient } from \"../data/createInProcessClient\";\nimport type { DevToolsClient } from \"../data/types\";\nimport { CenteredMessage } from \"../views/ui\";\nimport {\n builtinPlugins,\n type DevToolsPanelPlugin,\n type DevToolsTabContext,\n} from \"./registry\";\n\nexport interface DevToolsPanelProps {\n /** Additional inspector tabs appended after the builtins. */\n plugins?: DevToolsPanelPlugin[] | undefined;\n /** Resolved theme, used to style plugin content and the dark variant. */\n theme?: \"light\" | \"dark\";\n /** When provided, a close control is rendered at the end of the tab bar. */\n onClose?: (() => void) | undefined;\n /** Data source. Defaults to the in-process DevToolsHooks client. */\n client?: DevToolsClient | undefined;\n}\n\nexport const DevToolsPanel = ({\n plugins,\n theme = \"light\",\n onClose,\n client,\n}: DevToolsPanelProps) => {\n const resolvedClient = client ?? inProcessClient;\n const [selectedApiId, setSelectedApiId] = useState<number | null>(null);\n const [activeTabId, setActiveTabId] = useState<string>(\"thread\");\n const [selectionByApi, setSelectionByApi] = useState<\n Record<number, Record<string, string | null>>\n >({});\n const { apiIds, selected, clearEvents, switchToThread } = useDevToolsClient(\n selectedApiId,\n resolvedClient,\n );\n\n useEffect(() => {\n if (selectedApiId !== null && apiIds.includes(selectedApiId)) return;\n setSelectedApiId(apiIds[0] ?? null);\n }, [apiIds, selectedApiId]);\n\n const allPlugins = useMemo(\n () =>\n [...builtinPlugins, ...(plugins ?? [])].sort(\n (a, b) => (a.order ?? 0) - (b.order ?? 0),\n ),\n [plugins],\n );\n\n const setSelectionFor = useCallback(\n (apiId: number, tabId: string, nodeId: string | null) => {\n setSelectionByApi((prev) => ({\n ...prev,\n [apiId]: { ...prev[apiId], [tabId]: nodeId },\n }));\n },\n [],\n );\n\n const visiblePlugins =\n selected && selectedApiId !== null\n ? allPlugins.filter((plugin) =>\n plugin.isAvailable\n ? plugin.isAvailable({\n apiId: selectedApiId,\n data: selected,\n clearEvents,\n theme,\n selection: null,\n setSelection: () => {},\n })\n : true,\n )\n : allPlugins;\n\n const activePlugin =\n visiblePlugins.find((plugin) => plugin.id === activeTabId) ??\n visiblePlugins[0];\n\n const ctx: DevToolsTabContext | null =\n selected && selectedApiId !== null && activePlugin\n ? {\n apiId: selectedApiId,\n data: selected,\n clearEvents,\n theme,\n selection: selectionByApi[selectedApiId]?.[activePlugin.id] ?? null,\n setSelection: (nodeId) =>\n setSelectionFor(selectedApiId, activePlugin.id, nodeId),\n switchToThread: resolvedClient.switchToThread\n ? (threadId) => switchToThread(selectedApiId, threadId)\n : undefined,\n }\n : null;\n\n return (\n <div className=\"text-foreground flex h-full flex-col text-[13px]\">\n <nav className=\"border-border flex h-10 shrink-0 items-center justify-between gap-2 border-b px-2 select-none\">\n <div className=\"flex h-full items-center\">\n {visiblePlugins.map((plugin) => {\n const active = activePlugin?.id === plugin.id;\n return (\n <button\n type=\"button\"\n key={plugin.id}\n onClick={() => setActiveTabId(plugin.id)}\n className={clsx(\n \"relative flex h-full items-center px-3 font-medium transition-colors\",\n active\n ? \"text-foreground\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n {plugin.label}\n {active ? (\n <span className=\"bg-foreground absolute inset-x-2 -bottom-px h-0.5 rounded-full\" />\n ) : null}\n </button>\n );\n })}\n </div>\n\n <div className=\"flex items-center gap-2 pe-1\">\n {apiIds.length > 1 ? (\n <select\n value={selectedApiId ?? \"\"}\n onChange={(event) => {\n const value = Number(event.target.value);\n setSelectedApiId(Number.isNaN(value) ? null : value);\n }}\n className=\"border-border text-muted-foreground hover:text-foreground h-7 rounded-md border bg-transparent px-2 text-[12px] transition-colors\"\n >\n {apiIds.map((id) => (\n <option key={id} value={id}>\n API #{id}\n </option>\n ))}\n </select>\n ) : null}\n\n <span className=\"text-muted-foreground flex items-center gap-1.5 text-[11px]\">\n <span className=\"size-1.5 rounded-full bg-emerald-500\" />\n {apiIds.length > 0\n ? `${apiIds.length} instance${apiIds.length > 1 ? \"s\" : \"\"}`\n : \"Waiting\"}\n </span>\n\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close DevTools\"\n className=\"text-muted-foreground hover:bg-accent hover:text-foreground flex size-7 items-center justify-center rounded-md transition-colors\"\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M18 6 6 18M6 6l12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n ) : null}\n </div>\n </nav>\n\n <section className=\"bg-background min-h-0 flex-1 overflow-hidden\">\n {ctx && activePlugin ? (\n <activePlugin.Component {...ctx} />\n ) : (\n <CenteredMessage>\n Waiting for assistant-ui instance...\n </CenteredMessage>\n )}\n </section>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"DevToolsPanel.js","names":["c","_c","useCallback","useEffect","useMemo","useState","clsx","useDevToolsClient","inProcessClient","DevToolsClient","CenteredMessage","builtinPlugins","DevToolsPanelPlugin","DevToolsTabContext","DevToolsPanelProps","plugins","theme","onClose","client","DevToolsPanel","t0","$","t1","undefined","resolvedClient","selectedApiId","setSelectedApiId","activeTabId","setActiveTabId","t2","Symbol","for","selectionByApi","setSelectionByApi","apiIds","selected","clearEvents","switchToThread","t3","t4","includes","t5","sort","_temp","allPlugins","t6","apiId","tabId","nodeId","prev","setSelectionFor","t7","filter","plugin","isAvailable","data","selection","setSelection","_temp2","visiblePlugins","t8","find","plugin_0","id","activePlugin","t9","nodeId_0","threadId","ctx","t10","t11","plugin_1","active","label","map","t12","length","event","value","Number","target","isNaN","_temp3","t13","t14","t15","t16","t17","t18","t19","t20","a","b","order"],"sources":["../../src/shell/DevToolsPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { useDevToolsClient } from \"../data/useDevToolsClient\";\nimport { inProcessClient } from \"../data/createInProcessClient\";\nimport type { DevToolsClient } from \"../data/types\";\nimport { CenteredMessage } from \"../views/ui\";\nimport {\n builtinPlugins,\n type DevToolsPanelPlugin,\n type DevToolsTabContext,\n} from \"./registry\";\n\nexport interface DevToolsPanelProps {\n /** Additional inspector tabs appended after the builtins. */\n plugins?: DevToolsPanelPlugin[] | undefined;\n /** Resolved theme, used to style plugin content and the dark variant. */\n theme?: \"light\" | \"dark\";\n /** When provided, a close control is rendered at the end of the tab bar. */\n onClose?: (() => void) | undefined;\n /** Data source. Defaults to the in-process DevToolsHooks client. */\n client?: DevToolsClient | undefined;\n}\n\nexport const DevToolsPanel = ({\n plugins,\n theme = \"light\",\n onClose,\n client,\n}: DevToolsPanelProps) => {\n const resolvedClient = client ?? inProcessClient;\n const [selectedApiId, setSelectedApiId] = useState<number | null>(null);\n const [activeTabId, setActiveTabId] = useState<string>(\"thread\");\n const [selectionByApi, setSelectionByApi] = useState<\n Record<number, Record<string, string | null>>\n >({});\n const { apiIds, selected, clearEvents, switchToThread } = useDevToolsClient(\n selectedApiId,\n resolvedClient,\n );\n\n useEffect(() => {\n if (selectedApiId !== null && apiIds.includes(selectedApiId)) return;\n setSelectedApiId(apiIds[0] ?? null);\n }, [apiIds, selectedApiId]);\n\n const allPlugins = useMemo(\n () =>\n [...builtinPlugins, ...(plugins ?? [])].sort(\n (a, b) => (a.order ?? 0) - (b.order ?? 0),\n ),\n [plugins],\n );\n\n const setSelectionFor = useCallback(\n (apiId: number, tabId: string, nodeId: string | null) => {\n setSelectionByApi((prev) => ({\n ...prev,\n [apiId]: { ...prev[apiId], [tabId]: nodeId },\n }));\n },\n [],\n );\n\n const visiblePlugins =\n selected && selectedApiId !== null\n ? allPlugins.filter((plugin) =>\n plugin.isAvailable\n ? plugin.isAvailable({\n apiId: selectedApiId,\n data: selected,\n clearEvents,\n theme,\n selection: null,\n setSelection: () => {},\n })\n : true,\n )\n : allPlugins;\n\n const activePlugin =\n visiblePlugins.find((plugin) => plugin.id === activeTabId) ??\n visiblePlugins[0];\n\n const ctx: DevToolsTabContext | null =\n selected && selectedApiId !== null && activePlugin\n ? {\n apiId: selectedApiId,\n data: selected,\n clearEvents,\n theme,\n selection: selectionByApi[selectedApiId]?.[activePlugin.id] ?? null,\n setSelection: (nodeId) =>\n setSelectionFor(selectedApiId, activePlugin.id, nodeId),\n switchToThread: resolvedClient.switchToThread\n ? (threadId) => switchToThread(selectedApiId, threadId)\n : undefined,\n }\n : null;\n\n return (\n <div className=\"text-foreground flex h-full flex-col text-[13px]\">\n <nav className=\"border-border flex h-10 shrink-0 items-center justify-between gap-2 border-b px-2 select-none\">\n <div className=\"flex h-full items-center\">\n {visiblePlugins.map((plugin) => {\n const active = activePlugin?.id === plugin.id;\n return (\n <button\n type=\"button\"\n key={plugin.id}\n onClick={() => setActiveTabId(plugin.id)}\n className={clsx(\n \"relative flex h-full items-center px-3 font-medium transition-colors\",\n active\n ? \"text-foreground\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n {plugin.label}\n {active ? (\n <span className=\"bg-foreground absolute inset-x-2 -bottom-px h-0.5 rounded-full\" />\n ) : null}\n </button>\n );\n })}\n </div>\n\n <div className=\"flex items-center gap-2 pe-1\">\n {apiIds.length > 1 ? (\n <select\n value={selectedApiId ?? \"\"}\n onChange={(event) => {\n const value = Number(event.target.value);\n setSelectedApiId(Number.isNaN(value) ? null : value);\n }}\n className=\"border-border text-muted-foreground hover:text-foreground h-7 rounded-md border bg-transparent px-2 text-[12px] transition-colors\"\n >\n {apiIds.map((id) => (\n <option key={id} value={id}>\n API #{id}\n </option>\n ))}\n </select>\n ) : null}\n\n <span className=\"text-muted-foreground flex items-center gap-1.5 text-[11px]\">\n <span className=\"size-1.5 rounded-full bg-emerald-500\" />\n {apiIds.length > 0\n ? `${apiIds.length} instance${apiIds.length > 1 ? \"s\" : \"\"}`\n : \"Waiting\"}\n </span>\n\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close DevTools\"\n className=\"text-muted-foreground hover:bg-accent hover:text-foreground flex size-7 items-center justify-center rounded-md transition-colors\"\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M18 6 6 18M6 6l12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n ) : null}\n </div>\n </nav>\n\n <section className=\"bg-background min-h-0 flex-1 overflow-hidden\">\n {ctx && activePlugin ? (\n <activePlugin.Component {...ctx} />\n ) : (\n <CenteredMessage>\n Waiting for assistant-ui instance...\n </CenteredMessage>\n )}\n </section>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SplitLayout.js","names":["clsx","ReactNode","NAV_COL","SplitColumn","key","header","children","SplitLayout","t0","$","_c","sizes","columns","className","t1","t2","split","join","t3","gridTemplateColumns","t4","t5","length","column","index","map"],"sources":["../../src/shell/SplitLayout.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type { ReactNode } from \"react\";\n\n/** Shared nav rail + detail track sizing for the master/detail tabs. */\nexport const NAV_COL = \"clamp(14rem,28%,18rem)_minmax(0,1fr)\";\n\nexport interface SplitColumn {\n key: string;\n /** Fixed rail header; stays aligned across columns. */\n header?: ReactNode | undefined;\n /** Scrollable pane body. */\n children: ReactNode;\n}\n\n/**\n * Multi-column split surface. Each column keeps its header fixed and only the\n * body scrolls, so rail titles and divider lines stay aligned across columns.\n */\nexport const SplitLayout = ({\n sizes,\n columns,\n className,\n}: {\n /** Underscore-separated CSS grid track list, e.g. `12rem_minmax(0,1fr)`. */\n sizes: string;\n columns: SplitColumn[];\n className?: string | undefined;\n}) => (\n <div\n className={clsx(\"grid h-full min-h-0\", className)}\n style={{ gridTemplateColumns: sizes.split(\"_\").join(\" \") }}\n >\n {columns.map((column, index) => (\n <div\n key={column.key}\n className={clsx(\n \"flex min-h-0 flex-col overflow-hidden\",\n index < columns.length - 1 && \"border-border border-e\",\n )}\n >\n {column.header}\n <div className=\"min-h-0 flex-1 overflow-y-auto\">{column.children}</div>\n </div>\n ))}\n </div>\n);\n"],"mappings":";;;;;AAIA,MAAaE,UAAU;;;;;AAcvB,MAAaK,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,OAAAC,SAAAC,cAAAL;CAS3B,IAAAM;CAAA,IAAAL,EAAA,OAAAI,WAAA;EAEcC,KAAAd,KAAK,uBAAuBa,SAAS;EAACJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAE,OAAA;EACnBI,KAAAJ,MAAKK,MAAO,GAAG,CAAC,CAAAC,KAAM,GAAG;EAACR,EAAA,KAAAE;EAAAF,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,OAAAM,IAAA;EAAjDG,KAAA,EAAAC,qBAAuBJ,GAA2B;EAACN,EAAA,KAAAM;EAAAN,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,OAAAG,SAAA;EAAA,IAAAS;EAAA,IAAAZ,EAAA,OAAAG,QAAAU,QAAA;GAE7CD,MAAAE,QAAAC,UACX,qBAAA,OAAA;IAEa,WAAAxB,KACT,yCACAwB,QAAQZ,QAAOU,SAAU,KAAzB,wBACF;cALF,CAOGC,OAAMlB,QACP,oBAAA,OAAA;KAAe,WAAA;eAAkCkB,OAAMjB;IAAgB,CAAA,CACnE;MARCiB,OAAMnB,GAQP;GACPK,EAAA,KAAAG,QAAAU;GAAAb,EAAA,KAAAY;EAAA,OAAAA,KAAAZ,EAAA;EAXAW,KAAAR,QAAOa,IAAKJ,EAWZ;EAACZ,EAAA,KAAAG;EAAAH,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAK,MAAAL,EAAA,QAAAS,MAAAT,EAAA,QAAAW,IAAA;EAfJC,KAAA,oBAAA,OAAA;GACa,WAAAP;GACJ,OAAAI;aAENE;EAYG,CAAA;EAAAX,EAAA,MAAAK;EAAAL,EAAA,MAAAS;EAAAT,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OAhBNY;AAgBM"}
1
+ {"version":3,"file":"SplitLayout.js","names":["clsx","ReactNode","NAV_COL","SplitColumn","key","header","children","SplitLayout","t0","$","_c","sizes","columns","className","t1","t2","split","join","t3","gridTemplateColumns","t4","t5","length","column","index","map"],"sources":["../../src/shell/SplitLayout.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type { ReactNode } from \"react\";\n\n/** Shared nav rail + detail track sizing for the master/detail tabs. */\nexport const NAV_COL = \"clamp(14rem,28%,18rem)_minmax(0,1fr)\";\n\nexport interface SplitColumn {\n key: string;\n /** Fixed rail header; stays aligned across columns. */\n header?: ReactNode | undefined;\n /** Scrollable pane body. */\n children: ReactNode;\n}\n\n/**\n * Multi-column split surface. Each column keeps its header fixed and only the\n * body scrolls, so rail titles and divider lines stay aligned across columns.\n */\nexport const SplitLayout = ({\n sizes,\n columns,\n className,\n}: {\n /** Underscore-separated CSS grid track list, e.g. `12rem_minmax(0,1fr)`. */\n sizes: string;\n columns: SplitColumn[];\n className?: string | undefined;\n}) => (\n <div\n className={clsx(\"grid h-full min-h-0\", className)}\n style={{ gridTemplateColumns: sizes.split(\"_\").join(\" \") }}\n >\n {columns.map((column, index) => (\n <div\n key={column.key}\n className={clsx(\n \"flex min-h-0 flex-col overflow-hidden\",\n index < columns.length - 1 && \"border-border border-e\",\n )}\n >\n {column.header}\n <div className=\"min-h-0 flex-1 overflow-y-auto\">{column.children}</div>\n </div>\n ))}\n </div>\n);\n"],"mappings":";;;;;AAIA,MAAaE,UAAU;;;;;AAcvB,MAAaK,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,OAAAC,SAAAC,cAAAL;CAS3B,IAAAM;CAAA,IAAAL,EAAA,OAAAI,WAAA;EAEcC,KAAAd,KAAK,uBAAuBa,SAAS;EAACJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAE,OAAA;EACnBI,KAAAJ,MAAKK,MAAO,GAAG,CAAC,CAAAC,KAAM,GAAG;EAACR,EAAA,KAAAE;EAAAF,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,OAAAM,IAAA;EAAjDG,KAAA,EAAAC,qBAAuBJ,GAA2B;EAACN,EAAA,KAAAM;EAAAN,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,OAAAG,SAAA;EAAA,IAAAS;EAAA,IAAAZ,EAAA,OAAAG,QAAAU,QAAA;GAE7CD,MAAAE,QAAAC,UACX,qBAAA,OAAA;IAEa,WAAAxB,KACT,yCACAwB,QAAQZ,QAAOU,SAAU,KAAzB,wBACF;IALF,UAAA,CAOGC,OAAMlB,QACP,oBAAA,OAAA;KAAe,WAAA;KAAkCkB,UAAAA,OAAMjB;IAAgB,CAAA,CACnE;GARCiB,GAAAA,OAAMnB,GAQP;GACPK,EAAA,KAAAG,QAAAU;GAAAb,EAAA,KAAAY;EAAA,OAAAA,KAAAZ,EAAA;EAXAW,KAAAR,QAAOa,IAAKJ,EAWZ;EAACZ,EAAA,KAAAG;EAAAH,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAK,MAAAL,EAAA,QAAAS,MAAAT,EAAA,QAAAW,IAAA;EAfJC,KAAA,oBAAA,OAAA;GACa,WAAAP;GACJ,OAAAI;GAENE,UAAAA;EAYG,CAAA;EAAAX,EAAA,MAAAK;EAAAL,EAAA,MAAAS;EAAAT,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OAhBNY;AAgBM"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityTab.js","names":["useMemo","formatClockTime","formatMs","buildActivityNav","defaultActivitySelection","EventStreamPane","findActivityNode","OrphansPane","RunDetailPane","Chip","PaneHeader","SelectableRow","ToneBadge","NAV_COL","SplitLayout","useNavSelectionSync","DevToolsTabContext","detailTitle","node","ReturnType","kind","run","index","ActivityTab","t0","$","_c","apiId","data","clearEvents","selection","setSelection","logs","t1","nodes","runs","t2","bb0","t3","selectedId","T0","T1","active","t4","t5","t6","t7","t8","length","Symbol","for","bb1","t9","t10","t11","id","endTime","undefined","durationMs","startTime","events","map","key","header","children","t12","t13"],"sources":["../../../src/shell/tabs/ActivityTab.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { formatClockTime, formatMs } from \"../../utils/common\";\nimport {\n buildActivityNav,\n defaultActivitySelection,\n EventStreamPane,\n findActivityNode,\n OrphansPane,\n RunDetailPane,\n} from \"../../views/activity\";\nimport { Chip, PaneHeader, SelectableRow, ToneBadge } from \"../../views/ui\";\nimport { NAV_COL, SplitLayout } from \"../SplitLayout\";\nimport { useNavSelectionSync } from \"./navSelection\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst detailTitle = (node: ReturnType<typeof findActivityNode>) => {\n if (!node) return \"Activity\";\n switch (node.kind) {\n case \"stream\":\n return \"Event stream\";\n case \"run\":\n return `Run #${node.run.index}`;\n case \"orphans\":\n return \"Outside runs\";\n default:\n return \"Activity\";\n }\n};\n\nexport const ActivityTab = ({\n apiId,\n data,\n clearEvents,\n selection,\n setSelection,\n}: DevToolsTabContext) => {\n const logs = data.logs;\n const { nodes, runs } = useMemo(() => buildActivityNav(logs), [logs]);\n\n const selectedId = useMemo(() => {\n if (selection && findActivityNode(nodes, selection)) return selection;\n return defaultActivitySelection(nodes);\n }, [nodes, selection]);\n\n useNavSelectionSync(selectedId, selection, setSelection);\n\n const active = findActivityNode(nodes, selectedId);\n\n if (!logs.length) {\n return (\n <div className=\"text-muted-foreground flex h-full items-center justify-center p-3 text-[12px]\">\n No events logged for this assistant instance.\n </div>\n );\n }\n\n return (\n <SplitLayout\n sizes={NAV_COL}\n columns={[\n {\n key: \"nav\",\n header: (\n <PaneHeader\n trailing={\n <span>\n {runs.length} runs · {logs.length} events\n </span>\n }\n >\n Activity\n </PaneHeader>\n ),\n children: nodes.map((node) => (\n <SelectableRow\n key={node.id}\n selected={selectedId === node.id}\n dense\n onSelect={() => setSelection(node.id)}\n >\n {node.kind === \"stream\" ? (\n <span className=\"text-foreground block py-1.5 font-medium\">\n All events\n <span className=\"text-muted-foreground font-normal\">\n {\" \"}\n · {logs.length}\n </span>\n </span>\n ) : node.kind === \"run\" ? (\n <div className=\"flex min-w-0 items-center justify-between gap-2 py-1.5\">\n <span className=\"text-foreground font-medium\">\n Run #{node.run.index}\n </span>\n <div className=\"flex shrink-0 items-center gap-1.5\">\n {node.run.endTime === undefined ? (\n <ToneBadge tone=\"blue\" size=\"sm\">\n running\n </ToneBadge>\n ) : (\n <Chip>{formatMs(node.run.durationMs ?? 0)}</Chip>\n )}\n <span className=\"text-muted-foreground font-mono text-[10px] tabular-nums\">\n {formatClockTime(node.run.startTime)}\n </span>\n </div>\n </div>\n ) : (\n <span className=\"text-foreground block py-1.5 font-medium\">\n Outside runs\n <span className=\"text-muted-foreground font-normal\">\n {\" \"}\n · {node.events.length}\n </span>\n </span>\n )}\n </SelectableRow>\n )),\n },\n {\n key: \"detail\",\n header: (\n <PaneHeader\n trailing={\n active?.kind === \"stream\" && logs.length ? (\n <button\n type=\"button\"\n onClick={() => clearEvents(apiId)}\n className=\"text-muted-foreground hover:text-foreground text-[11px] leading-none\"\n >\n clear\n </button>\n ) : active?.kind === \"run\" &&\n active.run.endTime === undefined ? (\n <ToneBadge tone=\"blue\" size=\"sm\">\n running\n </ToneBadge>\n ) : active?.kind === \"run\" &&\n active.run.durationMs !== undefined ? (\n <Chip>{formatMs(active.run.durationMs)}</Chip>\n ) : undefined\n }\n >\n {detailTitle(active)}\n </PaneHeader>\n ),\n children: active ? (\n active.kind === \"stream\" ? (\n <EventStreamPane logs={logs} />\n ) : active.kind === \"run\" ? (\n <div className=\"p-3\">\n <RunDetailPane run={active.run} />\n </div>\n ) : (\n <OrphansPane events={active.events} />\n )\n ) : null,\n },\n ]}\n />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ActivityTab.js","names":["useMemo","formatClockTime","formatMs","buildActivityNav","defaultActivitySelection","EventStreamPane","findActivityNode","OrphansPane","RunDetailPane","Chip","PaneHeader","SelectableRow","ToneBadge","NAV_COL","SplitLayout","useNavSelectionSync","DevToolsTabContext","detailTitle","node","ReturnType","kind","run","index","ActivityTab","t0","$","_c","apiId","data","clearEvents","selection","setSelection","logs","t1","nodes","runs","t2","bb0","t3","selectedId","T0","T1","active","t4","t5","t6","t7","t8","length","Symbol","for","bb1","t9","t10","t11","id","endTime","undefined","durationMs","startTime","events","map","key","header","children","t12","t13"],"sources":["../../../src/shell/tabs/ActivityTab.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { formatClockTime, formatMs } from \"../../utils/common\";\nimport {\n buildActivityNav,\n defaultActivitySelection,\n EventStreamPane,\n findActivityNode,\n OrphansPane,\n RunDetailPane,\n} from \"../../views/activity\";\nimport { Chip, PaneHeader, SelectableRow, ToneBadge } from \"../../views/ui\";\nimport { NAV_COL, SplitLayout } from \"../SplitLayout\";\nimport { useNavSelectionSync } from \"./navSelection\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst detailTitle = (node: ReturnType<typeof findActivityNode>) => {\n if (!node) return \"Activity\";\n switch (node.kind) {\n case \"stream\":\n return \"Event stream\";\n case \"run\":\n return `Run #${node.run.index}`;\n case \"orphans\":\n return \"Outside runs\";\n default:\n return \"Activity\";\n }\n};\n\nexport const ActivityTab = ({\n apiId,\n data,\n clearEvents,\n selection,\n setSelection,\n}: DevToolsTabContext) => {\n const logs = data.logs;\n const { nodes, runs } = useMemo(() => buildActivityNav(logs), [logs]);\n\n const selectedId = useMemo(() => {\n if (selection && findActivityNode(nodes, selection)) return selection;\n return defaultActivitySelection(nodes);\n }, [nodes, selection]);\n\n useNavSelectionSync(selectedId, selection, setSelection);\n\n const active = findActivityNode(nodes, selectedId);\n\n if (!logs.length) {\n return (\n <div className=\"text-muted-foreground flex h-full items-center justify-center p-3 text-[12px]\">\n No events logged for this assistant instance.\n </div>\n );\n }\n\n return (\n <SplitLayout\n sizes={NAV_COL}\n columns={[\n {\n key: \"nav\",\n header: (\n <PaneHeader\n trailing={\n <span>\n {runs.length} runs · {logs.length} events\n </span>\n }\n >\n Activity\n </PaneHeader>\n ),\n children: nodes.map((node) => (\n <SelectableRow\n key={node.id}\n selected={selectedId === node.id}\n dense\n onSelect={() => setSelection(node.id)}\n >\n {node.kind === \"stream\" ? (\n <span className=\"text-foreground block py-1.5 font-medium\">\n All events\n <span className=\"text-muted-foreground font-normal\">\n {\" \"}\n · {logs.length}\n </span>\n </span>\n ) : node.kind === \"run\" ? (\n <div className=\"flex min-w-0 items-center justify-between gap-2 py-1.5\">\n <span className=\"text-foreground font-medium\">\n Run #{node.run.index}\n </span>\n <div className=\"flex shrink-0 items-center gap-1.5\">\n {node.run.endTime === undefined ? (\n <ToneBadge tone=\"blue\" size=\"sm\">\n running\n </ToneBadge>\n ) : (\n <Chip>{formatMs(node.run.durationMs ?? 0)}</Chip>\n )}\n <span className=\"text-muted-foreground font-mono text-[10px] tabular-nums\">\n {formatClockTime(node.run.startTime)}\n </span>\n </div>\n </div>\n ) : (\n <span className=\"text-foreground block py-1.5 font-medium\">\n Outside runs\n <span className=\"text-muted-foreground font-normal\">\n {\" \"}\n · {node.events.length}\n </span>\n </span>\n )}\n </SelectableRow>\n )),\n },\n {\n key: \"detail\",\n header: (\n <PaneHeader\n trailing={\n active?.kind === \"stream\" && logs.length ? (\n <button\n type=\"button\"\n onClick={() => clearEvents(apiId)}\n className=\"text-muted-foreground hover:text-foreground text-[11px] leading-none\"\n >\n clear\n </button>\n ) : active?.kind === \"run\" &&\n active.run.endTime === undefined ? (\n <ToneBadge tone=\"blue\" size=\"sm\">\n running\n </ToneBadge>\n ) : active?.kind === \"run\" &&\n active.run.durationMs !== undefined ? (\n <Chip>{formatMs(active.run.durationMs)}</Chip>\n ) : undefined\n }\n >\n {detailTitle(active)}\n </PaneHeader>\n ),\n children: active ? (\n active.kind === \"stream\" ? (\n <EventStreamPane logs={logs} />\n ) : active.kind === \"run\" ? (\n <div className=\"p-3\">\n <RunDetailPane run={active.run} />\n </div>\n ) : (\n <OrphansPane events={active.events} />\n )\n ) : null,\n },\n ]}\n />\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContextTab.js","names":["useMemo","truncate","ContextDetail","buildContextNav","toolUiCount","ContextNode","findNavNode","flattenNav","Chip","EmptyState","PaneHeader","SelectableRow","NAV_COL","SplitLayout","useNavSelectionSync","DevToolsTabContext","detailTitle","node","toolUiCountValue","kind","tool","name","ContextTab","t0","$","_c","data","selection","setSelection","t1","groups","t2","nodes","state","tools","t3","bb0","id","selectedNode","length","t4","Symbol","for","active","T0","t5","t6","t7","group","label","map","preview","type","key","header","children","t8","T1","t9","undefined","t10","t11","t12","t13","t14","t15"],"sources":["../../../src/shell/tabs/ContextTab.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { truncate } from \"../../utils/common\";\nimport {\n ContextDetail,\n buildContextNav,\n toolUiCount,\n type ContextNode,\n} from \"../../views/context\";\nimport { findNavNode, flattenNav } from \"../../views/nav\";\nimport { Chip, EmptyState, PaneHeader, SelectableRow } from \"../../views/ui\";\nimport { NAV_COL, SplitLayout } from \"../SplitLayout\";\nimport { useNavSelectionSync } from \"./navSelection\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst detailTitle = (\n node: ContextNode | undefined,\n toolUiCountValue: number,\n) => {\n if (!node) return \"Context\";\n switch (node.kind) {\n case \"system\":\n return \"System prompt\";\n case \"tool\":\n return node.tool.name;\n case \"callSettings\":\n return \"Call settings\";\n case \"config\":\n return \"Config\";\n case \"mcp\":\n return \"MCP\";\n case \"toolUIs\":\n return toolUiCountValue\n ? `Tool UI mappings · ${toolUiCountValue}`\n : \"Tool UI mappings\";\n default:\n return \"Context\";\n }\n};\n\nexport const ContextTab = ({\n data,\n selection,\n setSelection,\n}: DevToolsTabContext) => {\n const groups = useMemo(() => buildContextNav(data), [data]);\n const nodes = useMemo(() => flattenNav(groups), [groups]);\n const toolUiCountValue = toolUiCount(data.state.tools);\n\n const selectedNode = useMemo(() => {\n if (selection && findNavNode(groups, selection)) {\n return selection;\n }\n return nodes[0]?.id ?? null;\n }, [groups, nodes, selection]);\n\n useNavSelectionSync(selectedNode, selection, setSelection);\n\n if (!nodes.length) {\n return (\n <div className=\"flex h-full items-center justify-center p-3\">\n <EmptyState>\n No model context, MCP, or tool UI data for this instance.\n </EmptyState>\n </div>\n );\n }\n\n const active = findNavNode(groups, selectedNode);\n\n return (\n <SplitLayout\n sizes={NAV_COL}\n columns={[\n {\n key: \"nav\",\n header: <PaneHeader>Context</PaneHeader>,\n children: groups.map((group) => (\n <div key={group.label} className=\"flex flex-col\">\n <div className=\"text-muted-foreground px-3 pt-2 pb-0.5 text-[10px] font-medium tracking-wide uppercase\">\n {group.label}\n </div>\n {group.nodes.map((node) => (\n <SelectableRow\n key={node.id}\n selected={selectedNode === node.id}\n dense\n onSelect={() => setSelection(node.id)}\n >\n {node.kind === \"system\" ? (\n <div className=\"flex min-w-0 flex-col gap-0.5 py-1.5\">\n <span className=\"text-foreground font-medium\">\n System prompt\n </span>\n <span className=\"text-muted-foreground truncate text-[10px]\">\n {truncate(node.preview, 48)}\n </span>\n </div>\n ) : node.kind === \"tool\" ? (\n <div className=\"flex min-w-0 items-center justify-between gap-2 py-1.5\">\n <span className=\"text-foreground truncate font-medium\">\n {node.tool.name}\n </span>\n {node.tool.type ? (\n <Chip className=\"shrink-0\">{node.tool.type}</Chip>\n ) : null}\n </div>\n ) : node.kind === \"callSettings\" ? (\n <span className=\"text-foreground block py-1.5 font-medium\">\n Call settings\n </span>\n ) : node.kind === \"config\" ? (\n <span className=\"text-foreground block py-1.5 font-medium\">\n Config\n </span>\n ) : node.kind === \"mcp\" ? (\n <span className=\"text-foreground block py-1.5 font-medium\">\n MCP servers\n </span>\n ) : (\n <span className=\"text-foreground block py-1.5 font-medium\">\n Tool UI mappings\n {toolUiCountValue > 0 ? (\n <span className=\"text-muted-foreground font-normal\">\n {\" \"}\n · {toolUiCountValue}\n </span>\n ) : null}\n </span>\n )}\n </SelectableRow>\n ))}\n </div>\n )),\n },\n {\n key: \"detail\",\n header: (\n <PaneHeader\n trailing={\n active?.kind === \"tool\" && active.tool.type ? (\n <Chip>{active.tool.type}</Chip>\n ) : undefined\n }\n >\n {detailTitle(active, toolUiCountValue)}\n </PaneHeader>\n ),\n children: active ? (\n <div className=\"p-3\">\n <ContextDetail node={active} data={data} />\n </div>\n ) : null,\n },\n ]}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAMgB,eACJC,MACAC,qBACG;CACH,IAAI,CAACD,MAAM,OAAO;CAClB,QAAQA,KAAKE,MAAb;EACE,KAAK,UACH,OAAO;EACT,KAAK,QACH,OAAOF,KAAKG,KAAKC;EACnB,KAAK,gBACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,OACH,OAAO;EACT,KAAK,WACH,OAAOH,mBACH,sBAAsBA,qBACtB;EACN,SACE,OAAO;CACX;AACF;AAEA,MAAaI,cAAaC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,MAAAC,WAAAC,iBAAAL;CAIN,IAAAM;CAAA,IAAAL,EAAA,OAAAE,MAAA;EACUG,KAAA1B,gBAAgBuB,IAAI;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAlD,MAAAM,SAA6BD;CAA+B,IAAAE;CAAA,IAAAP,EAAA,OAAAM,QAAA;EAChCC,KAAAxB,WAAWuB,MAAM;EAACN,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAA9C,MAAAQ,QAA4BD;CAC5B,MAAAb,mBAAyBd,YAAYsB,KAAIO,MAAMC,KAAM;CAAE,IAAAC;CAAAC,KAAA;EAGrD,IAAIT,aAAarB,YAAYwB,QAAQH,SAAS,GAAC;GAC7CQ,KAAOR;GAAP,MAAAS;EAAiB;EAEnBD,KAAOH,MAAK,EAAO,EAAAK,MAAZ;CAAqB;CAJ9B,MAAAC,eAAqBH;CAOrBrB,oBAAoBwB,cAAcX,WAAWC,YAAY;CAEzD,IAAI,CAACI,MAAKO,QAAO;EAAA,IAAAC;EAAA,IAAAhB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,GAAA;GAEbF,KAAA,oBAAA,OAAA;IAAe,WAAA;cACb,oBAAC,YAAD,EAAA,UAAY,4DAAD,CAAA;GAGP,CAAA;GAAAhB,EAAA,KAAAgB;EAAA,OAAAA,KAAAhB,EAAA;EAAA,OAJNgB;CAIM;CAIV,MAAAG,SAAerC,YAAYwB,QAAQQ,YAAY;CAG5C,MAAAM,KAAA/B;CACQD,MAAAA,KAAAA;CAAO,IAAAiC;CAAA,IAAArB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,GAAA;EAIFG,KAAA,oBAAC,YAAD,EAAA,UAAY,UAAD,CAAA;EAAqBrB,EAAA,KAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,OAAAM,UAAAN,EAAA,OAAAc,gBAAAd,EAAA,OAAAI,gBAAAJ,EAAA,OAAAN,kBAAA;EAAA,IAAA6B;EAAA,IAAAvB,EAAA,QAAAc,gBAAAd,EAAA,QAAAI,gBAAAJ,EAAA,QAAAN,kBAAA;GACnB6B,MAAAC,UACnB,qBAAA,OAAA;IAAiC,WAAA;cAAjC,CACE,oBAAA,OAAA;KAAe,WAAA;eACZA,MAAKC;IACF,CAAA,GACLD,MAAKhB,MAAMkB,KAAKjC,SACf,oBAAC,eAAD;KAEY,UAAAqB,iBAAiBrB,KAAIoB;KAC/B,OAAA;KACU,gBAAMT,aAAaX,KAAIoB,EAAG;eAEnCpB,KAAIE,SAAU,WACb,qBAAA,OAAA;MAAe,WAAA;gBAAf,CACE,oBAAA,QAAA;OAAgB,WAAA;iBAA8B;MAEvC,CAAA,GACP,oBAAA,QAAA;OAAgB,WAAA;iBACblB,SAASgB,KAAIkC,SAAU,EAAE;MACrB,CAAA,CACH;UACJlC,KAAIE,SAAU,SAChB,qBAAA,OAAA;MAAe,WAAA;gBAAf,CACE,oBAAA,QAAA;OAAgB,WAAA;iBACbF,KAAIG,KAAKC;MACL,CAAA,GACNJ,KAAIG,KAAKgC,OACR,oBAAC,MAAD;OAAgB,WAAA;iBAAYnC,KAAIG,KAAKgC;MAAhC,CAAA,IADN,IAGG;UACJnC,KAAIE,SAAU,iBAChB,oBAAA,QAAA;MAAgB,WAAA;gBAA2C;KAEpD,CAAA,IACLF,KAAIE,SAAU,WAChB,oBAAA,QAAA;MAAgB,WAAA;gBAA2C;KAEpD,CAAA,IACLF,KAAIE,SAAU,QAChB,oBAAA,QAAA;MAAgB,WAAA;gBAA2C;KAEpD,CAAA,IAEP,qBAAA,QAAA;MAAgB,WAAA;gBAAhB,CAA2D,oBAExDD,mBAAmB,IAClB,qBAAA,QAAA;OAAgB,WAAA;iBAAhB;QACG;QAAI;QACFA;OACE;WAJR,IAMI;;IA7CG,GACPD,KAAIoB,EADG,CAgDf,CACG;MAtDIW,MAAKC,KAsDT;GACPzB,EAAA,MAAAc;GAAAd,EAAA,MAAAI;GAAAJ,EAAA,MAAAN;GAAAM,EAAA,MAAAuB;EAAA,OAAAA,KAAAvB,EAAA;EAxDSsB,KAAAhB,OAAMoB,IAAKH,EAwDpB;EAACvB,EAAA,KAAAM;EAAAN,EAAA,KAAAc;EAAAd,EAAA,KAAAI;EAAAJ,EAAA,KAAAN;EAAAM,EAAA,MAAAsB;CAAA,OAAAA,KAAAtB,EAAA;CAAA,IAAAuB;CAAA,IAAAvB,EAAA,QAAAsB,IAAA;EA3DJC,KAAA;GAAAM,KACO;GAAKC,QACFT;GAAgCU,UAC9BT;EAyDZ;EAACtB,EAAA,MAAAsB;EAAAtB,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAEM,MAAAgC,KAAA;CAEF,MAAAC,KAAA/C;CAEG,MAAAgD,KAAAf,QAAMxB,SAAW,UAAUwB,OAAMvB,KAAKgC,OACpC,oBAAC,MAAD,EAAA,UAAOT,OAAMvB,KAAKgC,KAAb,CAAA,IADPO,KAAAA;CAKD,MAAAC,MAAA5C,YAAY2B,QAAQzB,gBAAgB;CAAC,IAAA2C;CAAA,IAAArC,EAAA,QAAAiC,MAAAjC,EAAA,QAAAoC,OAAApC,EAAA,QAAAkC,IAAA;EAPxCG,MAAA,oBAAC,IAAD;GAEI,UAAAH;aAKDE;EAPQ,CAAA;EAQEpC,EAAA,MAAAiC;EAAAjC,EAAA,MAAAoC;EAAApC,EAAA,MAAAkC;EAAAlC,EAAA,MAAAqC;CAAA,OAAAA,MAAArC,EAAA;CAAA,IAAAsC;CAAA,IAAAtC,EAAA,QAAAmB,UAAAnB,EAAA,QAAAE,MAAA;EAELoC,MAAAnB,SACR,oBAAA,OAAA;GAAe,WAAA;aACb,oBAAC,eAAD;IAAqBA,MAAAA;IAAcjB;GAAI,CAAA;EACnC,CAAA,IAHE;EAIFF,EAAA,MAAAmB;EAAAnB,EAAA,MAAAE;EAAAF,EAAA,MAAAsC;CAAA,OAAAA,MAAAtC,EAAA;CAAA,IAAAuC;CAAA,IAAAvC,EAAA,QAAAqC,OAAArC,EAAA,QAAAsC,KAAA;EAjBVC,MAAA;GAAAV,KACOG;GAAQF,QAEXO;GAQaN,UAELO;EAKZ;EAACtC,EAAA,MAAAqC;EAAArC,EAAA,MAAAsC;EAAAtC,EAAA,MAAAuC;CAAA,OAAAA,MAAAvC,EAAA;CAAA,IAAAwC;CAAA,IAAAxC,EAAA,QAAAuC,OAAAvC,EAAA,QAAAuB,IAAA;EAhFMiB,MAAA,CACPjB,IA6DAgB,GAkBC;EACFvC,EAAA,MAAAuC;EAAAvC,EAAA,MAAAuB;EAAAvB,EAAA,MAAAwC;CAAA,OAAAA,MAAAxC,EAAA;CAAA,IAAAyC;CAAA,IAAAzC,EAAA,QAAAoB,MAAApB,EAAA,QAAAwC,OAAAxC,EAAA,QAAAgB,IAAA;EAnFHyB,MAAA,oBAAC,IAAD;GACSrD,OAAAA;GACE,SAAAoD;EAiFR,CAAA;EACDxC,EAAA,MAAAoB;EAAApB,EAAA,MAAAwC;EAAAxC,EAAA,MAAAgB;EAAAhB,EAAA,MAAAyC;CAAA,OAAAA,MAAAzC,EAAA;CAAA,OApFFyC;AAoFE"}
1
+ {"version":3,"file":"ContextTab.js","names":["useMemo","truncate","ContextDetail","buildContextNav","toolUiCount","ContextNode","findNavNode","flattenNav","Chip","EmptyState","PaneHeader","SelectableRow","NAV_COL","SplitLayout","useNavSelectionSync","DevToolsTabContext","detailTitle","node","toolUiCountValue","kind","tool","name","ContextTab","t0","$","_c","data","selection","setSelection","t1","groups","t2","nodes","state","tools","t3","bb0","id","selectedNode","length","t4","Symbol","for","active","T0","t5","t6","t7","group","label","map","preview","type","key","header","children","t8","T1","t9","undefined","t10","t11","t12","t13","t14","t15"],"sources":["../../../src/shell/tabs/ContextTab.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { truncate } from \"../../utils/common\";\nimport {\n ContextDetail,\n buildContextNav,\n toolUiCount,\n type ContextNode,\n} from \"../../views/context\";\nimport { findNavNode, flattenNav } from \"../../views/nav\";\nimport { Chip, EmptyState, PaneHeader, SelectableRow } from \"../../views/ui\";\nimport { NAV_COL, SplitLayout } from \"../SplitLayout\";\nimport { useNavSelectionSync } from \"./navSelection\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst detailTitle = (\n node: ContextNode | undefined,\n toolUiCountValue: number,\n) => {\n if (!node) return \"Context\";\n switch (node.kind) {\n case \"system\":\n return \"System prompt\";\n case \"tool\":\n return node.tool.name;\n case \"callSettings\":\n return \"Call settings\";\n case \"config\":\n return \"Config\";\n case \"mcp\":\n return \"MCP\";\n case \"toolUIs\":\n return toolUiCountValue\n ? `Tool UI mappings · ${toolUiCountValue}`\n : \"Tool UI mappings\";\n default:\n return \"Context\";\n }\n};\n\nexport const ContextTab = ({\n data,\n selection,\n setSelection,\n}: DevToolsTabContext) => {\n const groups = useMemo(() => buildContextNav(data), [data]);\n const nodes = useMemo(() => flattenNav(groups), [groups]);\n const toolUiCountValue = toolUiCount(data.state.tools);\n\n const selectedNode = useMemo(() => {\n if (selection && findNavNode(groups, selection)) {\n return selection;\n }\n return nodes[0]?.id ?? null;\n }, [groups, nodes, selection]);\n\n useNavSelectionSync(selectedNode, selection, setSelection);\n\n if (!nodes.length) {\n return (\n <div className=\"flex h-full items-center justify-center p-3\">\n <EmptyState>\n No model context, MCP, or tool UI data for this instance.\n </EmptyState>\n </div>\n );\n }\n\n const active = findNavNode(groups, selectedNode);\n\n return (\n <SplitLayout\n sizes={NAV_COL}\n columns={[\n {\n key: \"nav\",\n header: <PaneHeader>Context</PaneHeader>,\n children: groups.map((group) => (\n <div key={group.label} className=\"flex flex-col\">\n <div className=\"text-muted-foreground px-3 pt-2 pb-0.5 text-[10px] font-medium tracking-wide uppercase\">\n {group.label}\n </div>\n {group.nodes.map((node) => (\n <SelectableRow\n key={node.id}\n selected={selectedNode === node.id}\n dense\n onSelect={() => setSelection(node.id)}\n >\n {node.kind === \"system\" ? (\n <div className=\"flex min-w-0 flex-col gap-0.5 py-1.5\">\n <span className=\"text-foreground font-medium\">\n System prompt\n </span>\n <span className=\"text-muted-foreground truncate text-[10px]\">\n {truncate(node.preview, 48)}\n </span>\n </div>\n ) : node.kind === \"tool\" ? (\n <div className=\"flex min-w-0 items-center justify-between gap-2 py-1.5\">\n <span className=\"text-foreground truncate font-medium\">\n {node.tool.name}\n </span>\n {node.tool.type ? (\n <Chip className=\"shrink-0\">{node.tool.type}</Chip>\n ) : null}\n </div>\n ) : node.kind === \"callSettings\" ? (\n <span className=\"text-foreground block py-1.5 font-medium\">\n Call settings\n </span>\n ) : node.kind === \"config\" ? (\n <span className=\"text-foreground block py-1.5 font-medium\">\n Config\n </span>\n ) : node.kind === \"mcp\" ? (\n <span className=\"text-foreground block py-1.5 font-medium\">\n MCP servers\n </span>\n ) : (\n <span className=\"text-foreground block py-1.5 font-medium\">\n Tool UI mappings\n {toolUiCountValue > 0 ? (\n <span className=\"text-muted-foreground font-normal\">\n {\" \"}\n · {toolUiCountValue}\n </span>\n ) : null}\n </span>\n )}\n </SelectableRow>\n ))}\n </div>\n )),\n },\n {\n key: \"detail\",\n header: (\n <PaneHeader\n trailing={\n active?.kind === \"tool\" && active.tool.type ? (\n <Chip>{active.tool.type}</Chip>\n ) : undefined\n }\n >\n {detailTitle(active, toolUiCountValue)}\n </PaneHeader>\n ),\n children: active ? (\n <div className=\"p-3\">\n <ContextDetail node={active} data={data} />\n </div>\n ) : null,\n },\n ]}\n />\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RawTab.js","names":["useMemo","buildRawNav","RawDetail","RawNode","findNavNode","firstNavId","Chip","EmptyState","PaneHeader","SelectableRow","NAV_COL","SplitLayout","useNavSelectionSync","DevToolsTabContext","detailTitle","node","kind","key","RawTab","t0","$","_c","data","selection","setSelection","t1","groups","t2","state","Object","keys","sliceCount","length","t3","bb0","t4","selectedId","T0","T1","active","t5","t6","t7","t8","t9","Symbol","for","bb1","t10","t11","t12","t13","group","label","nodes","map","id","hint","count","header","children","undefined","scopes","t14"],"sources":["../../../src/shell/tabs/RawTab.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { buildRawNav, RawDetail, type RawNode } from \"../../views/raw\";\nimport { findNavNode, firstNavId } from \"../../views/nav\";\nimport { Chip, EmptyState, PaneHeader, SelectableRow } from \"../../views/ui\";\nimport { NAV_COL, SplitLayout } from \"../SplitLayout\";\nimport { useNavSelectionSync } from \"./navSelection\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst detailTitle = (node: RawNode | undefined) => {\n if (!node) return \"Raw\";\n if (node.kind === \"scopes\") return \"Scopes\";\n return node.key;\n};\n\nexport const RawTab = ({\n data,\n selection,\n setSelection,\n}: DevToolsTabContext) => {\n const groups = useMemo(() => buildRawNav(data), [data]);\n const sliceCount = Object.keys(data.state).length;\n\n const selectedId = useMemo(() => {\n if (selection && findNavNode(groups, selection)) return selection;\n return firstNavId(groups);\n }, [groups, selection]);\n\n useNavSelectionSync(selectedId, selection, setSelection);\n\n const active = findNavNode(groups, selectedId);\n\n if (!groups.length) {\n return (\n <div className=\"flex h-full items-center justify-center p-3\">\n <EmptyState>No runtime state reported for this instance.</EmptyState>\n </div>\n );\n }\n\n return (\n <SplitLayout\n sizes={NAV_COL}\n columns={[\n {\n key: \"nav\",\n header: (\n <PaneHeader\n trailing={\n <span>\n {sliceCount} slice{sliceCount === 1 ? \"\" : \"s\"}\n </span>\n }\n >\n Raw\n </PaneHeader>\n ),\n children: groups.map((group) => (\n <div key={group.label} className=\"flex flex-col\">\n <div className=\"text-muted-foreground px-3 pt-2 pb-0.5 text-[10px] font-medium tracking-wide uppercase\">\n {group.label}\n </div>\n {group.nodes.map((node) => (\n <SelectableRow\n key={node.id}\n selected={selectedId === node.id}\n dense\n onSelect={() => setSelection(node.id)}\n >\n {node.kind === \"slice\" ? (\n <div className=\"flex min-w-0 items-center justify-between gap-2 py-1.5\">\n <span className=\"text-foreground truncate font-medium\">\n {node.key}\n </span>\n {node.hint ? (\n <span className=\"text-muted-foreground shrink-0 text-[10px]\">\n {node.hint}\n </span>\n ) : null}\n </div>\n ) : (\n <div className=\"flex min-w-0 items-center justify-between gap-2 py-1.5\">\n <span className=\"text-foreground font-medium\">\n scopes\n </span>\n {node.count ? (\n <Chip className=\"shrink-0\">{node.count}</Chip>\n ) : null}\n </div>\n )}\n </SelectableRow>\n ))}\n </div>\n )),\n },\n {\n key: \"detail\",\n header: (\n <PaneHeader\n trailing={\n active?.kind === \"slice\" && active.hint ? (\n <span>{active.hint}</span>\n ) : active?.kind === \"scopes\" && active.count ? (\n <Chip>{active.count}</Chip>\n ) : undefined\n }\n >\n {detailTitle(active)}\n </PaneHeader>\n ),\n children: active ? (\n <div className=\"p-3\">\n <RawDetail\n node={active}\n state={data.state}\n scopes={data.scopes}\n />\n </div>\n ) : null,\n },\n ]}\n />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"RawTab.js","names":["useMemo","buildRawNav","RawDetail","RawNode","findNavNode","firstNavId","Chip","EmptyState","PaneHeader","SelectableRow","NAV_COL","SplitLayout","useNavSelectionSync","DevToolsTabContext","detailTitle","node","kind","key","RawTab","t0","$","_c","data","selection","setSelection","t1","groups","t2","state","Object","keys","sliceCount","length","t3","bb0","t4","selectedId","T0","T1","active","t5","t6","t7","t8","t9","Symbol","for","bb1","t10","t11","t12","t13","group","label","nodes","map","id","hint","count","header","children","undefined","scopes","t14"],"sources":["../../../src/shell/tabs/RawTab.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { buildRawNav, RawDetail, type RawNode } from \"../../views/raw\";\nimport { findNavNode, firstNavId } from \"../../views/nav\";\nimport { Chip, EmptyState, PaneHeader, SelectableRow } from \"../../views/ui\";\nimport { NAV_COL, SplitLayout } from \"../SplitLayout\";\nimport { useNavSelectionSync } from \"./navSelection\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst detailTitle = (node: RawNode | undefined) => {\n if (!node) return \"Raw\";\n if (node.kind === \"scopes\") return \"Scopes\";\n return node.key;\n};\n\nexport const RawTab = ({\n data,\n selection,\n setSelection,\n}: DevToolsTabContext) => {\n const groups = useMemo(() => buildRawNav(data), [data]);\n const sliceCount = Object.keys(data.state).length;\n\n const selectedId = useMemo(() => {\n if (selection && findNavNode(groups, selection)) return selection;\n return firstNavId(groups);\n }, [groups, selection]);\n\n useNavSelectionSync(selectedId, selection, setSelection);\n\n const active = findNavNode(groups, selectedId);\n\n if (!groups.length) {\n return (\n <div className=\"flex h-full items-center justify-center p-3\">\n <EmptyState>No runtime state reported for this instance.</EmptyState>\n </div>\n );\n }\n\n return (\n <SplitLayout\n sizes={NAV_COL}\n columns={[\n {\n key: \"nav\",\n header: (\n <PaneHeader\n trailing={\n <span>\n {sliceCount} slice{sliceCount === 1 ? \"\" : \"s\"}\n </span>\n }\n >\n Raw\n </PaneHeader>\n ),\n children: groups.map((group) => (\n <div key={group.label} className=\"flex flex-col\">\n <div className=\"text-muted-foreground px-3 pt-2 pb-0.5 text-[10px] font-medium tracking-wide uppercase\">\n {group.label}\n </div>\n {group.nodes.map((node) => (\n <SelectableRow\n key={node.id}\n selected={selectedId === node.id}\n dense\n onSelect={() => setSelection(node.id)}\n >\n {node.kind === \"slice\" ? (\n <div className=\"flex min-w-0 items-center justify-between gap-2 py-1.5\">\n <span className=\"text-foreground truncate font-medium\">\n {node.key}\n </span>\n {node.hint ? (\n <span className=\"text-muted-foreground shrink-0 text-[10px]\">\n {node.hint}\n </span>\n ) : null}\n </div>\n ) : (\n <div className=\"flex min-w-0 items-center justify-between gap-2 py-1.5\">\n <span className=\"text-foreground font-medium\">\n scopes\n </span>\n {node.count ? (\n <Chip className=\"shrink-0\">{node.count}</Chip>\n ) : null}\n </div>\n )}\n </SelectableRow>\n ))}\n </div>\n )),\n },\n {\n key: \"detail\",\n header: (\n <PaneHeader\n trailing={\n active?.kind === \"slice\" && active.hint ? (\n <span>{active.hint}</span>\n ) : active?.kind === \"scopes\" && active.count ? (\n <Chip>{active.count}</Chip>\n ) : undefined\n }\n >\n {detailTitle(active)}\n </PaneHeader>\n ),\n children: active ? (\n <div className=\"p-3\">\n <RawDetail\n node={active}\n state={data.state}\n scopes={data.scopes}\n />\n </div>\n ) : null,\n },\n ]}\n />\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadTab.js","names":["useEffect","useMemo","useRef","useState","MessageDetailBody","messageDetailHeader","ConversationList","Transcript","TranscriptHeader","conversationListHeader","messageNodeId","parseThreadListPreview","resolveSingleThread","resolveThreadForId","ThreadPreview","CenteredMessage","ControlButton","EmptyState","SplitLayout","DevToolsTabContext","TWO_COL","THREE_COL","useSelectedMessage","thread","selection","setSelection","$","_c","t0","bb0","messages","length","t1","t2","message","id","find","match","selectedMessage","last","UnloadedConversation","switchToThread","threadId","Symbol","for","t3","ThreadTab","data","state","threads","threadList","snapshots","threadSnapshots","hasConversationList","threadIds","mainThreadId","activeThreadId","setActiveThreadId","t4","ids","archivedThreadIds","includes","prevThreadIdRef","t5","t6","current","t7","t8","activeThread","activeNodeId","t9","t10","t11","key","header","children","t12","t13","t14","t15","loaded","activeNodeId_0","t16","t17","t18"],"sources":["../../../src/shell/tabs/ThreadTab.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { MessageDetailBody, messageDetailHeader } from \"../../views/message\";\nimport {\n ConversationList,\n Transcript,\n TranscriptHeader,\n conversationListHeader,\n messageNodeId,\n parseThreadListPreview,\n resolveSingleThread,\n resolveThreadForId,\n} from \"../../views/thread\";\nimport type { ThreadPreview } from \"../../views/thread\";\nimport { CenteredMessage, ControlButton, EmptyState } from \"../../views/ui\";\nimport { SplitLayout } from \"../SplitLayout\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst TWO_COL = \"clamp(16rem,32%,22rem)_minmax(0,1fr)\";\nconst THREE_COL = \"clamp(12rem,26%,15rem)_clamp(14rem,32%,20rem)_minmax(0,1fr)\";\n\nconst useSelectedMessage = (\n thread: ThreadPreview | null,\n selection: string | null,\n setSelection: (nodeId: string | null) => void,\n) => {\n const selectedMessage = useMemo(() => {\n if (!thread || thread.messages.length === 0) return null;\n const match = thread.messages.find(\n (message) => messageNodeId(message.id) === selection,\n );\n return match ?? thread.messages[thread.messages.length - 1]!;\n }, [thread, selection]);\n\n useEffect(() => {\n if (!thread || thread.messages.length === 0 || selection !== null) return;\n const last = thread.messages[thread.messages.length - 1]!;\n setSelection(messageNodeId(last.id));\n }, [thread, selection, setSelection]);\n\n return selectedMessage;\n};\n\nconst UnloadedConversation = ({\n switchToThread,\n threadId,\n}: {\n switchToThread?: ((threadId: string) => void | Promise<void>) | undefined;\n threadId: string;\n}) => (\n <div className=\"flex h-full flex-col items-center justify-center gap-3 p-6\">\n <EmptyState>\n This conversation has not been opened in the app yet, so its messages are\n not cached in DevTools.\n </EmptyState>\n {switchToThread ? (\n <ControlButton onClick={() => switchToThread(threadId)}>\n Load conversation\n </ControlButton>\n ) : null}\n </div>\n);\n\nexport const ThreadTab = ({\n data,\n selection,\n setSelection,\n switchToThread,\n}: DevToolsTabContext) => {\n const threadList = useMemo(\n () => parseThreadListPreview(data.state.threads),\n [data.state.threads],\n );\n const snapshots = data.threadSnapshots;\n\n const hasConversationList =\n threadList !== null && threadList.threadIds.length > 0;\n\n const [activeThreadId, setActiveThreadId] = useState<string>(\n () => threadList?.mainThreadId ?? threadList?.threadIds[0] ?? \"\",\n );\n\n useEffect(() => {\n if (!hasConversationList || !threadList) return;\n const ids = [...threadList.threadIds, ...threadList.archivedThreadIds];\n if (ids.includes(activeThreadId)) return;\n setActiveThreadId(threadList.mainThreadId ?? threadList.threadIds[0] ?? \"\");\n }, [hasConversationList, threadList, activeThreadId]);\n\n const prevThreadIdRef = useRef(activeThreadId);\n useEffect(() => {\n if (prevThreadIdRef.current === activeThreadId) return;\n prevThreadIdRef.current = activeThreadId;\n setSelection(null);\n }, [activeThreadId, setSelection]);\n\n const activeThread = useMemo(() => {\n if (!hasConversationList) {\n return resolveSingleThread(data.state);\n }\n return resolveThreadForId(\n data.state,\n snapshots,\n activeThreadId,\n threadList,\n );\n }, [hasConversationList, data.state, snapshots, activeThreadId, threadList]);\n\n const selectedMessage = useSelectedMessage(\n activeThread,\n selection,\n setSelection,\n );\n\n if (!hasConversationList) {\n if (!activeThread || activeThread.messages.length === 0) {\n return (\n <CenteredMessage>\n No thread messages for this assistant instance.\n </CenteredMessage>\n );\n }\n\n const activeNodeId = messageNodeId(selectedMessage!.id);\n\n return (\n <SplitLayout\n sizes={TWO_COL}\n columns={[\n {\n key: \"transcript\",\n header: <TranscriptHeader thread={activeThread} />,\n children: (\n <Transcript\n thread={activeThread}\n selection={activeNodeId}\n onSelect={setSelection}\n />\n ),\n },\n {\n key: \"detail\",\n header: messageDetailHeader(selectedMessage!),\n children: <MessageDetailBody message={selectedMessage!} />,\n },\n ]}\n />\n );\n }\n\n const loaded = activeThread !== null && activeThread.messages.length > 0;\n\n if (!loaded) {\n return (\n <SplitLayout\n sizes=\"clamp(12rem,26%,15rem)_minmax(0,1fr)\"\n columns={[\n {\n key: \"conversations\",\n header: conversationListHeader(threadList!),\n children: (\n <ConversationList\n threadList={threadList!}\n snapshots={snapshots}\n selectedId={activeThreadId}\n onSelect={setActiveThreadId}\n />\n ),\n },\n {\n key: \"empty\",\n children: (\n <UnloadedConversation\n threadId={activeThreadId}\n switchToThread={switchToThread}\n />\n ),\n },\n ]}\n />\n );\n }\n\n const activeNodeId = messageNodeId(selectedMessage!.id);\n\n return (\n <SplitLayout\n sizes={THREE_COL}\n columns={[\n {\n key: \"conversations\",\n header: conversationListHeader(threadList!),\n children: (\n <ConversationList\n threadList={threadList!}\n snapshots={snapshots}\n selectedId={activeThreadId}\n onSelect={setActiveThreadId}\n />\n ),\n },\n {\n key: \"transcript\",\n header: <TranscriptHeader thread={activeThread!} />,\n children: (\n <Transcript\n thread={activeThread!}\n selection={activeNodeId}\n onSelect={setSelection}\n />\n ),\n },\n {\n key: \"detail\",\n header: messageDetailHeader(selectedMessage!),\n children: <MessageDetailBody message={selectedMessage!} />,\n },\n ]}\n />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ThreadTab.js","names":["useEffect","useMemo","useRef","useState","MessageDetailBody","messageDetailHeader","ConversationList","Transcript","TranscriptHeader","conversationListHeader","messageNodeId","parseThreadListPreview","resolveSingleThread","resolveThreadForId","ThreadPreview","CenteredMessage","ControlButton","EmptyState","SplitLayout","DevToolsTabContext","TWO_COL","THREE_COL","useSelectedMessage","thread","selection","setSelection","$","_c","t0","bb0","messages","length","t1","t2","message","id","find","match","selectedMessage","last","UnloadedConversation","switchToThread","threadId","Symbol","for","t3","ThreadTab","data","state","threads","threadList","snapshots","threadSnapshots","hasConversationList","threadIds","mainThreadId","activeThreadId","setActiveThreadId","t4","ids","archivedThreadIds","includes","prevThreadIdRef","t5","t6","current","t7","t8","activeThread","activeNodeId","t9","t10","t11","key","header","children","t12","t13","t14","t15","loaded","activeNodeId_0","t16","t17","t18"],"sources":["../../../src/shell/tabs/ThreadTab.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { MessageDetailBody, messageDetailHeader } from \"../../views/message\";\nimport {\n ConversationList,\n Transcript,\n TranscriptHeader,\n conversationListHeader,\n messageNodeId,\n parseThreadListPreview,\n resolveSingleThread,\n resolveThreadForId,\n} from \"../../views/thread\";\nimport type { ThreadPreview } from \"../../views/thread\";\nimport { CenteredMessage, ControlButton, EmptyState } from \"../../views/ui\";\nimport { SplitLayout } from \"../SplitLayout\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst TWO_COL = \"clamp(16rem,32%,22rem)_minmax(0,1fr)\";\nconst THREE_COL = \"clamp(12rem,26%,15rem)_clamp(14rem,32%,20rem)_minmax(0,1fr)\";\n\nconst useSelectedMessage = (\n thread: ThreadPreview | null,\n selection: string | null,\n setSelection: (nodeId: string | null) => void,\n) => {\n const selectedMessage = useMemo(() => {\n if (!thread || thread.messages.length === 0) return null;\n const match = thread.messages.find(\n (message) => messageNodeId(message.id) === selection,\n );\n return match ?? thread.messages[thread.messages.length - 1]!;\n }, [thread, selection]);\n\n useEffect(() => {\n if (!thread || thread.messages.length === 0 || selection !== null) return;\n const last = thread.messages[thread.messages.length - 1]!;\n setSelection(messageNodeId(last.id));\n }, [thread, selection, setSelection]);\n\n return selectedMessage;\n};\n\nconst UnloadedConversation = ({\n switchToThread,\n threadId,\n}: {\n switchToThread?: ((threadId: string) => void | Promise<void>) | undefined;\n threadId: string;\n}) => (\n <div className=\"flex h-full flex-col items-center justify-center gap-3 p-6\">\n <EmptyState>\n This conversation has not been opened in the app yet, so its messages are\n not cached in DevTools.\n </EmptyState>\n {switchToThread ? (\n <ControlButton onClick={() => switchToThread(threadId)}>\n Load conversation\n </ControlButton>\n ) : null}\n </div>\n);\n\nexport const ThreadTab = ({\n data,\n selection,\n setSelection,\n switchToThread,\n}: DevToolsTabContext) => {\n const threadList = useMemo(\n () => parseThreadListPreview(data.state.threads),\n [data.state.threads],\n );\n const snapshots = data.threadSnapshots;\n\n const hasConversationList =\n threadList !== null && threadList.threadIds.length > 0;\n\n const [activeThreadId, setActiveThreadId] = useState<string>(\n () => threadList?.mainThreadId ?? threadList?.threadIds[0] ?? \"\",\n );\n\n useEffect(() => {\n if (!hasConversationList || !threadList) return;\n const ids = [...threadList.threadIds, ...threadList.archivedThreadIds];\n if (ids.includes(activeThreadId)) return;\n setActiveThreadId(threadList.mainThreadId ?? threadList.threadIds[0] ?? \"\");\n }, [hasConversationList, threadList, activeThreadId]);\n\n const prevThreadIdRef = useRef(activeThreadId);\n useEffect(() => {\n if (prevThreadIdRef.current === activeThreadId) return;\n prevThreadIdRef.current = activeThreadId;\n setSelection(null);\n }, [activeThreadId, setSelection]);\n\n const activeThread = useMemo(() => {\n if (!hasConversationList) {\n return resolveSingleThread(data.state);\n }\n return resolveThreadForId(\n data.state,\n snapshots,\n activeThreadId,\n threadList,\n );\n }, [hasConversationList, data.state, snapshots, activeThreadId, threadList]);\n\n const selectedMessage = useSelectedMessage(\n activeThread,\n selection,\n setSelection,\n );\n\n if (!hasConversationList) {\n if (!activeThread || activeThread.messages.length === 0) {\n return (\n <CenteredMessage>\n No thread messages for this assistant instance.\n </CenteredMessage>\n );\n }\n\n const activeNodeId = messageNodeId(selectedMessage!.id);\n\n return (\n <SplitLayout\n sizes={TWO_COL}\n columns={[\n {\n key: \"transcript\",\n header: <TranscriptHeader thread={activeThread} />,\n children: (\n <Transcript\n thread={activeThread}\n selection={activeNodeId}\n onSelect={setSelection}\n />\n ),\n },\n {\n key: \"detail\",\n header: messageDetailHeader(selectedMessage!),\n children: <MessageDetailBody message={selectedMessage!} />,\n },\n ]}\n />\n );\n }\n\n const loaded = activeThread !== null && activeThread.messages.length > 0;\n\n if (!loaded) {\n return (\n <SplitLayout\n sizes=\"clamp(12rem,26%,15rem)_minmax(0,1fr)\"\n columns={[\n {\n key: \"conversations\",\n header: conversationListHeader(threadList!),\n children: (\n <ConversationList\n threadList={threadList!}\n snapshots={snapshots}\n selectedId={activeThreadId}\n onSelect={setActiveThreadId}\n />\n ),\n },\n {\n key: \"empty\",\n children: (\n <UnloadedConversation\n threadId={activeThreadId}\n switchToThread={switchToThread}\n />\n ),\n },\n ]}\n />\n );\n }\n\n const activeNodeId = messageNodeId(selectedMessage!.id);\n\n return (\n <SplitLayout\n sizes={THREE_COL}\n columns={[\n {\n key: \"conversations\",\n header: conversationListHeader(threadList!),\n children: (\n <ConversationList\n threadList={threadList!}\n snapshots={snapshots}\n selectedId={activeThreadId}\n onSelect={setActiveThreadId}\n />\n ),\n },\n {\n key: \"transcript\",\n header: <TranscriptHeader thread={activeThread!} />,\n children: (\n <Transcript\n thread={activeThread!}\n selection={activeNodeId}\n onSelect={setSelection}\n />\n ),\n },\n {\n key: \"detail\",\n header: messageDetailHeader(selectedMessage!),\n children: <MessageDetailBody message={selectedMessage!} />,\n },\n ]}\n />\n );\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  //#region src/styles/panel.generated.d.ts
2
- declare const panelCss = "/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n@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-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-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:host,:host{--font-sans:ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-700:oklch(49.1% .27 292.581);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-black:#000;--spacing:.25rem;--font-weight-normal:400;--font-weight-medium:500;--tracking-wide:.025em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-2xl:40px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;--default-mono-font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, \"Liberation Mono\", 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;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}*,:before,:after{box-sizing:border-box;border-color:var(--border)}: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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}:focus-visible{--tw-outline-style:none;outline-style:none}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:0}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.end-5{inset-inline-end:calc(var(--spacing) * 5)}.top-0{top:0}.top-1\\/2{top:50%}.-bottom-px{bottom:-1px}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-1\\/2{left:50%}.z-\\[2147483646\\]{z-index:2147483646}.z-\\[2147483647\\]{z-index:2147483647}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.ms-1{margin-inline-start:var(--spacing)}.ms-\\[5px\\]{margin-inline-start:5px}.mt-1{margin-top:var(--spacing)}.ml-1{margin-left:var(--spacing)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.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-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.h-0\\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-3{height:calc(var(--spacing) * 3)}.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-10{height:calc(var(--spacing) * 10)}.h-\\[min\\(560px\\,80vh\\)\\]{height:min(560px,80vh)}.h-full{height:100%}.max-h-8{max-height:calc(var(--spacing) * 8)}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-\\[360px\\]{max-height:360px}.min-h-0{min-height:0}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.w-0\\.5{width:calc(var(--spacing) * .5)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-\\[min\\(960px\\,92vw\\)\\]{width:min(960px,92vw)}.w-full{width:100%}.max-w-\\[45\\%\\]{max-width:45%}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\\[2\\.875rem\\]{min-width:2.875rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.-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)}.rotate-90{rotate:90deg}.\\[animation\\:aui-dt-fade-in_150ms_ease-out\\]{animation:.15s ease-out aui-dt-fade-in}.\\[animation\\:aui-dt-launcher-in_200ms_cubic-bezier\\(0\\.175\\,0\\.885\\,0\\.32\\,1\\.1\\)\\]{animation:.2s cubic-bezier(.175,.885,.32,1.1) aui-dt-launcher-in}.\\[animation\\:aui-dt-window-in_200ms_cubic-bezier\\(0\\.175\\,0\\.885\\,0\\.32\\,1\\.1\\)\\]{animation:.2s cubic-bezier(.175,.885,.32,1.1) aui-dt-window-in}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-px{gap:1px}:where(.space-y-0\\.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-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-0\\.5{row-gap:calc(var(--spacing) * .5)}: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-border>:not(:last-child)){border-color:var(--border)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-300{border-color:var(--color-amber-300)}.border-blue-300{border-color:var(--color-blue-300)}.border-border,.border-border\\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-border\\/70{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/70{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.border-emerald-300{border-color:var(--color-emerald-300)}.border-foreground{border-color:var(--foreground)}.border-red-300{border-color:var(--color-red-300)}.border-transparent{border-color:#0000}.border-violet-300{border-color:var(--color-violet-300)}.border-zinc-300{border-color:var(--color-zinc-300)}.bg-accent{background-color:var(--accent)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-background{background-color:var(--background)}.bg-black\\/20{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.bg-black\\/20{background-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\\/10{background-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.bg-card{background-color:var(--card)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\\/10{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground,.bg-muted-foreground\\/30{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/30{background-color:color-mix(in oklab, var(--muted-foreground) 30%, transparent)}}.bg-muted-foreground\\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted-foreground\\/45{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/45{background-color:color-mix(in oklab, var(--muted-foreground) 45%, transparent)}}.bg-muted\\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-muted\\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-primary{background-color:var(--primary)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-violet-500{background-color:var(--color-violet-500)}.bg-violet-500\\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab, red, red)){.bg-violet-500\\/10{background-color:color-mix(in oklab, var(--color-violet-500) 10%, transparent)}}.bg-zinc-500\\/10{background-color:#71717b1a}@supports (color:color-mix(in lab, red, red)){.bg-zinc-500\\/10{background-color:color-mix(in oklab, var(--color-zinc-500) 10%, transparent)}}.object-contain{object-fit:contain}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.py-0{padding-block:0}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-px{padding-block:1px}.ps-2{padding-inline-start:calc(var(--spacing) * 2)}.ps-3{padding-inline-start:calc(var(--spacing) * 3)}.ps-3\\.5{padding-inline-start:calc(var(--spacing) * 3.5)}.ps-6{padding-inline-start:calc(var(--spacing) * 6)}.ps-\\[3\\.75rem\\]{padding-inline-start:3.75rem}.ps-\\[4\\.5rem\\]{padding-inline-start:4.5rem}.pe-1{padding-inline-end:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-px{padding-top:1px}.pr-3{padding-right:calc(var(--spacing) * 3)}.pb-0\\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.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)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words,.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-background{color:var(--background)}.text-blue-700{color:var(--color-blue-700)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-violet-700{color:var(--color-violet-700)}.text-zinc-600{color:var(--color-zinc-600)}.capitalize{text-transform:capitalize}.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,)}.\\[font-variant-numeric\\:tabular-nums\\]{font-variant-numeric:tabular-nums}.accent-foreground{accent-color:var(--foreground)}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--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)}.shadow-\\[var\\(--shadow-launcher\\)\\]{--tw-shadow:var(--shadow-launcher);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[var\\(--shadow-window\\)\\]{--tw-shadow:var(--shadow-window);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));-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-\\[3px\\]{--tw-backdrop-blur:blur(3px);-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-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))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}.\\[font-variant-ligatures\\:none\\]{font-variant-ligatures:none}.group-open\\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}.placeholder\\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:bg-accent:hover,.hover\\:bg-accent\\/40:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/40:hover{background-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.hover\\:bg-accent\\/60:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/60:hover{background-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.hover\\:text-foreground:hover{color:var(--foreground)}}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:opacity-40:disabled{opacity:.4}@media (min-width:40rem){.sm\\:inline{display:inline}}.dark\\:border-amber-500\\/40:where(.dark,.dark *){border-color:#f99c0066}@supports (color:color-mix(in lab, red, red)){.dark\\:border-amber-500\\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-amber-500) 40%, transparent)}}.dark\\:border-blue-500\\/40:where(.dark,.dark *){border-color:#3080ff66}@supports (color:color-mix(in lab, red, red)){.dark\\:border-blue-500\\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-blue-500) 40%, transparent)}}.dark\\:border-emerald-500\\/40:where(.dark,.dark *){border-color:#00bb7f66}@supports (color:color-mix(in lab, red, red)){.dark\\:border-emerald-500\\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.dark\\:border-red-500\\/40:where(.dark,.dark *){border-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.dark\\:border-red-500\\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-red-500) 40%, transparent)}}.dark\\:border-violet-500\\/40:where(.dark,.dark *){border-color:#8d54ff66}@supports (color:color-mix(in lab, red, red)){.dark\\:border-violet-500\\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-violet-500) 40%, transparent)}}.dark\\:border-zinc-600:where(.dark,.dark *){border-color:var(--color-zinc-600)}.dark\\:bg-amber-500\\/15:where(.dark,.dark *){background-color:#f99c0026}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-amber-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-500) 15%, transparent)}}.dark\\:bg-blue-500\\/15:where(.dark,.dark *){background-color:#3080ff26}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-blue-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-500) 15%, transparent)}}.dark\\:bg-emerald-500\\/15:where(.dark,.dark *){background-color:#00bb7f26}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-emerald-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-500) 15%, transparent)}}.dark\\:bg-red-500\\/15:where(.dark,.dark *){background-color:#fb2c3626}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-red-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-500) 15%, transparent)}}.dark\\:bg-violet-500\\/15:where(.dark,.dark *){background-color:#8d54ff26}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-violet-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-violet-500) 15%, transparent)}}.dark\\:bg-zinc-500\\/15:where(.dark,.dark *){background-color:#71717b26}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-zinc-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-zinc-500) 15%, transparent)}}.dark\\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\\:text-blue-300:where(.dark,.dark *){color:var(--color-blue-300)}.dark\\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\\:text-emerald-400:where(.dark,.dark *){color:var(--color-emerald-400)}.dark\\:text-red-300:where(.dark,.dark *){color:var(--color-red-300)}.dark\\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\\:text-violet-300:where(.dark,.dark *){color:var(--color-violet-300)}.dark\\:text-zinc-300:where(.dark,.dark *){color:var(--color-zinc-300)}}:host{--radius:.75rem;--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--card:oklch(100% 0 0);--card-foreground:oklch(14.1% .005 285.823);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.1% .005 285.823);--primary:oklch(21% .006 285.885);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--accent-foreground:oklch(21% .006 285.885);--destructive:oklch(57.7% .245 27.325);--border:oklch(0% 0 0/.08);--input:oklch(0% 0 0/.1);--ring:oklch(70.5% .015 286.067);--shadow-window:0 1px 1px #00000005, 0 4px 8px -4px #0000000a, 0 16px 24px -8px #0000000f;--shadow-launcher:0 0 0 1px #0000000f, inset 0 0 0 1px #ffffff1f, 0 16px 32px -8px #0000003d;color-scheme:light;font-family:var(--font-sans);font-variant-ligatures:none;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}:host(.dark),.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(18.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(18.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--secondary:oklch(20.5% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(20.5% 0 0);--muted-foreground:oklch(70.5% .015 286.067);--accent:oklch(22.5% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.12);--ring:oklch(55.2% .016 285.938);--shadow-window:0 1px 1px #0003, 0 4px 8px -4px #0000004d, 0 16px 32px -8px #00000073;color-scheme:dark}@keyframes aui-dt-window-in{0%{opacity:0;scale:.97}to{opacity:1;scale:1}}@keyframes aui-dt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes aui-dt-launcher-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@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-ease{syntax:\"*\";inherits:false}@property --tw-scale-x{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-y{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-z{syntax:\"*\";inherits:false;initial-value:1}@keyframes pulse{50%{opacity:.5}}";
2
+ declare const panelCss = "/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@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-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-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:host,:host{--font-sans:ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-700:oklch(49.1% .27 292.581);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-black:#000;--spacing:.25rem;--font-weight-normal:400;--font-weight-medium:500;--tracking-wide:.025em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-2xl:40px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;--default-mono-font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, \"Liberation Mono\", 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,-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", Arial, 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;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:where(:not(iframe)){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}*,:before,:after{box-sizing:border-box;border-color:var(--border)}: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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}:focus-visible{--tw-outline-style:none;outline-style:none}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:0}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.end-5{inset-inline-end:calc(var(--spacing) * 5)}.top-0{top:0}.top-1\\/2{top:50%}.-bottom-px{bottom:-1px}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-1\\/2{left:50%}.z-\\[2147483646\\]{z-index:2147483646}.z-\\[2147483647\\]{z-index:2147483647}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.ms-1{margin-inline-start:var(--spacing)}.ms-\\[5px\\]{margin-inline-start:5px}.mt-1{margin-top:var(--spacing)}.ml-1{margin-left:var(--spacing)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.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-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.h-0\\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-3{height:calc(var(--spacing) * 3)}.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-10{height:calc(var(--spacing) * 10)}.h-\\[min\\(560px\\,80vh\\)\\]{height:min(560px,80vh)}.h-full{height:100%}.max-h-8{max-height:calc(var(--spacing) * 8)}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-\\[360px\\]{max-height:360px}.min-h-0{min-height:0}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.w-0\\.5{width:calc(var(--spacing) * .5)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-\\[min\\(960px\\,92vw\\)\\]{width:min(960px,92vw)}.w-full{width:100%}.max-w-\\[45\\%\\]{max-width:45%}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\\[2\\.875rem\\]{min-width:2.875rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.-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)}.rotate-90{rotate:90deg}.\\[animation\\:aui-dt-fade-in_150ms_ease-out\\]{animation:.15s ease-out aui-dt-fade-in}.\\[animation\\:aui-dt-launcher-in_200ms_cubic-bezier\\(0\\.175\\,0\\.885\\,0\\.32\\,1\\.1\\)\\]{animation:.2s cubic-bezier(.175,.885,.32,1.1) aui-dt-launcher-in}.\\[animation\\:aui-dt-window-in_200ms_cubic-bezier\\(0\\.175\\,0\\.885\\,0\\.32\\,1\\.1\\)\\]{animation:.2s cubic-bezier(.175,.885,.32,1.1) aui-dt-window-in}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-px{gap:1px}:where(.space-y-0\\.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-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-0\\.5{row-gap:calc(var(--spacing) * .5)}: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-border>:not(:last-child)){border-color:var(--border)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-300{border-color:var(--color-amber-300)}.border-blue-300{border-color:var(--color-blue-300)}.border-border,.border-border\\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-border\\/70{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/70{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.border-emerald-300{border-color:var(--color-emerald-300)}.border-foreground{border-color:var(--foreground)}.border-red-300{border-color:var(--color-red-300)}.border-transparent{border-color:#0000}.border-violet-300{border-color:var(--color-violet-300)}.border-zinc-300{border-color:var(--color-zinc-300)}.bg-accent{background-color:var(--accent)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-background{background-color:var(--background)}.bg-black\\/20{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.bg-black\\/20{background-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\\/10{background-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.bg-card{background-color:var(--card)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\\/10{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground,.bg-muted-foreground\\/30{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/30{background-color:color-mix(in oklab, var(--muted-foreground) 30%, transparent)}}.bg-muted-foreground\\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted-foreground\\/45{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/45{background-color:color-mix(in oklab, var(--muted-foreground) 45%, transparent)}}.bg-muted\\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-muted\\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-primary{background-color:var(--primary)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-violet-500{background-color:var(--color-violet-500)}.bg-violet-500\\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab, red, red)){.bg-violet-500\\/10{background-color:color-mix(in oklab, var(--color-violet-500) 10%, transparent)}}.bg-zinc-500\\/10{background-color:#71717b1a}@supports (color:color-mix(in lab, red, red)){.bg-zinc-500\\/10{background-color:color-mix(in oklab, var(--color-zinc-500) 10%, transparent)}}.object-contain{object-fit:contain}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.py-0{padding-block:0}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-px{padding-block:1px}.ps-2{padding-inline-start:calc(var(--spacing) * 2)}.ps-3{padding-inline-start:calc(var(--spacing) * 3)}.ps-3\\.5{padding-inline-start:calc(var(--spacing) * 3.5)}.ps-6{padding-inline-start:calc(var(--spacing) * 6)}.ps-\\[3\\.75rem\\]{padding-inline-start:3.75rem}.ps-\\[4\\.5rem\\]{padding-inline-start:4.5rem}.pe-1{padding-inline-end:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-px{padding-top:1px}.pr-3{padding-right:calc(var(--spacing) * 3)}.pb-0\\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.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)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words,.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-background{color:var(--background)}.text-blue-700{color:var(--color-blue-700)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-violet-700{color:var(--color-violet-700)}.text-zinc-600{color:var(--color-zinc-600)}.capitalize{text-transform:capitalize}.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,)}.\\[font-variant-numeric\\:tabular-nums\\]{font-variant-numeric:tabular-nums}.accent-foreground{accent-color:var(--foreground)}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--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)}.shadow-\\[var\\(--shadow-launcher\\)\\]{--tw-shadow:var(--shadow-launcher);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[var\\(--shadow-window\\)\\]{--tw-shadow:var(--shadow-window);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));-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-\\[3px\\]{--tw-backdrop-blur:blur(3px);-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-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))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}.\\[font-variant-ligatures\\:none\\]{font-variant-ligatures:none}.group-open\\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}.placeholder\\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:bg-accent:hover,.hover\\:bg-accent\\/40:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/40:hover{background-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.hover\\:bg-accent\\/60:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/60:hover{background-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.hover\\:text-foreground:hover{color:var(--foreground)}}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:opacity-40:disabled{opacity:.4}@media (min-width:40rem){.sm\\:inline{display:inline}}.dark\\:border-amber-500\\/40:where(.dark,.dark *){border-color:#f99c0066}@supports (color:color-mix(in lab, red, red)){.dark\\:border-amber-500\\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-amber-500) 40%, transparent)}}.dark\\:border-blue-500\\/40:where(.dark,.dark *){border-color:#3080ff66}@supports (color:color-mix(in lab, red, red)){.dark\\:border-blue-500\\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-blue-500) 40%, transparent)}}.dark\\:border-emerald-500\\/40:where(.dark,.dark *){border-color:#00bb7f66}@supports (color:color-mix(in lab, red, red)){.dark\\:border-emerald-500\\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.dark\\:border-red-500\\/40:where(.dark,.dark *){border-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.dark\\:border-red-500\\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-red-500) 40%, transparent)}}.dark\\:border-violet-500\\/40:where(.dark,.dark *){border-color:#8d54ff66}@supports (color:color-mix(in lab, red, red)){.dark\\:border-violet-500\\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-violet-500) 40%, transparent)}}.dark\\:border-zinc-600:where(.dark,.dark *){border-color:var(--color-zinc-600)}.dark\\:bg-amber-500\\/15:where(.dark,.dark *){background-color:#f99c0026}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-amber-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-500) 15%, transparent)}}.dark\\:bg-blue-500\\/15:where(.dark,.dark *){background-color:#3080ff26}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-blue-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-500) 15%, transparent)}}.dark\\:bg-emerald-500\\/15:where(.dark,.dark *){background-color:#00bb7f26}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-emerald-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-500) 15%, transparent)}}.dark\\:bg-red-500\\/15:where(.dark,.dark *){background-color:#fb2c3626}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-red-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-500) 15%, transparent)}}.dark\\:bg-violet-500\\/15:where(.dark,.dark *){background-color:#8d54ff26}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-violet-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-violet-500) 15%, transparent)}}.dark\\:bg-zinc-500\\/15:where(.dark,.dark *){background-color:#71717b26}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-zinc-500\\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-zinc-500) 15%, transparent)}}.dark\\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\\:text-blue-300:where(.dark,.dark *){color:var(--color-blue-300)}.dark\\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\\:text-emerald-400:where(.dark,.dark *){color:var(--color-emerald-400)}.dark\\:text-red-300:where(.dark,.dark *){color:var(--color-red-300)}.dark\\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\\:text-violet-300:where(.dark,.dark *){color:var(--color-violet-300)}.dark\\:text-zinc-300:where(.dark,.dark *){color:var(--color-zinc-300)}}:host{--radius:.75rem;--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--card:oklch(100% 0 0);--card-foreground:oklch(14.1% .005 285.823);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.1% .005 285.823);--primary:oklch(21% .006 285.885);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--accent-foreground:oklch(21% .006 285.885);--destructive:oklch(57.7% .245 27.325);--border:oklch(0% 0 0/.08);--input:oklch(0% 0 0/.1);--ring:oklch(70.5% .015 286.067);--shadow-window:0 1px 1px #00000005, 0 4px 8px -4px #0000000a, 0 16px 24px -8px #0000000f;--shadow-launcher:0 0 0 1px #0000000f, inset 0 0 0 1px #ffffff1f, 0 16px 32px -8px #0000003d;color-scheme:light;font-family:var(--font-sans);font-variant-ligatures:none;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}:host(.dark),.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(18.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(18.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--secondary:oklch(20.5% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(20.5% 0 0);--muted-foreground:oklch(70.5% .015 286.067);--accent:oklch(22.5% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.12);--ring:oklch(55.2% .016 285.938);--shadow-window:0 1px 1px #0003, 0 4px 8px -4px #0000004d, 0 16px 32px -8px #00000073;color-scheme:dark}@keyframes aui-dt-window-in{0%{opacity:0;scale:.97}to{opacity:1;scale:1}}@keyframes aui-dt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes aui-dt-launcher-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@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-ease{syntax:\"*\";inherits:false}@property --tw-scale-x{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-y{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-z{syntax:\"*\";inherits:false;initial-value:1}@keyframes pulse{50%{opacity:.5}}";
3
3
  //#endregion
4
4
  export { panelCss };
5
5
  //# sourceMappingURL=panel.generated.d.ts.map