@assistant-ui/react-devtools 1.2.18 → 1.2.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DevToolsModal.d.ts +2 -3
- package/dist/DevToolsModal.d.ts.map +1 -1
- package/dist/data/createInProcessClient.d.ts +3 -6
- package/dist/data/createInProcessClient.d.ts.map +1 -1
- package/dist/data/createInProcessClient.js +1 -3
- package/dist/data/createInProcessClient.js.map +1 -1
- package/dist/data/projectApi.d.ts +1 -2
- package/dist/data/projectApi.d.ts.map +1 -1
- package/dist/data/types.d.ts +6 -6
- package/dist/data/types.d.ts.map +1 -1
- package/dist/data/useDevToolsClient.d.ts +2 -3
- package/dist/data/useDevToolsClient.d.ts.map +1 -1
- package/dist/shell/DevToolsOverlay.d.ts +2 -3
- package/dist/shell/DevToolsOverlay.d.ts.map +1 -1
- package/dist/shell/DevToolsPanel.d.ts +2 -3
- package/dist/shell/DevToolsPanel.d.ts.map +1 -1
- package/dist/shell/ShadowRoot.d.ts +2 -3
- package/dist/shell/ShadowRoot.d.ts.map +1 -1
- package/dist/shell/SplitLayout.d.ts +3 -4
- package/dist/shell/SplitLayout.d.ts.map +1 -1
- package/dist/shell/registry.d.ts +4 -5
- package/dist/shell/registry.d.ts.map +1 -1
- package/dist/shell/tabs/ActivityTab.d.ts +1 -2
- package/dist/shell/tabs/ActivityTab.d.ts.map +1 -1
- package/dist/shell/tabs/ContextTab.d.ts +1 -2
- package/dist/shell/tabs/ContextTab.d.ts.map +1 -1
- package/dist/shell/tabs/RawTab.d.ts +1 -2
- package/dist/shell/tabs/RawTab.d.ts.map +1 -1
- package/dist/shell/tabs/ThreadTab.d.ts +1 -2
- package/dist/shell/tabs/ThreadTab.d.ts.map +1 -1
- package/dist/shell/tabs/navSelection.d.ts +1 -2
- package/dist/shell/tabs/navSelection.d.ts.map +1 -1
- package/dist/styles/panel.generated.d.ts +1 -2
- package/dist/styles/panel.generated.d.ts.map +1 -1
- package/dist/styles/panel.generated.js +1 -1
- package/dist/styles/panel.generated.js.map +1 -1
- package/dist/types.d.ts +1 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/common.d.ts +13 -14
- package/dist/utils/common.d.ts.map +1 -1
- package/dist/utils/diff.d.ts +2 -3
- package/dist/utils/diff.d.ts.map +1 -1
- package/dist/utils/serialization.d.ts +5 -6
- package/dist/utils/serialization.d.ts.map +1 -1
- package/dist/utils/serialization.js +13 -4
- package/dist/utils/serialization.js.map +1 -1
- package/dist/utils/toolNormalization.d.ts +2 -3
- package/dist/utils/toolNormalization.d.ts.map +1 -1
- package/dist/utils/unserializable.d.ts +2 -3
- package/dist/utils/unserializable.d.ts.map +1 -1
- package/dist/views/activity/EventLogRow.d.ts +2 -3
- package/dist/views/activity/EventLogRow.d.ts.map +1 -1
- package/dist/views/activity/EventStreamPane.d.ts +1 -2
- package/dist/views/activity/EventStreamPane.d.ts.map +1 -1
- package/dist/views/activity/OrphansPane.d.ts +1 -2
- package/dist/views/activity/OrphansPane.d.ts.map +1 -1
- package/dist/views/activity/RunDetailPane.d.ts +1 -2
- package/dist/views/activity/RunDetailPane.d.ts.map +1 -1
- package/dist/views/activity/activityNodes.d.ts +6 -7
- package/dist/views/activity/activityNodes.d.ts.map +1 -1
- package/dist/views/attachments/AttachmentList.d.ts +1 -2
- package/dist/views/attachments/AttachmentList.d.ts.map +1 -1
- package/dist/views/attachments/MediaPartView.d.ts +3 -4
- package/dist/views/attachments/MediaPartView.d.ts.map +1 -1
- package/dist/views/attachments/formatBytes.d.ts +3 -4
- package/dist/views/attachments/formatBytes.d.ts.map +1 -1
- package/dist/views/attachments/parseAttachment.d.ts +2 -3
- package/dist/views/attachments/parseAttachment.d.ts.map +1 -1
- package/dist/views/attachments/types.d.ts +2 -3
- package/dist/views/attachments/types.d.ts.map +1 -1
- package/dist/views/context/ContextDetail.d.ts +1 -2
- package/dist/views/context/ContextDetail.d.ts.map +1 -1
- package/dist/views/context/ToolUIsView.d.ts +1 -2
- package/dist/views/context/ToolUIsView.d.ts.map +1 -1
- package/dist/views/context/contextNodes.d.ts +4 -5
- package/dist/views/context/contextNodes.d.ts.map +1 -1
- package/dist/views/mcp/McpView.d.ts +1 -2
- package/dist/views/mcp/McpView.d.ts.map +1 -1
- package/dist/views/mcp/parse.d.ts +1 -2
- package/dist/views/mcp/parse.d.ts.map +1 -1
- package/dist/views/mcp/types.d.ts +3 -4
- package/dist/views/mcp/types.d.ts.map +1 -1
- package/dist/views/message/ChainOfThought.d.ts +1 -2
- package/dist/views/message/ChainOfThought.d.ts.map +1 -1
- package/dist/views/message/MessageDetailPane.d.ts +2 -3
- package/dist/views/message/MessageDetailPane.d.ts.map +1 -1
- package/dist/views/message/MessageItem.d.ts +1 -2
- package/dist/views/message/MessageItem.d.ts.map +1 -1
- package/dist/views/message/MessageList.d.ts +1 -2
- package/dist/views/message/MessageList.d.ts.map +1 -1
- package/dist/views/message/MessageMetrics.d.ts +1 -2
- package/dist/views/message/MessageMetrics.d.ts.map +1 -1
- package/dist/views/message/MessageMetrics.js +1 -1
- package/dist/views/message/MessageMetrics.js.map +1 -1
- package/dist/views/message/MessageTimeline.d.ts +3 -4
- package/dist/views/message/MessageTimeline.d.ts.map +1 -1
- package/dist/views/message/PartDisclosure.d.ts +1 -2
- package/dist/views/message/PartDisclosure.d.ts.map +1 -1
- package/dist/views/message/PartView.d.ts +1 -2
- package/dist/views/message/PartView.d.ts.map +1 -1
- package/dist/views/message/RoleLabel.d.ts +1 -2
- package/dist/views/message/RoleLabel.d.ts.map +1 -1
- package/dist/views/message/StatusBadge.d.ts +1 -2
- package/dist/views/message/StatusBadge.d.ts.map +1 -1
- package/dist/views/message/ToolCallView.d.ts +1 -2
- package/dist/views/message/ToolCallView.d.ts.map +1 -1
- package/dist/views/message/TtftBar.d.ts +2 -3
- package/dist/views/message/TtftBar.d.ts.map +1 -1
- package/dist/views/message/TtftBar.js +2 -2
- package/dist/views/message/TtftBar.js.map +1 -1
- package/dist/views/message/messagePlainText.d.ts +1 -2
- package/dist/views/message/messagePlainText.d.ts.map +1 -1
- package/dist/views/message/parse.d.ts +4 -5
- package/dist/views/message/parse.d.ts.map +1 -1
- package/dist/views/message/types.d.ts +17 -18
- package/dist/views/message/types.d.ts.map +1 -1
- package/dist/views/model-context/ModelContextView.d.ts +4 -5
- package/dist/views/model-context/ModelContextView.d.ts.map +1 -1
- package/dist/views/nav.d.ts +4 -5
- package/dist/views/nav.d.ts.map +1 -1
- package/dist/views/raw/RawDetail.d.ts +1 -2
- package/dist/views/raw/RawDetail.d.ts.map +1 -1
- package/dist/views/raw/rawNodes.d.ts +4 -5
- package/dist/views/raw/rawNodes.d.ts.map +1 -1
- package/dist/views/raw/statePreview.d.ts +1 -2
- package/dist/views/raw/statePreview.d.ts.map +1 -1
- package/dist/views/runs/PayloadDiff.d.ts +1 -2
- package/dist/views/runs/PayloadDiff.d.ts.map +1 -1
- package/dist/views/runs/parse.d.ts +1 -2
- package/dist/views/runs/parse.d.ts.map +1 -1
- package/dist/views/runs/types.d.ts +3 -4
- package/dist/views/runs/types.d.ts.map +1 -1
- package/dist/views/scopes/ScopesView.d.ts +1 -2
- package/dist/views/scopes/ScopesView.d.ts.map +1 -1
- package/dist/views/scopes/parse.d.ts +1 -2
- package/dist/views/scopes/parse.d.ts.map +1 -1
- package/dist/views/scopes/types.d.ts +1 -2
- package/dist/views/scopes/types.d.ts.map +1 -1
- package/dist/views/thread/ComposerAttachments.d.ts +1 -2
- package/dist/views/thread/ComposerAttachments.d.ts.map +1 -1
- package/dist/views/thread/ComposerFlags.d.ts +1 -2
- package/dist/views/thread/ComposerFlags.d.ts.map +1 -1
- package/dist/views/thread/ComposerQueue.d.ts +1 -2
- package/dist/views/thread/ComposerQueue.d.ts.map +1 -1
- package/dist/views/thread/ConversationList.d.ts +2 -3
- package/dist/views/thread/ConversationList.d.ts.map +1 -1
- package/dist/views/thread/ConversationStatusDot.d.ts +3 -4
- package/dist/views/thread/ConversationStatusDot.d.ts.map +1 -1
- package/dist/views/thread/ThreadDetails.d.ts +1 -2
- package/dist/views/thread/ThreadDetails.d.ts.map +1 -1
- package/dist/views/thread/Transcript.d.ts +3 -4
- package/dist/views/thread/Transcript.d.ts.map +1 -1
- package/dist/views/thread/Transcript.js +1 -1
- package/dist/views/thread/Transcript.js.map +1 -1
- package/dist/views/thread/resolve.d.ts +2 -3
- package/dist/views/thread/resolve.d.ts.map +1 -1
- package/dist/views/thread/types.d.ts +7 -7
- package/dist/views/thread/types.d.ts.map +1 -1
- package/dist/views/thread/utils.d.ts +4 -5
- package/dist/views/thread/utils.d.ts.map +1 -1
- package/dist/views/ui/CenteredMessage.d.ts +1 -2
- package/dist/views/ui/CenteredMessage.d.ts.map +1 -1
- package/dist/views/ui/Chip.d.ts +1 -2
- package/dist/views/ui/Chip.d.ts.map +1 -1
- package/dist/views/ui/ControlButton.d.ts +1 -2
- package/dist/views/ui/ControlButton.d.ts.map +1 -1
- package/dist/views/ui/CopyButton.d.ts +2 -3
- package/dist/views/ui/CopyButton.d.ts.map +1 -1
- package/dist/views/ui/CopyButton.js +3 -3
- package/dist/views/ui/CopyButton.js.map +1 -1
- package/dist/views/ui/EmptyState.d.ts +1 -2
- package/dist/views/ui/EmptyState.d.ts.map +1 -1
- package/dist/views/ui/InfoCard.d.ts +1 -2
- package/dist/views/ui/InfoCard.d.ts.map +1 -1
- package/dist/views/ui/JSONTree.d.ts +1 -2
- package/dist/views/ui/JSONTree.d.ts.map +1 -1
- package/dist/views/ui/JSONTree.js +51 -72
- package/dist/views/ui/JSONTree.js.map +1 -1
- package/dist/views/ui/PaneHeader.d.ts +2 -3
- package/dist/views/ui/PaneHeader.d.ts.map +1 -1
- package/dist/views/ui/RailTime.d.ts +1 -2
- package/dist/views/ui/RailTime.d.ts.map +1 -1
- package/dist/views/ui/SectionLabel.d.ts +1 -2
- package/dist/views/ui/SectionLabel.d.ts.map +1 -1
- package/dist/views/ui/SelectableRow.d.ts +1 -2
- package/dist/views/ui/SelectableRow.d.ts.map +1 -1
- package/dist/views/ui/Sparkline.d.ts +1 -2
- package/dist/views/ui/Sparkline.d.ts.map +1 -1
- package/dist/views/ui/SummaryItem.d.ts +2 -3
- package/dist/views/ui/SummaryItem.d.ts.map +1 -1
- package/dist/views/ui/ToneBadge.d.ts +1 -2
- package/dist/views/ui/ToneBadge.d.ts.map +1 -1
- package/dist/views/ui/badgeTone.d.ts +7 -8
- package/dist/views/ui/badgeTone.d.ts.map +1 -1
- package/dist/views/ui/getInlineJson.d.ts +4 -0
- package/dist/views/ui/getInlineJson.d.ts.map +1 -0
- package/dist/views/ui/getInlineJson.js +22 -0
- package/dist/views/ui/getInlineJson.js.map +1 -0
- package/dist/views/ui/useCopyToClipboard.d.ts +1 -2
- package/dist/views/ui/useCopyToClipboard.d.ts.map +1 -1
- package/package.json +16 -13
- package/src/data/createInProcessClient.ts +1 -3
- package/src/styles/panel.generated.ts +1 -1
- package/src/utils/serialization.test.ts +19 -0
- package/src/utils/serialization.ts +32 -7
- package/src/views/message/MessageMetrics.tsx +2 -3
- package/src/views/message/TtftBar.test.tsx +20 -0
- package/src/views/message/TtftBar.tsx +2 -2
- package/src/views/thread/Transcript.tsx +1 -6
- package/src/views/ui/CopyButton.tsx +3 -3
- package/src/views/ui/JSONTree.interaction.test.tsx +118 -0
- package/src/views/ui/JSONTree.tsx +29 -28
- package/src/views/ui/JSONTree.work.test.tsx +60 -0
- package/src/views/ui/getInlineJson.test.ts +83 -0
- package/src/views/ui/getInlineJson.ts +38 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSONTree.js","names":["useMemo","useState","clsx","CopyButton","ENTRY_LIMIT","INLINE_MAX","isContainer","value","Entry","key","entriesOf","Array","isArray","map","item","index","String","Object","entries","Record","summaryOf","length","keys","serialize","compact","JSON","stringify","isInline","Leaf","t0","$","_c","t1","undefined","t2","TreeNode","name","depth","openDepth","open","setOpen","showAll","setShowAll","t3","t4","t5","shown","slice","hidden","Symbol","for","_temp","t6","t7","t8","t9","t10","t11","entry","InlineJson","serialized","copyText","TreeWithCopy","JSONTree","isLeaf","prev"],"sources":["../../../src/views/ui/JSONTree.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { CopyButton } from \"./CopyButton\";\n\nconst ENTRY_LIMIT = 100;\nconst INLINE_MAX = 88;\n\nconst isContainer = (value: unknown): value is object =>\n value !== null && typeof value === \"object\";\n\ntype Entry = { key: string; value: unknown };\n\nconst entriesOf = (value: unknown): Entry[] => {\n if (Array.isArray(value)) {\n return value.map((item, index) => ({ key: String(index), value: item }));\n }\n return Object.entries(value as Record<string, unknown>).map(\n ([key, value]) => ({ key, value }),\n );\n};\n\nconst summaryOf = (value: unknown): string => {\n if (Array.isArray(value)) return `[${value.length}]`;\n return `{${Object.keys(value as object).length}}`;\n};\n\nconst serialize = (value: unknown, compact: boolean) =>\n JSON.stringify(value, null, compact ? 0 : 2);\n\nconst isInline = (value: unknown, compact: boolean) => {\n if (!compact) return false;\n if (!isContainer(value)) return true;\n return serialize(value, true).length <= INLINE_MAX;\n};\n\nconst Leaf = ({ value }: { value: unknown }) => {\n if (typeof value === \"string\") {\n return (\n <span className=\"text-foreground break-all\">"{value}"</span>\n );\n }\n if (value === null || value === undefined) {\n return (\n <span className=\"text-muted-foreground italic\">{String(value)}</span>\n );\n }\n return (\n <span className=\"text-muted-foreground break-all\">{String(value)}</span>\n );\n};\n\nconst TreeNode = ({\n name,\n value,\n depth,\n openDepth,\n compact,\n}: {\n name?: string;\n value: unknown;\n depth: number;\n openDepth: number;\n compact: boolean;\n}) => {\n const [open, setOpen] = useState(depth < openDepth);\n const [showAll, setShowAll] = useState(false);\n\n if (!isContainer(value)) {\n return (\n <div\n className={clsx(\"flex min-w-0\", compact ? \"gap-1 py-px\" : \"gap-1.5\")}\n >\n {name !== undefined ? (\n <span className=\"text-muted-foreground shrink-0\">{name}:</span>\n ) : null}\n <Leaf value={value} />\n </div>\n );\n }\n\n const entries = entriesOf(value);\n const shown = showAll ? entries : entries.slice(0, ENTRY_LIMIT);\n const hidden = entries.length - shown.length;\n\n return (\n <div className=\"min-w-0\">\n <button\n type=\"button\"\n onClick={() => setOpen((prev) => !prev)}\n className={clsx(\n \"text-muted-foreground hover:text-foreground flex items-center\",\n compact ? \"gap-0.5 py-px\" : \"gap-1\",\n )}\n >\n <span\n className={clsx(\n \"inline-block transition-transform\",\n open && \"rotate-90\",\n )}\n >\n ›\n </span>\n {name !== undefined ? <span>{name}</span> : null}\n <span className=\"opacity-60\">{summaryOf(value)}</span>\n </button>\n {open ? (\n <div\n className={clsx(\n \"border-border/60 border-s\",\n compact ? \"ms-1 ps-2\" : \"ms-[5px] ps-3\",\n )}\n >\n {shown.map((entry) => (\n <TreeNode\n key={entry.key}\n name={entry.key}\n value={entry.value}\n depth={depth + 1}\n openDepth={openDepth}\n compact={compact}\n />\n ))}\n {hidden > 0 ? (\n <button\n type=\"button\"\n onClick={() => setShowAll(true)}\n className=\"text-muted-foreground hover:text-foreground text-[10px]\"\n >\n +{hidden} more\n </button>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n};\n\nconst InlineJson = ({\n serialized,\n copyText,\n compact,\n}: {\n serialized: string;\n copyText: string;\n compact: boolean;\n}) => (\n <div className=\"flex min-w-0 items-start gap-0.5\">\n <code\n className={clsx(\n \"text-foreground min-w-0 flex-1 font-mono leading-snug break-all\",\n compact ? \"text-[10px]\" : \"text-[11px]\",\n )}\n title={serialized}\n >\n {serialized}\n </code>\n <CopyButton\n value={copyText}\n label=\"Copy JSON\"\n iconOnly\n size={compact ? \"sm\" : \"default\"}\n />\n </div>\n);\n\nconst TreeWithCopy = ({\n value,\n openDepth,\n copyText,\n compact,\n}: {\n value: unknown;\n openDepth: number;\n copyText: string;\n compact: boolean;\n}) => (\n <div className=\"flex min-w-0 items-start gap-0.5\">\n <div\n className={clsx(\n \"min-w-0 flex-1 overflow-auto font-mono [font-variant-numeric:tabular-nums] [font-variant-ligatures:none]\",\n compact\n ? \"max-h-32 text-[10px] leading-snug\"\n : \"border-border bg-muted/40 max-h-[360px] rounded-md border p-3 text-[11px] leading-relaxed\",\n )}\n >\n <TreeNode\n value={value}\n depth={0}\n openDepth={openDepth}\n compact={compact}\n />\n </div>\n <CopyButton\n value={copyText}\n label=\"Copy JSON\"\n iconOnly\n size={compact ? \"sm\" : \"default\"}\n className=\"pt-px\"\n />\n </div>\n);\n\n/**\n * Recursive JSON view. `compact` fits tool rows; copy always provides formatted JSON.\n */\nexport const JSONTree = ({\n value,\n openDepth = 1,\n compact = false,\n}: {\n value: unknown;\n openDepth?: number;\n compact?: boolean;\n}) => {\n const isLeaf = isInline(value, compact) || !isContainer(value);\n const serialized = useMemo(\n () => (isLeaf ? serialize(value, compact) : \"\"),\n [value, compact, isLeaf],\n );\n const copyText = useMemo(() => JSON.stringify(value, null, 2), [value]);\n\n if (isLeaf) {\n return (\n <InlineJson\n serialized={serialized}\n copyText={copyText}\n compact={compact}\n />\n );\n }\n\n return (\n <TreeWithCopy\n value={value}\n openDepth={openDepth}\n copyText={copyText}\n compact={compact}\n />\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JSONTree.js","names":["useCallback","useMemo","useState","clsx","CopyButton","getInlineJson","ENTRY_LIMIT","INLINE_MAX","isContainer","value","Entry","key","entriesOf","keys","limit","Array","isArray","slice","map","item","index","String","Record","serialize","compact","JSON","stringify","Leaf","t0","$","_c","t1","undefined","t2","TreeNode","name","depth","openDepth","open","setOpen","showAll","setShowAll","t3","t4","t5","Object","count","length","shown","hidden","Symbol","for","_temp","t6","t7","t8","t9","t10","t11","entry","InlineJson","serialized","copyText","TreeWithCopy","JSONTree","prev"],"sources":["../../../src/views/ui/JSONTree.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { CopyButton } from \"./CopyButton\";\nimport { getInlineJson } from \"./getInlineJson\";\n\nconst ENTRY_LIMIT = 100;\nconst INLINE_MAX = 88;\n\nconst isContainer = (value: unknown): value is object =>\n value !== null && typeof value === \"object\";\n\ntype Entry = { key: string; value: unknown };\n\nconst entriesOf = (value: object, keys: string[], limit: number): Entry[] => {\n if (Array.isArray(value)) {\n return value\n .slice(0, limit)\n .map((item, index) => ({ key: String(index), value: item }));\n }\n return keys\n .slice(0, limit)\n .map((key) => ({ key, value: (value as Record<string, unknown>)[key] }));\n};\n\nconst serialize = (value: unknown, compact: boolean) =>\n JSON.stringify(value, null, compact ? 0 : 2);\n\nconst Leaf = ({ value }: { value: unknown }) => {\n if (typeof value === \"string\") {\n return (\n <span className=\"text-foreground break-all\">"{value}"</span>\n );\n }\n if (value === null || value === undefined) {\n return (\n <span className=\"text-muted-foreground italic\">{String(value)}</span>\n );\n }\n return (\n <span className=\"text-muted-foreground break-all\">{String(value)}</span>\n );\n};\n\nconst TreeNode = ({\n name,\n value,\n depth,\n openDepth,\n compact,\n}: {\n name?: string;\n value: unknown;\n depth: number;\n openDepth: number;\n compact: boolean;\n}) => {\n const [open, setOpen] = useState(depth < openDepth);\n const [showAll, setShowAll] = useState(false);\n\n if (!isContainer(value)) {\n return (\n <div\n className={clsx(\"flex min-w-0\", compact ? \"gap-1 py-px\" : \"gap-1.5\")}\n >\n {name !== undefined ? (\n <span className=\"text-muted-foreground shrink-0\">{name}:</span>\n ) : null}\n <Leaf value={value} />\n </div>\n );\n }\n\n const keys = Array.isArray(value) ? [] : Object.keys(value);\n const count = Array.isArray(value) ? value.length : keys.length;\n const shown = open\n ? entriesOf(value, keys, showAll ? count : ENTRY_LIMIT)\n : [];\n const hidden = count - shown.length;\n\n return (\n <div className=\"min-w-0\">\n <button\n type=\"button\"\n onClick={() => setOpen((prev) => !prev)}\n className={clsx(\n \"text-muted-foreground hover:text-foreground flex items-center\",\n compact ? \"gap-0.5 py-px\" : \"gap-1\",\n )}\n >\n <span\n className={clsx(\n \"inline-block transition-transform\",\n open && \"rotate-90\",\n )}\n >\n ›\n </span>\n {name !== undefined ? <span>{name}</span> : null}\n <span className=\"opacity-60\">\n {Array.isArray(value) ? `[${count}]` : `{${count}}`}\n </span>\n </button>\n {open ? (\n <div\n className={clsx(\n \"border-border/60 border-s\",\n compact ? \"ms-1 ps-2\" : \"ms-[5px] ps-3\",\n )}\n >\n {shown.map((entry) => (\n <TreeNode\n key={entry.key}\n name={entry.key}\n value={entry.value}\n depth={depth + 1}\n openDepth={openDepth}\n compact={compact}\n />\n ))}\n {hidden > 0 ? (\n <button\n type=\"button\"\n onClick={() => setShowAll(true)}\n className=\"text-muted-foreground hover:text-foreground text-[10px]\"\n >\n +{hidden} more\n </button>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n};\n\nconst InlineJson = ({\n serialized,\n copyText,\n compact,\n}: {\n serialized: string;\n copyText: () => string;\n compact: boolean;\n}) => (\n <div className=\"flex min-w-0 items-start gap-0.5\">\n <code\n className={clsx(\n \"text-foreground min-w-0 flex-1 font-mono leading-snug break-all\",\n compact ? \"text-[10px]\" : \"text-[11px]\",\n )}\n title={serialized}\n >\n {serialized}\n </code>\n <CopyButton\n value={copyText}\n label=\"Copy JSON\"\n iconOnly\n size={compact ? \"sm\" : \"default\"}\n />\n </div>\n);\n\nconst TreeWithCopy = ({\n value,\n openDepth,\n copyText,\n compact,\n}: {\n value: unknown;\n openDepth: number;\n copyText: () => string;\n compact: boolean;\n}) => (\n <div className=\"flex min-w-0 items-start gap-0.5\">\n <div\n className={clsx(\n \"min-w-0 flex-1 overflow-auto font-mono [font-variant-numeric:tabular-nums] [font-variant-ligatures:none]\",\n compact\n ? \"max-h-32 text-[10px] leading-snug\"\n : \"border-border bg-muted/40 max-h-[360px] rounded-md border p-3 text-[11px] leading-relaxed\",\n )}\n >\n <TreeNode\n value={value}\n depth={0}\n openDepth={openDepth}\n compact={compact}\n />\n </div>\n <CopyButton\n value={copyText}\n label=\"Copy JSON\"\n iconOnly\n size={compact ? \"sm\" : \"default\"}\n className=\"pt-px\"\n />\n </div>\n);\n\n/**\n * Recursive JSON view. `compact` fits tool rows; copy always provides formatted JSON.\n */\nexport const JSONTree = ({\n value,\n openDepth = 1,\n compact = false,\n}: {\n value: unknown;\n openDepth?: number;\n compact?: boolean;\n}) => {\n const serialized = useMemo(\n () =>\n !isContainer(value)\n ? serialize(value, compact)\n : compact\n ? getInlineJson(value, INLINE_MAX)\n : undefined,\n [value, compact],\n );\n const copyText = useCallback(() => JSON.stringify(value, null, 2), [value]);\n\n if (serialized !== undefined) {\n return (\n <InlineJson\n serialized={serialized}\n copyText={copyText}\n compact={compact}\n />\n );\n }\n\n return (\n <TreeWithCopy\n value={value}\n openDepth={openDepth}\n copyText={copyText}\n compact={compact}\n />\n );\n};\n"],"mappings":"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"}
|
|
@@ -4,16 +4,15 @@ import { ReactNode } from "react";
|
|
|
4
4
|
* Fixed-height rail header. Every column in a split layout should use this so
|
|
5
5
|
* titles line up across columns.
|
|
6
6
|
*/
|
|
7
|
-
declare const PaneHeader: ({ children, trailing, borderless }: {
|
|
7
|
+
export declare const PaneHeader: ({ children, trailing, borderless }: {
|
|
8
8
|
children: ReactNode;
|
|
9
9
|
trailing?: ReactNode | undefined;
|
|
10
10
|
borderless?: boolean;
|
|
11
11
|
}) => import("react").JSX.Element;
|
|
12
12
|
/** Header that grows below a {@link PaneHeader}-height title row. */
|
|
13
|
-
declare const PaneHeaderStack: ({ header, children }: {
|
|
13
|
+
export declare const PaneHeaderStack: ({ header, children }: {
|
|
14
14
|
header: ReactNode;
|
|
15
15
|
children?: ReactNode | undefined;
|
|
16
16
|
}) => import("react").JSX.Element;
|
|
17
17
|
//#endregion
|
|
18
|
-
export { PaneHeader, PaneHeaderStack };
|
|
19
18
|
//# sourceMappingURL=PaneHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaneHeader.d.ts","names":[],"sources":["../../../src/views/ui/PaneHeader.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"PaneHeader.d.ts","names":[],"sources":["../../../src/views/ui/PaneHeader.tsx"],"mappings":";;;;;;qBAMa,eAAc,UAAA,UAAA;EAKzB,UAAU;EACV,WAAW;EACX;sBACD,IAAA;;qBAoBY,oBAAmB,QAAA;EAI9B,QAAQ;EACR,WAAW;sBACZ,IAAA"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
//#region src/views/ui/RailTime.d.ts
|
|
2
2
|
/** Compact timestamp for narrow rails; full value goes in the tooltip. */
|
|
3
|
-
declare const RailTime: ({ value, className }: {
|
|
3
|
+
export declare const RailTime: ({ value, className }: {
|
|
4
4
|
value: string | undefined;
|
|
5
5
|
className?: string | undefined;
|
|
6
6
|
}) => import("react").JSX.Element | null;
|
|
7
7
|
//#endregion
|
|
8
|
-
export { RailTime };
|
|
9
8
|
//# sourceMappingURL=RailTime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RailTime.d.ts","names":[],"sources":["../../../src/views/ui/RailTime.tsx"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"RailTime.d.ts","names":[],"sources":["../../../src/views/ui/RailTime.tsx"],"mappings":";;qBAIa,aAAY,OAAA;EAIvB;EACA;sBACD,IAAA"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
2
|
//#region src/views/ui/SectionLabel.d.ts
|
|
3
|
-
declare const SectionLabel: ({ children }: {
|
|
3
|
+
export declare const SectionLabel: ({ children }: {
|
|
4
4
|
children: ReactNode;
|
|
5
5
|
}) => import("react").JSX.Element;
|
|
6
6
|
//#endregion
|
|
7
|
-
export { SectionLabel };
|
|
8
7
|
//# sourceMappingURL=SectionLabel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionLabel.d.ts","names":[],"sources":["../../../src/views/ui/SectionLabel.tsx"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"SectionLabel.d.ts","names":[],"sources":["../../../src/views/ui/SectionLabel.tsx"],"mappings":";;qBAEa,iBAAgB;EAAgB,UAAU;sBAAW,IAAA"}
|
|
@@ -5,7 +5,7 @@ import { ReactNode } from "react";
|
|
|
5
5
|
* selection; the whole row is the hit target. Content is free-form so a row can
|
|
6
6
|
* be a single line or a small block (a transcript turn).
|
|
7
7
|
*/
|
|
8
|
-
declare const SelectableRow: import("react").ForwardRefExoticComponent<{
|
|
8
|
+
export declare const SelectableRow: import("react").ForwardRefExoticComponent<{
|
|
9
9
|
selected?: boolean;
|
|
10
10
|
onSelect?: (() => void) | undefined;
|
|
11
11
|
className?: string | undefined;
|
|
@@ -14,5 +14,4 @@ declare const SelectableRow: import("react").ForwardRefExoticComponent<{
|
|
|
14
14
|
children: ReactNode;
|
|
15
15
|
} & import("react").RefAttributes<HTMLButtonElement>>;
|
|
16
16
|
//#endregion
|
|
17
|
-
export { SelectableRow };
|
|
18
17
|
//# sourceMappingURL=SelectableRow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectableRow.d.ts","names":[],"sources":["../../../src/views/ui/SelectableRow.tsx"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"SelectableRow.d.ts","names":[],"sources":["../../../src/views/ui/SelectableRow.tsx"],"mappings":";;;;;;;qBAQa,+BAAa;EAGX;EACA;EACC;;EAEJ;EACE,UAAA;oBAwBZ,cAAA"}
|
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
* glance and nothing more. Renders nothing below 2 points; color comes from the
|
|
6
6
|
* surrounding text color (`currentColor`).
|
|
7
7
|
*/
|
|
8
|
-
declare const Sparkline: ({ values, className }: {
|
|
8
|
+
export declare const Sparkline: ({ values, className }: {
|
|
9
9
|
values: readonly number[];
|
|
10
10
|
className?: string;
|
|
11
11
|
}) => import("react").JSX.Element | null;
|
|
12
12
|
//#endregion
|
|
13
|
-
export { Sparkline };
|
|
14
13
|
//# sourceMappingURL=Sparkline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sparkline.d.ts","names":[],"sources":["../../../src/views/ui/Sparkline.tsx"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"Sparkline.d.ts","names":[],"sources":["../../../src/views/ui/Sparkline.tsx"],"mappings":";;;;;;;qBAQa,cAAa,QAAA;EAIxB;EACA;sBACD,IAAA"}
|
|
@@ -4,14 +4,13 @@ import { ReactNode } from "react";
|
|
|
4
4
|
* A key/value row: label left, value right on one baseline. Flat (no box). Group
|
|
5
5
|
* a sequence in `SummaryList` for hairline dividers.
|
|
6
6
|
*/
|
|
7
|
-
declare const SummaryItem: ({ label, value }: {
|
|
7
|
+
export declare const SummaryItem: ({ label, value }: {
|
|
8
8
|
label: string;
|
|
9
9
|
value: ReactNode;
|
|
10
10
|
}) => import("react").JSX.Element;
|
|
11
11
|
/** Divided list of `SummaryItem` rows. Unboxed: dividers do the grouping. */
|
|
12
|
-
declare const SummaryList: ({ children }: {
|
|
12
|
+
export declare const SummaryList: ({ children }: {
|
|
13
13
|
children: ReactNode;
|
|
14
14
|
}) => import("react").JSX.Element;
|
|
15
15
|
//#endregion
|
|
16
|
-
export { SummaryItem, SummaryList };
|
|
17
16
|
//# sourceMappingURL=SummaryItem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SummaryItem.d.ts","names":[],"sources":["../../../src/views/ui/SummaryItem.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"SummaryItem.d.ts","names":[],"sources":["../../../src/views/ui/SummaryItem.tsx"],"mappings":";;;;;;qBAMa,gBAAe,OAAA;EAI1B;EACA,OAAO;sBACR,IAAA;;qBAUY,gBAAe;EAAgB,UAAU;sBAAW,IAAA"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { BadgeTone } from "./badgeTone.js";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
3
|
//#region src/views/ui/ToneBadge.d.ts
|
|
4
|
-
declare const ToneBadge: ({ tone, size, className, children }: {
|
|
4
|
+
export declare const ToneBadge: ({ tone, size, className, children }: {
|
|
5
5
|
tone?: BadgeTone | undefined;
|
|
6
6
|
size?: "default" | "sm";
|
|
7
7
|
className?: string | undefined;
|
|
8
8
|
children: ReactNode;
|
|
9
9
|
}) => import("react").JSX.Element;
|
|
10
10
|
//#endregion
|
|
11
|
-
export { ToneBadge };
|
|
12
11
|
//# sourceMappingURL=ToneBadge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToneBadge.d.ts","names":[],"sources":["../../../src/views/ui/ToneBadge.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ToneBadge.d.ts","names":[],"sources":["../../../src/views/ui/ToneBadge.tsx"],"mappings":";;;qBAKa,cAAa,MAAA,MAAA,WAAA;EAMxB,OAAO;EACP;EACA;EACA,UAAU;sBACX,IAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/views/ui/badgeTone.d.ts
|
|
2
|
-
declare const BADGE_TONE: {
|
|
2
|
+
export declare const BADGE_TONE: {
|
|
3
3
|
readonly blue: "border-blue-300 bg-blue-500/10 text-blue-700 dark:border-blue-500/40 dark:bg-blue-500/15 dark:text-blue-300";
|
|
4
4
|
readonly emerald: "border-emerald-300 bg-emerald-500/10 text-emerald-700 dark:border-emerald-500/40 dark:bg-emerald-500/15 dark:text-emerald-300";
|
|
5
5
|
readonly amber: "border-amber-300 bg-amber-500/10 text-amber-700 dark:border-amber-500/40 dark:bg-amber-500/15 dark:text-amber-300";
|
|
@@ -7,15 +7,14 @@ declare const BADGE_TONE: {
|
|
|
7
7
|
readonly violet: "border-violet-300 bg-violet-500/10 text-violet-700 dark:border-violet-500/40 dark:bg-violet-500/15 dark:text-violet-300";
|
|
8
8
|
readonly zinc: "border-zinc-300 bg-zinc-500/10 text-zinc-600 dark:border-zinc-600 dark:bg-zinc-500/15 dark:text-zinc-300";
|
|
9
9
|
};
|
|
10
|
-
type BadgeTone = keyof typeof BADGE_TONE;
|
|
10
|
+
export type BadgeTone = keyof typeof BADGE_TONE;
|
|
11
11
|
/** Message and attachment lifecycle status to badge tone. */
|
|
12
|
-
declare const STATUS_TONE: Record<string, BadgeTone>;
|
|
12
|
+
export declare const STATUS_TONE: Record<string, BadgeTone>;
|
|
13
13
|
/** MCP connection state to badge tone. */
|
|
14
|
-
declare const CONNECTION_TONE: Record<string, BadgeTone>;
|
|
15
|
-
declare const BADGE_BASE = "inline-flex items-center rounded-md border px-1.5 py-0.5 text-[11px] font-medium leading-none";
|
|
16
|
-
declare const BADGE_SM = "inline-flex items-center rounded border px-1 py-px text-[9px] font-medium leading-none";
|
|
14
|
+
export declare const CONNECTION_TONE: Record<string, BadgeTone>;
|
|
15
|
+
export declare const BADGE_BASE = "inline-flex items-center rounded-md border px-1.5 py-0.5 text-[11px] font-medium leading-none";
|
|
16
|
+
export declare const BADGE_SM = "inline-flex items-center rounded border px-1 py-px text-[9px] font-medium leading-none";
|
|
17
17
|
/** Uniform width for short status labels in transcript rails (e.g. opt vs running). */
|
|
18
|
-
declare const RAIL_STATUS_BADGE_CLASS = "min-w-[2.875rem] justify-center";
|
|
18
|
+
export declare const RAIL_STATUS_BADGE_CLASS = "min-w-[2.875rem] justify-center";
|
|
19
19
|
//#endregion
|
|
20
|
-
export { BADGE_BASE, BADGE_SM, BADGE_TONE, BadgeTone, CONNECTION_TONE, RAIL_STATUS_BADGE_CLASS, STATUS_TONE };
|
|
21
20
|
//# sourceMappingURL=badgeTone.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badgeTone.d.ts","names":[],"sources":["../../../src/views/ui/badgeTone.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"badgeTone.d.ts","names":[],"sources":["../../../src/views/ui/badgeTone.ts"],"mappings":";qBAAa;;;;;;;;YAYD,yBAAyB;;qBAGxB,aAAa,eAAe;;qBAQ5B,iBAAiB,eAAe;qBAShC;qBAGA;;qBAIA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getInlineJson.d.ts","names":[],"sources":["../../../src/views/ui/getInlineJson.ts"],"mappings":";wBAEgB,cAAc,gBAAgB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/views/ui/getInlineJson.ts
|
|
2
|
+
const TOO_LARGE = Symbol();
|
|
3
|
+
function getInlineJson(value, limit) {
|
|
4
|
+
if (Array.isArray(value) && !("toJSON" in value) && value.length * 2 + 1 > limit) return;
|
|
5
|
+
let remaining = limit;
|
|
6
|
+
try {
|
|
7
|
+
const serialized = JSON.stringify(value, function(key, entry) {
|
|
8
|
+
if (!Array.isArray(this) && (entry === void 0 || typeof entry === "function" || typeof entry === "symbol")) return entry;
|
|
9
|
+
remaining -= 1 + (Array.isArray(this) ? 0 : key.length) + (typeof entry === "string" ? entry.length : 0);
|
|
10
|
+
if (remaining < 0) throw TOO_LARGE;
|
|
11
|
+
return entry;
|
|
12
|
+
});
|
|
13
|
+
return serialized !== void 0 && serialized.length <= limit ? serialized : void 0;
|
|
14
|
+
} catch (error) {
|
|
15
|
+
if (error === TOO_LARGE) return void 0;
|
|
16
|
+
throw error;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { getInlineJson };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=getInlineJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getInlineJson.js","names":["TOO_LARGE","Symbol","getInlineJson","value","limit","Array","isArray","length","undefined","remaining","serialized","JSON","stringify","key","entry","error"],"sources":["../../../src/views/ui/getInlineJson.ts"],"sourcesContent":["const TOO_LARGE = Symbol();\n\nexport function getInlineJson(value: unknown, limit: number) {\n if (\n Array.isArray(value) &&\n !(\"toJSON\" in value) &&\n value.length * 2 + 1 > limit\n ) {\n return undefined;\n }\n\n let remaining = limit;\n try {\n const serialized = JSON.stringify(value, function (key, entry: unknown) {\n if (\n !Array.isArray(this) &&\n (entry === undefined ||\n typeof entry === \"function\" ||\n typeof entry === \"symbol\")\n ) {\n return entry;\n }\n // This lower bound stops large values without replacing JSON escaping or omission rules.\n remaining -=\n 1 +\n (Array.isArray(this) ? 0 : key.length) +\n (typeof entry === \"string\" ? entry.length : 0);\n if (remaining < 0) throw TOO_LARGE;\n return entry;\n });\n return serialized !== undefined && serialized.length <= limit\n ? serialized\n : undefined;\n } catch (error) {\n if (error === TOO_LARGE) return undefined;\n throw error;\n }\n}\n"],"mappings":";AAAA,MAAMA,YAAYC,OAAO;AAEzB,SAAgBC,cAAcC,OAAgBC,OAAe;CAC3D,IACEC,MAAMC,QAAQH,KAAK,KACnB,EAAE,YAAYA,UACdA,MAAMI,SAAS,IAAI,IAAIH,OAEvB;CAGF,IAAIK,YAAYL;CAChB,IAAI;EACF,MAAMM,aAAaC,KAAKC,UAAUT,OAAO,SAAUU,KAAKC,OAAgB;GACtE,IACE,CAACT,MAAMC,QAAQ,IAAI,MAClBQ,UAAUN,KAAAA,KACT,OAAOM,UAAU,cACjB,OAAOA,UAAU,WAEnB,OAAOA;GAGTL,aACE,KACCJ,MAAMC,QAAQ,IAAI,IAAI,IAAIO,IAAIN,WAC9B,OAAOO,UAAU,WAAWA,MAAMP,SAAS;GAC9C,IAAIE,YAAY,GAAG,MAAMT;GACzB,OAAOc;EACT,CAAC;EACD,OAAOJ,eAAeF,KAAAA,KAAaE,WAAWH,UAAUH,QACpDM,aACAF,KAAAA;CACN,SAASO,OAAO;EACd,IAAIA,UAAUf,WAAW,OAAOQ,KAAAA;EAChC,MAAMO;CACR;AACF"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
//#region src/views/ui/useCopyToClipboard.d.ts
|
|
2
|
-
declare const useCopyToClipboard: ({ copiedDuration }?: {
|
|
2
|
+
export declare const useCopyToClipboard: ({ copiedDuration }?: {
|
|
3
3
|
copiedDuration?: number;
|
|
4
4
|
}) => {
|
|
5
5
|
isCopied: boolean;
|
|
6
6
|
copy: (value: string) => void;
|
|
7
7
|
};
|
|
8
8
|
//#endregion
|
|
9
|
-
export { useCopyToClipboard };
|
|
10
9
|
//# sourceMappingURL=useCopyToClipboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCopyToClipboard.d.ts","names":[],"sources":["../../../src/views/ui/useCopyToClipboard.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useCopyToClipboard.d.ts","names":[],"sources":["../../../src/views/ui/useCopyToClipboard.ts"],"mappings":";qBAEa,uBAAsB;EAGjC;;;EAKU,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assistant-ui/react-devtools",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.20",
|
|
4
4
|
"description": "React development tools for assistant-ui components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"assistant-ui",
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
"sideEffects": false,
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"clsx": "^2.1.1",
|
|
31
|
-
"zod": "^4.5
|
|
31
|
+
"zod": "^4.6.5"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"@assistant-ui/react": "^0.15.0",
|
|
35
|
-
"@assistant-ui/tap": "^0.9.
|
|
35
|
+
"@assistant-ui/tap": "^0.9.18",
|
|
36
36
|
"@types/react": "*",
|
|
37
37
|
"@types/react-dom": "*",
|
|
38
38
|
"react": "^18 || ^19",
|
|
@@ -47,17 +47,19 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@assistant-ui/react": "0.15.
|
|
51
|
-
"@assistant-ui/tap": "0.9.
|
|
52
|
-
"@assistant-ui/x-buildutils": "0.0.
|
|
50
|
+
"@assistant-ui/react": "0.15.21",
|
|
51
|
+
"@assistant-ui/tap": "0.9.18",
|
|
52
|
+
"@assistant-ui/x-buildutils": "0.0.28",
|
|
53
|
+
"@assistant-ui/x-performance": "0.0.0",
|
|
53
54
|
"@tailwindcss/cli": "^4.3.3",
|
|
54
|
-
"@types/node": "^26.
|
|
55
|
-
"@types/react": "^19.
|
|
56
|
-
"@types/react-dom": "^19.
|
|
57
|
-
"
|
|
58
|
-
"react
|
|
55
|
+
"@types/node": "^26.5.1",
|
|
56
|
+
"@types/react": "^19.3.0",
|
|
57
|
+
"@types/react-dom": "^19.3.0",
|
|
58
|
+
"jsdom": "^30.0.1",
|
|
59
|
+
"react": "^19.3.0",
|
|
60
|
+
"react-dom": "^19.3.0",
|
|
59
61
|
"tailwindcss": "^4.3.3",
|
|
60
|
-
"vitest": "^
|
|
62
|
+
"vitest": "^5.0.1"
|
|
61
63
|
},
|
|
62
64
|
"publishConfig": {
|
|
63
65
|
"access": "public",
|
|
@@ -75,6 +77,7 @@
|
|
|
75
77
|
"scripts": {
|
|
76
78
|
"build:css": "node scripts/build-styles.mjs",
|
|
77
79
|
"build": "pnpm build:css && aui-build",
|
|
78
|
-
"test": "vitest run"
|
|
80
|
+
"test": "vitest run",
|
|
81
|
+
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json"
|
|
79
82
|
}
|
|
80
83
|
}
|
|
@@ -11,9 +11,7 @@ import {
|
|
|
11
11
|
* The default transport: reads the in-process DevToolsHooks registry and
|
|
12
12
|
* re-projects it on every change.
|
|
13
13
|
*
|
|
14
|
-
* Projection runs inside the subscribe/change callbacks
|
|
15
|
-
* because the scope accessors throw when invoked during a render, and
|
|
16
|
-
* getSnapshot returns the cached result.
|
|
14
|
+
* Projection runs inside the subscribe/change callbacks and getSnapshot returns the cached result, because useSyncExternalStore requires a referentially stable snapshot and rebuilding it per call would loop.
|
|
17
15
|
*/
|
|
18
16
|
export const createInProcessClient = (): DevToolsClient => {
|
|
19
17
|
let snapshot: DevToolsSnapshot = EMPTY_SNAPSHOT;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by scripts/build-styles.mjs. Do not edit by hand.
|
|
2
|
-
export 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}}";
|
|
2
|
+
export 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{display:inline}.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,6 +2,7 @@ import { describe, expect, it } from "vitest";
|
|
|
2
2
|
import {
|
|
3
3
|
REDACTED,
|
|
4
4
|
redactSensitive,
|
|
5
|
+
sanitizeAndRedact,
|
|
5
6
|
sanitizeForMessage,
|
|
6
7
|
serializeModelContext,
|
|
7
8
|
} from "./serialization";
|
|
@@ -138,6 +139,24 @@ describe("sanitizeForMessage", () => {
|
|
|
138
139
|
readable: "readable value",
|
|
139
140
|
});
|
|
140
141
|
});
|
|
142
|
+
|
|
143
|
+
it("preserves prototype-named object and map entries as own properties", () => {
|
|
144
|
+
const objectResult = sanitizeAndRedact(
|
|
145
|
+
JSON.parse('{"__proto__":{"visible":true}}'),
|
|
146
|
+
) as Record<string, unknown>;
|
|
147
|
+
const mapResult = sanitizeForMessage(
|
|
148
|
+
new Map([["__proto__", "map value"]]),
|
|
149
|
+
) as Record<string, unknown>;
|
|
150
|
+
|
|
151
|
+
expect(Object.hasOwn(objectResult, "__proto__")).toBe(true);
|
|
152
|
+
expect(objectResult["__proto__"]).toEqual({ visible: true });
|
|
153
|
+
expect(Object.getPrototypeOf(objectResult)).toBe(Object.prototype);
|
|
154
|
+
expect(JSON.stringify(objectResult)).toBe('{"__proto__":{"visible":true}}');
|
|
155
|
+
|
|
156
|
+
expect(Object.hasOwn(mapResult, "__proto__")).toBe(true);
|
|
157
|
+
expect(mapResult["__proto__"]).toBe("map value");
|
|
158
|
+
expect(Object.getPrototypeOf(mapResult)).toBe(Object.prototype);
|
|
159
|
+
});
|
|
141
160
|
});
|
|
142
161
|
|
|
143
162
|
describe("redactSensitive", () => {
|