@theoremjs/studio 0.3.4-next.407.gd93ec2c → 0.3.4-next.413.gb7a2b75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/browser-transport.d.ts +1 -1
  2. package/browser-transport.js +9 -0
  3. package/package.json +4 -4
  4. package/page/assets/Banner-CIcZcE2z.js +2 -0
  5. package/page/assets/CollapsibleGroup-CL8h1IzH.js +1 -0
  6. package/page/assets/ConsoleFrame-Ix0RXm_R.js +3 -0
  7. package/page/assets/{ContextMenu-BreVLY9J.js → ContextMenu-COkl-sLz.js} +2 -2
  8. package/page/assets/{ToolResultCharts-BV2tbzow.js → ToolResultCharts-UmFnfSOp.js} +1 -1
  9. package/page/assets/{TraceInspector-B8NufbVX.js → TraceInspector-DWw6BGA5.js} +1 -1
  10. package/page/assets/{TraceOverview-DoQOfiAe.js → TraceOverview-BiCh-eqR.js} +2 -2
  11. package/page/assets/{_virtual_studio-type-sources-BJMljtdu.js → _virtual_studio-type-sources-Cwv7y4JN.js} +20 -11
  12. package/page/assets/browser-engine-BY6gYiHv.js +11 -0
  13. package/page/assets/browser-transport-B4Or1xM7.js +47 -0
  14. package/page/assets/crypto-Boxudvjl.js +1 -0
  15. package/page/assets/{export-agent-D2Vo-OSL.js → export-agent-D8hLzzFn.js} +3 -3
  16. package/page/assets/{guardrail-tester-CuqamClw.js → guardrail-tester-C04dSfNv.js} +2 -2
  17. package/page/assets/index-Br0mAcH5.js +100 -0
  18. package/page/assets/{live-messages-BZGmMo_v.js → live-messages-CI-oP2dK.js} +1 -1
  19. package/page/assets/reader-CVFKFctz.js +7 -0
  20. package/page/assets/{stub-DpBSP8Ld.js → stub-Bf9DC2iQ.js} +1 -1
  21. package/page/assets/{studio-code-pane-B9bG0xzf.js → studio-code-pane-B0BB_yGF.js} +3 -3
  22. package/page/assets/studio-console-BLHAfqNd.js +1 -0
  23. package/page/assets/studio-decision-Cfc9arc7.js +1 -0
  24. package/page/assets/studio-embedding-CGSaA2dS.js +2 -0
  25. package/page/assets/studio-host-console-BidxEK6_.js +2 -0
  26. package/page/assets/studio-labels-CWLqOvKg.js +3 -0
  27. package/page/assets/studio-live-C8XxDpXT.js +5 -0
  28. package/page/assets/studio-map-C2zIkdcp.js +1 -0
  29. package/page/assets/studio-session-yEqFQo5o.js +1 -0
  30. package/page/assets/studio-trace-replay-CpbB-zpo.js +2 -0
  31. package/page/assets/{studio-type-checker-Cm6RZxV3.js → studio-type-checker-xhy-9-yy.js} +1 -1
  32. package/page/assets/{tool-schema-CgpwKFX7.js → tool-schema-BlUbzOu9.js} +1 -1
  33. package/page/assets/{tree-BxX70aqA.js → tree-6F02tTxC.js} +1 -1
  34. package/page/assets/{turn-client-BZUECwPn.js → turn-client-4GHmGV_4.js} +2 -2
  35. package/page/assets/types-DN_oZAOJ.js +1 -0
  36. package/page/assets/use-one-call-BJhdZLBt.js +1 -0
  37. package/page/assets/use-second-ticker-VX91zrxj.js +1 -0
  38. package/page/assets/{workspace-Bc---F49.js → workspace-SpjcVXbF.js} +1 -1
  39. package/page/index.html +18 -15
  40. package/runtime.d.ts +1 -1
  41. package/runtime.js +5 -2
  42. package/server/draft-handler.js +17 -1
  43. package/transport.d.ts +1 -1
  44. package/transport.js +10 -0
  45. package/ui/lib/send-when-ready.d.ts +1 -1
  46. package/ui/studio-screen.js +4 -6
  47. package/ui/studio-trace-replay.d.ts +8 -5
  48. package/ui/studio-trace-replay.js +139 -83
  49. package/page/assets/Banner-B1Vat7i_.js +0 -2
  50. package/page/assets/CollapsibleGroup-toq0Nedn.js +0 -2
  51. package/page/assets/PaneState-C8jetBGI.js +0 -1
  52. package/page/assets/browser-engine-BvsLwtiv.js +0 -11
  53. package/page/assets/browser-transport-DxpDmXGb.js +0 -47
  54. package/page/assets/index-C3mDKoGG.js +0 -102
  55. package/page/assets/reader-paEmSrWc.js +0 -7
  56. package/page/assets/studio-console-1qIWsDtV.js +0 -3
  57. package/page/assets/studio-decision-BdJR3HSN.js +0 -1
  58. package/page/assets/studio-embedding-CFzitRLj.js +0 -2
  59. package/page/assets/studio-host-console-BzpDE2TK.js +0 -2
  60. package/page/assets/studio-live-BucphGSr.js +0 -5
  61. package/page/assets/studio-map-BfUMbnZK.js +0 -1
  62. package/page/assets/studio-trace-replay-C5cBxYG_.js +0 -2
  63. package/page/assets/types-BoECJ8mE.js +0 -1
  64. package/page/assets/use-one-call-BVmuHLSm.js +0 -1
  65. /package/page/assets/{PaneState-CnxaP3LD.css → use-second-ticker-CnxaP3LD.css} +0 -0
@@ -1,6 +1,6 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  /**
3
- * An opened trace: the conversation it recorded, as the person saw it, and a replay of it through
3
+ * An imported trace: the conversation it recorded, as the person saw it, and a replay of it through
4
4
  * the profile as it is now. A replay reaches no model and, unless Live tools is on, no tool: the
5
5
  * recording answers both. Where the profile asks for something the recording does not hold, the
6
6
  * replay stops and says why; Continue live goes on from there with the real model.
@@ -10,22 +10,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  import { Banner } from '@astryxdesign/core/Banner';
11
11
  import { Button } from '@astryxdesign/core/Button';
12
12
  import { FileInput } from '@astryxdesign/core/FileInput';
13
- import { HStack } from '@astryxdesign/core/HStack';
14
- import { Icon } from '@astryxdesign/core/Icon';
15
- import { IconButton } from '@astryxdesign/core/IconButton';
16
- import { Section } from '@astryxdesign/core/Section';
17
13
  import { SegmentedControl, SegmentedControlItem } from '@astryxdesign/core/SegmentedControl';
18
- import { StackItem } from '@astryxdesign/core/Stack';
19
14
  import { Switch } from '@astryxdesign/core/Switch';
20
15
  import { Text } from '@astryxdesign/core/Text';
21
16
  import { VStack } from '@astryxdesign/core/VStack';
22
- import { IconFileImport, IconPlayerPlay, IconX } from '@tabler/icons-react';
23
- import { PaneState, TheoremChat } from '@theoremjs/react/ui';
24
- import { createTraceFeed, } from '@theoremjs/web/client';
17
+ import { useTheoremChat } from '@theoremjs/react';
18
+ import { ChatTranscript, ConsoleFrame, RequestCard, ResponseColumn, RunBar, TheoremLabelsProvider, TheoremThemeProvider, useLabels, useTraceInspector, } from '@theoremjs/react/ui';
19
+ import { createTraceFeed } from '@theoremjs/web/client';
25
20
  import { useEffect, useMemo, useRef, useState } from 'react';
26
21
  import { createBrowserStudioTransport, startBrowserStudioConversation, } from "../browser.js";
27
22
  import { createReplay, parseTraceFile, recordedPayload, recordedTranscript, replayScript, startStudioConversation, studioInterface, studioPageTools, } from "../mod.js";
28
- import { sendWhenReady } from "./lib/send-when-ready.js";
29
23
  import { pageConversationKey } from "./lib/studio-conversation.js";
30
24
  import { STUDIO_LABELS } from "./lib/studio-labels.js";
31
25
  /**
@@ -41,21 +35,24 @@ function startLive(payload, runtime, blocks) {
41
35
  : startStudioConversation(payload, blocks);
42
36
  }
43
37
  const ordinal = (turn) => `turn ${String(turn + 1)}`;
44
- /** A chat that only shows: the conversation a trace recorded, and its records beside it. */
45
- function recordedTransport(payload, transcript, traces) {
46
- const refused = () => Promise.reject(new Error('A recorded conversation cannot change. Replay it, then continue live.'));
47
- return {
48
- describe: () => Promise.resolve(studioInterface(payload)),
49
- turn: refused,
50
- invoke: refused,
51
- steer: refused,
52
- rewind: refused,
53
- conversation: () => Promise.resolve({ transcript }),
54
- traces,
55
- };
38
+ /** The console's frame, as a decision and a host have it: the trace card, then the conversation. */
39
+ function TraceFrame({ iface, feed, trace, card, conversation, }) {
40
+ const inspector = useTraceInspector(iface, feed, trace);
41
+ return (_jsxs(ConsoleFrame, { inspector: inspector, maxWidth: "960px", requestLabel: "Trace", children: [card, conversation] }));
42
+ }
43
+ /** The conversation's card: where the replay stands, then the transcript. */
44
+ function Conversation({ iface, blocks, banner, chat, }) {
45
+ const t = useLabels();
46
+ return (_jsxs(ResponseColumn, { label: "Conversation", children: [banner, _jsx(ChatTranscript, { blocks: blocks, handle: t('@theorem.agent.handle', { handle: iface.identity.handle }), labels: iface.labels, streaming: chat?.streaming, delivery: chat?.delivery, answering: chat?.answering, onToolDecision: chat &&
47
+ ((index, action) => {
48
+ void chat.handleToolDecision(index, action);
49
+ }), onAuthenticated: chat &&
50
+ ((index, secret) => {
51
+ void chat.handleAuthenticated(index, secret);
52
+ }) })] }));
56
53
  }
57
- /** The pane to open a trace in: a place to drop it, and why the last one did not open. */
58
- function OpenTrace({ onOpen }) {
54
+ /** A trace file to import, and why the last one did not import. */
55
+ function TraceFileInput({ onImport }) {
59
56
  const [problem, setProblem] = useState();
60
57
  const [reading, setReading] = useState(false);
61
58
  const changeAction = async (files) => {
@@ -64,7 +61,7 @@ function OpenTrace({ onOpen }) {
64
61
  return;
65
62
  setReading(true);
66
63
  try {
67
- onOpen({ name: file.name, records: parseTraceFile(await file.text()) });
64
+ onImport({ name: file.name, records: parseTraceFile(await file.text()) });
68
65
  setProblem(undefined);
69
66
  }
70
67
  catch (error) {
@@ -74,7 +71,33 @@ function OpenTrace({ onOpen }) {
74
71
  setReading(false);
75
72
  }
76
73
  };
77
- return (_jsx(PaneState, { icon: _jsx(Icon, { icon: IconFileImport, size: "lg", color: "secondary" }), title: "Open a trace", description: "See how a conversation went, then replay it through this profile as it is now. A replay answers from the recording, so it needs no keys.", children: _jsxs(VStack, { gap: 2, children: [_jsx(FileInput, { label: "Trace file", isLabelHidden: true, mode: "dropzone", accept: "application/json,.json", isLoading: reading, placeholder: "Drop a trace (.json) or choose a file", value: null, changeAction: changeAction, onChange: () => undefined }), problem ? _jsx(Banner, { status: "error", title: problem }) : null] }) }));
74
+ return (_jsxs(VStack, { gap: 2, children: [_jsx(FileInput, { label: "Trace file", isLabelHidden: true, mode: "dropzone", accept: "application/json,.json", isLoading: reading, placeholder: "Drop a trace (.json) or choose a file", value: null, changeAction: changeAction, onChange: () => undefined }), problem ? _jsx(Banner, { status: "error", title: problem }) : null] }));
75
+ }
76
+ const recordedAt = (script) => script.recordedAt === undefined
77
+ ? undefined
78
+ : new Intl.DateTimeFormat(undefined, { dateStyle: 'medium', timeStyle: 'short' }).format(script.recordedAt);
79
+ /** Recorded / Replayed: which run the conversation and the inspector show. */
80
+ function ShownControl({ shown, onShown }) {
81
+ return (_jsxs(SegmentedControl, { label: "Show", size: "sm", value: shown, onChange: (next) => {
82
+ onShown(next === 'replayed' ? 'replayed' : 'recorded');
83
+ }, children: [_jsx(SegmentedControlItem, { value: "recorded", label: "Recorded" }), _jsx(SegmentedControlItem, { value: "replayed", label: "Replayed" })] }));
84
+ }
85
+ /** What the imported file recorded, and how a replay answers its tools. */
86
+ function TraceFacts({ controls }) {
87
+ const { script, payload } = controls;
88
+ const turns = script.turns.length;
89
+ const facts = [
90
+ script.agent || 'No agent',
91
+ `${String(turns)} ${turns === 1 ? 'turn' : 'turns'}`,
92
+ recordedAt(script),
93
+ ];
94
+ return (_jsxs(_Fragment, { children: [_jsxs(VStack, { gap: 0, children: [_jsx(Text, { type: "label", maxLines: 1, children: controls.opened.name }), _jsx(Text, { type: "supporting", color: "secondary", maxLines: 1, children: facts.filter(Boolean).join(' · ') })] }), script.agent && script.agent !== payload.profile.id ? (_jsx(Banner, { status: "info", title: `Recorded with ${script.agent}; a replay runs through ${payload.profile.id}.` })) : null, turns === 0 ? (_jsx(Banner, { status: "info", title: "This trace holds no conversation to replay." })) : null, _jsx(Switch, { label: "Live tools", description: "Run the profile's tools instead of answering them from the recording.", value: controls.liveTools, onChange: controls.onLiveTools })] }));
95
+ }
96
+ const idle = () => undefined;
97
+ /** The trace card: the file, what it recorded, and Replay. */
98
+ function TraceCard({ onImport, controls, }) {
99
+ const replay = controls?.onReplay ?? idle;
100
+ return (_jsxs(RequestCard, { title: "Trace", onRun: replay, actions: controls?.shown ? _jsx(ShownControl, { shown: controls.shown, onShown: controls.onShown }) : null, children: [_jsx(TraceFileInput, { onImport: onImport }), controls ? _jsx(TraceFacts, { controls: controls }) : null, _jsx(RunBar, { note: controls ? 'Answers each model call from the recording, so it needs no keys.' : null, isReady: (controls?.script.turns.length ?? 0) > 0, isRunning: controls?.isRunning ?? false, runLabel: controls?.shown ? 'Replay again' : 'Replay', runningLabel: "Replaying", stopLabel: "Stop", onRun: replay, onStop: controls?.onStop ?? idle })] }));
78
101
  }
79
102
  /** What the replay is doing, or where and why it stopped, with the way on. */
80
103
  function StatusBanner({ status, turns, onContinue, onLive, }) {
@@ -113,49 +136,64 @@ function StatusBanner({ status, turns, onContinue, onLive, }) {
113
136
  })();
114
137
  return (_jsxs(VStack, { gap: 1, children: [banner, problem ? _jsx(Banner, { status: "error", title: problem }) : null] }));
115
138
  }
116
- /** The replay of `script`: the chat it runs in, driven turn by turn, and where it stands. */
117
- function ReplayRun({ payload, script, liveTools, trace, runtime, onLive, }) {
118
- const chatRef = useRef(null);
139
+ /** The recording's own records, in a feed the trace inspector reads. */
140
+ function recordedFeed(records) {
141
+ const feed = createTraceFeed();
142
+ for (const record of records)
143
+ feed.push(record);
144
+ return feed;
145
+ }
146
+ /** A replay of the imported trace: driven turn by turn, beside what the trace recorded. */
147
+ function ReplayConsole({ payload, iface, trace, card, opened, script, shown, liveTools, runtime, onLive, }) {
119
148
  const diverged = useRef(undefined);
120
149
  const [status, setStatus] = useState({ kind: 'running', turn: 0 });
121
150
  const [traces] = useState(createTraceFeed);
151
+ const recorded = useMemo(() => recordedFeed(opened.records), [opened.records]);
122
152
  const replay = useMemo(() => createReplay(script, payload.profile.id, (divergence) => {
123
153
  diverged.current ??= divergence;
124
154
  }), [script, payload.profile.id]);
125
- const ran = useMemo(() => (liveTools ? payload : recordedPayload(payload)), [liveTools, payload]);
126
- const pageTools = useMemo(() => (liveTools ? studioPageTools(payload) : undefined), [liveTools, payload]);
127
- const transport = useMemo(() => createBrowserStudioTransport(ran, {
155
+ const transport = useMemo(() => createBrowserStudioTransport(liveTools ? payload : recordedPayload(payload), {
128
156
  mode: 'byok',
129
157
  provider: replay.provider,
130
158
  ...(liveTools ? {} : { toolHandlers: replay.toolHandlers }),
131
- }, { conversationKey: pageConversationKey(), traces }), [ran, replay, liveTools, traces]);
159
+ }, { conversationKey: pageConversationKey(), traces }), [payload, replay, liveTools, traces]);
160
+ const pageTools = useMemo(() => (liveTools ? studioPageTools(payload) : undefined), [liveTools, payload]);
161
+ const chat = useTheoremChat({ transport, iface, pageTools });
162
+ const { sendText, handleStop } = chat;
163
+ const phase = useRef(chat.phase);
164
+ phase.current = chat.phase;
132
165
  const [from, setFrom] = useState(0);
133
166
  useEffect(() => {
134
- const controller = new AbortController();
135
- const { signal } = controller;
167
+ let stopped = false;
168
+ /** Until a reply still streaming (one a stop is ending) has ended. */
169
+ const settled = async () => {
170
+ while (!stopped && phase.current === 'streaming')
171
+ await new Promise((resolve) => requestAnimationFrame(resolve));
172
+ };
136
173
  void (async () => {
137
174
  for (let turn = from; turn < script.turns.length; turn += 1) {
138
- if (signal.aborted)
175
+ await settled();
176
+ if (stopped)
139
177
  return;
178
+ if (phase.current === 'gated') {
179
+ // The turn before waits on a gate: its reply goes on with the calls it has left.
180
+ replay.startTurn(turn - 1);
181
+ return setStatus({ kind: 'waiting', turn });
182
+ }
140
183
  const { text, attachments } = script.turns[turn];
141
184
  if (attachments > 0)
142
185
  return setStatus({ kind: 'missing', turn });
143
186
  replay.startTurn(turn);
144
187
  setStatus({ kind: 'running', turn });
145
188
  try {
146
- // why: The chat takes nothing until it has described its agent; later turns find it ready.
147
- const sent = turn === 0
148
- ? await sendWhenReady(chatRef, text, signal)
149
- : ((await chatRef.current?.send(text)) ?? null);
150
- if (signal.aborted)
189
+ const sent = await sendText(text);
190
+ if (stopped)
151
191
  return;
152
192
  if (diverged.current)
153
193
  return setStatus({ kind: 'diverged', divergence: diverged.current });
154
- if (!sent) {
155
- // The turn before waits on a gate: its reply goes on with the calls it has left.
156
- replay.startTurn(turn - 1);
157
- return setStatus({ kind: 'waiting', turn });
158
- }
194
+ // The chat took nothing: it was not idle yet. Settle, then send this turn again.
195
+ if (!sent)
196
+ turn -= 1;
159
197
  }
160
198
  catch (error) {
161
199
  const message = error instanceof Error ? error.message : String(error);
@@ -165,52 +203,70 @@ function ReplayRun({ payload, script, liveTools, trace, runtime, onLive, }) {
165
203
  setStatus({ kind: 'done' });
166
204
  })();
167
205
  return () => {
168
- controller.abort();
169
- chatRef.current?.stop();
206
+ stopped = true;
207
+ handleStop();
170
208
  };
171
- }, [from, replay, script]);
209
+ }, [from, replay, script, sendText, handleStop]);
172
210
  const live = async (turn) => {
173
211
  const blocks = script.turns.slice(0, turn).flatMap((each) => each.blocks);
174
212
  const started = await startLive(payload, runtime, blocks);
175
213
  onLive({ ...started, text: script.turns[turn]?.text ?? '' });
176
214
  };
177
- return (_jsxs(VStack, { height: "100%", children: [_jsx(Section, { variant: "transparent", paddingInline: 3, paddingBlock: 2, children: _jsx(StatusBanner, { status: status, turns: script.turns.length, onContinue: setFrom, onLive: live }) }), _jsx(StackItem, { size: "fill", children: _jsx(TheoremChat, { detectCodeLanguage: true, labels: STUDIO_LABELS, transport: transport, trace: trace, composer: false, chatRef: chatRef, pageTools: pageTools }) })] }));
215
+ const replayed = shown === 'replayed';
216
+ return (_jsx(TraceFrame, { iface: iface, feed: replayed ? traces : recorded, trace: trace, card: card({
217
+ isRunning: status.kind === 'running',
218
+ onStop: () => {
219
+ handleStop();
220
+ setStatus({ kind: 'done' });
221
+ },
222
+ }), conversation: _jsx(Conversation, { iface: iface, blocks: replayed ? [...chat.blocks, ...chat.streamBlocks] : recordedTranscript(script), chat: replayed ? chat : undefined, banner: replayed ? (_jsx(StatusBanner, { status: status, turns: script.turns.length, onContinue: setFrom, onLive: live })) : undefined }) }));
178
223
  }
179
- const recordedAt = (script) => script.recordedAt === undefined
180
- ? undefined
181
- : new Intl.DateTimeFormat(undefined, { dateStyle: 'medium', timeStyle: 'short' }).format(script.recordedAt);
182
- /** An opened trace: its recorded conversation, or a replay of it, and the controls between them. */
183
- function OpenedTraceView({ payload, opened, trace, runtime, onClose, onLive, }) {
184
- const script = useMemo(() => replayScript(opened.records), [opened.records]);
185
- const [view, setView] = useState('recorded');
224
+ /**
225
+ * The trace console, in the frame a decision and a host use: the trace card, then the
226
+ * conversation it recorded or its replay through the profile as it is now.
227
+ */
228
+ export function TraceReplay(props) {
229
+ return (_jsx(TheoremThemeProvider, { children: _jsx(TheoremLabelsProvider, { labels: STUDIO_LABELS, children: _jsx(TraceConsole, { ...props }) }) }));
230
+ }
231
+ function TraceConsole({ payload, trace, runtime, onLive }) {
232
+ const iface = useMemo(() => studioInterface(payload), [payload]);
233
+ const [opened, setOpened] = useState();
234
+ const script = useMemo(() => opened && replayScript(opened.records), [opened]);
235
+ const recorded = useMemo(() => recordedFeed(opened?.records ?? []), [opened]);
186
236
  const [attempt, setAttempt] = useState(0);
237
+ const [shown, setShown] = useState('recorded');
187
238
  const [liveTools, setLiveTools] = useState(false);
188
- const recorded = useMemo(() => {
189
- const traces = createTraceFeed();
190
- for (const record of opened.records)
191
- traces.push(record);
192
- return recordedTransport(payload, recordedTranscript(script), traces);
193
- }, [payload, opened.records, script]);
194
- const turns = script.turns.length;
195
- const facts = [
196
- script.agent || 'No agent',
197
- `${String(turns)} ${turns === 1 ? 'turn' : 'turns'}`,
198
- recordedAt(script),
199
- ].filter(Boolean);
239
+ const imported = (next) => {
240
+ setOpened(next);
241
+ setAttempt(0);
242
+ setShown('recorded');
243
+ };
200
244
  const replayOnce = () => {
201
245
  setAttempt((count) => count + 1);
202
- setView('replayed');
246
+ setShown('replayed');
203
247
  };
204
- return (_jsxs(VStack, { height: "100%", children: [_jsx(Section, { variant: "transparent", paddingInline: 3, paddingBlock: 2, children: _jsxs(VStack, { gap: 2, children: [_jsxs(HStack, { gap: 2, vAlign: "center", children: [_jsx(StackItem, { size: "fill", children: _jsxs(VStack, { gap: 0, children: [_jsx(Text, { type: "label", maxLines: 1, children: opened.name }), _jsx(Text, { type: "supporting", color: "secondary", maxLines: 1, children: facts.join(' · ') })] }) }), attempt > 0 ? (_jsxs(SegmentedControl, { label: "Show", size: "sm", value: view, onChange: (next) => {
205
- setView(next === 'replayed' ? 'replayed' : 'recorded');
206
- }, children: [_jsx(SegmentedControlItem, { value: "recorded", label: "Recorded" }), _jsx(SegmentedControlItem, { value: "replayed", label: "Replayed" })] })) : null, _jsx(Switch, { label: "Live tools", size: "sm", value: liveTools, onChange: (next) => {
207
- setLiveTools(next);
208
- if (attempt > 0)
209
- replayOnce();
210
- } }), _jsx(Button, { label: attempt > 0 ? 'Replay again' : 'Replay', variant: "primary", size: "sm", icon: _jsx(Icon, { icon: IconPlayerPlay, size: "sm" }), isDisabled: turns === 0, onClick: replayOnce }), _jsx(IconButton, { label: "Close trace", variant: "ghost", tooltip: "Close trace", icon: _jsx(Icon, { icon: IconX, size: "sm" }), onClick: onClose })] }), script.agent && script.agent !== payload.profile.id ? (_jsx(Banner, { status: "info", title: `Recorded with ${script.agent}; a replay runs through ${payload.profile.id}.` })) : null, turns === 0 ? (_jsx(Banner, { status: "info", title: "This trace holds no conversation to replay." })) : null] }) }), _jsx(StackItem, { size: "fill", children: view === 'replayed' && attempt > 0 ? (_jsx(ReplayRun, { payload: payload, script: script, liveTools: liveTools, trace: trace, runtime: runtime, onLive: onLive }, attempt)) : (_jsx(TheoremChat, { detectCodeLanguage: true, labels: STUDIO_LABELS, transport: recorded, trace: trace, composer: false, conversation: "recorded", conversationView: { transcript: recordedTranscript(script) } }, opened.name)) })] }));
211
- }
212
- /** The trace pane: a place to open one, then what it recorded and its replay. */
213
- export function TraceReplay({ payload, trace, runtime, onClose, onLive, }) {
214
- const [opened, setOpened] = useState();
215
- return opened ? (_jsx(OpenedTraceView, { payload: payload, opened: opened, trace: trace, runtime: runtime, onClose: onClose, onLive: onLive })) : (_jsx(OpenTrace, { onOpen: setOpened }));
248
+ // invariant: the header offers an import only for a type whose conversation a trace holds.
249
+ if (iface.type === 'live')
250
+ return null;
251
+ if (!opened || !script)
252
+ return (_jsx(TraceFrame, { iface: iface, feed: recorded, trace: trace, card: _jsx(TraceCard, { onImport: imported }), conversation: null }));
253
+ const card = ({ isRunning, onStop }) => (_jsx(TraceCard, { onImport: imported, controls: {
254
+ opened,
255
+ script,
256
+ payload,
257
+ shown: attempt > 0 ? shown : null,
258
+ onShown: setShown,
259
+ liveTools,
260
+ onLiveTools: (next) => {
261
+ setLiveTools(next);
262
+ if (attempt > 0)
263
+ replayOnce();
264
+ },
265
+ isRunning,
266
+ onReplay: replayOnce,
267
+ onStop,
268
+ } }));
269
+ if (attempt === 0)
270
+ return (_jsx(TraceFrame, { iface: iface, feed: recorded, trace: trace, card: card({ isRunning: false, onStop: () => undefined }), conversation: _jsx(Conversation, { iface: iface, blocks: recordedTranscript(script) }) }));
271
+ return (_jsx(ReplayConsole, { payload: payload, iface: iface, trace: trace, card: card, opened: opened, script: script, shown: shown, liveTools: liveTools, runtime: runtime, onLive: onLive }, attempt));
216
272
  }
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TraceInspector-B8NufbVX.js","assets/rolldown-runtime-hePW80VL.js","assets/themeProps-3IqahpCr.js","assets/tokens.stylex-DkHf0P9C.js","assets/SegmentedControlItem-BLuJOusN.js","assets/padding.stylex-B76907Zf.js","assets/VStack-CkVMcNiK.js","assets/mergeProps-ptS-gIMz.js","assets/StackItem-CQviqAfM.js","assets/useLayerDismissal-BAnTRYTt.js","assets/fieldParts-Cs6Amprh.js","assets/Icon-ZfFwTt8n.js","assets/devWarning-DxuplmRl.js","assets/Text-BsiAsowd.js","assets/sharedResizeObserver-4U9Xq5Oq.js","assets/preload-helper-DpV6A1kQ.js","assets/useMediaQuery-BCT0NUeZ.js","assets/focusOutline.stylex-BT0kfa4t.js","assets/IconButton-CG5klqF1.js","assets/useTooltip-rxACYEAC.js","assets/useDevWarning-Cna3kqg1.js","assets/Tooltip-CTEuMRLe.js","assets/createReactComponent-CZwsv6DD.js","assets/isRtlElement-BG33-k_H.js","assets/CodeBlock-Kjgv83A6.js","assets/useClipboard-B1amtN2V.js","assets/useScrollableArea-vxuztwym.js","assets/DateInput-BJt-UTCy.js","assets/focusReturn-CTppP2k0.js","assets/Card-Ghe4ozhC.js","assets/container.stylex-BmOi-8DQ.js","assets/ScrollableArea-C8AVuqnt.js","assets/BottomSheet-BQPskY35.js","assets/useScrollLock-Dyf6PHJt.js","assets/chainEventHandlers-C6ttXGfW.js","assets/SidePanel-OYp0bLNO.js","assets/CheckboxInput-C9kbVyhK.js","assets/IconAlertTriangle-BqAEqqdU.js","assets/arrive-DvbqpeRS.js","assets/IconShield-DDOh7Gr5.js","assets/shaped-data-0GUF7Al3.js","assets/host-patterns-C9RMP16Q.js","assets/trace-record-BjsBbPRl.js","assets/TraceOverview-DoQOfiAe.js","assets/labels-provider-BqgbdxdT.js","assets/index-C3mDKoGG.js","assets/browser-transport-DxpDmXGb.js","assets/Center-nHS1JSux.js","assets/IconSearch-BTx66a40.js","assets/schemas-BQ9Jydzb.js","assets/tool-schema-CgpwKFX7.js","assets/reader-paEmSrWc.js","assets/live-ingress-lDUGPwth.js","assets/trace-schema-9CdEyG6Q.js","assets/stub-DpBSP8Ld.js","assets/tree-BxX70aqA.js","assets/types-BoECJ8mE.js","assets/useContainerReveal-BFy8N_QU.js","assets/Dialog-BDUExlk_.js","assets/HoverCard-C6thuzrf.js","assets/IconEye-BB5aY-wQ.js","assets/turn-client-BZUECwPn.js","assets/encode-files-DZ4tVtEQ.js","assets/workspace-Bc---F49.js","assets/lent-keys-C32ems-I.js","assets/editors-BJX_S59A.js","assets/EmptyState-C8W4JKBZ.js","assets/PaneState-C8jetBGI.js","assets/PaneState-CnxaP3LD.css","assets/CollapsibleGroup-toq0Nedn.js","assets/useAdaptivePresentation-BY_zvjIp.js","assets/Section-DJ97F7QE.js","assets/ContextMenu-BreVLY9J.js","assets/index-Oo9otEIT.css","assets/trace-patterns-CS99kExN.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,l as n,n as r,u as i}from"./themeProps-3IqahpCr.js";import{h as a}from"./tokens.stylex-DkHf0P9C.js";import{t as o}from"./mergeProps-ptS-gIMz.js";import{E as s,T as c}from"./fieldParts-Cs6Amprh.js";import{t as l,x as u}from"./Icon-ZfFwTt8n.js";import{p as d,r as f}from"./IconButton-CG5klqF1.js";import{_ as p,c as m,d as h,f as g,l as _,m as v,p as y,t as b,u as x}from"./SidePanel-OYp0bLNO.js";import{t as S}from"./preload-helper-DpV6A1kQ.js";import{n as C,t as w}from"./labels-provider-BqgbdxdT.js";import{t as T}from"./createReactComponent-CZwsv6DD.js";import{a as E}from"./ScrollableArea-C8AVuqnt.js";var D=T(`outline`,`check`,`Check`,[[`path`,{d:`M5 12l5 5l10 -10`,key:`svg-0`}]]),O=T(`outline`,`copy`,`Copy`,[[`path`,{d:`M7 9.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667l0 -8.666`,key:`svg-0`}],[`path`,{d:`M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1`,key:`svg-1`}]]),k=e(i(),1),A=t(),j=(0,k.lazy)(()=>S(()=>import(`./TraceInspector-B8NufbVX.js`).then(e=>({default:e.TraceGuardrailsBody})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74]))),M=(0,k.lazy)(()=>S(()=>import(`./TraceInspector-B8NufbVX.js`).then(e=>({default:e.TraceFeedBody})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74]))),N=(0,k.createContext)(`replace`);function P({value:e,children:t}){return(0,A.jsx)(N,{value:e,children:t})}function F({id:e,header:t,traces:n}){return(0,A.jsx)(m,{id:e,header:t,children:e=>(0,A.jsx)(k.Suspense,{fallback:null,children:(0,A.jsx)(M,{traces:n,isWide:e})})})}function I(e,t,n){let r=C(),i=(0,k.useId)(),[a,o]=(0,k.useState)(!1),s=(0,k.use)(N),c={name:r(`@theorem.panel.trace.name`),show:r(`@theorem.panel.trace.show`),hide:r(`@theorem.panel.trace.hide`),resize:r(`@theorem.panel.trace.resize`)};if(e.observability?.record!==!0)return{toggle:null,view:null,labels:c,offered:!1};let u=n??a,d=n===void 0?(0,A.jsx)(h,{labels:c,icon:(0,A.jsx)(l,{icon:E}),panelId:i,open:u,onToggle:()=>o(e=>!e)}):null;return{toggle:d,view:u?L(s===`panel`,i,t,d):null,labels:c,offered:!0}}function L(e,t,n,r){return e?(0,A.jsx)(R,{id:t,traces:n}):(0,A.jsx)(F,{id:t,header:r?(0,A.jsx)(x,{floating:!0,children:r}):void 0,traces:n})}function R({id:e,traces:t}){let{ref:n,width:r}=v();return(0,A.jsx)(`div`,{id:e,ref:n,style:{height:`100%`},children:(0,A.jsx)(k.Suspense,{fallback:null,children:(0,A.jsx)(M,{traces:t,isWide:g(r)})})})}function z({inspector:e,children:t}){let n=(0,k.useRef)(null),r=y(n,!1),i=(0,k.useRef)(void 0),a=(0,k.useCallback)(e=>{n.current=e;let t=i.current;typeof t==`function`?t(e):t!=null&&(t.current=e)},[]);if(!(0,k.isValidElement)(t))return(0,A.jsx)(b,{view:e.view,children:t});i.current=t.props.ref;let o=e.view!=null;return(0,k.cloneElement)(t,{ref:a,end:(0,A.jsx)(_,{labels:e.labels,resizable:r.resizable,open:o,children:e.view})})}function B({inspector:e,children:t}){return(0,k.use)(N)===`panel`&&e.offered?(0,A.jsx)(z,{inspector:e,children:t}):(0,A.jsx)(b,{view:e.view,children:t})}function V({records:e,head:t}){return(0,A.jsx)(w,{children:(0,A.jsx)(k.Suspense,{fallback:null,children:(0,A.jsx)(j,{records:e,head:t})})})}var H={info:`info`,warning:`warning`,error:`error`,success:`success`},U={info:`accent`,warning:`warning`,error:`error`,success:`success`},W={root:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kMv6JI:`xjb2p0i`,$$css:!0},rootElevatedCard:{kaIpWk:`x1vf2byn`,$$css:!0},header:{k1xSpc:`x78zum5`,kGNEyG:`x1cy8zhl`,kwnvtZ:`x1a02dak`,k1C7PZ:`xak3so`,khm7nJ:`x4olc9o`,k8WAf4:`x8o8v82`,kg3NbH:`x1pzlopt`,$$css:!0},headerCardStandalone:{kaIpWk:`x1vf2byn`,$$css:!0},headerCardWithContent:{krdFHd:`xwxb7qi`,kfmiAY:`x13nour3`,kVL7Gh:`xbiv7yw`,kT0f0o:`x16uus16`,$$css:!0},headerCentered:{kGNEyG:`x6s0dn4`,$$css:!0},endArea:{k1xSpc:`x78zum5`,kGNEyG:`x6s0dn4`,kwnvtZ:`x1a02dak`,kjj79g:`x13a6bvl`,kOIVth:`x1txdalj`,kmuXW:`x2lah0s`,ks0D6T:`x193iq5w`,keTefX:`xvc5jky`,kqGvvJ:`x81ka23`,$$css:!0},chevron:{k1ekBW:`x11xpdln`,kIyJzY:`xuedmi6 x12w9bfk`,kAMwcw:`xlr8y92`,$$css:!0},chevronExpanded:{k3aq6I:`x19jd1h0`,$$css:!0}},G={info:{kWkggS:`xgcxg3y`,$$css:!0},warning:{kWkggS:`x24i8r5`,$$css:!0},error:{kWkggS:`x1pritpl`,$$css:!0},success:{kWkggS:`xu13z74`,$$css:!0}};function K(e){return Object.prototype.hasOwnProperty.call(G,e)}var ee={none:{kGVxlE:`x1gnnqk1`,$$css:!0},low:{kGVxlE:`x1i5ehqx`,$$css:!0},med:{kGVxlE:`x14hfi27`,$$css:!0},high:{kGVxlE:`x1kcpxr7`,$$css:!0}};function q({status:e,title:t,description:i,icon:m,isDismissable:h=!1,onDismiss:g,dismissLabel:_,endContent:v,container:y=`card`,elevation:b=`none`,collapsible:x=!0,children:S,xstyle:C,className:w,style:T,ref:E,onFocusCapture:D,onPointerDownCapture:O,...j}){let M=u(),[N,P]=(0,k.useState)(!1),F=typeof x==`object`&&x?x:{},{isEnabled:I,isOpen:L,toggle:R}=p({isCollapsible:x!==!1&&{...F,defaultIsOpen:F.defaultIsOpen??!1}}),z=(0,k.useRef)(null),B=(0,k.useId)(),V=H[e],q=U[e],J=c(S),Y=M(`@astryx.banner.dismiss`),te=_??Y,ne=_??(typeof t==`string`?M(`@astryx.banner.dismissTitled`,{dismiss:Y,title:t}):Y);if(N)return null;let X=(e,t)=>{e instanceof HTMLElement&&e!==document.body&&!t.contains(e)&&(z.current=e)},re=e=>{X(e.relatedTarget,e.currentTarget)},ie=e=>{X(document.activeElement,e.currentTarget)},ae=()=>{let e=z.current;P(!0),g?.(),e?.isConnected&&e.focus()},Z=I&&J,oe=c(v)||h||Z,se=c(v)||h,ce=!c(i)&&se,Q=J&&(!I||L),$=y===`card`;return(0,A.jsxs)(`div`,{ref:E,onFocusCapture:s(D,re),onPointerDownCapture:s(O,ie),...o(r(`banner-frame`,{container:y,elevation:b}),n(W.root,ee[b],$&&b!==`none`&&W.rootElevatedCard,C),w,T),...j,children:[(0,A.jsxs)(`div`,{...o(r(`banner`,{container:y,status:e}),n(W.header,ce&&W.headerCentered,K(e)&&G[e],$&&(Q?W.headerCardWithContent:W.headerCardStandalone))),children:[(0,A.jsx)(`div`,{...c(m)?o(r(`banner-icon`,{status:e}),{className:`x78zum5 x6s0dn4 x2lah0s`}):{className:`x78zum5 x6s0dn4 x2lah0s`},"aria-hidden":`true`,children:c(m)?m:V==null?null:(0,A.jsx)(l,{icon:V,size:`md`,color:q,...r(`banner-icon`,{status:e})})}),(0,A.jsxs)(`div`,{...{0:{className:`x78zum5 xdt5ytf xxhr3t x98rzlu xeuugli`},1:{className:`x78zum5 xdt5ytf xxhr3t x98rzlu xeuugli xgualba`}}[!!c(v)|0],children:[(0,A.jsx)(`div`,{className:`x1ghz6dp xjb2p0i xcr08ib x2mo6ok x1kq96og x1tgivj0 xj0a0fe`,children:t}),c(i)&&(0,A.jsx)(`div`,{...o(r(`banner-description`),{className:`x1ghz6dp xjb2p0i x141an7d x1sodnla x1ltkj2j xv1l7n4 xj0a0fe`}),children:i})]}),oe&&(0,A.jsxs)(`div`,{...n(W.endArea,d.inset(a[`--spacing-2`])),children:[v,Z&&(0,A.jsx)(f,{variant:`ghost`,size:`sm`,label:M(L?`@astryx.banner.collapse`:`@astryx.banner.expand`),tooltip:M(L?`@astryx.banner.collapse`:`@astryx.banner.expand`),icon:(0,A.jsx)(l,{icon:`chevronDown`,size:`sm`,color:`inherit`,xstyle:[W.chevron,L&&W.chevronExpanded]}),onClick:R,"aria-expanded":L,"aria-controls":Q?B:void 0,isIconOnly:!0}),h&&(0,A.jsx)(f,{variant:`ghost`,size:`sm`,label:ne,tooltip:te,icon:(0,A.jsx)(l,{icon:`close`,size:`sm`,color:`inherit`}),onClick:ae,isIconOnly:!0})]})]}),Q&&(0,A.jsx)(`div`,{id:Z?B:void 0,...o(r(`banner-content`,{container:y,status:e}),{0:{className:`x1de1mus x8o8v82 x1pzlopt xgbv0en xw8tdv1 x92x3c3 x1t7ytsu x18b5jzi x1q0q8m5 x1j92z86 x1gejf6u xw8gpjh`},1:{className:`x1de1mus x8o8v82 x1pzlopt xgbv0en xw8tdv1 x92x3c3 x1t7ytsu x18b5jzi x1q0q8m5 x1j92z86 x1gejf6u xw8gpjh x1k5g1gk x1eprgri`}}[!!$|0]),children:S})]})}q.displayName=`Banner`;export{I as a,B as i,V as n,O as o,P as r,D as s,q as t};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BottomSheet-BQPskY35.js","assets/rolldown-runtime-hePW80VL.js","assets/themeProps-3IqahpCr.js","assets/tokens.stylex-DkHf0P9C.js","assets/padding.stylex-B76907Zf.js","assets/mergeProps-ptS-gIMz.js","assets/useLayerDismissal-BAnTRYTt.js","assets/focusReturn-CTppP2k0.js","assets/focusOutline.stylex-BT0kfa4t.js","assets/useMediaQuery-BCT0NUeZ.js","assets/useDevWarning-Cna3kqg1.js","assets/devWarning-DxuplmRl.js","assets/useScrollableArea-vxuztwym.js","assets/sharedResizeObserver-4U9Xq5Oq.js","assets/useScrollLock-Dyf6PHJt.js","assets/container.stylex-BmOi-8DQ.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,l as n,n as r,u as i}from"./themeProps-3IqahpCr.js";import{h as a}from"./tokens.stylex-DkHf0P9C.js";import{o,r as s,s as c}from"./SegmentedControlItem-BLuJOusN.js";import{y as l}from"./padding.stylex-B76907Zf.js";import{t as u}from"./mergeProps-ptS-gIMz.js";import{c as d,o as f,r as p,s as m}from"./useLayerDismissal-BAnTRYTt.js";import{C as h,E as g,c as _,i as v,l as y,n as b,o as x,r as S,s as C,t as w}from"./fieldParts-Cs6Amprh.js";import{b as T,n as E,t as D,x as ee}from"./Icon-ZfFwTt8n.js";import"./devWarning-DxuplmRl.js";import{i as te,r as ne}from"./focusOutline.stylex-BT0kfa4t.js";import{c as re,d as ie,h as ae,i as oe,l as se,m as ce,n as le}from"./IconButton-CG5klqF1.js";import{_ as O,v as ue,y as k}from"./SidePanel-OYp0bLNO.js";import{i as de,n as fe,t as pe}from"./useTooltip-rxACYEAC.js";import{r as me}from"./Text-BsiAsowd.js";import{t as A}from"./preload-helper-DpV6A1kQ.js";import{l as he,o as j,r as ge,u as _e}from"./CheckboxInput-C9kbVyhK.js";import{i as ve,n as ye,o as be,r as xe}from"./useAdaptivePresentation-BY_zvjIp.js";import{t as M}from"./Section-DJ97F7QE.js";var N=t(),P={base:{k1xSpc:`x3nfvp2`,kGNEyG:`x6s0dn4`,kjj79g:`xl56j7k`,kOIVth:`xzye2dw`,kZKoxP:`x1grt7ep`,k8WAf4:`xt970qd`,kg3NbH:`xf314gf`,kaIpWk:`xjspbzw`,kMv6JI:`xjb2p0i`,kGuDYH:`x141an7d`,kLWn49:`x1ltkj2j`,k63SB2:`x1e4wzip`,khDVqt:`xuxw1ft`,ks0D6T:`x193iq5w`,k7Eaqz:`xeuugli`,$$css:!0}},Se={neutral:{kWkggS:`x17x4s8c`,kMwMTN:`x1tgivj0`,$$css:!0},info:{kWkggS:`x1ewilqj`,kMwMTN:`x17wrial`,$$css:!0},success:{kWkggS:`xdsz4j9`,kMwMTN:`xri61p4`,$$css:!0},warning:{kWkggS:`x1q8g9m5`,kMwMTN:`xrebv38`,$$css:!0},error:{kWkggS:`x1pjz0fi`,kMwMTN:`x1m024r3`,$$css:!0},blue:{kWkggS:`x1o0wnni`,kMwMTN:`x1vvqiwl`,$$css:!0},cyan:{kWkggS:`x1rgj867`,kMwMTN:`x1txnczv`,$$css:!0},green:{kWkggS:`x1sqjeoo`,kMwMTN:`xltfdvo`,$$css:!0},orange:{kWkggS:`x1e9xt6e`,kMwMTN:`xm47u9q`,$$css:!0},pink:{kWkggS:`xnpoty2`,kMwMTN:`xiuofww`,$$css:!0},purple:{kWkggS:`x16i6n6f`,kMwMTN:`x1m9wyeb`,$$css:!0},red:{kWkggS:`x1cibrc5`,kMwMTN:`x1joocv1`,$$css:!0},teal:{kWkggS:`x1jtji5o`,kMwMTN:`x9x0lbs`,$$css:!0},yellow:{kWkggS:`x1bo7t0x`,kMwMTN:`xdhq94a`,$$css:!0}};function Ce({variant:e=`neutral`,label:t,icon:i,xstyle:a,className:o,style:s,ref:c,...l}){let d=typeof t==`number`?String(t):typeof t==`string`&&t.length>0?t:void 0;return(0,N.jsxs)(`span`,{ref:c,...u(r(`badge`,{variant:e}),n(P.base,Se[e],a),o,s),title:d,...l,children:[i,(0,N.jsx)(`span`,{className:`xb3r6kr xlyipyv xeuugli`,children:t})]})}Ce.displayName=`Badge`;var F=e(i(),1);function we(){let[e,t]=(0,F.useState)(!1);d();let n=(0,F.useCallback)(()=>{t(m()===`pointer`)},[]),r=(0,F.useCallback)(()=>{t(!1)},[]);return{isFocusRingSuppressed:e,onFocusReturnTargetFocus:(0,F.useCallback)(()=>{m()===`keyboard`&&t(!1)},[]),prepareFocusReturn:n,resetFocusReturn:r}}var Te={wrapper:{k8WAf4:`xu0wf1k`,kg3NbH:`x7a5moj`,$$css:!0},icon:{k1xSpc:`x78zum5`,kGNEyG:`x6s0dn4`,kmuXW:`x2lah0s`,$$css:!0}};function Ee({ref:e,label:t,clearLabel:r,placeholder:i,value:a,onValueChange:o,onKeyDown:s,onFocus:c,onBlur:l,onContainerKeyDown:f,xstyle:p,className:h,style:g,..._}){let[v,y]=(0,F.useState)(!1);d();let x=(0,F.useCallback)(e=>{y(m()===`keyboard`),c?.(e)},[c]),S=(0,F.useCallback)(e=>{y(!1),l?.(e)},[l]),C=(0,F.useCallback)(t=>{o(``),!t||t.detail===0?typeof e==`object`&&e?.current&&e.current.focus():requestAnimationFrame(()=>{typeof e==`object`&&e?.current&&e.current.focus({preventScroll:!0})})},[o,e]);return(0,N.jsx)(`div`,{onKeyDown:f,...u(n(Te.wrapper,p),h,g),children:(0,N.jsxs)(`div`,{"data-keyboard-focus":v?`true`:void 0,...{0:{className:`x9f619 x78zum5 x6s0dn4 x1txdalj xh8yej3 x1vofgu7 xf314gf xh6dtrn xkdsq27 xuedmi6 x12w9bfk xlr8y92`},1:{className:`x9f619 x78zum5 x6s0dn4 x1txdalj xh8yej3 x1vofgu7 xf314gf xh6dtrn xkdsq27 xuedmi6 x12w9bfk xlr8y92 x1gnnqk1 x1btxeh5`}}[!!v|0],children:[(0,N.jsx)(D,{icon:`search`,size:`sm`,color:`secondary`,xstyle:Te.icon}),(0,N.jsx)(`input`,{ref:e,type:`text`,"aria-label":t,placeholder:i,value:a,onChange:e=>o(e.target.value),onKeyDown:s,onFocus:x,onBlur:S,className:`x1iyjqo2 xs83m0k xeuugli x1717udv x1ghz6dp xc342km xng3xce xjbqb8w x1tgivj0 x9ynric xcr08ib x1w61h2b x1kq96og x1a2a7pz xeyghm5`,..._}),a!==``&&(0,N.jsx)(b,{label:r,onClick:C})]})})}Ee.displayName=`PanelSearchInput`;function De(e){return typeof e==`string`||!(`type`in e)}function Oe(e){return typeof e==`object`&&`type`in e&&e.type===`divider`}function ke(e){return typeof e==`object`&&`type`in e&&e.type===`section`}function Ae(e){return typeof e==`string`?{value:e,label:e}:{...e,label:e.label??e.value}}function je(e){let t=[];for(let n of e)if(De(n))t.push(Ae(n));else if(ke(n))for(let e of n.options)t.push(Ae(e));return t}var Me=1;function Ne(e){let t=0,n=e;for(;n;)t+=n.offsetTop,n=n.offsetParent;return t}function Pe({isOpen:e,selectedItemIndex:t,listboxId:n,listboxRef:r,anchorRef:i}){let[a,o]=(0,F.useState)(0),[s,c]=(0,F.useState)(!1),l=(0,F.useCallback)((e,t)=>{o(e),c(t)},[]);return p(()=>{if(!e){l(0,!1);return}if(!r.current||!i.current){l(0,!0);return}let a=`${n}-item-${t>=0?t:0}`,o=document.getElementById(a);if(!o){l(0,!0);return}let s=r.current,c=i.current.getBoundingClientRect(),u=s.offsetHeight;if(u<=0){l(0,!0);return}let d=Ne(o)-Ne(s)-s.scrollTop+o.offsetHeight/2,f=c.top+c.height/2-d-Me,p=window.innerHeight,m=Math.max(0,p-u),h=Math.min(Math.max(f,0),m),g=Math.max(0,c.bottom-h);l(g,!0)},[e,t,n,r,i,l]),{offset:a,isPositioned:s}}function Fe({selectableItems:e,value:t,isDisabled:n=!1,isOpen:r,hasSearch:i=!1,onOpen:a,onClose:s,onSelect:c,onClear:l,onSearchSeed:u,listboxId:d}){let[f,p]=(0,F.useState)(-1),m=(0,F.useCallback)(e=>`${d}-item-${e}`,[d]),h=(0,F.useCallback)(()=>e.map((e,t)=>e.disabled?-1:t).filter(e=>e>=0),[e]),g=(0,F.useCallback)(()=>e.findIndex(e=>e.value===t),[e,t]),_=(0,F.useCallback)(()=>{p(-1),s()},[s]),v=(0,F.useCallback)(e=>{e.disabled||(c?.(e.value),_())},[c,_]),y=(0,F.useCallback)(()=>{if(!n){if(r)_();else if(a()!==!1&&!i){let e=g();p(e>=0?e:0)}}},[n,r,a,_,g,i]),b=o({isOpen:r,highlightedIndex:f,setHighlightedIndex:p,getOptionId:m}),x=(0,F.useCallback)((e,t)=>{e.disabled||b(t)},[b]);return{highlightedIndex:f,setHighlightedIndex:p,getItemId:m,onTriggerClick:y,onKeyDown:(0,F.useCallback)(o=>{if(n)return;let s=h();switch(o.key){case`ArrowDown`:if(o.preventDefault(),!r)a()!==!1&&p(0);else{let e=s.indexOf(f),t=Math.min(e+1,s.length-1);p(s[t]??f)}break;case`ArrowUp`:if(o.preventDefault(),!r)a()!==!1&&p(e.length-1);else{let e=s.indexOf(f),t=Math.max(e-1,0);p(s[t]??f)}break;case` `:if(i)break;case`Enter`:if(o.preventDefault(),r&&f>=0){let t=e[f];t&&!t.disabled&&v(t)}else if(!r&&a()!==!1&&!i){let e=g();p(e>=0?e:0)}break;case`Escape`:r&&(o.preventDefault(),_());break;case`Tab`:r&&_();break;case`Home`:o.preventDefault(),r&&s.length>0&&p(s[0]);break;case`End`:o.preventDefault(),r&&s.length>0&&p(s[s.length-1]);break;case`PageUp`:o.preventDefault(),r&&s.length>0&&p(s[0]);break;case`PageDown`:o.preventDefault(),r&&s.length>0&&p(s[s.length-1]);break;case`Delete`:case`Backspace`:!i&&!r&&l!=null&&t!=null&&(o.preventDefault(),l());break;default:i&&u&&o.key.length===1&&!o.ctrlKey&&!o.metaKey&&(r||a()!==!1)&&u(o.key)}},[n,r,a,_,e,f,v,g,h,i,l,u,t]),onItemSelect:v,onItemMouseEnter:x}}var Ie=l(`stacked`);Ie.displayName=`SelectorRowLayoutContext`;function Le(){return(0,F.use)(Ie)}var I={root:{k8WAf4:`xt970qd`,kg3NbH:`xnjsko4`,kaIpWk:`x2u8bby`,$$css:!0}};function Re({icon:e,label:t,description:n,layout:i,endContent:a,xstyle:o,className:s,style:c}){let l=Le();return(0,N.jsx)(j,{startContent:e?E(e,{size:`sm`,color:`secondary`}):void 0,label:t,description:n,layout:l===`inline`?`inline`:i,endContent:a,xstyle:[I.root,o],...u(r(`selector-option`),{className:s,style:c})})}Re.displayName=`SelectorOption`;var ze=(0,F.lazy)(async()=>A(()=>import(`./BottomSheet-BQPskY35.js`).then(e=>e.n).then(e=>({default:e.BottomSheet})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]))),Be={heading:{k1K539:`x1p37lm5`,kUOVxO:`xam6yil`,$$css:!0}};function Ve({isOpen:e,targetRef:t}){return(0,F.useEffect)(()=>{if(!e)return;let n=requestAnimationFrame(()=>{t.current?.focus({preventScroll:!0})});return()=>cancelAnimationFrame(n)},[e,t]),null}function He({children:e,finalFocusRef:t,initialFocusRef:n,isOpen:r,label:i,onOpenChange:a}){return(0,N.jsx)(F.Suspense,{fallback:null,children:(0,N.jsx)(ze,{isOpen:r,onOpenChange:a,finalFocusRef:t,label:i,height:`hug`,purpose:`info`,children:(0,N.jsx)(M,{paddingBlockStart:4,paddingBlockEnd:0,paddingInline:1,children:(0,N.jsxs)(`div`,{className:`xh8yej3`,children:[(0,N.jsx)(_e,{level:3,xstyle:Be.heading,children:i}),e,(0,N.jsx)(Ve,{isOpen:r,targetRef:n})]})})})})}He.displayName=`SelectorBottomSheet`;function Ue({presentation:e,onHide:t,onShow:n,popoverOptions:r,triggerRef:i}){let a=ye(e),o=(0,F.useRef)(a),[s,l]=(0,F.useState)(!1),u=(0,F.useRef)(!1),[d,f]=(0,F.useState)(!1),p=(0,F.useRef)(t),m=(0,F.useRef)(n),h=(0,F.useRef)(!1),{isFocusRingSuppressed:g,onFocusReturnTargetFocus:_,prepareFocusReturn:v,resetFocusReturn:y}=we();p.current=t,m.current=n;let b=(0,F.useCallback)(()=>{v(),p.current(),i.current?.focus()},[v,i]),x=(0,F.useCallback)(()=>{h.current=!0,y(),m.current()},[y]),S=c({...r,onHide:b,onShow:x}),{hide:C,show:w}=S,T=(0,F.useCallback)(()=>(o.current=a,a===`bottom-sheet`?(y(),m.current(),u.current=!0,f(!0),l(!0),!0):(f(!1),h.current=!1,w(),h.current)),[y,a,w]),E=(0,F.useCallback)(()=>{u.current?(v(),u.current=!1,l(!1),p.current()):C()},[C,v]),D=(0,F.useCallback)(e=>{_(),!u.current&&o.current===`bottom-sheet`&&f(!1)},[_]),ee=(0,F.useCallback)(e=>{e?T():E()},[E,T]),te=S.isOpen||s;return{activePresentation:te||d?o.current:a,hide:E,isOpen:te,isSheetOpen:s,isSheetPresented:d,isTriggerFocusRingSuppressed:g,onSheetOpenChange:ee,onTriggerFocus:D,popover:S,show:T}}var We={pointerRestoredFocus:{kVAM5u:`xvy26l8`,kGVxlE:`x1gnnqk1`,kMeerF:`x1k57tk5`,k3XXqK:`x1t137rt`,$$css:!0}},L={triggerContainer:{kVAEAm:`x1n2onr6`,k1xSpc:`x78zum5`,kGNEyG:`x6s0dn4`,kjj79g:`x1qughib`,kOIVth:`x1txdalj`,kzqmXN:`xh8yej3`,k8WAf4:`xce4md1`,kg3NbH:`xrrkdod`,kMv6JI:`x9ynric`,kGuDYH:`xcr08ib x1w61h2b`,kMwMTN:`x1tgivj0`,kkrTdU:`x1ypdohk x16khyan`,$$css:!0},triggerPlaceholder:{kMwMTN:`xv1l7n4`,$$css:!0},triggerInGroup:{kAzted:`x2lwn1j`,k8WAf4:`xt970qd`,kLWn49:`x8vohu`,$$css:!0},triggerIcon:{kmuXW:`x2lah0s`,$$css:!0},triggerIconRotation:{k1ekBW:`x11xpdln`,kIyJzY:`xuedmi6`,kAMwcw:`xlr8y92`,k3nNDw:`x1g0ag68`,$$css:!0},triggerIconOpen:{k3aq6I:`x19jd1h0`,$$css:!0},triggerGhost:{kzqmXN:`x14atkfc`,kMzoRj:`xc342km`,kLWn49:`x8vohu`,kWkggS:`xjbqb8w`,kGVxlE:`x1gnnqk1 x1s17dad x15ysqaf`,k63SB2:`x1e4wzip`,k1ekBW:`xrafxwg`,k3aq6I:`x3oybdh xk4oym4 x5lqen6 x3y5scg`,$$css:!0},triggerSecondary:{kzqmXN:`x14atkfc`,kMzoRj:`xc342km`,kLWn49:`x8vohu`,kWkggS:`x17x4s8c`,kGVxlE:`x1gnnqk1 x1s17dad x15ysqaf`,k63SB2:`x1e4wzip`,k1ekBW:`xrafxwg`,k3aq6I:`x3oybdh xk4oym4 x5lqen6 x3y5scg`,$$css:!0},triggerGhostDisabled:{kKwaWg:`x18o3ruo`,k3aq6I:`x1c071of x1pdlv7q x1ylxtyb`,$$css:!0},triggerReadOnly:{kkrTdU:`xt0e3qv`,$$css:!0},triggerGhostReadOnly:{kKwaWg:`x18o3ruo`,k3aq6I:`x1c071of x1pdlv7q x1ylxtyb`,$$css:!0},statusButton:{k1xSpc:`x78zum5`,kGNEyG:`x6s0dn4`,kjj79g:`xl56j7k`,kmVPX3:`x1717udv`,kogj98:`x1ghz6dp`,kMzoRj:`xc342km`,ksu8eU:`xng3xce`,kWkggS:`xjbqb8w`,kMwMTN:`x1heor9g`,kkrTdU:`x1ypdohk x16khyan`,kaIpWk:`xh6dtrn`,$$css:!0},searchRowInput:{kg3NbH:`x2hg6jq`,$$css:!0},popover:{k7Eaqz:`xrzjruh`,$$css:!0},divider:{kqGvvJ:`xsq74q5`,$$css:!0},item:{kB7OPa:`x9f619`,k1xSpc:`x78zum5`,kGNEyG:`x6s0dn4`,kjj79g:`x1qughib`,kOIVth:`x1txdalj`,kzqmXN:`xh8yej3`,kmVPX3:`xlsj2fj`,kaIpWk:`xh6dtrn`,kMv6JI:`x9ynric`,kGuDYH:`xcr08ib`,kMwMTN:`x1tgivj0`,kWkggS:`xjbqb8w`,kMzoRj:`xc342km`,ksu8eU:`xng3xce`,kkrTdU:`x1ypdohk x16khyan`,k9WMMc:`x1yc453h`,kI3sdo:`x1a2a7pz`,$$css:!0},itemHighlighted:{kWkggS:`x1lmrjuc`,$$css:!0},itemSelected:{k63SB2:`x1e4wzip`,$$css:!0},itemDisabled:{kSiTet:`xbyyjgo`,kkrTdU:`xt0e3qv`,$$css:!0}},Ge={sm:{kAzted:`x1gdqauq`,kLWn49:`x1j3cc6x`,k8WAf4:`x9ccq01`,$$css:!0},md:{kAzted:`x1uogy3y`,kLWn49:`xe5am2i`,k8WAf4:`xj646f7`,$$css:!0},lg:{kAzted:`x1xf4nls`,kLWn49:`xkwxim8`,k8WAf4:`xsmncjp`,$$css:!0}},Ke={sm:{k8WAf4:`xu0wf1k`,kg3NbH:`xf314gf`,$$css:!0},md:{k8WAf4:`x1vofgu7`,$$css:!0},lg:{$$css:!0}},qe={warning:`warning`,error:`error`,success:`success`},Je={warning:`warning`,error:`error`,success:`success`},Ye={warning:`@astryx.input.statusButton.warning`,error:`@astryx.input.statusButton.error`,success:`@astryx.input.statusButton.success`};function Xe({option:e}){return(0,N.jsx)(Re,{icon:e.icon,label:e.label??e.value,description:e.description})}function Ze(e,t){return!t||(e.label??e.value).toLowerCase().includes(t.toLowerCase())}function Qe(e,t){return t?e.filter(e=>Ze(e,t)):e}function $e(e){let t=ee(),i=oe(),{label:o,isLabelHidden:c=!1,description:l,isOptional:d=!1,isRequired:p=!1,isDisabled:m=!1,isReadOnly:b=!1,disabledMessage:ne,options:O,value:ue,onChange:k,changeAction:A,isLoading:j=!1,placeholder:_e,size:ye,variant:M=`input`,status:P,statusVariant:Se=`attached`,labelTooltip:Ce,startIcon:we,htmlName:Te,renderOption:Me,renderValue:Ne,indicatorPosition:Le=`end`,hasSearch:I=!1,searchPlaceholder:Re,emptyText:ze,emptySearchText:Be,placement:Ve,presentation:$e=`popover`,isDefaultOpen:R=!1,width:z,containerXstyle:et,containerClassName:tt,containerStyle:nt,controlXstyle:rt,controlClassName:it,controlStyle:at,ref:ot,onFocus:st,onKeyDown:ct,"aria-describedby":lt,hasClear:ut,id:dt,...ft}=e,{rest:pt,container:mt}=w(`Selector`,ft,{containerXstyle:et,containerClassName:tt,containerStyle:nt}),ht=y({isRequired:p,isOptional:d}),gt=_e??t(`@astryx.selector.placeholder`),_t=Re??t(`@astryx.selector.searchPlaceholder`),vt=ze??t(`@astryx.selector.empty`),yt=Be??t(`@astryx.selector.emptySearchResults`),bt=ut===!0,xt=ie(ye,`md`),B=M!==`input`&&Se===`attached`?`detached`:Se,V=b&&!m,St=ue===null?void 0:ue,Ct=(0,F.useId)(),wt=dt??Ct,H=(0,F.useId)(),Tt=(0,F.useRef)(null),Et=(0,F.useId)(),Dt=(0,F.useId)(),Ot=(0,F.useId)(),kt=(0,F.useId)(),At=(0,F.useId)(),jt=(0,F.useRef)(null),Mt=(0,F.useRef)(null),Nt=me(Mt,ot),Pt=(0,F.useRef)(null),U=se(),[W,Ft]=(0,F.useState)(``),It=(0,F.useRef)(``),Lt=W.length>0,[,Rt]=(0,F.useTransition)(),[zt,Bt]=(0,F.useOptimistic)(St),Vt=j||zt!==St,G=le(),K=m&&!!ne,Ht=pe({placement:`above`,focusTrigger:`always`,isEnabled:K}),Ut=pe({placement:`above`,isEnabled:B===`tooltip`&&!!P?.message}),{ariaLabelledBy:Wt,ariaDescribedBy:Gt}=h(Ot,[l?Et:null,!U&&B!==`tooltip`&&P?.message?Dt:null,B===`tooltip`&&P?.message?Ut.describedBy:null,K?Ht.describedBy:null,V?kt:null],U),q=(0,F.useMemo)(()=>je(O),[O]);(0,F.useEffect)(()=>{q.some(e=>e.action!=null)},[q]);let J=(0,F.useMemo)(()=>Qe(q,W),[q,W]),Kt=(0,F.useMemo)(()=>q.findIndex(e=>e.value===zt),[q,zt]),Y=(0,F.useMemo)(()=>Kt>=0?q[Kt]:void 0,[q,Kt]),X=(0,F.useRef)(null),qt=(0,F.useRef)(()=>{}),Z=Ue({presentation:$e,onHide:(0,F.useCallback)(()=>{Ft(``),It.current=``,qt.current(),G(``)},[G]),onShow:(0,F.useCallback)(()=>{I&&requestAnimationFrame(()=>{let e=Pt.current;e&&(e.focus(),e.setSelectionRange(e.value.length,e.value.length))})},[I]),triggerRef:Mt,popoverOptions:{hasLightDismiss:!0,hasCloseButton:!1,hasAutoFocus:!1,role:`none`,surfaceTarget:`selector-popup`}}),{popover:Jt}=Z,Yt=Z.hide,Xt=Z.isOpen,Zt=de(Jt.id,Jt.isOpen);(0,F.useEffect)(()=>{R&&!V&&Z.show()},[]),(0,F.useEffect)(()=>{V&&Xt&&Yt()},[V,Xt,Yt]);let Qt=(0,F.useCallback)(e=>{if(e.length===0||j){G(``);return}let n=Qe(q,e).length;n!==0&&G(t(`@astryx.selector.resultCount`,{count:n}))},[G,j,q,t]),$t=(0,F.useCallback)(e=>{Ft(e),It.current=e,Qt(e)},[Qt]),en=Z.isOpen&&!j&&J.length===0;s(Tt,en,W);let tn=Ve==null&&!I,{offset:nn,isPositioned:rn}=Pe({isOpen:Jt.isOpen&&tn,selectedItemIndex:Kt,listboxId:H,listboxRef:X,anchorRef:jt}),an=tn?nn:0,on=!tn||rn,sn=Ve??`below`,cn=an>0?{marginBlockStart:`-${an}px`}:void 0,ln=(0,F.useCallback)(()=>{qt.current(),k?.(null),A&&Rt(async()=>{Bt(void 0),await A(null)})},[k,A,Rt,Bt]),un=(0,F.useCallback)(e=>{let t=It.current+e;It.current=t,Ft(t),Qt(t)},[Qt]),dn=(0,F.useCallback)(e=>{k?.(e),A&&Rt(async()=>{Bt(e),await A(e)})},[k,A,Rt,Bt]),{highlightedIndex:Q,setHighlightedIndex:fn,getItemId:$,onTriggerClick:pn,onKeyDown:mn,onItemSelect:hn,onItemMouseEnter:gn}=Fe({selectableItems:J,value:zt,isDisabled:m||V,isOpen:Z.isOpen,hasSearch:I,onOpen:(0,F.useCallback)(()=>Z.show(),[Z]),onClose:Z.hide,onSelect:dn,onClear:bt?ln:void 0,onSearchSeed:un,listboxId:H}),_n=ve({getItemLabels:()=>q.map(e=>e.label??e.value),isDisabled:e=>q[e]?.disabled===!0,getCurrentIndex:()=>Z.isOpen?Q:Kt,onMatch:e=>{let t=q[e];Z.isOpen?fn(e):t.value!==zt&&(dn(t.value),G(t.label??t.value))}});qt.current=_n.reset;let vn=(0,F.useCallback)(e=>{let t=/-item-(\d+)$/.exec(e.id);return t==null?-1:Number(t[1])},[]),yn=xe(X,J.length,Z.isOpen),bn=be({menuRef:X,itemSelector:`[role="option"]:not([aria-disabled="true"])`,onHighlight:e=>{if(e==null){fn(-1);return}let t=vn(e),n=J[t];n!=null&&gn(n,t)},onActivate:e=>{let t=J[vn(e)];t!=null&&hn(t)},onDismiss:Z.hide}),xn=(0,F.useCallback)(e=>{m||V||(!I&&_n.onKeyDown(e)?e.preventDefault():mn(e))},[m,V,I,_n,mn]),Sn=(0,F.useCallback)(e=>{e.stopPropagation(),ln(),e.detail===0&&Mt.current?.focus()},[ln]),Cn=(0,F.useCallback)(()=>I?(0,N.jsx)(Ee,{ref:Pt,id:At,label:t(`@astryx.selector.searchOptions`),clearLabel:t(`@astryx.textInput.clearLabel`,{label:t(`@astryx.selector.searchOptions`)}),...r(`selector-search`),xstyle:Z.activePresentation===`popover`&&M===`input`&&L.searchRowInput,role:`combobox`,"aria-expanded":Z.isOpen,"aria-controls":H,"aria-autocomplete":`list`,"aria-activedescendant":Z.isOpen&&Q>=0?$(Q):void 0,value:W,onValueChange:$t,onContainerKeyDown:e=>{e.target!==Pt.current&&e.key===`Tab`&&!e.shiftKey&&mn(e)},onKeyDown:e=>{f(e.nativeEvent)||(e.key===`ArrowDown`||e.key===`ArrowUp`||e.key===`PageUp`||e.key===`PageDown`||e.key===`Enter`||e.key===`Escape`||e.key===`Tab`&&(e.shiftKey||!Lt))&&mn(e)},placeholder:_t}):null,[I,At,H,W,Lt,_t,$t,mn,Z.isOpen,Z.activePresentation,Q,$,M,t]),wn=ge(`check`),Tn=(0,F.useCallback)((e,t)=>{let i=t===Q,a=e.value===St,o=(0,N.jsx)(`span`,{className:`x3nfvp2 x6s0dn4 xl56j7k x2lah0s xgomdpo xjl7jj`,children:(0,N.jsx)(wn,{state:a?`checked`:`unchecked`,size:`sm`,isDisabled:e.disabled??!1,...r(`selector-check`)})}),s=(0,N.jsx)(`span`,{className:`x78zum5 x6s0dn4 x1txdalj x98rzlu xeuugli`,children:Me?Me(e):(0,N.jsx)(Xe,{option:e})}),c=Le===`start`?(0,N.jsxs)(N.Fragment,{children:[o,s]}):(0,N.jsxs)(N.Fragment,{children:[s,o]});return(0,N.jsx)(`div`,{id:$(t),role:`option`,"aria-selected":a,"aria-disabled":e.disabled,onClick:()=>hn(e),onMouseEnter:()=>gn(e,t),...u(r(`selector-option-row`,{size:xt,selected:a?`selected`:null,disabled:e.disabled?`disabled`:null}),n(L.item,Ke[xt],i&&L.itemHighlighted,a&&L.itemSelected,e.disabled&&L.itemDisabled)),children:c},e.value)},[Me,Le,Q,xt,St,$,hn,gn,wn]),En=(0,F.useCallback)(()=>{let e=I&&!!W;if(J.length===0&&!j)return[(0,N.jsx)(`div`,{ref:Tt,role:`presentation`,...u(r(`selector-empty-state`),{className:`x1b2ylru x2b8uid xv1l7n4 x9ynric xcr08ib`}),children:e?yt:vt},`empty`)];let t=0,n=[];for(let i=0;i<O.length;i++){let a=O[i];if(Oe(a)){if(e)continue;n.push((0,N.jsx)(he,{"aria-hidden":`true`,xstyle:L.divider},`divider-${i}`))}else if(ke(a)){let o=[];for(let n of a.options){let r=Ae(n);(!e||Ze(r,W))&&(o.push(Tn(r,t)),t++)}if(o.length===0)continue;n.push((0,N.jsxs)(`div`,{role:`group`,"aria-label":a.title,children:[a.title&&(0,N.jsx)(`div`,{"aria-hidden":`true`,...u(r(`selector-section-heading`),{className:`xu0wf1k xf314gf x9ynric x141an7d x1ltkj2j xv1l7n4 x87ps6o`}),children:a.title}),o]},`section-${i}`))}else if(De(a)){let r=Ae(a);if(e&&!Ze(r,W))continue;n.push(Tn(r,t)),t++}}return n},[O,Tn,I,W,J,j,vt,yt]),Dn=P!=null&&B!==`detached`,On=P!=null&&B===`tooltip`&&!!P.message,kn=Y&&Ne?(0,N.jsx)(Ie,{value:U?`inline`:`stacked`,children:(0,N.jsx)(`span`,{...{0:{className:`x1iyjqo2 xeuugli xb3r6kr x1yc453h`},1:{className:`x1iyjqo2 xeuugli xb3r6kr x1yc453h xmz0i5r`}}[!!U|0],children:Ne(Y)})}):(0,N.jsxs)(N.Fragment,{children:[!we&&Y?.icon!=null&&E(Y.icon,{size:`sm`,color:`secondary`}),(0,N.jsx)(`span`,{className:`x1iyjqo2 xeuugli xb3r6kr xlyipyv xuxw1ft x1yc453h`,children:Y?.label??gt})]}),An=I?(0,N.jsxs)(`div`,{children:[Cn(),(0,N.jsx)(he,{}),(0,N.jsx)(`div`,{ref:X,id:H,role:`listbox`,"aria-labelledby":wt,...bn.menuProps,...{0:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr x1ey1afo x1j4r261`},2:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr x1ey1afo xge0x1e xish69e`},1:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr x1ey1afo x1j4r261 x2hg6jq`},3:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr x1ey1afo xge0x1e xish69e x2hg6jq`}}[!!yn<<1|(Z.activePresentation===`popover`&&M===`input`)],children:En()})]}):(0,N.jsx)(`div`,{ref:X,id:H,role:`listbox`,...bn.menuProps,"aria-label":Z.activePresentation===`bottom-sheet`?o:void 0,"aria-labelledby":Z.activePresentation===`bottom-sheet`?void 0:wt,"aria-activedescendant":Z.isOpen&&Q>=0?$(Q):void 0,tabIndex:Z.activePresentation===`bottom-sheet`?0:void 0,onKeyDown:Z.activePresentation===`bottom-sheet`?xn:void 0,...{0:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr x1ey1afo x1j4r261`},4:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr x1ey1afo xge0x1e xish69e`},2:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr x1ey1afo x1j4r261 x2hg6jq`},6:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr x1ey1afo xge0x1e xish69e x2hg6jq`},1:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1j4r261 xg01cxk xq2gx43`},5:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj xge0x1e xish69e xg01cxk xq2gx43`},3:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1j4r261 x2hg6jq xg01cxk xq2gx43`},7:{className:`x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k xge0x1e xish69e x2hg6jq xg01cxk xq2gx43`}}[!!yn<<2|(Z.activePresentation===`popover`&&M===`input`)<<1|!(Z.activePresentation!==`popover`||on)],children:En()}),jn=null;Z.activePresentation===`bottom-sheet`?(!V||Z.isSheetPresented)&&(jn=(0,N.jsx)(He,{isOpen:Z.isSheetOpen,onOpenChange:Z.onSheetOpenChange,finalFocusRef:Mt,initialFocusRef:I?Pt:X,label:o,children:An})):V||(jn=Jt.render(An,{placement:sn,alignment:`start`,offset:tn?void 0:a[`--spacing-1`],xstyle:[L.popover,fe[sn]],style:cn}));let Mn={...pt,id:wt,"aria-describedby":[lt,Gt].filter(Boolean).join(` `)||void 0,"aria-labelledby":Wt,"aria-required":ht?`true`:void 0,"aria-invalid":P?.type===`error`?`true`:void 0,"aria-busy":Vt||void 0,onKeyDown:g(xn,ct),onFocus:e=>{st?.(e),Z.onTriggerFocus(e)},tabIndex:m&&!K?-1:0,...{0:{className:`x78zum5 x6s0dn4 x1qughib x1txdalj x1iyjqo2 xs83m0k x1r8uery xeuugli x1717udv x1ghz6dp xc342km xng3xce xjbqb8w xjb2p0i x1qlqyl8 x15bjb6t x1heor9g x1ypdohk x16khyan x1a2a7pz`},2:{className:`x78zum5 x6s0dn4 x1qughib x1txdalj x1iyjqo2 xs83m0k x1r8uery xeuugli x1717udv x1ghz6dp xc342km xng3xce xjbqb8w xjb2p0i x1qlqyl8 x15bjb6t x1heor9g x1a2a7pz xt0e3qv`},1:{className:`x78zum5 x6s0dn4 x1qughib x1txdalj x1iyjqo2 xs83m0k x1r8uery xeuugli x1717udv x1ghz6dp xc342km xng3xce xjbqb8w xjb2p0i x1qlqyl8 x15bjb6t x1heor9g x1ypdohk x16khyan x1a2a7pz xkh2ocl`},3:{className:`x78zum5 x6s0dn4 x1qughib x1txdalj x1iyjqo2 xs83m0k x1r8uery xeuugli x1717udv x1ghz6dp xc342km xng3xce xjbqb8w xjb2p0i x1qlqyl8 x15bjb6t x1heor9g x1a2a7pz xt0e3qv xkh2ocl`}}[!!V<<1|!!U]},Nn=(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(`div`,{ref:e=>{jt.current=e,Jt.triggerRef(e),Ht.ref(e)},onClick:pn,...i,...u(r(`selector`,{variant:M,size:xt,status:P?.type??null,disabled:m?`disabled`:null,readonly:V?`readonly`:null}),n(C.base,L.triggerContainer,Ge[xt],M===`ghost`&&L.triggerGhost,M===`secondary`&&L.triggerSecondary,M!==`input`&&ae.backgroundImage,M!==`input`&&te.focusWithin,Z.isTriggerFocusRingSuppressed&&We.pointerRestoredFocus,m&&C.disabled,V&&L.triggerReadOnly,M!==`input`&&m&&L.triggerGhostDisabled,M!==`input`&&V&&L.triggerGhostReadOnly,!Y&&L.triggerPlaceholder,M===`input`&&P&&v[P.type],M===`input`&&P&&!m&&x[P.type],M!==`ghost`&&U&&re.inGroup,U&&L.triggerInGroup,rt),it,at),children:[we&&E(we,{size:`sm`,color:`secondary`}),U&&(0,N.jsx)(ce,{id:Ot,children:o}),V&&(0,N.jsx)(ce,{id:kt,children:t(`@astryx.input.readOnly`)}),(0,N.jsx)(`button`,{...Mn,ref:Nt,type:`button`,role:V||!I?`combobox`:void 0,"aria-haspopup":V?void 0:Z.activePresentation===`bottom-sheet`?`dialog`:`listbox`,"aria-expanded":!V&&Z.isOpen,"aria-controls":V?void 0:H,"aria-readonly":V||void 0,"aria-activedescendant":!V&&!I&&Z.isOpen&&Q>=0?$(Q):void 0,disabled:m&&!K,"aria-disabled":K?`true`:void 0,children:kn}),Te!=null&&(0,N.jsx)(`input`,{type:`hidden`,name:Te,value:ue??``,disabled:m}),Vt&&(0,N.jsx)(T,{size:`sm`}),bt&&ue!=null&&!m&&!V&&(0,N.jsx)(S,{...Zt,label:t(`@astryx.selector.clearLabel`,{label:o}),onClick:Sn}),Dn?On?(0,N.jsx)(`button`,{ref:Ut.ref,type:`button`,"aria-label":t(Ye[P.type]),"aria-describedby":Ut.describedBy,...Zt,onClick:e=>e.stopPropagation(),...n(te.focusVisible,L.statusButton),children:(0,N.jsx)(D,{icon:qe[P.type],size:`sm`,color:Je[P.type],xstyle:L.triggerIcon})}):(0,N.jsx)(D,{icon:qe[P.type],size:`sm`,color:Je[P.type],xstyle:L.triggerIcon}):V?null:(0,N.jsx)(D,{icon:`chevronDown`,size:`sm`,color:`secondary`,xstyle:[L.triggerIcon,L.triggerIconRotation,Z.isOpen&&L.triggerIconOpen],...r(`selector-indicator-icon`,{state:Z.isOpen?`expanded`:`collapsed`})})]}),jn,On&&Ut.renderTooltip(P?.message??``),K&&Ht.renderTooltip(ne)]});return U?Nn:(0,N.jsx)(_,{label:o,isLabelHidden:c,description:l,inputID:wt,descriptionID:l?Et:void 0,isOptional:d,isRequired:p,isDisabled:m,status:P?{type:P.type,message:P.message,messageID:P.message?Dt:void 0}:void 0,statusVariant:B,labelTooltip:Ce,width:z,...mt,children:Nn})}$e.displayName=`Selector`;var R={root:{kzqmXN:`xh8yej3`,$$css:!0},trigger:{kB7OPa:`x9f619`,k1xSpc:`x78zum5`,kGNEyG:`x6s0dn4`,kjj79g:`x1qughib`,kzqmXN:`xh8yej3`,kkrTdU:`x1ypdohk x16khyan`,kMv6JI:`x9ynric`,kGuDYH:`x18juvz8`,k63SB2:`x2mo6ok`,kMwMTN:`x1tgivj0`,k9WMMc:`x1yc453h`,k8WAf4:`xt970qd`,$$css:!0},triggerDisabled:{kkrTdU:`xt0e3qv`,kSiTet:`xbyyjgo`,$$css:!0},chevron:{k1xSpc:`x3nfvp2`,kGNEyG:`x6s0dn4`,kjj79g:`xl56j7k`,kmuXW:`x2lah0s`,kzqmXN:`xta46cu`,kZKoxP:`x1seg80s`,kGuDYH:`x18juvz8`,k1ekBW:`x11xpdln`,kIyJzY:`xuedmi6`,kAMwcw:`xlr8y92`,$$css:!0},chevronOpen:{k3aq6I:`x19jd1h0`,$$css:!0},chevronClosed:{k3aq6I:`x7p49u4`,$$css:!0},chevronStart:{k71WvV:`x1pezmd8`,$$css:!0},chevronStartOpen:{k3aq6I:`x1iffjtl x1nxqau`,$$css:!0},chevronStartClosed:{k3aq6I:`x7p49u4 xaafvuh`,$$css:!0},contentHidden:{k1xSpc:`x1s85apg`,$$css:!0},content:{kLKAdn:`xfsso4q`,kMv6JI:`x9ynric`,kGuDYH:`xjm74w1`,k63SB2:`xxovm9e`,kLWn49:`xw6l6zx`,kMwMTN:`x1tgivj0`,$$css:!0},divided:{kEafiO:`x11xkdxz x1g31smg`,kPef9Z:`x13fuv20`,kLZC3w:`x1pc3f07`,$$css:!0}},z={triggerCompact:{k8WAf4:`xu0wf1k`,$$css:!0},triggerBalanced:{k8WAf4:`xce4md1`,$$css:!0},triggerSpacious:{k8WAf4:`x8o8v82`,$$css:!0},contentCompact:{kGO01o:`xy143xn`,$$css:!0},contentBalanced:{kGO01o:`x1wesfrj`,$$css:!0},contentSpacious:{kGO01o:`xvmdzux`,$$css:!0}},et={compact:z.triggerCompact,balanced:z.triggerBalanced,spacious:z.triggerSpacious},tt={compact:z.contentCompact,balanced:z.contentBalanced,spacious:z.contentSpacious};function nt({trigger:e,children:t,defaultIsOpen:i,isOpen:a,isDisabled:o=!1,onOpenChange:s,chevronPosition:c,value:l,ref:d,xstyle:f,className:p,style:m,...h}){let g=oe(),{isOpen:_,toggle:v}=O({isCollapsible:a===void 0?{defaultIsOpen:i??!0,onOpenChange:s}:{isOpen:a,onOpenChange:s},value:l}),y=()=>{o||v()},b=(0,F.use)(k),x=b?.hasDividers??!1,S=b?.density??null,C=c??b?.chevronPosition??`end`,w=C===`start`,T=(0,F.useId)(),E=(0,N.jsx)(D,{icon:w?`chevronRight`:`chevronDown`,size:`sm`,color:`secondary`,xstyle:[R.chevron,w&&R.chevronStart,w?_?R.chevronStartOpen:R.chevronStartClosed:_?R.chevronOpen:R.chevronClosed]});return(0,N.jsxs)(`div`,{ref:d,...u(r(`collapsible`,{density:S??void 0,divided:x?`divided`:null}),n(R.root,x&&R.divided,f),p,m),...h,children:[(0,N.jsxs)(`button`,{type:`button`,onClick:y,"aria-disabled":o||void 0,"aria-expanded":_,"aria-controls":T,tabIndex:o?-1:void 0,...o?void 0:g,...u(r(`collapsible-trigger`,{density:S??void 0,chevronPosition:C,open:_?`open`:null,disabled:o?`disabled`:null}),ne.focusVisible(R.trigger,S!=null&&et[S],!o&&ae.pressedBackgroundColor,o&&R.triggerDisabled)),children:[w&&E,(0,N.jsx)(`span`,{className:`x1b2iylo xwgcxoh x1iyjqo2`,children:e}),!w&&E]}),(0,N.jsx)(`div`,{id:T,...u(r(`collapsible-content`,{density:S??void 0,open:_?`open`:null}),n(R.content,S!=null&&tt[S],!_&&R.contentHidden)),children:b==null?t:(0,N.jsx)(k,{value:null,children:t})})]})}nt.displayName=`Collapsible`;var rt={wrapper:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,$$css:!0}};function it(e){return e==null?[]:Array.isArray(e)?e:[e]}function at({type:e=`single`,defaultValue:t,value:i,onChange:a,hasDividers:o=!1,density:s,chevronPosition:c,children:l,ref:d,xstyle:f,className:p,style:m,...h}){let g=i!==void 0,[_,v]=(0,F.useState)(()=>it(t)),y=(0,F.useMemo)(()=>g?it(i):_,[i,_,g]),b=(0,F.useCallback)(e=>y.includes(e),[y]),x=(0,F.useCallback)(t=>{let n;n=e===`single`?y.includes(t)?[]:[t]:y.includes(t)?y.filter(e=>e!==t):[...y,t],g||v(n),a&&a(e===`single`?n[0]??``:n)},[e,y,g,a]),S=(0,F.useMemo)(()=>({isOpen:b,toggle:x}),[b,x]),C=s??(o?`balanced`:null),w=(0,F.useMemo)(()=>({hasDividers:o,density:C,chevronPosition:c??null}),[o,C,c]),T=o?(0,N.jsx)(`div`,{ref:d,...u(r(`collapsible-group`,{density:C??void 0}),n(rt.wrapper,f),p,m),...h,children:l}):l;return(0,N.jsx)(ue,{value:S,children:(0,N.jsx)(k,{value:w,children:T})})}at.displayName=`CollapsibleGroup`;export{Ue as a,je as c,ke as d,Ae as f,Ce as h,We as i,Oe as l,we as m,nt as n,He as o,Ee as p,$e as r,Re as s,at as t,De as u};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,u as n}from"./themeProps-3IqahpCr.js";import{t as r}from"./VStack-CkVMcNiK.js";import{b as i,t as a}from"./Icon-ZfFwTt8n.js";import{i as o,n as s}from"./labels-provider-BqgbdxdT.js";import{t as c}from"./IconAlertTriangle-BqAEqqdU.js";import{t as l}from"./EmptyState-C8W4JKBZ.js";var u=e(n(),1);function d(e){let[t,n]=(0,u.useState)(()=>Date.now());return(0,u.useEffect)(()=>{if(!e)return;n(Date.now());let t=globalThis.setInterval(()=>n(Date.now()),1e3);return()=>globalThis.clearInterval(t)},[e]),t}var f=t();function p({icon:e,title:t,description:n,actions:i,children:a}){return(0,f.jsxs)(r,{height:`100%`,vAlign:`center`,hAlign:`center`,gap:3,padding:4,children:[(0,f.jsx)(l,{icon:e,title:t,description:n,actions:i,isCompact:!0}),a]})}function m({label:e,since:t}){let n=s(),r=d(t!=null);return g()?(0,f.jsx)(p,{icon:(0,f.jsx)(i,{size:`lg`}),title:e,description:t==null?void 0:o(n,r-t)}):(0,f.jsx)(`div`,{"aria-busy":`true`,style:{height:`100%`}})}var h=300;function g(){let[e,t]=(0,u.useState)(!1);return(0,u.useEffect)(()=>{let e=globalThis.setTimeout(()=>t(!0),h);return()=>globalThis.clearTimeout(e)},[]),e}function _({title:e,description:t,actions:n,children:r}){return(0,f.jsx)(p,{icon:(0,f.jsx)(a,{icon:c,size:`lg`,color:`secondary`}),title:e,description:t,actions:n,children:r})}export{d as i,m as n,p as r,_ as t};