@helpai/elements 0.46.2 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/elements-web-component.esm.js +27 -27
- package/elements-web-component.esm.js.map +4 -4
- package/elements.cjs.js +27 -27
- package/elements.cjs.js.map +4 -4
- package/elements.esm.js +27 -27
- package/elements.esm.js.map +4 -4
- package/elements.js +27 -27
- package/elements.js.map +4 -4
- package/index.d.ts +1 -1
- package/index.mjs +794 -565
- package/package.json +1 -1
- package/style.css +1 -1
- package/web-component.mjs +794 -565
package/web-component.mjs
CHANGED
|
@@ -87,7 +87,6 @@ var STRINGS_EN = {
|
|
|
87
87
|
thinking: "Thinking\u2026",
|
|
88
88
|
thoughts: "Thoughts",
|
|
89
89
|
usedTool: "Used tool",
|
|
90
|
-
toolDetails: "Details",
|
|
91
90
|
toolResult: "Result",
|
|
92
91
|
sources: "Sources",
|
|
93
92
|
// ── Messenger modules ──────────────────────────────────────────
|
|
@@ -134,17 +133,32 @@ var STRINGS_EN = {
|
|
|
134
133
|
formChooseAtMost: "Choose at most {max}",
|
|
135
134
|
formOther: "Other",
|
|
136
135
|
formOtherPlaceholder: "Type your answer\u2026",
|
|
137
|
-
inputRequired: "
|
|
138
|
-
|
|
136
|
+
inputRequired: "User Input Required",
|
|
137
|
+
inputBadge: "User Input",
|
|
138
|
+
inputAnswered: "Answered",
|
|
139
|
+
inputSkipped: "Skipped",
|
|
140
|
+
inputQuestion: "Question",
|
|
141
|
+
inputResponse: "Response",
|
|
142
|
+
inputYourAnswer: "Your answer",
|
|
143
|
+
inputSubmit: "Submit answer",
|
|
144
|
+
inputSubmitHint: "Enter to submit \xB7 Shift+Enter for new line",
|
|
139
145
|
inputSkip: "Skip",
|
|
140
146
|
inputSubmitted: "Answer submitted",
|
|
147
|
+
respFreeText: "Free Text",
|
|
148
|
+
respSingleChoice: "Single Choice",
|
|
149
|
+
respMultiChoice: "Multiple Choice",
|
|
150
|
+
respConfirmation: "Confirmation",
|
|
141
151
|
approvalRequired: "Approval required",
|
|
142
152
|
approve: "Approve",
|
|
143
153
|
reject: "Reject",
|
|
144
154
|
approved: "Approved",
|
|
145
155
|
rejected: "Rejected",
|
|
146
156
|
approvalReason: "Add a reason (optional)",
|
|
147
|
-
stepNoLongerActive: "This request is no longer active."
|
|
157
|
+
stepNoLongerActive: "This request is no longer active.",
|
|
158
|
+
toolParameters: "Parameters",
|
|
159
|
+
statusCompleted: "Completed",
|
|
160
|
+
statusDenied: "Denied",
|
|
161
|
+
statusError: "Error"
|
|
148
162
|
};
|
|
149
163
|
var STRINGS_FR = {
|
|
150
164
|
attach: "Joindre des fichiers",
|
|
@@ -203,7 +217,6 @@ var STRINGS_FR = {
|
|
|
203
217
|
thinking: "R\xE9flexion\u2026",
|
|
204
218
|
thoughts: "R\xE9flexions",
|
|
205
219
|
usedTool: "Outil utilis\xE9",
|
|
206
|
-
toolDetails: "D\xE9tails",
|
|
207
220
|
toolResult: "R\xE9sultat",
|
|
208
221
|
sources: "Sources",
|
|
209
222
|
// ── Messenger modules ──────────────────────────────────────────
|
|
@@ -250,21 +263,167 @@ var STRINGS_FR = {
|
|
|
250
263
|
formChooseAtMost: "Choisissez au plus {max}",
|
|
251
264
|
formOther: "Autre",
|
|
252
265
|
formOtherPlaceholder: "Saisissez votre r\xE9ponse\u2026",
|
|
253
|
-
inputRequired: "
|
|
254
|
-
|
|
266
|
+
inputRequired: "Saisie requise",
|
|
267
|
+
inputBadge: "Saisie",
|
|
268
|
+
inputAnswered: "R\xE9pondu",
|
|
269
|
+
inputSkipped: "Ignor\xE9",
|
|
270
|
+
inputQuestion: "Question",
|
|
271
|
+
inputResponse: "R\xE9ponse",
|
|
272
|
+
inputYourAnswer: "Votre r\xE9ponse",
|
|
273
|
+
inputSubmit: "Envoyer la r\xE9ponse",
|
|
274
|
+
inputSubmitHint: "Entr\xE9e pour envoyer \xB7 Maj+Entr\xE9e pour un saut de ligne",
|
|
255
275
|
inputSkip: "Ignorer",
|
|
256
276
|
inputSubmitted: "R\xE9ponse envoy\xE9e",
|
|
277
|
+
respFreeText: "Texte libre",
|
|
278
|
+
respSingleChoice: "Choix unique",
|
|
279
|
+
respMultiChoice: "Choix multiple",
|
|
280
|
+
respConfirmation: "Confirmation",
|
|
257
281
|
approvalRequired: "Approbation requise",
|
|
258
282
|
approve: "Approuver",
|
|
259
283
|
reject: "Refuser",
|
|
260
284
|
approved: "Approuv\xE9",
|
|
261
285
|
rejected: "Refus\xE9",
|
|
262
286
|
approvalReason: "Ajouter une raison (facultatif)",
|
|
263
|
-
stepNoLongerActive: "Cette demande n'est plus active."
|
|
287
|
+
stepNoLongerActive: "Cette demande n'est plus active.",
|
|
288
|
+
toolParameters: "Param\xE8tres",
|
|
289
|
+
statusCompleted: "Termin\xE9",
|
|
290
|
+
statusDenied: "Refus\xE9",
|
|
291
|
+
statusError: "Erreur"
|
|
292
|
+
};
|
|
293
|
+
var STRINGS_AR = {
|
|
294
|
+
attach: "\u0625\u0631\u0641\u0627\u0642 \u0645\u0644\u0641\u0627\u062A",
|
|
295
|
+
attachmentMimeRejected: "\u0646\u0648\u0639 \u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645",
|
|
296
|
+
attachmentTooLarge: "\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641 \u0643\u0628\u064A\u0631 \u062C\u062F\u064B\u0627",
|
|
297
|
+
attachmentTooMany: "\u062A\u0645 \u0628\u0644\u0648\u063A \u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u0645\u0631\u0641\u0642\u0627\u062A",
|
|
298
|
+
conversationClosed: "\u062A\u0645 \u0625\u063A\u0644\u0627\u0642 \u0647\u0630\u0647 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
|
|
299
|
+
conversationLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629\u2026",
|
|
300
|
+
close: "\u0625\u063A\u0644\u0627\u0642",
|
|
301
|
+
collapse: "\u0637\u064A\u0651",
|
|
302
|
+
collapseSidebar: "\u0637\u064A\u0651 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
|
|
303
|
+
composerPlaceholder: "\u0627\u0643\u062A\u0628 \u0631\u0633\u0627\u0644\u0629\u2026",
|
|
304
|
+
dateLastWeek: "\u0622\u062E\u0631 \u0667 \u0623\u064A\u0627\u0645",
|
|
305
|
+
dateOlder: "\u0623\u0642\u062F\u0645",
|
|
306
|
+
dateToday: "\u0627\u0644\u064A\u0648\u0645",
|
|
307
|
+
dateYesterday: "\u0623\u0645\u0633",
|
|
308
|
+
dropZone: "\u0623\u0641\u0644\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0644\u0625\u0631\u0641\u0627\u0642\u0647\u0627",
|
|
309
|
+
errorGeneric: "\u062D\u062F\u062B \u062E\u0637\u0623 \u0645\u0627",
|
|
310
|
+
errorRateLimited: "\u0637\u0644\u0628\u0627\u062A \u0643\u062B\u064A\u0631\u0629 \u062C\u062F\u064B\u0627 \u2014 \u064A\u0631\u062C\u0649 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0628\u0639\u062F \u0644\u062D\u0638\u0629.",
|
|
311
|
+
errorRetry: "\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",
|
|
312
|
+
expand: "\u062A\u0648\u0633\u064A\u0639",
|
|
313
|
+
expandSidebar: "\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
|
|
314
|
+
exitFullscreen: "\u0625\u0646\u0647\u0627\u0621 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
|
|
315
|
+
fullscreen: "\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
|
|
316
|
+
history: "\u0627\u0644\u0633\u062C\u0644",
|
|
317
|
+
historyBack: "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
|
|
318
|
+
historyEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062D\u0627\u062F\u062B\u0627\u062A \u0633\u0627\u0628\u0642\u0629 \u0628\u0639\u062F",
|
|
319
|
+
historyContinue: "\u0645\u062A\u0627\u0628\u0639\u0629 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
|
|
320
|
+
historyLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0645\u062D\u0627\u062F\u062B\u0627\u062A\u0643\u2026",
|
|
321
|
+
historyTitle: "\u0633\u062C\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A",
|
|
322
|
+
language: "\u0627\u0644\u0644\u063A\u0629",
|
|
323
|
+
launcherOpen: "\u0641\u062A\u062D \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
|
|
324
|
+
launcherLabel: "\u062A\u062D\u062F\u062B \u0645\u0639\u0646\u0627",
|
|
325
|
+
micStart: "\u0628\u062F\u0621 \u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A",
|
|
326
|
+
micStop: "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A",
|
|
327
|
+
micUnsupported: "\u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u0645\u062A\u0635\u0641\u062D",
|
|
328
|
+
moreActions: "\u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629",
|
|
329
|
+
newConversation: "\u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
|
|
330
|
+
panelTitle: "\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
|
|
331
|
+
resizeHandle: "\u0627\u0633\u062D\u0628 \u0644\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u062D\u062C\u0645",
|
|
332
|
+
scrollToBottom: "\u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u062D\u062F\u062B",
|
|
333
|
+
send: "\u0625\u0631\u0633\u0627\u0644",
|
|
334
|
+
soundOff: "\u0643\u062A\u0645 \u0627\u0644\u0635\u0648\u062A",
|
|
335
|
+
soundOn: "\u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u0635\u0648\u062A",
|
|
336
|
+
startNewConversation: "\u0628\u062F\u0621 \u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
|
|
337
|
+
stop: "\u0625\u064A\u0642\u0627\u0641",
|
|
338
|
+
theme: "\u0627\u0644\u0645\u0638\u0647\u0631",
|
|
339
|
+
themeAuto: "\u062A\u0644\u0642\u0627\u0626\u064A",
|
|
340
|
+
themeDark: "\u062F\u0627\u0643\u0646",
|
|
341
|
+
themeLight: "\u0641\u0627\u062A\u062D",
|
|
342
|
+
textSize: "\u062D\u062C\u0645 \u0627\u0644\u0646\u0635",
|
|
343
|
+
textSizeSmall: "\u0635\u063A\u064A\u0631",
|
|
344
|
+
textSizeNormal: "\u0639\u0627\u062F\u064A",
|
|
345
|
+
textSizeLarge: "\u0643\u0628\u064A\u0631",
|
|
346
|
+
loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
|
|
347
|
+
thinking: "\u064A\u0641\u0643\u0631\u2026",
|
|
348
|
+
thoughts: "\u0627\u0644\u0623\u0641\u0643\u0627\u0631",
|
|
349
|
+
usedTool: "\u0623\u062F\u0627\u0629 \u0645\u064F\u0633\u062A\u062E\u062F\u064E\u0645\u0629",
|
|
350
|
+
toolResult: "\u0627\u0644\u0646\u062A\u064A\u062C\u0629",
|
|
351
|
+
sources: "\u0627\u0644\u0645\u0635\u0627\u062F\u0631",
|
|
352
|
+
// ── Messenger modules ──────────────────────────────────────────
|
|
353
|
+
tabHome: "\u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629",
|
|
354
|
+
tabConversations: "\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A",
|
|
355
|
+
tabHelp: "\u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
|
|
356
|
+
tabNews: "\u0627\u0644\u0623\u062E\u0628\u0627\u0631",
|
|
357
|
+
modulesEmpty: "\u0644\u0627 \u0634\u064A\u0621 \u0647\u0646\u0627 \u0628\u0639\u062F",
|
|
358
|
+
moduleBack: "\u0631\u062C\u0648\u0639",
|
|
359
|
+
contentLoading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
|
|
360
|
+
homeGreeting: "\u0643\u064A\u0641 \u064A\u0645\u0643\u0646\u0646\u0627 \u0645\u0633\u0627\u0639\u062F\u062A\u0643\u061F",
|
|
361
|
+
homeGreetingNamed: "\u0645\u0631\u062D\u0628\u064B\u0627 {name} \u{1F44B}",
|
|
362
|
+
homeGreetingLead: "\u0643\u064A\u0641 \u064A\u0645\u0643\u0646\u0646\u0627 \u0645\u0633\u0627\u0639\u062F\u062A\u0643\u061F",
|
|
363
|
+
homeSearchPlaceholder: "\u0627\u0628\u062D\u062B \u0639\u0646 \u0645\u0633\u0627\u0639\u062F\u0629",
|
|
364
|
+
homeContentTitle: "\u0645\u0642\u0627\u0644\u0627\u062A \u0634\u0627\u0626\u0639\u0629",
|
|
365
|
+
homeStatus: "\u0627\u0644\u062D\u0627\u0644\u0629",
|
|
366
|
+
helpTitle: "\u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
|
|
367
|
+
helpSearchPlaceholder: "\u0627\u0628\u062D\u062B \u0639\u0646 \u0645\u0633\u0627\u0639\u062F\u0629",
|
|
368
|
+
helpEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0642\u0627\u0644\u0627\u062A \u0645\u0633\u0627\u0639\u062F\u0629 \u0628\u0639\u062F",
|
|
369
|
+
helpLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629\u2026",
|
|
370
|
+
helpSearchEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C",
|
|
371
|
+
newsTitle: "\u0627\u0644\u0623\u062E\u0628\u0627\u0631",
|
|
372
|
+
newsEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0623\u062E\u0628\u0627\u0631 \u0628\u0639\u062F",
|
|
373
|
+
newsLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0623\u062E\u0628\u0627\u0631\u2026",
|
|
374
|
+
newsBack: "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0627\u0644\u0623\u062E\u0628\u0627\u0631",
|
|
375
|
+
newsPublishedAt: "\u0646\u064F\u0634\u0631 \u0641\u064A {date}",
|
|
376
|
+
// ── Forms + human-in-the-loop (forms / ask-input / approval) ────
|
|
377
|
+
formSubmit: "\u0625\u0631\u0633\u0627\u0644",
|
|
378
|
+
formSkip: "\u0644\u0627\u062D\u0642\u064B\u0627",
|
|
379
|
+
formSubmitted: "\u062A\u0645",
|
|
380
|
+
formSkipped: "\u0644\u0627\u062D\u0642\u064B\u0627",
|
|
381
|
+
formFillOut: "\u062A\u0639\u0628\u0626\u0629",
|
|
382
|
+
formRequired: "\u0647\u0630\u0627 \u0627\u0644\u062D\u0642\u0644 \u0645\u0637\u0644\u0648\u0628",
|
|
383
|
+
formInvalidEmail: "\u0623\u062F\u062E\u0644 \u0628\u0631\u064A\u062F\u064B\u0627 \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
|
|
384
|
+
formInvalidTel: "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0635\u062D\u064A\u062D\u064B\u0627",
|
|
385
|
+
formInvalidUrl: "\u0623\u062F\u062E\u0644 \u0631\u0627\u0628\u0637\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
|
|
386
|
+
formInvalidNumber: "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
|
|
387
|
+
formTooShort: "\u0642\u0635\u064A\u0631 \u062C\u062F\u064B\u0627 (\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649 {min} \u062D\u0631\u0641\u064B\u0627)",
|
|
388
|
+
formTooLong: "\u0637\u0648\u064A\u0644 \u062C\u062F\u064B\u0627 (\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 {max} \u062D\u0631\u0641\u064B\u0627)",
|
|
389
|
+
formNumberTooSmall: "\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0642\u0644 \u0639\u0646 {min}",
|
|
390
|
+
formNumberTooLarge: "\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0632\u064A\u062F \u0639\u0646 {max}",
|
|
391
|
+
formPatternMismatch: "\u064A\u0631\u062C\u0649 \u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0635\u064A\u063A\u0629 \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629",
|
|
392
|
+
formChooseAtLeast: "\u0627\u062E\u062A\u0631 {min} \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644",
|
|
393
|
+
formChooseAtMost: "\u0627\u062E\u062A\u0631 {max} \u0639\u0644\u0649 \u0627\u0644\u0623\u0643\u062B\u0631",
|
|
394
|
+
formOther: "\u0623\u062E\u0631\u0649",
|
|
395
|
+
formOtherPlaceholder: "\u0627\u0643\u062A\u0628 \u0625\u062C\u0627\u0628\u062A\u0643\u2026",
|
|
396
|
+
inputRequired: "\u0645\u0637\u0644\u0648\u0628 \u0625\u062F\u062E\u0627\u0644 \u0645\u0646 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
|
|
397
|
+
inputBadge: "\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
|
|
398
|
+
inputAnswered: "\u062A\u0645\u062A \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
399
|
+
inputSkipped: "\u062A\u0645 \u0627\u0644\u062A\u062E\u0637\u064A",
|
|
400
|
+
inputQuestion: "\u0627\u0644\u0633\u0624\u0627\u0644",
|
|
401
|
+
inputResponse: "\u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
402
|
+
inputYourAnswer: "\u0625\u062C\u0627\u0628\u062A\u0643",
|
|
403
|
+
inputSubmit: "\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
404
|
+
inputSubmitHint: "Enter \u0644\u0644\u0625\u0631\u0633\u0627\u0644 \xB7 Shift+Enter \u0644\u0633\u0637\u0631 \u062C\u062F\u064A\u062F",
|
|
405
|
+
inputSkip: "\u062A\u062E\u0637\u064D\u0651",
|
|
406
|
+
inputSubmitted: "\u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
407
|
+
respFreeText: "\u0646\u0635 \u062D\u0631",
|
|
408
|
+
respSingleChoice: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0648\u0627\u062D\u062F",
|
|
409
|
+
respMultiChoice: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0645\u062A\u0639\u062F\u062F",
|
|
410
|
+
respConfirmation: "\u062A\u0623\u0643\u064A\u062F",
|
|
411
|
+
approvalRequired: "\u0645\u0637\u0644\u0648\u0628 \u0645\u0648\u0627\u0641\u0642\u0629",
|
|
412
|
+
approve: "\u0645\u0648\u0627\u0641\u0642\u0629",
|
|
413
|
+
reject: "\u0631\u0641\u0636",
|
|
414
|
+
approved: "\u062A\u0645\u062A \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629",
|
|
415
|
+
rejected: "\u0645\u0631\u0641\u0648\u0636",
|
|
416
|
+
approvalReason: "\u0623\u0636\u0641 \u0633\u0628\u0628\u064B\u0627 (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
|
|
417
|
+
stepNoLongerActive: "\u0644\u0645 \u064A\u0639\u062F \u0647\u0630\u0627 \u0627\u0644\u0637\u0644\u0628 \u0646\u0634\u0637\u064B\u0627.",
|
|
418
|
+
toolParameters: "\u0627\u0644\u0645\u0639\u0637\u064A\u0627\u062A",
|
|
419
|
+
statusCompleted: "\u0645\u0643\u062A\u0645\u0644",
|
|
420
|
+
statusDenied: "\u0645\u0631\u0641\u0648\u0636",
|
|
421
|
+
statusError: "\u062E\u0637\u0623"
|
|
264
422
|
};
|
|
265
423
|
var BUILTIN_STRINGS = {
|
|
266
424
|
en: STRINGS_EN,
|
|
267
|
-
fr: STRINGS_FR
|
|
425
|
+
fr: STRINGS_FR,
|
|
426
|
+
ar: STRINGS_AR
|
|
268
427
|
};
|
|
269
428
|
function resolveStrings(locale, override) {
|
|
270
429
|
const tag = primaryTag(locale);
|
|
@@ -1238,7 +1397,7 @@ var tokens_default = ':host{--__P__-accent-user: __BRAND_ACCENT__;--__P__-accent
|
|
|
1238
1397
|
var reset_default = '*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border:0}button{font:inherit;color:inherit;background:none;cursor:pointer;-webkit-appearance:none;appearance:none;line-height:1}button:focus-visible,[tabindex]:focus-visible,textarea:focus-visible,input:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}textarea,input{font:inherit;color:inherit;background:none;border:0;outline:0;resize:none}a{color:var(--__P__-accent);text-decoration:underline;text-underline-offset:2px}img,svg{display:block;max-width:100%}ul,ol{list-style:none}.__P__-app{display:block;width:100%;height:100%;font-family:var(--__P__-font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11","ss01","ss03"}.__P__-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n';
|
|
1239
1398
|
|
|
1240
1399
|
// src/styles/panel.css
|
|
1241
|
-
var panel_default = '.__P__-anchor{color-scheme:var(--__P__-color-scheme, light);right:16px;bottom:16px}.__P__-surface{display:contents}.__P__-surface[hidden]{display:none}:host([data-position="bottom-left"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{right:auto;left:16px}:host([data-position="top-right"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{bottom:auto;top:16px}.__P__-anchor{position:fixed;display:flex;flex-direction:column;align-items:flex-end;gap:var(--__P__-space-3);pointer-events:none}.__P__-anchor{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=sm]{--__P__-fab-size: 44px}.__P__-anchor[data-launcher-size=md]{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=lg]{--__P__-fab-size: 68px}.__P__-anchor>*{pointer-events:auto}.__P__-fab[data-size=sm]{--__P__-fab-size: 44px;font-size:var(--__P__-text-sm)}.__P__-fab[data-size=md]{--__P__-fab-size: 56px;font-size:calc(14px * var(--__P__-text-scale))}.__P__-fab[data-size=lg]{--__P__-fab-size: 68px;font-size:var(--__P__-text-base)}.__P__-fab{display:inline-flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);color:var(--__P__-accent-text);background:var(--__P__-accent);box-shadow:var(--__P__-shadow-fab);font-weight:600;line-height:1;transform-origin:bottom right;animation:__P__-fab-in var(--__P__-dur-base) var(--__P__-ease) both;transition:transform var(--__P__-dur-base) var(--__P__-ease),opacity var(--__P__-dur-base) var(--__P__-ease),box-shadow var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab:hover{transform:translateY(-2px)}.__P__-fab:active{transform:translateY(0)}.__P__-fab:focus-visible{outline:2px solid var(--__P__-on-accent);outline-offset:3px}.__P__-fab svg{width:24px;height:24px;flex-shrink:0}@keyframes __P__-fab-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}.__P__-fab[data-leaving]{position:absolute;right:0;bottom:0;animation:__P__-fab-out var(--__P__-dur-quick) var(--__P__-ease) forwards;pointer-events:none}:host([data-position^="top-"]) .__P__-fab[data-leaving]{bottom:auto;top:0}:host([data-position$="-left"]) .__P__-fab[data-leaving]{right:auto;left:0}@keyframes __P__-fab-out{0%{opacity:1;transform:none}to{opacity:0;transform:scale(.85)}}.__P__-fab[data-variant=circle]{width:var(--__P__-fab-size);height:var(--__P__-fab-size);border-radius:999px}.__P__-fab[data-variant=circle] .__P__-fab-label{display:none}.__P__-fab[data-variant=pill]{height:var(--__P__-fab-size);padding:0 18px 0 16px;border-radius:999px}.__P__-fab[data-variant=bar]{height:var(--__P__-fab-size);padding:0 22px;border-radius:var(--__P__-radius)}.__P__-fab[data-variant=minimal]{height:var(--__P__-fab-size);padding:0 var(--__P__-space-4);border-radius:999px;background:transparent;color:var(--__P__-accent);box-shadow:none;border:1px solid currentColor}.__P__-fab[data-variant=minimal]:hover{background:color-mix(in srgb,var(--__P__-accent) 12%,transparent)}.__P__-callout{--__P__-callout-fab-h: var(--__P__-fab-size, 56px);--__P__-callout-gap: clamp(12px, calc(var(--__P__-callout-fab-h) * .25), 22px);--__P__-callout-nudge-direction: -1;position:absolute;display:inline-flex;align-items:center;gap:var(--__P__-space-2);padding:10px 14px;background:var(--__P__-fg);color:var(--__P__-bg);border-radius:999px;font-size:var(--__P__-text-sm);font-weight:600;line-height:1.2;box-shadow:0 10px 30px -8px #00000059;pointer-events:auto;animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease);z-index:1;max-width:240px;white-space:nowrap}.__P__-callout[data-position=left]{right:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%)}.__P__-callout[data-position=right]{left:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%);--__P__-callout-nudge-direction: 1}.__P__-callout[data-position=top]{bottom:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-position=bottom]{top:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}:host([data-position$="-left"]) .__P__-callout[data-position=top],:host([data-position$="-left"]) .__P__-callout[data-position=bottom]{right:auto;left:0}.__P__-callout[data-shape=bubble]{border-radius:var(--__P__-radius-md);white-space:normal;width:max-content;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-shape=callout]{padding:12px 18px;font-size:calc(14px * var(--__P__-text-scale));background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-callout:after{content:"";position:absolute;width:12px;height:12px;background:inherit;border-radius:2px;transform:rotate(45deg)}.__P__-callout[data-position=left]:after{right:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=right]:after{left:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=top]:after{bottom:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-position=bottom]:after{top:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}:host([data-position$="-left"]) .__P__-callout[data-position=top]:after,:host([data-position$="-left"]) .__P__-callout[data-position=bottom]:after{right:auto;left:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-animated]{animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease),__P__-callout-nudge 1.6s var(--__P__-ease-in-out) var(--__P__-dur-slow) infinite}@keyframes __P__-callout-in{0%{opacity:0}to{opacity:1}}@keyframes __P__-callout-nudge{0%,to{margin-left:0;margin-right:0}50%{margin-left:calc(6px * var(--__P__-callout-nudge-direction));margin-right:calc(-6px * var(--__P__-callout-nudge-direction))}}@media(prefers-reduced-motion:reduce){.__P__-callout[data-animated]{animation:__P__-callout-in 1ms var(--__P__-ease)}.__P__-icon-btn[data-recording=true],.__P__-typing span{animation:none}}.__P__-callout-close{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;color:inherit;opacity:.7;cursor:pointer}.__P__-callout-close:hover{opacity:1;background:color-mix(in srgb,currentColor 15%,transparent)}.__P__-callout-close:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-callout-close svg{width:12px;height:12px}.__P__-panel{width:var(--__P__-panel-w);height:var(--__P__-panel-h);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);background:var(--__P__-bg);color:var(--__P__-fg);border-radius:var(--__P__-radius-lg);box-shadow:var(--__P__-shadow-panel);display:flex;flex-direction:column;overflow:hidden;transform-origin:bottom right;animation:__P__-panel-in var(--__P__-dur-slow) var(--__P__-ease);border:1px solid var(--__P__-border)}@media(prefers-reduced-motion:no-preference){.__P__-panel{transition:width var(--__P__-dur-base) var(--__P__-ease),height var(--__P__-dur-base) var(--__P__-ease),max-width var(--__P__-dur-base) var(--__P__-ease),max-height var(--__P__-dur-base) var(--__P__-ease)}.__P__-panel[data-resizing]{transition:none}}:host([data-mode="open"]) .__P__-panel{width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));min-width:var(--__P__-resize-min-w, auto);min-height:var(--__P__-resize-min-h, auto);max-width:var(--__P__-resize-max-w, calc(100vw - 32px) );max-height:var(--__P__-resize-max-h, calc(100dvh - 32px) )}@keyframes __P__-panel-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}:host([data-mode="expanded"]) .__P__-panel{width:var(--__P__-expanded-w, 640px);height:var(--__P__-expanded-h, 820px);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px)}:host([data-mode="fullscreen"]){z-index:var(--__P__-z-panel)!important}:host([data-mode="fullscreen"]) .__P__-anchor{inset:0;padding:0;justify-content:flex-end;align-items:flex-end}:host([data-mode="fullscreen"][data-position*="top"]) .__P__-anchor{justify-content:flex-start}:host([data-mode="fullscreen"][data-position*="left"]) .__P__-anchor{align-items:flex-start}:host([data-mode="fullscreen"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}:host([data-mode="fullscreen"]) .__P__-fab{display:none}@media(max-width:640px){:host([data-mode="open"]) .__P__-anchor,:host([data-mode="expanded"]) .__P__-anchor{inset:0;align-items:stretch;padding:0}:host([data-mode="open"]) .__P__-panel,:host([data-mode="expanded"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}}:host([data-mode="inline"]) .__P__-anchor,:host([data-mode="standalone"]) .__P__-anchor{position:static;inset:auto;padding:0;align-items:stretch;width:100%;height:100%;min-height:0}:host([data-mode="inline"]) .__P__-panel,:host([data-mode="standalone"]) .__P__-panel{width:100%;height:100%;min-width:0;min-height:0;max-width:none;max-height:none;animation:none}:host([data-mode="inline"]) .__P__-fab,:host([data-mode="standalone"]) .__P__-fab{display:none}:host([data-mode="inline"]){min-height:320px}:host([data-mode="inline"]) .__P__-panel{border-radius:var(--__P__-radius)}:host([data-mode="standalone"]) .__P__-panel{border-radius:0;border:0;box-shadow:none}:host([data-mode="modal"]){position:fixed!important;inset:0!important;z-index:var(--__P__-z-panel)!important;display:block!important;width:100vw;height:100dvh;background:var(--__P__-modal-backdrop, var(--__P__-backdrop));animation:__P__-backdrop-in var(--__P__-dur-base) var(--__P__-ease) both;--__P__-panel-w: min(960px, 92vw);--__P__-panel-h: min(720px, 88dvh)}:host([data-mode="modal"]) .__P__-anchor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--__P__-space-6);pointer-events:none}:host([data-mode="modal"]) .__P__-panel{pointer-events:auto;width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));max-width:calc(100vw - 48px);max-height:calc(100dvh - 48px);min-width:0;min-height:0;border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-panel);animation:__P__-modal-in var(--__P__-dur-base) var(--__P__-ease);translate:var(--__P__-modal-dx, 0px) var(--__P__-modal-dy, 0px)}:host([data-mode="modal"]) .__P__-header,:host([data-mode="modal"]) .__P__-back-header,:host([data-mode="modal"]) .__P__-home-hero{cursor:grab;touch-action:none}:host([data-mode="modal"]) .__P__-panel[data-dragging]{cursor:grabbing;user-select:none}:host([data-mode="modal"]) .__P__-panel[data-dragging] *{cursor:grabbing}:host([data-mode="modal"]) .__P__-fab{display:none}@keyframes __P__-backdrop-in{0%{background:#0000}to{background:var(--__P__-modal-backdrop, var(--__P__-backdrop))}}@keyframes __P__-modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}:host([data-mode="drawer"]){--__P__-panel-w: min(440px, calc(100vw - 32px) );--__P__-panel-h: 100dvh}:host([data-mode="drawer"]) .__P__-anchor{position:fixed;--__P__-inset-x: var(--__P__-panel-inset, 12px);--__P__-inset-y: var(--__P__-panel-inset, 3dvh);top:var(--__P__-inset-y);bottom:auto;right:var(--__P__-inset-x);left:auto;width:min(var(--__P__-widget-w, var(--__P__-panel-w)),calc(100vw - var(--__P__-inset-x) * 2));height:min(var(--__P__-widget-h, var(--__P__-panel-h)),calc(100dvh - var(--__P__-inset-y) * 2));padding:0;display:block;pointer-events:auto}:host([data-mode="drawer"][data-position$="-left"]) .__P__-anchor{right:auto;left:var(--__P__-inset-x)}:host([data-mode="drawer"][data-position^="bottom-"]) .__P__-anchor{top:auto;bottom:var(--__P__-inset-y)}:host([data-mode="drawer"]) .__P__-panel{width:100%;height:100%;max-width:none;max-height:none;min-width:0;min-height:0;border-radius:var(--__P__-radius, 12px);border:1px solid var(--__P__-border);box-shadow:-8px 16px 32px -12px #00000038;animation:__P__-drawer-in var(--__P__-dur-base) var(--__P__-ease)}:host([data-mode="drawer"][data-position$="-left"]) .__P__-panel{box-shadow:8px 16px 32px -12px #00000038;animation:__P__-drawer-in-left var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab[data-edge-tab]{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-2);position:fixed;top:50%;height:140px;width:auto;min-width:0;padding:10px 8px;writing-mode:vertical-rl;text-orientation:mixed;transform:translateY(-50%);transform-origin:center;animation:__P__-edge-tab-in var(--__P__-dur-base) var(--__P__-ease) both}.__P__-fab[data-edge-tab] svg{writing-mode:horizontal-tb}.__P__-fab[data-edge-tab]:hover{transform:translateY(-50%) scale(1.03)}.__P__-fab[data-edge-tab]:active{transform:translateY(-50%) scale(.97)}:host([data-position$="-right"]) .__P__-fab[data-edge-tab]{right:0;left:auto;border-radius:12px 0 0 12px;box-shadow:-6px 0 18px -8px #0000004d}:host([data-position$="-left"]) .__P__-fab[data-edge-tab]{left:0;right:auto;border-radius:0 12px 12px 0;box-shadow:6px 0 18px -8px #0000004d}.__P__-fab[data-edge-tab][data-leaving]{position:fixed;top:50%;bottom:auto;animation:__P__-edge-tab-out var(--__P__-dur-quick) var(--__P__-ease) forwards}@keyframes __P__-edge-tab-in{0%{opacity:0;transform:translateY(-50%) scale(.9)}to{opacity:1;transform:translateY(-50%) scale(1)}}@keyframes __P__-edge-tab-out{0%{opacity:1;transform:translateY(-50%) scale(1)}to{opacity:0;transform:translateY(-50%) scale(.85)}}@keyframes __P__-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes __P__-drawer-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){:host([data-mode="drawer"]) .__P__-panel,.__P__-fab[data-edge-tab]{animation:none}}.__P__-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);background:var(--__P__-bg)}.__P__-header h1{font-size:calc(14px * var(--__P__-text-scale));font-weight:600;flex:1;letter-spacing:-.01em}.__P__-header-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--__P__-space-1);flex-shrink:0}.__P__-agent{flex:1;display:inline-flex;align-items:center;gap:10px;min-width:0}.__P__-agent-avatar{position:relative;width:32px;height:32px;border-radius:999px;background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--__P__-text-xs);overflow:hidden;flex-shrink:0}.__P__-agent-avatar img{width:100%;height:100%;object-fit:cover}.__P__-agent-avatar:after{content:"";position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:999px;border:2px solid var(--__P__-bg);background:var(--__P__-neutral)}.__P__-agent-avatar[data-status=online]:after{background:var(--__P__-success)}.__P__-agent-avatar[data-status=away]:after{background:var(--__P__-warning)}.__P__-agent-avatar[data-status=offline]:after{background:var(--__P__-neutral)}.__P__-agent-meta{display:flex;flex-direction:column;line-height:1.15;min-width:0}.__P__-agent-meta strong{font-size:calc(14px * var(--__P__-text-scale));font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-agent-meta span{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-suggestions{display:flex;flex-wrap:nowrap;gap:var(--__P__-space-2);padding:6px 14px 10px;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;min-width:0}.__P__-suggestions::-webkit-scrollbar{display:none}.__P__-suggestions:before,.__P__-suggestions:after{content:"";flex:1 1 0;min-width:0}.__P__-suggestion{flex:0 0 auto;scroll-snap-align:center;padding:7px 14px;border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg);font-size:var(--__P__-text-sm);font-weight:500;white-space:nowrap;transition:background var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-suggestion:hover{border-color:var(--__P__-accent);color:var(--__P__-accent);transform:translateY(-1px)}.__P__-suggestion:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px;border-color:var(--__P__-accent)}.__P__-suggestion:active{transform:translateY(0)}.__P__-icon-btn{width:32px;height:32px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);transition:background var(--__P__-dur-quick) var(--__P__-ease),color var(--__P__-dur-quick) var(--__P__-ease)}.__P__-icon-btn:hover{background:var(--__P__-bg-elevated);color:var(--__P__-fg)}.__P__-icon-btn:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-icon-btn:active{background:var(--__P__-border)}.__P__-icon-btn:disabled{opacity:.45;cursor:not-allowed}.__P__-icon-btn:before{content:"";position:absolute;inset:-6px}.__P__-icon-btn{position:relative}.__P__-icon-btn svg{width:18px;height:18px}.__P__-icon-btn[data-recording=true]{color:var(--__P__-accent);background:color-mix(in srgb,var(--__P__-accent) 12%,transparent);animation:__P__-pulse 1.2s var(--__P__-ease) infinite}@keyframes __P__-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--__P__-accent) 40%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--__P__-accent) 0%,transparent)}}.__P__-list,.__P__-history,.__P__-module-scroll,.__P__-home-scroll,.__P__-help-list,.__P__-tool-args,.__P__-sidebar-conversations{scrollbar-width:thin;scrollbar-color:var(--__P__-border-strong) transparent;overscroll-behavior:contain;scrollbar-gutter:stable}.__P__-list::-webkit-scrollbar,.__P__-history::-webkit-scrollbar,.__P__-module-scroll::-webkit-scrollbar,.__P__-home-scroll::-webkit-scrollbar,.__P__-help-list::-webkit-scrollbar,.__P__-tool-args::-webkit-scrollbar,.__P__-sidebar-conversations::-webkit-scrollbar{width:8px}.__P__-list::-webkit-scrollbar-thumb,.__P__-history::-webkit-scrollbar-thumb,.__P__-module-scroll::-webkit-scrollbar-thumb,.__P__-home-scroll::-webkit-scrollbar-thumb,.__P__-help-list::-webkit-scrollbar-thumb,.__P__-tool-args::-webkit-scrollbar-thumb,.__P__-sidebar-conversations::-webkit-scrollbar-thumb{background:var(--__P__-border-strong);border-radius:8px}.__P__-list-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.__P__-jump{position:absolute;inset-inline-end:14px;bottom:14px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;border:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);color:var(--__P__-fg);box-shadow:var(--__P__-shadow-panel);cursor:pointer;opacity:.85;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease);animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-jump:hover{opacity:1}.__P__-jump:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;opacity:1}.__P__-jump:active{transform:translateY(1px)}.__P__-jump svg{width:18px;height:18px}.__P__-list{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-4);padding-bottom:var(--__P__-space-8);display:flex;flex-direction:column;gap:14px}.__P__-date-divider{position:sticky;top:var(--__P__-space-2);z-index:2;display:flex;justify-content:center;align-items:flex-start;height:0;margin:0;pointer-events:none}.__P__-date-pill{padding:3px 10px;border-radius:999px;font-size:calc(11px * var(--__P__-text-scale));font-weight:600;color:var(--__P__-fg-muted);background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);box-shadow:var(--__P__-shadow-card);opacity:0;pointer-events:none;transition:opacity var(--__P__-dur-base) var(--__P__-ease)}.__P__-list[data-scrolling=true] .__P__-date-pill{opacity:1;pointer-events:auto}@media(prefers-reduced-motion:reduce){.__P__-date-pill{transition:none}}.__P__-bubble-row{display:flex}.__P__-bubble-row[data-role=user]{justify-content:flex-end}.__P__-bubble-row[data-role=assistant]{justify-content:flex-start}.__P__-bubble{max-width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);line-height:1.6;font-size:calc(14px * var(--__P__-text-scale));word-wrap:break-word;overflow-wrap:anywhere;box-shadow:0 1px 2px #0000000a,0 1px 8px -4px #0000000f;animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-bubble ::selection{background:color-mix(in srgb,var(--__P__-accent) 30%,transparent)}.__P__-bubble-row[data-role=user] .__P__-bubble ::selection{background:#fff6;color:var(--__P__-bubble-user-text)}@keyframes __P__-bubble-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-bubble-row[data-role=user] .__P__-bubble{background:var(--__P__-bubble-user);color:var(--__P__-bubble-user-text);border-end-end-radius:5px}.__P__-bubble-row[data-role=assistant] .__P__-bubble{background:var(--__P__-bubble-assistant);color:var(--__P__-bubble-assistant-text);border-end-start-radius:5px}.__P__-bubble-col{display:flex;flex-direction:column;max-width:85%;min-width:0}.__P__-bubble-row[data-role=user] .__P__-bubble-col{align-items:flex-end}.__P__-bubble-row[data-role=assistant] .__P__-bubble-col{align-items:flex-start}.__P__-bubble-time{margin-top:3px;padding:0 4px;font-size:calc(11px * var(--__P__-text-scale));line-height:1;color:var(--__P__-fg-muted);user-select:none}.__P__-md>*:first-child{margin-top:0}.__P__-md>*:last-child{margin-bottom:0}.__P__-md p{margin:10px 0}.__P__-md h1,.__P__-md h2,.__P__-md h3,.__P__-md h4,.__P__-md h5,.__P__-md h6{margin:18px 0 8px;line-height:1.3;letter-spacing:-.01em;font-weight:700}.__P__-md h1{font-size:1.4em}.__P__-md h2{font-size:1.22em}.__P__-md h3{font-size:1.08em}.__P__-md h4,.__P__-md h5,.__P__-md h6{font-size:1em}.__P__-md>h1:first-child,.__P__-md>h2:first-child,.__P__-md>h3:first-child,.__P__-md>h4:first-child,.__P__-md>h5:first-child,.__P__-md>h6:first-child{margin-top:0}.__P__-md ul,.__P__-md ol{padding-inline-start:1.5em;margin:10px 0}.__P__-md ul{list-style:disc}.__P__-md ol{list-style:decimal}.__P__-md li{margin:6px 0;padding-inline-start:2px}.__P__-md li::marker{color:var(--__P__-fg-muted)}.__P__-md li>p{margin:6px 0}.__P__-md li>ul,.__P__-md li>ol{margin:6px 0}.__P__-md strong,.__P__-md b{font-weight:650;letter-spacing:-.005em}.__P__-md em,.__P__-md i{font-style:italic}.__P__-md code{font-family:var(--__P__-font-mono);font-size:.86em;padding:1px 6px;border-radius:5px;background:color-mix(in srgb,var(--__P__-accent) 10%,transparent);color:var(--__P__-fg);border:1px solid color-mix(in srgb,var(--__P__-accent) 16%,transparent)}.__P__-md pre{font-family:var(--__P__-font-mono);font-size:calc(12.5px * var(--__P__-text-scale));padding:12px 14px;border-radius:var(--__P__-radius-sm);background:#7f7f7f1f;overflow-x:auto;margin:var(--__P__-space-3) 0;line-height:1.5}.__P__-md pre code{padding:0;background:none}.__P__-md a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.__P__-md a:hover{text-decoration-thickness:2px}.__P__-md blockquote{margin:14px 0;padding:6px 14px;border-inline-start:3px solid color-mix(in srgb,var(--__P__-accent) 50%,transparent);background:color-mix(in srgb,var(--__P__-accent) 5%,transparent);border-start-end-radius:var(--__P__-radius-sm);border-end-end-radius:var(--__P__-radius-sm);color:var(--__P__-fg-muted)}.__P__-md blockquote>:first-child{margin-top:0}.__P__-md blockquote>:last-child{margin-bottom:0}.__P__-md hr{border:0;height:1px;background:color-mix(in srgb,currentColor 18%,transparent);margin:var(--__P__-space-4) 0}.__P__-md table{border-collapse:collapse;margin:var(--__P__-space-3) 0;font-size:.95em;display:block;overflow-x:auto;max-width:100%;font-variant-numeric:tabular-nums}.__P__-md th,.__P__-md td{padding:6px 10px;border-bottom:1px solid color-mix(in srgb,currentColor 12%,transparent);text-align:start}.__P__-md th{font-weight:700;background:color-mix(in srgb,currentColor 6%,transparent)}.__P__-md h1+ul,.__P__-md h1+ol,.__P__-md h2+ul,.__P__-md h2+ol,.__P__-md h3+ul,.__P__-md h3+ol,.__P__-md h4+ul,.__P__-md h4+ol{margin-top:var(--__P__-space-1)}.__P__-loading{display:inline-flex;align-items:center;gap:var(--__P__-space-2);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-loading-spinner{width:14px;height:14px;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:__P__-spin .8s linear infinite}@keyframes __P__-spin{to{transform:rotate(1turn)}}.__P__-typing{display:inline-flex;gap:var(--__P__-space-1);padding:var(--__P__-space-1) 0}.__P__-typing span{width:5px;height:5px;border-radius:999px;background:currentColor;opacity:.4;animation:__P__-blink 1.2s var(--__P__-ease) infinite}.__P__-typing span:nth-child(2){animation-delay:.2s}.__P__-typing span:nth-child(3){animation-delay:.4s}@keyframes __P__-blink{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.__P__-reasoning{margin:var(--__P__-space-1) 0 var(--__P__-space-2);padding-inline-start:var(--__P__-space-3);border-inline-start:2px solid var(--__P__-border-strong)}.__P__-reasoning-summary{display:inline-flex;align-items:center;gap:var(--__P__-space-1);cursor:pointer;list-style:none;user-select:none;color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600}.__P__-reasoning-summary:hover{color:var(--__P__-fg)}.__P__-reasoning-summary:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;border-radius:var(--__P__-radius-sm)}.__P__-reasoning-summary::-webkit-details-marker{display:none}.__P__-reasoning-summary:before{content:"";width:5px;height:5px;border-inline-end:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);opacity:.7;transition:transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-reasoning[open] .__P__-reasoning-summary:before{transform:rotate(45deg)}.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:__P__-reasoning-pulse 1.4s var(--__P__-ease) infinite}@keyframes __P__-reasoning-pulse{0%,to{opacity:.5}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:none}}.__P__-reasoning-body{margin-top:var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-reasoning-body>:first-child{margin-top:0}.__P__-reasoning-body>:last-child{margin-bottom:0}.__P__-tool-call{margin-top:6px;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-sm);background:var(--__P__-bg-elevated);font-size:var(--__P__-text-xs)}.__P__-tool-call-summary{display:flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2);cursor:pointer;list-style:none;color:var(--__P__-fg-muted)}.__P__-tool-call-summary::-webkit-details-marker{display:none}.__P__-tool-call-section{padding:0 var(--__P__-space-2) var(--__P__-space-2)}.__P__-tool-call-label{display:block;margin-bottom:4px;color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);text-transform:uppercase;letter-spacing:.04em}.__P__-tool-call-section[data-error=true] .__P__-tool-args{color:var(--__P__-danger, #c0392b)}.__P__-source{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin-top:6px;margin-inline-end:6px;padding:var(--__P__-space-1) var(--__P__-space-2);border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);text-decoration:none}a.__P__-source:hover{color:var(--__P__-fg);border-color:var(--__P__-accent)}.__P__-source-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-composer{border-top:1px solid var(--__P__-border);padding:10px 12px;background:var(--__P__-bg);display:flex;flex-direction:column;gap:var(--__P__-space-2)}.__P__-composer-row{display:flex;align-items:flex-end;gap:6px}.__P__-textarea{flex:1;height:40px;max-height:160px;padding:10px 12px;border-radius:var(--__P__-radius);background:var(--__P__-bg-elevated);border:1px solid transparent;font-size:calc(14px * var(--__P__-text-scale));line-height:1.4;transition:height var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),box-shadow var(--__P__-dur-quick) var(--__P__-ease)}.__P__-textarea:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:1px;border-color:var(--__P__-focus)}@media(pointer:coarse){.__P__-textarea,.__P__-home-search-input{font-size:max(16px,calc(16px * var(--__P__-text-scale)))}.__P__-textarea{height:44px}}.__P__-send{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease),background var(--__P__-dur-quick) var(--__P__-ease)}.__P__-send[data-shape=circle]{border-radius:999px}.__P__-send[data-shape=square]{border-radius:var(--__P__-radius-sm)}.__P__-send[data-shape=pill]{width:auto;padding:0 18px;border-radius:999px}.__P__-send[data-variant=filled]{background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-send[data-variant=outline]{background:transparent;color:var(--__P__-accent);border-color:var(--__P__-accent)}.__P__-send[data-variant=outline]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 10%,transparent)}.__P__-send[data-variant=ghost]{background:transparent;color:var(--__P__-accent)}.__P__-send[data-variant=ghost]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 8%,transparent)}.__P__-send:disabled{opacity:.4;cursor:not-allowed}.__P__-send:not(:disabled):hover{transform:translateY(-1px)}.__P__-send:not(:disabled):active{transform:translateY(0)}.__P__-send:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-send svg{width:18px;height:18px}.__P__-composer-actions{display:flex;gap:var(--__P__-space-1);flex-wrap:wrap}.__P__-attachments{display:flex;flex-wrap:wrap;gap:6px}.__P__-attachment-chip{display:inline-flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-1);border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);font-size:var(--__P__-text-xs);max-width:200px}.__P__-attachment-thumb{width:24px;height:24px;border-radius:999px;object-fit:cover;background:var(--__P__-border)}.__P__-attachment-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-attachment-remove{width:18px;height:18px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted)}.__P__-attachment-remove:hover{background:var(--__P__-border);color:var(--__P__-fg)}.__P__-dropzone{position:absolute;inset:8px;border:2px dashed var(--__P__-accent);border-radius:var(--__P__-radius);background:color-mix(in srgb,var(--__P__-accent) 8%,transparent);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--__P__-accent);pointer-events:none;z-index:10;animation:__P__-fade-in var(--__P__-dur-quick) var(--__P__-ease)}@keyframes __P__-fade-in{0%{opacity:0}to{opacity:1}}.__P__-error{margin-top:var(--__P__-space-1);padding:8px 10px;border-radius:var(--__P__-radius-sm);background:var(--__P__-danger-bg);color:var(--__P__-danger-text);font-size:var(--__P__-text-sm);display:flex;align-items:center;gap:var(--__P__-space-2)}.__P__-error button{color:inherit;text-decoration:underline;font-size:var(--__P__-text-sm)}.__P__-history{flex:1;overflow-y:auto;padding:var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-3)}.__P__-history-footer{flex:none;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);border-top:1px solid var(--__P__-border);background:var(--__P__-surface)}.__P__-history-new{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);padding:var(--__P__-space-2) var(--__P__-space-3);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-on-accent);cursor:pointer;font-size:var(--__P__-text-sm);font-weight:600;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-history-new svg{width:16px;height:16px}.__P__-history-new:hover{filter:brightness(1.08)}.__P__-history-new:active{transform:translateY(1px)}.__P__-history-new:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-history-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 16px;color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale));text-align:center}.__P__-history-group{display:flex;flex-direction:column;padding:0 var(--__P__-space-3)}.__P__-history-heading{font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted);padding:14px 4px 8px;text-transform:uppercase;letter-spacing:.04em}.__P__-history-card{display:flex;flex-direction:column;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-lg, 14px);overflow:hidden}.__P__-history-item{all:unset;display:flex;align-items:center;gap:var(--__P__-space-3);padding:12px var(--__P__-space-3);cursor:pointer;transition:background var(--__P__-dur-base) var(--__P__-ease)}.__P__-history-item+.__P__-history-item{border-top:1px solid var(--__P__-border)}.__P__-history-item:hover{background:var(--__P__-bg-elevated)}.__P__-history-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-history-avatar{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:color-mix(in oklab,var(--__P__-accent) 12%,transparent);color:var(--__P__-accent)}.__P__-history-avatar svg{width:18px;height:18px}.__P__-history-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.__P__-history-row{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-2)}.__P__-history-title{flex:1;min-width:0;font-size:calc(14px * var(--__P__-text-scale));font-weight:500;color:var(--__P__-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-time{flex:none;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-history-preview{flex:1;min-width:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--__P__-accent)}.__P__-history-item[data-unread=true] .__P__-history-title{font-weight:600}.__P__-history-item[data-closed=true] .__P__-history-title{color:var(--__P__-fg-muted)}.__P__-history-item-skeleton{cursor:default;pointer-events:none}.__P__-skeleton{display:block;border-radius:4px;background:linear-gradient(90deg,color-mix(in oklab,var(--__P__-fg) 9%,transparent) 30%,color-mix(in oklab,var(--__P__-fg) 17%,transparent),color-mix(in oklab,var(--__P__-fg) 9%,transparent) 70%);background-size:200% 100%;animation:__P__-skeleton-shimmer 1.8s ease-in-out infinite}.__P__-history-avatar.__P__-skeleton{border-radius:50%}.__P__-skeleton-heading{width:52px;height:8px}.__P__-skeleton-title{width:55%;height:12px}.__P__-skeleton-time{width:34px;height:10px}.__P__-skeleton-preview{width:80%;height:10px}@keyframes __P__-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.__P__-skeleton{animation:none}}.__P__-list-loading{margin:auto;padding:var(--__P__-space-6) var(--__P__-space-4);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);text-align:center}.__P__-readonly-banner{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 12px;margin:0 var(--__P__-space-3) var(--__P__-space-3);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);text-align:center;font-size:var(--__P__-text-sm)}.__P__-readonly-label{line-height:1.4}.__P__-readonly-cta{appearance:none;border:0;cursor:pointer;padding:var(--__P__-space-2) var(--__P__-space-4);border-radius:999px;background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-readonly-cta:hover,.__P__-readonly-cta:focus-visible{filter:brightness(1.1)}.__P__-readonly-cta:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}.__P__-composer-footer{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 16px;margin:0 var(--__P__-space-3);border-top:1px solid var(--__P__-border);text-align:center;font-size:calc(11px * var(--__P__-text-scale));line-height:1.4;color:var(--__P__-fg-muted)}.__P__-disclaimer{max-width:320px;margin:0 auto;opacity:.9;letter-spacing:.01em}.__P__-poweredby{display:inline-flex;align-items:center;justify-content:center;gap:6px;color:inherit;text-decoration:none;opacity:.7;transition:opacity var(--__P__-dur-base) var(--__P__-ease);font-size:calc(11px * var(--__P__-text-scale));letter-spacing:.02em}.__P__-poweredby:hover{opacity:1}.__P__-poweredby-logo{height:12px;width:auto;display:inline-block;vertical-align:middle}.__P__-poweredby-bar{flex:none;display:flex;align-items:center;justify-content:center;padding:6px 16px;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated)}.__P__-menu-wrap{position:relative;display:inline-flex}.__P__-menu{position:absolute;top:100%;inset-inline-end:0;margin-top:6px;min-width:200px;padding:6px;background:var(--__P__-bg);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);box-shadow:var(--__P__-shadow-panel);z-index:10;display:flex;flex-direction:column;gap:2px;animation:__P__-menu-in var(--__P__-dur-base) var(--__P__-ease)}@media(prefers-reduced-motion:reduce){.__P__-menu{animation:none}}@keyframes __P__-menu-in{0%{opacity:0;transform:translateY(-4px) scale(.98);transform-origin:top right}to{opacity:1;transform:none}}.__P__-menu-item{all:unset;display:flex;align-items:center;gap:10px;padding:8px 10px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);border-radius:var(--__P__-radius-sm);cursor:pointer;user-select:none}.__P__-menu-item:hover{background:var(--__P__-bg-elevated)}.__P__-menu-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-menu-item[disabled]{opacity:.45;cursor:not-allowed}.__P__-menu-icon{display:inline-flex;width:16px;height:16px;color:var(--__P__-fg-muted)}.__P__-menu-icon svg{width:16px;height:16px}.__P__-menu-label{flex:1}.__P__-menu-check{display:inline-flex;color:var(--__P__-accent)}.__P__-menu-check svg{width:14px;height:14px}.__P__-menu-item-segmented{cursor:default}.__P__-menu-item-segmented:hover{background:transparent}.__P__-segmented{display:inline-flex;gap:2px;padding:2px;background:var(--__P__-bg-elevated);border-radius:var(--__P__-radius-sm)}.__P__-segment{all:unset;min-width:26px;padding:3px 8px;font-size:var(--__P__-text-xs);font-weight:600;letter-spacing:.02em;text-align:center;color:var(--__P__-fg-muted);border-radius:calc(var(--__P__-radius-sm) - 2px);cursor:pointer;transition:color .12s ease,background .12s ease}.__P__-segment:hover{color:var(--__P__-fg)}.__P__-segment[data-on=true]{background:var(--__P__-bg);color:var(--__P__-accent);box-shadow:var(--__P__-shadow-card)}.__P__-segment:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-resize-grip{position:absolute;width:18px;height:18px;display:flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);opacity:.45;transition:opacity var(--__P__-dur-base) var(--__P__-ease);z-index:2;touch-action:none;user-select:none}.__P__-resize-grip:hover,.__P__-resize-grip:focus-visible{opacity:1}.__P__-resize-grip svg{width:10px;height:10px}.__P__-resize-grip--bottom-left{bottom:2px;left:2px;cursor:nesw-resize;transform:scaleX(-1)}.__P__-resize-grip--bottom-right{bottom:2px;right:2px;cursor:nwse-resize}.__P__-resize-grip--top-left{top:2px;left:2px;cursor:nwse-resize;transform:rotate(180deg)}.__P__-resize-grip--top-right{top:2px;right:2px;cursor:nesw-resize;transform:scaleY(-1)}:host(:not([data-mode="open"])) .__P__-resize-grip{display:none}.__P__-messenger{display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-body,.__P__-messenger-pane{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-pane[hidden]{display:none}@keyframes __P__-view-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-module{display:flex;flex-direction:column;height:100%;min-height:0}@media(prefers-reduced-motion:no-preference){.__P__-module,.__P__-history{animation:__P__-view-in .18s var(--__P__-ease-out)}}.__P__-module-scroll{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-3);display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-home{container-type:inline-size;background:radial-gradient(125% 65% at 88% 0%,color-mix(in srgb,#fff 16%,transparent),transparent 55%),linear-gradient(180deg,var(--__P__-accent) 0%,var(--__P__-accent) 22%,color-mix(in srgb,var(--__P__-accent) 28%,var(--__P__-surface)) 44%,var(--__P__-surface) 70%);border-radius:var(--__P__-radius-lg) var(--__P__-radius-lg) 0 0}.__P__-home-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;background:transparent}.__P__-home-cards{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:4px 14px 16px}.__P__-module-pad{padding:var(--__P__-space-3) var(--__P__-space-3) 0}.__P__-module-empty{display:flex;flex-direction:column;align-items:center;gap:var(--__P__-space-3);padding:var(--__P__-space-8) var(--__P__-space-4);text-align:center;color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-module-retry{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border-strong);border-radius:var(--__P__-radius-sm);color:var(--__P__-fg);font-weight:600;cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-module-retry:hover{background:var(--__P__-hover);border-color:var(--__P__-accent)}.__P__-module-retry:active{background:var(--__P__-border)}.__P__-module-retry:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-help-list{flex:1;min-height:0;overflow-y:auto;padding-bottom:var(--__P__-space-3)}.__P__-help-group{display:flex;flex-direction:column}.__P__-help-section-title{position:sticky;top:0;z-index:1;margin:0;padding:var(--__P__-space-3) var(--__P__-space-5) var(--__P__-space-2);font-size:var(--__P__-text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--__P__-fg-muted);background:var(--__P__-bg)}.__P__-help-card{margin:0 var(--__P__-space-3) var(--__P__-space-3);background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden}.__P__-help-card .__P__-list-row{border-bottom:0;border-radius:0}.__P__-help-card .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-module-cta{padding:var(--__P__-space-3);border-top:1px solid var(--__P__-border)}.__P__-tabbar{display:flex;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);flex-shrink:0}.__P__-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-1);min-height:48px;padding:var(--__P__-space-2) var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600;transition:color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-tab:hover{color:var(--__P__-fg)}.__P__-tab[aria-selected=true]{color:var(--__P__-accent)}.__P__-tab:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-tab:active{background:var(--__P__-hover)}.__P__-tab-icon{position:relative;display:inline-flex}.__P__-tab-icon svg{width:22px;height:22px}.__P__-tab-badge{position:absolute;top:-4px;left:calc(50% + 6px);min-width:16px;height:16px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--__P__-accent);color:var(--__P__-on-accent);font-size:calc(10px * var(--__P__-text-scale));font-weight:600;line-height:1}.__P__-home-hero{flex-shrink:0;padding:var(--__P__-space-5) var(--__P__-space-5) var(--__P__-space-3);color:var(--__P__-on-accent);--__P__-focus: var(--__P__-on-accent)}.__P__-home-hero-top{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-3);min-height:32px}.__P__-home-brand{font-size:clamp(calc(12px * var(--__P__-text-scale)),calc(3.2cqi * var(--__P__-text-scale)),calc(14px * var(--__P__-text-scale)));font-weight:600;letter-spacing:.01em;color:color-mix(in srgb,#fff 82%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.__P__-home-brand-spacer{flex:1}.__P__-home-hero-actions{display:flex;align-items:center;gap:var(--__P__-space-2);flex-shrink:0}.__P__-home-hero-actions .__P__-icon-btn{color:#fff}.__P__-home-hero-actions .__P__-icon-btn:hover{background:color-mix(in srgb,#fff 18%,transparent);color:#fff}.__P__-home-hero-actions .__P__-icon-btn:active{background:color-mix(in srgb,#fff 26%,transparent)}.__P__-home-greeting{margin:28px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(19px * var(--__P__-text-scale)),calc(5.5cqi * var(--__P__-text-scale)),var(--__P__-text-2xl));font-weight:800;line-height:1.18;letter-spacing:-.01em;overflow-wrap:anywhere}.__P__-home-lead{margin:10px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(15px * var(--__P__-text-scale)),calc(4.2cqi * var(--__P__-text-scale)),var(--__P__-text-xl));font-weight:600;line-height:1.25;letter-spacing:-.005em;color:color-mix(in srgb,var(--__P__-on-accent) 78%,transparent);overflow-wrap:anywhere}.__P__-home-avatars{display:flex}.__P__-home-avatar{width:30px;height:30px;border-radius:999px;overflow:hidden;margin-inline-start:-10px;border:2px solid color-mix(in srgb,#fff 92%,transparent);box-shadow:0 1px 3px #0000002e;background:var(--__P__-surface);display:inline-flex;align-items:center;justify-content:center;font-size:var(--__P__-text-xs);font-weight:700;color:var(--__P__-fg)}.__P__-home-avatar:first-child{margin-inline-start:0}.__P__-home-avatar img{width:100%;height:100%;object-fit:cover}.__P__-home-content{background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-card);overflow:hidden}.__P__-home-content-title{padding:var(--__P__-space-4) var(--__P__-space-4) var(--__P__-space-3);font-size:var(--__P__-text-sm);font-weight:700}.__P__-home-content-list{display:flex;flex-direction:column;padding:0 var(--__P__-space-2) var(--__P__-space-2)}.__P__-home-content-list .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-home-card{display:block;width:100%;text-align:start;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);padding:var(--__P__-space-4);box-shadow:var(--__P__-shadow-card)}.__P__-home-card[data-interactive=true]{cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-home-card[data-interactive=true]:hover{background:var(--__P__-bg-elevated)}.__P__-home-card[data-interactive=true]:active{transform:translateY(1px)}.__P__-home-card[data-interactive=true]:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-recent-row{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-recent-avatar{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border-radius:999px;background:color-mix(in oklch,var(--__P__-accent) 14%,transparent);color:var(--__P__-accent)}.__P__-home-recent-avatar svg{width:20px;height:20px}.__P__-home-recent-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.__P__-home-recent-title{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-recent-preview{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-home-recent-at{color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);flex-shrink:0}.__P__-home-recent-dot{width:8px;height:8px;border-radius:999px;background:var(--__P__-accent);flex-shrink:0}.__P__-home-recent-row[data-unread=true] .__P__-home-recent-title{font-weight:700}.__P__-home-status{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-status-icon svg{width:22px;height:22px;color:var(--__P__-success)}.__P__-home-status[data-level=degraded] .__P__-home-status-icon svg{color:var(--__P__-warning)}.__P__-home-status[data-level=down] .__P__-home-status-icon svg{color:var(--__P__-danger)}.__P__-home-status-text{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-search{display:flex;align-items:center;gap:var(--__P__-space-2);width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);border:1px solid var(--__P__-border);background:var(--__P__-surface);text-align:start}.__P__-home-search[data-input=true]{background:var(--__P__-bg-elevated)}.__P__-home-search:hover{border-color:var(--__P__-border-strong)}.__P__-home-search:focus-visible,.__P__-home-search:focus-within{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-search-text{flex:1;color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-search-input{flex:1;border:0;background:transparent;font-size:calc(14px * var(--__P__-text-scale));color:var(--__P__-fg);outline:none}.__P__-home-search-icon svg{width:18px;height:18px;color:var(--__P__-accent)}.__P__-list-row{display:flex;align-items:center;gap:var(--__P__-space-3);width:100%;min-height:44px;text-align:start;padding:var(--__P__-space-3) var(--__P__-space-2);border-radius:var(--__P__-radius-sm)}.__P__-list-row:hover{background:var(--__P__-hover)}.__P__-list-row:active{background:var(--__P__-border)}.__P__-list-row:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-list-row-body{display:flex;flex-direction:column;min-width:0;flex:1}.__P__-list-row-title{font-weight:600;font-size:var(--__P__-text-md);line-height:1.35}.__P__-list-row-sub{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);margin-top:var(--__P__-space-1);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-list-row-chevron svg{width:18px;height:18px;color:var(--__P__-accent);flex-shrink:0}.__P__-back-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);flex-shrink:0}.__P__-back-title{flex:1;text-align:center;font-size:var(--__P__-text-md);font-weight:700;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-back-spacer{width:32px;height:1px}.__P__-content{display:flex;flex-direction:column;gap:14px;width:100%;max-width:68ch;margin:0 auto}.__P__-content-hero{width:100%;border-radius:var(--__P__-radius)}.__P__-content-subtitle{color:var(--__P__-fg-muted);margin:0}.__P__-content-frame{flex:1;min-height:0;width:100%;border:0;background:#fff}.__P__-news-list{display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-news-card{display:block;width:100%;text-align:start;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden;background:var(--__P__-surface)}.__P__-news-card{transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-news-card:hover{background:var(--__P__-bg-elevated)}.__P__-news-card:active{transform:translateY(1px)}.__P__-news-card:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-news-hero{width:100%;display:block}.__P__-news-body{display:flex;flex-direction:column;gap:6px;padding:14px 16px}.__P__-news-title{font-weight:700;font-size:var(--__P__-text-md)}.__P__-news-summary{color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale));display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-modules-empty{display:flex;align-items:center;justify-content:center;position:relative}.__P__-modules-empty-close{position:absolute;top:12px;inset-inline-end:12px}.__P__-modules-empty-text{color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-form{display:flex;flex-direction:column;gap:var(--__P__-space-4)}.__P__-field{display:flex;flex-direction:column;gap:6px}.__P__-field-label{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-field-req{color:var(--__P__-danger)}.__P__-field-input{width:100%;min-width:0;max-width:100%;box-sizing:border-box;padding:10px var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);color:var(--__P__-fg);font:inherit;font-size:var(--__P__-text-sm);resize:vertical;transition:border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-field-input:focus-visible{outline:none;border-color:var(--__P__-accent)}.__P__-field[data-invalid=true] .__P__-field-input{border-color:var(--__P__-danger)}.__P__-field-input[type=date],.__P__-field-input[type=time]{appearance:none;-webkit-appearance:none}@media(pointer:coarse){.__P__-field-input{font-size:max(16px,calc(16px * var(--__P__-text-scale)))}}.__P__-field-hint{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-field-error{font-size:var(--__P__-text-xs);color:var(--__P__-danger)}.__P__-field-choices{display:flex;flex-direction:column;gap:10px;padding-top:2px}.__P__-choice{display:flex;align-items:flex-start;gap:10px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);cursor:pointer}.__P__-choice input{margin-top:2px;accent-color:var(--__P__-accent)}.__P__-form-actions{display:flex;justify-content:flex-end;gap:var(--__P__-space-2);margin-top:var(--__P__-space-2)}.__P__-form-submit,.__P__-tool-approve{padding:var(--__P__-space-2) var(--__P__-space-4);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);cursor:pointer;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-submit:hover:not(:disabled),.__P__-tool-approve:hover:not(:disabled){filter:brightness(1.06)}.__P__-form-submit:disabled{opacity:.6;cursor:default}.__P__-form-skip,.__P__-tool-reject{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:transparent;color:var(--__P__-fg-muted);font:inherit;font-size:var(--__P__-text-sm);cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-skip:hover:not(:disabled),.__P__-tool-reject:hover:not(:disabled){background:var(--__P__-bg-elevated)}.__P__-form-gate{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated)}.__P__-form-gate-title{margin:0;font-size:var(--__P__-text-base);font-weight:700;color:var(--__P__-fg)}.__P__-form-gate-desc{margin:0 0 var(--__P__-space-1);font-size:var(--__P__-text-sm);color:var(--__P__-fg-muted)}.__P__-form-done{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border:1px dashed var(--__P__-border);border-radius:999px;align-self:center;font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted)}.__P__-form-done svg{width:14px;height:14px;color:var(--__P__-success, #22c55e)}.__P__-form-done[data-outcome=skipped] svg{color:var(--__P__-fg-muted)}.__P__-form-done-fill{border:0;background:none;padding:0 2px;cursor:pointer;font:inherit;font-weight:600;color:var(--__P__-accent)}.__P__-form-done-fill:hover{text-decoration:underline}details.__P__-form-done{display:block;padding:0;border-radius:var(--__P__-radius-md)}details[open].__P__-form-done{width:min(100%,420px);background:var(--__P__-surface)}.__P__-form-done-summary{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;cursor:pointer;list-style:none}.__P__-form-done-summary::-webkit-details-marker{display:none}.__P__-form-done-summary>svg:last-child{color:var(--__P__-fg-muted);transition:transform .15s var(--__P__-ease)}details[open]>.__P__-form-done-summary>svg:last-child{transform:rotate(90deg)}.__P__-form-answers{margin:0;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);display:grid;gap:var(--__P__-space-3);text-align:start}.__P__-form-answer{display:grid;gap:6px}.__P__-form-answer dt{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-form-answer dd{margin:0;padding:10px var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);font-size:var(--__P__-text-sm);font-weight:400;color:var(--__P__-fg);overflow-wrap:anywhere}.__P__-tool-ask-input,.__P__-tool-approval{display:flex;flex-direction:column;gap:var(--__P__-space-2);margin-top:6px;padding:var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated)}.__P__-tool-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.__P__-tool-badge{padding:2px 8px;border-radius:999px;background:var(--__P__-warning, #f59e0b);color:#1a1206;font-size:var(--__P__-text-xs);font-weight:600}.__P__-tool-title{font-size:var(--__P__-text-sm);color:var(--__P__-fg)}.__P__-tool-question{margin:0;font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-tool-desc{margin:0;font-size:var(--__P__-text-sm);color:var(--__P__-fg-muted)}.__P__-tool-args{margin:0;padding:var(--__P__-space-2);max-height:160px;overflow:auto;border-radius:var(--__P__-radius-sm);background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);white-space:pre-wrap;word-break:break-word}.__P__-tool-stale-note{margin:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-tool-decided{flex-direction:row;align-items:center;flex-wrap:wrap;gap:8px}.__P__-tool-decided-label{padding:2px 8px;border-radius:999px;background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600}.__P__-tool-decided-label[data-approved=true]{color:var(--__P__-success, #16a34a);border-color:var(--__P__-success, #16a34a)}.__P__-tool-decided-label[data-approved=false]{color:var(--__P__-danger);border-color:var(--__P__-danger)}.__P__-tool-decided-value{font-size:var(--__P__-text-sm);color:var(--__P__-fg)}:host([dir="rtl"]) .__P__-icon-dir{transform:scaleX(-1)}:host([dir="rtl"]) .__P__-field-input[type=date],:host([dir="rtl"]) .__P__-field-input[type=time]{position:relative;text-align:right;padding-left:34px}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-datetime-edit,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-datetime-edit{text-align:right}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-calendar-picker-indicator,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-calendar-picker-indicator{position:absolute;left:var(--__P__-space-3);margin:0}\n';
|
|
1400
|
+
var panel_default = '.__P__-anchor{color-scheme:var(--__P__-color-scheme, light);right:16px;bottom:16px}.__P__-surface{display:contents}.__P__-surface[hidden]{display:none}:host([data-position="bottom-left"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{right:auto;left:16px}:host([data-position="top-right"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{bottom:auto;top:16px}.__P__-anchor{position:fixed;display:flex;flex-direction:column;align-items:flex-end;gap:var(--__P__-space-3);pointer-events:none}.__P__-anchor{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=sm]{--__P__-fab-size: 44px}.__P__-anchor[data-launcher-size=md]{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=lg]{--__P__-fab-size: 68px}.__P__-anchor>*{pointer-events:auto}.__P__-fab[data-size=sm]{--__P__-fab-size: 44px;font-size:var(--__P__-text-sm)}.__P__-fab[data-size=md]{--__P__-fab-size: 56px;font-size:calc(14px * var(--__P__-text-scale))}.__P__-fab[data-size=lg]{--__P__-fab-size: 68px;font-size:var(--__P__-text-base)}.__P__-fab{display:inline-flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);color:var(--__P__-accent-text);background:var(--__P__-accent);box-shadow:var(--__P__-shadow-fab);font-weight:600;line-height:1;transform-origin:bottom right;animation:__P__-fab-in var(--__P__-dur-base) var(--__P__-ease) both;transition:transform var(--__P__-dur-base) var(--__P__-ease),opacity var(--__P__-dur-base) var(--__P__-ease),box-shadow var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab:hover{transform:translateY(-2px)}.__P__-fab:active{transform:translateY(0)}.__P__-fab:focus-visible{outline:2px solid var(--__P__-on-accent);outline-offset:3px}.__P__-fab svg{width:24px;height:24px;flex-shrink:0}@keyframes __P__-fab-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}.__P__-fab[data-leaving]{position:absolute;right:0;bottom:0;animation:__P__-fab-out var(--__P__-dur-quick) var(--__P__-ease) forwards;pointer-events:none}:host([data-position^="top-"]) .__P__-fab[data-leaving]{bottom:auto;top:0}:host([data-position$="-left"]) .__P__-fab[data-leaving]{right:auto;left:0}@keyframes __P__-fab-out{0%{opacity:1;transform:none}to{opacity:0;transform:scale(.85)}}.__P__-fab[data-variant=circle]{width:var(--__P__-fab-size);height:var(--__P__-fab-size);border-radius:999px}.__P__-fab[data-variant=circle] .__P__-fab-label{display:none}.__P__-fab[data-variant=pill]{height:var(--__P__-fab-size);padding:0 18px 0 16px;border-radius:999px}.__P__-fab[data-variant=bar]{height:var(--__P__-fab-size);padding:0 22px;border-radius:var(--__P__-radius)}.__P__-fab[data-variant=minimal]{height:var(--__P__-fab-size);padding:0 var(--__P__-space-4);border-radius:999px;background:transparent;color:var(--__P__-accent);box-shadow:none;border:1px solid currentColor}.__P__-fab[data-variant=minimal]:hover{background:color-mix(in srgb,var(--__P__-accent) 12%,transparent)}.__P__-callout{--__P__-callout-fab-h: var(--__P__-fab-size, 56px);--__P__-callout-gap: clamp(12px, calc(var(--__P__-callout-fab-h) * .25), 22px);--__P__-callout-nudge-direction: -1;position:absolute;display:inline-flex;align-items:center;gap:var(--__P__-space-2);padding:10px 14px;background:var(--__P__-fg);color:var(--__P__-bg);border-radius:999px;font-size:var(--__P__-text-sm);font-weight:600;line-height:1.2;box-shadow:0 10px 30px -8px #00000059;pointer-events:auto;animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease);z-index:1;max-width:240px;white-space:nowrap}.__P__-callout[data-position=left]{right:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%)}.__P__-callout[data-position=right]{left:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%);--__P__-callout-nudge-direction: 1}.__P__-callout[data-position=top]{bottom:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-position=bottom]{top:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}:host([data-position$="-left"]) .__P__-callout[data-position=top],:host([data-position$="-left"]) .__P__-callout[data-position=bottom]{right:auto;left:0}.__P__-callout[data-shape=bubble]{border-radius:var(--__P__-radius-md);white-space:normal;width:max-content;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-shape=callout]{padding:12px 18px;font-size:calc(14px * var(--__P__-text-scale));background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-callout:after{content:"";position:absolute;width:12px;height:12px;background:inherit;border-radius:2px;transform:rotate(45deg)}.__P__-callout[data-position=left]:after{right:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=right]:after{left:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=top]:after{bottom:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-position=bottom]:after{top:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}:host([data-position$="-left"]) .__P__-callout[data-position=top]:after,:host([data-position$="-left"]) .__P__-callout[data-position=bottom]:after{right:auto;left:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-animated]{animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease),__P__-callout-nudge 1.6s var(--__P__-ease-in-out) var(--__P__-dur-slow) infinite}@keyframes __P__-callout-in{0%{opacity:0}to{opacity:1}}@keyframes __P__-callout-nudge{0%,to{margin-left:0;margin-right:0}50%{margin-left:calc(6px * var(--__P__-callout-nudge-direction));margin-right:calc(-6px * var(--__P__-callout-nudge-direction))}}@media(prefers-reduced-motion:reduce){.__P__-callout[data-animated]{animation:__P__-callout-in 1ms var(--__P__-ease)}.__P__-icon-btn[data-recording=true],.__P__-typing span{animation:none}}.__P__-callout-close{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;color:inherit;opacity:.7;cursor:pointer}.__P__-callout-close:hover{opacity:1;background:color-mix(in srgb,currentColor 15%,transparent)}.__P__-callout-close:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-callout-close svg{width:12px;height:12px}.__P__-panel{width:var(--__P__-panel-w);height:var(--__P__-panel-h);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);background:var(--__P__-bg);color:var(--__P__-fg);border-radius:var(--__P__-radius-lg);box-shadow:var(--__P__-shadow-panel);display:flex;flex-direction:column;overflow:hidden;transform-origin:bottom right;animation:__P__-panel-in var(--__P__-dur-slow) var(--__P__-ease);border:1px solid var(--__P__-border)}@media(prefers-reduced-motion:no-preference){.__P__-panel{transition:width var(--__P__-dur-base) var(--__P__-ease),height var(--__P__-dur-base) var(--__P__-ease),max-width var(--__P__-dur-base) var(--__P__-ease),max-height var(--__P__-dur-base) var(--__P__-ease)}.__P__-panel[data-resizing]{transition:none}}:host([data-mode="open"]) .__P__-panel{width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));min-width:var(--__P__-resize-min-w, auto);min-height:var(--__P__-resize-min-h, auto);max-width:var(--__P__-resize-max-w, calc(100vw - 32px) );max-height:var(--__P__-resize-max-h, calc(100dvh - 32px) )}@keyframes __P__-panel-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}:host([data-mode="expanded"]) .__P__-panel{width:var(--__P__-expanded-w, 640px);height:var(--__P__-expanded-h, 820px);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px)}:host([data-mode="fullscreen"]){z-index:var(--__P__-z-panel)!important}:host([data-mode="fullscreen"]) .__P__-anchor{inset:0;padding:0;justify-content:flex-end;align-items:flex-end}:host([data-mode="fullscreen"][data-position*="top"]) .__P__-anchor{justify-content:flex-start}:host([data-mode="fullscreen"][data-position*="left"]) .__P__-anchor{align-items:flex-start}:host([data-mode="fullscreen"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}:host([data-mode="fullscreen"]) .__P__-fab{display:none}@media(max-width:640px){:host([data-mode="open"]) .__P__-anchor,:host([data-mode="expanded"]) .__P__-anchor{inset:0;align-items:stretch;padding:0}:host([data-mode="open"]) .__P__-panel,:host([data-mode="expanded"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}}:host([data-mode="inline"]) .__P__-anchor,:host([data-mode="standalone"]) .__P__-anchor{position:static;inset:auto;padding:0;align-items:stretch;width:100%;height:100%;min-height:0}:host([data-mode="inline"]) .__P__-panel,:host([data-mode="standalone"]) .__P__-panel{width:100%;height:100%;min-width:0;min-height:0;max-width:none;max-height:none;animation:none}:host([data-mode="inline"]) .__P__-fab,:host([data-mode="standalone"]) .__P__-fab{display:none}:host([data-mode="inline"]){min-height:320px}:host([data-mode="inline"]) .__P__-panel{border-radius:var(--__P__-radius)}:host([data-mode="standalone"]) .__P__-panel{border-radius:0;border:0;box-shadow:none}:host([data-mode="modal"]){position:fixed!important;inset:0!important;z-index:var(--__P__-z-panel)!important;display:block!important;width:100vw;height:100dvh;background:var(--__P__-modal-backdrop, var(--__P__-backdrop));animation:__P__-backdrop-in var(--__P__-dur-base) var(--__P__-ease) both;--__P__-panel-w: min(960px, 92vw);--__P__-panel-h: min(720px, 88dvh)}:host([data-mode="modal"]) .__P__-anchor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--__P__-space-6);pointer-events:none}:host([data-mode="modal"]) .__P__-panel{pointer-events:auto;width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));max-width:calc(100vw - 48px);max-height:calc(100dvh - 48px);min-width:0;min-height:0;border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-panel);animation:__P__-modal-in var(--__P__-dur-base) var(--__P__-ease);translate:var(--__P__-modal-dx, 0px) var(--__P__-modal-dy, 0px)}:host([data-mode="modal"]) .__P__-header,:host([data-mode="modal"]) .__P__-back-header,:host([data-mode="modal"]) .__P__-home-hero{cursor:grab;touch-action:none}:host([data-mode="modal"]) .__P__-panel[data-dragging]{cursor:grabbing;user-select:none}:host([data-mode="modal"]) .__P__-panel[data-dragging] *{cursor:grabbing}:host([data-mode="modal"]) .__P__-fab{display:none}@keyframes __P__-backdrop-in{0%{background:#0000}to{background:var(--__P__-modal-backdrop, var(--__P__-backdrop))}}@keyframes __P__-modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}:host([data-mode="drawer"]){--__P__-panel-w: min(440px, calc(100vw - 32px) );--__P__-panel-h: 100dvh}:host([data-mode="drawer"]) .__P__-anchor{position:fixed;--__P__-inset-x: var(--__P__-panel-inset, 12px);--__P__-inset-y: var(--__P__-panel-inset, 3dvh);top:var(--__P__-inset-y);bottom:auto;right:var(--__P__-inset-x);left:auto;width:min(var(--__P__-widget-w, var(--__P__-panel-w)),calc(100vw - var(--__P__-inset-x) * 2));height:min(var(--__P__-widget-h, var(--__P__-panel-h)),calc(100dvh - var(--__P__-inset-y) * 2));padding:0;display:block;pointer-events:auto}:host([data-mode="drawer"][data-position$="-left"]) .__P__-anchor{right:auto;left:var(--__P__-inset-x)}:host([data-mode="drawer"][data-position^="bottom-"]) .__P__-anchor{top:auto;bottom:var(--__P__-inset-y)}:host([data-mode="drawer"]) .__P__-panel{width:100%;height:100%;max-width:none;max-height:none;min-width:0;min-height:0;border-radius:var(--__P__-radius, 12px);border:1px solid var(--__P__-border);box-shadow:-8px 16px 32px -12px #00000038;animation:__P__-drawer-in var(--__P__-dur-base) var(--__P__-ease)}:host([data-mode="drawer"][data-position$="-left"]) .__P__-panel{box-shadow:8px 16px 32px -12px #00000038;animation:__P__-drawer-in-left var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab[data-edge-tab]{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-2);position:fixed;top:50%;height:140px;width:auto;min-width:0;padding:10px 8px;writing-mode:vertical-rl;text-orientation:mixed;transform:translateY(-50%);transform-origin:center;animation:__P__-edge-tab-in var(--__P__-dur-base) var(--__P__-ease) both}.__P__-fab[data-edge-tab] svg{writing-mode:horizontal-tb}.__P__-fab[data-edge-tab]:hover{transform:translateY(-50%) scale(1.03)}.__P__-fab[data-edge-tab]:active{transform:translateY(-50%) scale(.97)}:host([data-position$="-right"]) .__P__-fab[data-edge-tab]{right:0;left:auto;border-radius:12px 0 0 12px;box-shadow:-6px 0 18px -8px #0000004d}:host([data-position$="-left"]) .__P__-fab[data-edge-tab]{left:0;right:auto;border-radius:0 12px 12px 0;box-shadow:6px 0 18px -8px #0000004d}.__P__-fab[data-edge-tab][data-leaving]{position:fixed;top:50%;bottom:auto;animation:__P__-edge-tab-out var(--__P__-dur-quick) var(--__P__-ease) forwards}@keyframes __P__-edge-tab-in{0%{opacity:0;transform:translateY(-50%) scale(.9)}to{opacity:1;transform:translateY(-50%) scale(1)}}@keyframes __P__-edge-tab-out{0%{opacity:1;transform:translateY(-50%) scale(1)}to{opacity:0;transform:translateY(-50%) scale(.85)}}@keyframes __P__-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes __P__-drawer-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){:host([data-mode="drawer"]) .__P__-panel,.__P__-fab[data-edge-tab]{animation:none}}.__P__-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);background:var(--__P__-bg)}.__P__-header h1{font-size:calc(14px * var(--__P__-text-scale));font-weight:600;flex:1;letter-spacing:-.01em}.__P__-header-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--__P__-space-1);flex-shrink:0}.__P__-agent{flex:1;display:inline-flex;align-items:center;gap:10px;min-width:0}.__P__-agent-avatar{position:relative;width:32px;height:32px;border-radius:999px;background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--__P__-text-xs);overflow:hidden;flex-shrink:0}.__P__-agent-avatar img{width:100%;height:100%;object-fit:cover}.__P__-agent-avatar:after{content:"";position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:999px;border:2px solid var(--__P__-bg);background:var(--__P__-neutral)}.__P__-agent-avatar[data-status=online]:after{background:var(--__P__-success)}.__P__-agent-avatar[data-status=away]:after{background:var(--__P__-warning)}.__P__-agent-avatar[data-status=offline]:after{background:var(--__P__-neutral)}.__P__-agent-meta{display:flex;flex-direction:column;line-height:1.15;min-width:0}.__P__-agent-meta strong{font-size:calc(14px * var(--__P__-text-scale));font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-agent-meta span{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-suggestions{display:flex;flex-wrap:nowrap;gap:var(--__P__-space-2);padding:6px 14px 10px;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;min-width:0}.__P__-suggestions::-webkit-scrollbar{display:none}.__P__-suggestions:before,.__P__-suggestions:after{content:"";flex:1 1 0;min-width:0}.__P__-suggestion{flex:0 0 auto;scroll-snap-align:center;padding:7px 14px;border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg);font-size:var(--__P__-text-sm);font-weight:500;white-space:nowrap;transition:background var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-suggestion:hover{border-color:var(--__P__-accent);color:var(--__P__-accent);transform:translateY(-1px)}.__P__-suggestion:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px;border-color:var(--__P__-accent)}.__P__-suggestion:active{transform:translateY(0)}.__P__-icon-btn{width:32px;height:32px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);transition:background var(--__P__-dur-quick) var(--__P__-ease),color var(--__P__-dur-quick) var(--__P__-ease)}.__P__-icon-btn:hover{background:var(--__P__-bg-elevated);color:var(--__P__-fg)}.__P__-icon-btn:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-icon-btn:active{background:var(--__P__-border)}.__P__-icon-btn:disabled{opacity:.45;cursor:not-allowed}.__P__-icon-btn:before{content:"";position:absolute;inset:-6px}.__P__-icon-btn{position:relative}.__P__-icon-btn svg{width:18px;height:18px}.__P__-icon-btn[data-recording=true]{color:var(--__P__-accent);background:color-mix(in srgb,var(--__P__-accent) 12%,transparent);animation:__P__-pulse 1.2s var(--__P__-ease) infinite}@keyframes __P__-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--__P__-accent) 40%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--__P__-accent) 0%,transparent)}}.__P__-list,.__P__-history,.__P__-module-scroll,.__P__-home-scroll,.__P__-help-list,.__P__-toolui-code,.__P__-sidebar-conversations{scrollbar-width:thin;scrollbar-color:var(--__P__-border-strong) transparent;overscroll-behavior:contain;scrollbar-gutter:stable}.__P__-list::-webkit-scrollbar,.__P__-history::-webkit-scrollbar,.__P__-module-scroll::-webkit-scrollbar,.__P__-home-scroll::-webkit-scrollbar,.__P__-help-list::-webkit-scrollbar,.__P__-toolui-code::-webkit-scrollbar,.__P__-sidebar-conversations::-webkit-scrollbar{width:8px}.__P__-list::-webkit-scrollbar-thumb,.__P__-history::-webkit-scrollbar-thumb,.__P__-module-scroll::-webkit-scrollbar-thumb,.__P__-home-scroll::-webkit-scrollbar-thumb,.__P__-help-list::-webkit-scrollbar-thumb,.__P__-toolui-code::-webkit-scrollbar-thumb,.__P__-sidebar-conversations::-webkit-scrollbar-thumb{background:var(--__P__-border-strong);border-radius:8px}.__P__-list-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.__P__-jump{position:absolute;inset-inline-end:14px;bottom:14px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;border:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);color:var(--__P__-fg);box-shadow:var(--__P__-shadow-panel);cursor:pointer;opacity:.85;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease);animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-jump:hover{opacity:1}.__P__-jump:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;opacity:1}.__P__-jump:active{transform:translateY(1px)}.__P__-jump svg{width:18px;height:18px}.__P__-list{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-4);padding-bottom:var(--__P__-space-8);display:flex;flex-direction:column;gap:14px}.__P__-date-divider{position:sticky;top:var(--__P__-space-2);z-index:2;display:flex;justify-content:center;align-items:flex-start;height:0;margin:0;pointer-events:none}.__P__-date-pill{padding:3px 10px;border-radius:999px;font-size:calc(11px * var(--__P__-text-scale));font-weight:600;color:var(--__P__-fg-muted);background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);box-shadow:var(--__P__-shadow-card);opacity:0;pointer-events:none;transition:opacity var(--__P__-dur-base) var(--__P__-ease)}.__P__-list[data-scrolling=true] .__P__-date-pill{opacity:1;pointer-events:auto}@media(prefers-reduced-motion:reduce){.__P__-date-pill{transition:none}}.__P__-bubble-row{display:flex}.__P__-bubble-row[data-role=user]{justify-content:flex-end}.__P__-bubble-row[data-role=assistant]{justify-content:flex-start}.__P__-bubble{max-width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);line-height:1.6;font-size:calc(14px * var(--__P__-text-scale));word-wrap:break-word;overflow-wrap:anywhere;box-shadow:0 1px 2px #0000000a,0 1px 8px -4px #0000000f;animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-bubble ::selection{background:color-mix(in srgb,var(--__P__-accent) 30%,transparent)}.__P__-bubble-row[data-role=user] .__P__-bubble ::selection{background:#fff6;color:var(--__P__-bubble-user-text)}@keyframes __P__-bubble-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-bubble-row[data-role=user] .__P__-bubble{background:var(--__P__-bubble-user);color:var(--__P__-bubble-user-text);border-end-end-radius:5px}.__P__-bubble-row[data-role=assistant] .__P__-bubble{background:var(--__P__-bubble-assistant);color:var(--__P__-bubble-assistant-text);border-end-start-radius:5px}.__P__-bubble-col{display:flex;flex-direction:column;max-width:85%;min-width:0}.__P__-bubble-row[data-role=user] .__P__-bubble-col{align-items:flex-end}.__P__-bubble-row[data-role=assistant] .__P__-bubble-col{align-items:flex-start}.__P__-bubble-time{margin-top:3px;padding:0 4px;font-size:calc(11px * var(--__P__-text-scale));line-height:1;color:var(--__P__-fg-muted);user-select:none}.__P__-md>*:first-child{margin-top:0}.__P__-md>*:last-child{margin-bottom:0}.__P__-md p{margin:10px 0}.__P__-md h1,.__P__-md h2,.__P__-md h3,.__P__-md h4,.__P__-md h5,.__P__-md h6{margin:18px 0 8px;line-height:1.3;letter-spacing:-.01em;font-weight:700}.__P__-md h1{font-size:1.4em}.__P__-md h2{font-size:1.22em}.__P__-md h3{font-size:1.08em}.__P__-md h4,.__P__-md h5,.__P__-md h6{font-size:1em}.__P__-md>h1:first-child,.__P__-md>h2:first-child,.__P__-md>h3:first-child,.__P__-md>h4:first-child,.__P__-md>h5:first-child,.__P__-md>h6:first-child{margin-top:0}.__P__-md ul,.__P__-md ol{padding-inline-start:1.5em;margin:10px 0}.__P__-md ul{list-style:disc}.__P__-md ol{list-style:decimal}.__P__-md li{margin:6px 0;padding-inline-start:2px}.__P__-md li::marker{color:var(--__P__-fg-muted)}.__P__-md li>p{margin:6px 0}.__P__-md li>ul,.__P__-md li>ol{margin:6px 0}.__P__-md strong,.__P__-md b{font-weight:650;letter-spacing:-.005em}.__P__-md em,.__P__-md i{font-style:italic}.__P__-md code{font-family:var(--__P__-font-mono);font-size:.86em;padding:1px 6px;border-radius:5px;background:color-mix(in srgb,var(--__P__-accent) 10%,transparent);color:var(--__P__-fg);border:1px solid color-mix(in srgb,var(--__P__-accent) 16%,transparent)}.__P__-md pre{font-family:var(--__P__-font-mono);font-size:calc(12.5px * var(--__P__-text-scale));padding:12px 14px;border-radius:var(--__P__-radius-sm);background:#7f7f7f1f;overflow-x:auto;margin:var(--__P__-space-3) 0;line-height:1.5}.__P__-md pre code{padding:0;background:none}.__P__-md a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.__P__-md a:hover{text-decoration-thickness:2px}.__P__-md blockquote{margin:14px 0;padding:6px 14px;border-inline-start:3px solid color-mix(in srgb,var(--__P__-accent) 50%,transparent);background:color-mix(in srgb,var(--__P__-accent) 5%,transparent);border-start-end-radius:var(--__P__-radius-sm);border-end-end-radius:var(--__P__-radius-sm);color:var(--__P__-fg-muted)}.__P__-md blockquote>:first-child{margin-top:0}.__P__-md blockquote>:last-child{margin-bottom:0}.__P__-md hr{border:0;height:1px;background:color-mix(in srgb,currentColor 18%,transparent);margin:var(--__P__-space-4) 0}.__P__-md table{border-collapse:collapse;margin:var(--__P__-space-3) 0;font-size:.95em;display:block;overflow-x:auto;max-width:100%;font-variant-numeric:tabular-nums}.__P__-md th,.__P__-md td{padding:6px 10px;border-bottom:1px solid color-mix(in srgb,currentColor 12%,transparent);text-align:start}.__P__-md th{font-weight:700;background:color-mix(in srgb,currentColor 6%,transparent)}.__P__-md h1+ul,.__P__-md h1+ol,.__P__-md h2+ul,.__P__-md h2+ol,.__P__-md h3+ul,.__P__-md h3+ol,.__P__-md h4+ul,.__P__-md h4+ol{margin-top:var(--__P__-space-1)}.__P__-loading{display:inline-flex;align-items:center;gap:var(--__P__-space-2);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-loading-spinner{width:14px;height:14px;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:__P__-spin .8s linear infinite}@keyframes __P__-spin{to{transform:rotate(1turn)}}.__P__-typing{display:inline-flex;gap:var(--__P__-space-1);padding:var(--__P__-space-1) 0}.__P__-typing span{width:5px;height:5px;border-radius:999px;background:currentColor;opacity:.4;animation:__P__-blink 1.2s var(--__P__-ease) infinite}.__P__-typing span:nth-child(2){animation-delay:.2s}.__P__-typing span:nth-child(3){animation-delay:.4s}@keyframes __P__-blink{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.__P__-reasoning{margin:var(--__P__-space-1) 0 var(--__P__-space-2);padding-inline-start:var(--__P__-space-3);border-inline-start:2px solid var(--__P__-border-strong)}.__P__-reasoning-summary{display:inline-flex;align-items:center;gap:var(--__P__-space-1);cursor:pointer;list-style:none;user-select:none;color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600}.__P__-reasoning-summary:hover{color:var(--__P__-fg)}.__P__-reasoning-summary:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;border-radius:var(--__P__-radius-sm)}.__P__-reasoning-summary::-webkit-details-marker{display:none}.__P__-reasoning-summary:before{content:"";width:5px;height:5px;border-inline-end:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);opacity:.7;transition:transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-reasoning[open] .__P__-reasoning-summary:before{transform:rotate(45deg)}.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:__P__-reasoning-pulse 1.4s var(--__P__-ease) infinite}@keyframes __P__-reasoning-pulse{0%,to{opacity:.5}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:none}}.__P__-reasoning-body{margin-top:var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-reasoning-body>:first-child{margin-top:0}.__P__-reasoning-body>:last-child{margin-bottom:0}.__P__-source{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin-top:6px;margin-inline-end:6px;padding:var(--__P__-space-1) var(--__P__-space-2);border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);text-decoration:none}a.__P__-source:hover{color:var(--__P__-fg);border-color:var(--__P__-accent)}.__P__-source-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-composer{border-top:1px solid var(--__P__-border);padding:10px 12px;background:var(--__P__-bg);display:flex;flex-direction:column;gap:var(--__P__-space-2)}.__P__-composer-row{display:flex;align-items:flex-end;gap:6px}.__P__-textarea{flex:1;height:40px;max-height:160px;padding:10px 12px;border-radius:var(--__P__-radius);background:var(--__P__-bg-elevated);border:1px solid transparent;font-size:calc(14px * var(--__P__-text-scale));line-height:1.4;transition:height var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),box-shadow var(--__P__-dur-quick) var(--__P__-ease)}.__P__-textarea:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:1px;border-color:var(--__P__-focus)}@media(pointer:coarse){.__P__-textarea,.__P__-home-search-input{font-size:max(16px,calc(16px * var(--__P__-text-scale)))}.__P__-textarea{height:44px}}.__P__-send{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease),background var(--__P__-dur-quick) var(--__P__-ease)}.__P__-send[data-shape=circle]{border-radius:999px}.__P__-send[data-shape=square]{border-radius:var(--__P__-radius-sm)}.__P__-send[data-shape=pill]{width:auto;padding:0 18px;border-radius:999px}.__P__-send[data-variant=filled]{background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-send[data-variant=outline]{background:transparent;color:var(--__P__-accent);border-color:var(--__P__-accent)}.__P__-send[data-variant=outline]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 10%,transparent)}.__P__-send[data-variant=ghost]{background:transparent;color:var(--__P__-accent)}.__P__-send[data-variant=ghost]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 8%,transparent)}.__P__-send:disabled{opacity:.4;cursor:not-allowed}.__P__-send:not(:disabled):hover{transform:translateY(-1px)}.__P__-send:not(:disabled):active{transform:translateY(0)}.__P__-send:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-send svg{width:18px;height:18px}.__P__-composer-actions{display:flex;gap:var(--__P__-space-1);flex-wrap:wrap}.__P__-attachments{display:flex;flex-wrap:wrap;gap:6px}.__P__-attachment-chip{display:inline-flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-1);border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);font-size:var(--__P__-text-xs);max-width:200px}.__P__-attachment-thumb{width:24px;height:24px;border-radius:999px;object-fit:cover;background:var(--__P__-border)}.__P__-attachment-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-attachment-remove{width:18px;height:18px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted)}.__P__-attachment-remove:hover{background:var(--__P__-border);color:var(--__P__-fg)}.__P__-dropzone{position:absolute;inset:8px;border:2px dashed var(--__P__-accent);border-radius:var(--__P__-radius);background:color-mix(in srgb,var(--__P__-accent) 8%,transparent);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--__P__-accent);pointer-events:none;z-index:10;animation:__P__-fade-in var(--__P__-dur-quick) var(--__P__-ease)}@keyframes __P__-fade-in{0%{opacity:0}to{opacity:1}}.__P__-error{margin-top:var(--__P__-space-1);padding:8px 10px;border-radius:var(--__P__-radius-sm);background:var(--__P__-danger-bg);color:var(--__P__-danger-text);font-size:var(--__P__-text-sm);display:flex;align-items:center;gap:var(--__P__-space-2)}.__P__-error button{color:inherit;text-decoration:underline;font-size:var(--__P__-text-sm)}.__P__-history{flex:1;overflow-y:auto;padding:var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-3)}.__P__-history-footer{flex:none;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);border-top:1px solid var(--__P__-border);background:var(--__P__-surface)}.__P__-history-new{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);padding:var(--__P__-space-2) var(--__P__-space-3);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-on-accent);cursor:pointer;font-size:var(--__P__-text-sm);font-weight:600;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-history-new svg{width:16px;height:16px}.__P__-history-new:hover{filter:brightness(1.08)}.__P__-history-new:active{transform:translateY(1px)}.__P__-history-new:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-history-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 16px;color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale));text-align:center}.__P__-history-group{display:flex;flex-direction:column;padding:0 var(--__P__-space-3)}.__P__-history-heading{font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted);padding:14px 4px 8px;text-transform:uppercase;letter-spacing:.04em}.__P__-history-card{display:flex;flex-direction:column;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-lg, 14px);overflow:hidden}.__P__-history-item{all:unset;display:flex;align-items:center;gap:var(--__P__-space-3);padding:12px var(--__P__-space-3);cursor:pointer;transition:background var(--__P__-dur-base) var(--__P__-ease)}.__P__-history-item+.__P__-history-item{border-top:1px solid var(--__P__-border)}.__P__-history-item:hover{background:var(--__P__-bg-elevated)}.__P__-history-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-history-avatar{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:color-mix(in oklab,var(--__P__-accent) 12%,transparent);color:var(--__P__-accent)}.__P__-history-avatar svg{width:18px;height:18px}.__P__-history-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.__P__-history-row{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-2)}.__P__-history-title{flex:1;min-width:0;font-size:calc(14px * var(--__P__-text-scale));font-weight:500;color:var(--__P__-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-time{flex:none;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-history-preview{flex:1;min-width:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--__P__-accent)}.__P__-history-item[data-unread=true] .__P__-history-title{font-weight:600}.__P__-history-item[data-closed=true] .__P__-history-title{color:var(--__P__-fg-muted)}.__P__-history-item-skeleton{cursor:default;pointer-events:none}.__P__-skeleton{display:block;border-radius:4px;background:linear-gradient(90deg,color-mix(in oklab,var(--__P__-fg) 9%,transparent) 30%,color-mix(in oklab,var(--__P__-fg) 17%,transparent),color-mix(in oklab,var(--__P__-fg) 9%,transparent) 70%);background-size:200% 100%;animation:__P__-skeleton-shimmer 1.8s ease-in-out infinite}.__P__-history-avatar.__P__-skeleton{border-radius:50%}.__P__-skeleton-heading{width:52px;height:8px}.__P__-skeleton-title{width:55%;height:12px}.__P__-skeleton-time{width:34px;height:10px}.__P__-skeleton-preview{width:80%;height:10px}@keyframes __P__-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.__P__-skeleton{animation:none}}.__P__-list-loading{margin:auto;padding:var(--__P__-space-6) var(--__P__-space-4);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);text-align:center}.__P__-readonly-banner{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 12px;margin:0 var(--__P__-space-3) var(--__P__-space-3);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);text-align:center;font-size:var(--__P__-text-sm)}.__P__-readonly-label{line-height:1.4}.__P__-readonly-cta{appearance:none;border:0;cursor:pointer;padding:var(--__P__-space-2) var(--__P__-space-4);border-radius:999px;background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-readonly-cta:hover,.__P__-readonly-cta:focus-visible{filter:brightness(1.1)}.__P__-readonly-cta:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}.__P__-composer-footer{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 16px;margin:0 var(--__P__-space-3);border-top:1px solid var(--__P__-border);text-align:center;font-size:calc(11px * var(--__P__-text-scale));line-height:1.4;color:var(--__P__-fg-muted)}.__P__-disclaimer{max-width:320px;margin:0 auto;opacity:.9;letter-spacing:.01em}.__P__-poweredby{display:inline-flex;align-items:center;justify-content:center;gap:6px;color:inherit;text-decoration:none;opacity:.7;transition:opacity var(--__P__-dur-base) var(--__P__-ease);font-size:calc(11px * var(--__P__-text-scale));letter-spacing:.02em}.__P__-poweredby:hover{opacity:1}.__P__-poweredby-logo{height:12px;width:auto;display:inline-block;vertical-align:middle}.__P__-poweredby-bar{flex:none;display:flex;align-items:center;justify-content:center;padding:6px 16px;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated)}.__P__-menu-wrap{position:relative;display:inline-flex}.__P__-menu{position:absolute;top:100%;inset-inline-end:0;margin-top:6px;min-width:200px;padding:6px;background:var(--__P__-bg);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);box-shadow:var(--__P__-shadow-panel);z-index:10;display:flex;flex-direction:column;gap:2px;animation:__P__-menu-in var(--__P__-dur-base) var(--__P__-ease)}@media(prefers-reduced-motion:reduce){.__P__-menu{animation:none}}@keyframes __P__-menu-in{0%{opacity:0;transform:translateY(-4px) scale(.98);transform-origin:top right}to{opacity:1;transform:none}}.__P__-menu-item{all:unset;display:flex;align-items:center;gap:10px;padding:8px 10px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);border-radius:var(--__P__-radius-sm);cursor:pointer;user-select:none}.__P__-menu-item:hover{background:var(--__P__-bg-elevated)}.__P__-menu-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-menu-item[disabled]{opacity:.45;cursor:not-allowed}.__P__-menu-icon{display:inline-flex;width:16px;height:16px;color:var(--__P__-fg-muted)}.__P__-menu-icon svg{width:16px;height:16px}.__P__-menu-label{flex:1}.__P__-menu-check{display:inline-flex;color:var(--__P__-accent)}.__P__-menu-check svg{width:14px;height:14px}.__P__-menu-item-segmented{cursor:default}.__P__-menu-item-segmented:hover{background:transparent}.__P__-segmented{display:inline-flex;gap:2px;padding:2px;background:var(--__P__-bg-elevated);border-radius:var(--__P__-radius-sm)}.__P__-segment{all:unset;min-width:26px;padding:3px 8px;font-size:var(--__P__-text-xs);font-weight:600;letter-spacing:.02em;text-align:center;color:var(--__P__-fg-muted);border-radius:calc(var(--__P__-radius-sm) - 2px);cursor:pointer;transition:color .12s ease,background .12s ease}.__P__-segment:hover{color:var(--__P__-fg)}.__P__-segment[data-on=true]{background:var(--__P__-bg);color:var(--__P__-accent);box-shadow:var(--__P__-shadow-card)}.__P__-segment:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-resize-grip{position:absolute;width:18px;height:18px;display:flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);opacity:.45;transition:opacity var(--__P__-dur-base) var(--__P__-ease);z-index:2;touch-action:none;user-select:none}.__P__-resize-grip:hover,.__P__-resize-grip:focus-visible{opacity:1}.__P__-resize-grip svg{width:10px;height:10px}.__P__-resize-grip--bottom-left{bottom:2px;left:2px;cursor:nesw-resize;transform:scaleX(-1)}.__P__-resize-grip--bottom-right{bottom:2px;right:2px;cursor:nwse-resize}.__P__-resize-grip--top-left{top:2px;left:2px;cursor:nwse-resize;transform:rotate(180deg)}.__P__-resize-grip--top-right{top:2px;right:2px;cursor:nesw-resize;transform:scaleY(-1)}:host(:not([data-mode="open"])) .__P__-resize-grip{display:none}.__P__-messenger{display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-body,.__P__-messenger-pane{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-pane[hidden]{display:none}@keyframes __P__-view-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-module{display:flex;flex-direction:column;height:100%;min-height:0}@media(prefers-reduced-motion:no-preference){.__P__-module,.__P__-history{animation:__P__-view-in .18s var(--__P__-ease-out)}}.__P__-module-scroll{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-3);display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-home{container-type:inline-size;background:radial-gradient(125% 65% at 88% 0%,color-mix(in srgb,#fff 16%,transparent),transparent 55%),linear-gradient(180deg,var(--__P__-accent) 0%,var(--__P__-accent) 22%,color-mix(in srgb,var(--__P__-accent) 28%,var(--__P__-surface)) 44%,var(--__P__-surface) 70%);border-radius:var(--__P__-radius-lg) var(--__P__-radius-lg) 0 0}.__P__-home-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;background:transparent}.__P__-home-cards{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:4px 14px 16px}.__P__-module-pad{padding:var(--__P__-space-3) var(--__P__-space-3) 0}.__P__-module-empty{display:flex;flex-direction:column;align-items:center;gap:var(--__P__-space-3);padding:var(--__P__-space-8) var(--__P__-space-4);text-align:center;color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-module-retry{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border-strong);border-radius:var(--__P__-radius-sm);color:var(--__P__-fg);font-weight:600;cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-module-retry:hover{background:var(--__P__-hover);border-color:var(--__P__-accent)}.__P__-module-retry:active{background:var(--__P__-border)}.__P__-module-retry:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-help-list{flex:1;min-height:0;overflow-y:auto;padding-bottom:var(--__P__-space-3)}.__P__-help-group{display:flex;flex-direction:column}.__P__-help-section-title{position:sticky;top:0;z-index:1;margin:0;padding:var(--__P__-space-3) var(--__P__-space-5) var(--__P__-space-2);font-size:var(--__P__-text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--__P__-fg-muted);background:var(--__P__-bg)}.__P__-help-card{margin:0 var(--__P__-space-3) var(--__P__-space-3);background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden}.__P__-help-card .__P__-list-row{border-bottom:0;border-radius:0}.__P__-help-card .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-module-cta{padding:var(--__P__-space-3);border-top:1px solid var(--__P__-border)}.__P__-tabbar{display:flex;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);flex-shrink:0}.__P__-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-1);min-height:48px;padding:var(--__P__-space-2) var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600;transition:color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-tab:hover{color:var(--__P__-fg)}.__P__-tab[aria-selected=true]{color:var(--__P__-accent)}.__P__-tab:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-tab:active{background:var(--__P__-hover)}.__P__-tab-icon{position:relative;display:inline-flex}.__P__-tab-icon svg{width:22px;height:22px}.__P__-tab-badge{position:absolute;top:-4px;left:calc(50% + 6px);min-width:16px;height:16px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--__P__-accent);color:var(--__P__-on-accent);font-size:calc(10px * var(--__P__-text-scale));font-weight:600;line-height:1}.__P__-home-hero{flex-shrink:0;padding:var(--__P__-space-5) var(--__P__-space-5) var(--__P__-space-3);color:var(--__P__-on-accent);--__P__-focus: var(--__P__-on-accent)}.__P__-home-hero-top{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-3);min-height:32px}.__P__-home-brand{font-size:clamp(calc(12px * var(--__P__-text-scale)),calc(3.2cqi * var(--__P__-text-scale)),calc(14px * var(--__P__-text-scale)));font-weight:600;letter-spacing:.01em;color:color-mix(in srgb,#fff 82%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.__P__-home-brand-spacer{flex:1}.__P__-home-hero-actions{display:flex;align-items:center;gap:var(--__P__-space-2);flex-shrink:0}.__P__-home-hero-actions .__P__-icon-btn{color:#fff}.__P__-home-hero-actions .__P__-icon-btn:hover{background:color-mix(in srgb,#fff 18%,transparent);color:#fff}.__P__-home-hero-actions .__P__-icon-btn:active{background:color-mix(in srgb,#fff 26%,transparent)}.__P__-home-greeting{margin:28px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(19px * var(--__P__-text-scale)),calc(5.5cqi * var(--__P__-text-scale)),var(--__P__-text-2xl));font-weight:800;line-height:1.18;letter-spacing:-.01em;overflow-wrap:anywhere}.__P__-home-lead{margin:10px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(15px * var(--__P__-text-scale)),calc(4.2cqi * var(--__P__-text-scale)),var(--__P__-text-xl));font-weight:600;line-height:1.25;letter-spacing:-.005em;color:color-mix(in srgb,var(--__P__-on-accent) 78%,transparent);overflow-wrap:anywhere}.__P__-home-avatars{display:flex}.__P__-home-avatar{width:30px;height:30px;border-radius:999px;overflow:hidden;margin-inline-start:-10px;border:2px solid color-mix(in srgb,#fff 92%,transparent);box-shadow:0 1px 3px #0000002e;background:var(--__P__-surface);display:inline-flex;align-items:center;justify-content:center;font-size:var(--__P__-text-xs);font-weight:700;color:var(--__P__-fg)}.__P__-home-avatar:first-child{margin-inline-start:0}.__P__-home-avatar img{width:100%;height:100%;object-fit:cover}.__P__-home-content{background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-card);overflow:hidden}.__P__-home-content-title{padding:var(--__P__-space-4) var(--__P__-space-4) var(--__P__-space-3);font-size:var(--__P__-text-sm);font-weight:700}.__P__-home-content-list{display:flex;flex-direction:column;padding:0 var(--__P__-space-2) var(--__P__-space-2)}.__P__-home-content-list .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-home-card{display:block;width:100%;text-align:start;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);padding:var(--__P__-space-4);box-shadow:var(--__P__-shadow-card)}.__P__-home-card[data-interactive=true]{cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-home-card[data-interactive=true]:hover{background:var(--__P__-bg-elevated)}.__P__-home-card[data-interactive=true]:active{transform:translateY(1px)}.__P__-home-card[data-interactive=true]:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-recent-row{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-recent-avatar{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border-radius:999px;background:color-mix(in oklch,var(--__P__-accent) 14%,transparent);color:var(--__P__-accent)}.__P__-home-recent-avatar svg{width:20px;height:20px}.__P__-home-recent-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.__P__-home-recent-title{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-recent-preview{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-home-recent-at{color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);flex-shrink:0}.__P__-home-recent-dot{width:8px;height:8px;border-radius:999px;background:var(--__P__-accent);flex-shrink:0}.__P__-home-recent-row[data-unread=true] .__P__-home-recent-title{font-weight:700}.__P__-home-status{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-status-icon svg{width:22px;height:22px;color:var(--__P__-success)}.__P__-home-status[data-level=degraded] .__P__-home-status-icon svg{color:var(--__P__-warning)}.__P__-home-status[data-level=down] .__P__-home-status-icon svg{color:var(--__P__-danger)}.__P__-home-status-text{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-search{display:flex;align-items:center;gap:var(--__P__-space-2);width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);border:1px solid var(--__P__-border);background:var(--__P__-surface);text-align:start}.__P__-home-search[data-input=true]{background:var(--__P__-bg-elevated)}.__P__-home-search:hover{border-color:var(--__P__-border-strong)}.__P__-home-search:focus-visible,.__P__-home-search:focus-within{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-search-text{flex:1;color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-search-input{flex:1;border:0;background:transparent;font-size:calc(14px * var(--__P__-text-scale));color:var(--__P__-fg);outline:none}.__P__-home-search-icon svg{width:18px;height:18px;color:var(--__P__-accent)}.__P__-list-row{display:flex;align-items:center;gap:var(--__P__-space-3);width:100%;min-height:44px;text-align:start;padding:var(--__P__-space-3) var(--__P__-space-2);border-radius:var(--__P__-radius-sm)}.__P__-list-row:hover{background:var(--__P__-hover)}.__P__-list-row:active{background:var(--__P__-border)}.__P__-list-row:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-list-row-body{display:flex;flex-direction:column;min-width:0;flex:1}.__P__-list-row-title{font-weight:600;font-size:var(--__P__-text-md);line-height:1.35}.__P__-list-row-sub{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);margin-top:var(--__P__-space-1);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-list-row-chevron svg{width:18px;height:18px;color:var(--__P__-accent);flex-shrink:0}.__P__-back-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);flex-shrink:0}.__P__-back-title{flex:1;text-align:center;font-size:var(--__P__-text-md);font-weight:700;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-back-spacer{width:32px;height:1px}.__P__-content{display:flex;flex-direction:column;gap:14px;width:100%;max-width:68ch;margin:0 auto}.__P__-content-hero{width:100%;border-radius:var(--__P__-radius)}.__P__-content-subtitle{color:var(--__P__-fg-muted);margin:0}.__P__-content-frame{flex:1;min-height:0;width:100%;border:0;background:#fff}.__P__-news-list{display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-news-card{display:block;width:100%;text-align:start;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden;background:var(--__P__-surface)}.__P__-news-card{transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-news-card:hover{background:var(--__P__-bg-elevated)}.__P__-news-card:active{transform:translateY(1px)}.__P__-news-card:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-news-hero{width:100%;display:block}.__P__-news-body{display:flex;flex-direction:column;gap:6px;padding:14px 16px}.__P__-news-title{font-weight:700;font-size:var(--__P__-text-md)}.__P__-news-summary{color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale));display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-modules-empty{display:flex;align-items:center;justify-content:center;position:relative}.__P__-modules-empty-close{position:absolute;top:12px;inset-inline-end:12px}.__P__-modules-empty-text{color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-form{display:flex;flex-direction:column;gap:var(--__P__-space-4)}.__P__-field{display:flex;flex-direction:column;gap:6px}.__P__-field-label{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-field-req{color:var(--__P__-danger)}.__P__-field-input{width:100%;min-width:0;max-width:100%;box-sizing:border-box;padding:10px var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);color:var(--__P__-fg);font:inherit;font-size:var(--__P__-text-sm);resize:vertical;transition:border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-field-input:focus-visible{outline:none;border-color:var(--__P__-accent)}.__P__-field[data-invalid=true] .__P__-field-input{border-color:var(--__P__-danger)}.__P__-field-input[type=date],.__P__-field-input[type=time]{appearance:none;-webkit-appearance:none}@media(pointer:coarse){.__P__-field-input{font-size:max(16px,calc(16px * var(--__P__-text-scale)))}}.__P__-field-hint{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-field-error{font-size:var(--__P__-text-xs);color:var(--__P__-danger)}.__P__-field-choices{display:flex;flex-direction:column;gap:10px;padding-top:2px}.__P__-choice{display:flex;align-items:flex-start;gap:10px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);cursor:pointer}.__P__-choice input{margin-top:2px;accent-color:var(--__P__-accent)}.__P__-form-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--__P__-space-2);margin-top:var(--__P__-space-2)}.__P__-form-hint{margin-inline-end:auto;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-form-submit{padding:var(--__P__-space-2) var(--__P__-space-4);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);cursor:pointer;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-submit:hover:not(:disabled){filter:brightness(1.06)}.__P__-form-submit:disabled{opacity:.6;cursor:default}.__P__-form-skip{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:transparent;color:var(--__P__-fg-muted);font:inherit;font-size:var(--__P__-text-sm);cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-skip:hover:not(:disabled){background:var(--__P__-bg-elevated)}.__P__-form-gate{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated)}.__P__-form-gate-title{margin:0;font-size:var(--__P__-text-base);font-weight:700;color:var(--__P__-fg)}.__P__-form-gate-desc{margin:0 0 var(--__P__-space-1);font-size:var(--__P__-text-sm);color:var(--__P__-fg-muted)}.__P__-form-done{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border:1px dashed var(--__P__-border);border-radius:999px;align-self:center;font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted)}.__P__-form-done svg{width:14px;height:14px;color:var(--__P__-success, #22c55e)}.__P__-form-done[data-outcome=skipped] svg{color:var(--__P__-fg-muted)}.__P__-form-done-fill{border:0;background:none;padding:0 2px;cursor:pointer;font:inherit;font-weight:600;color:var(--__P__-accent)}.__P__-form-done-fill:hover{text-decoration:underline}details.__P__-form-done{display:block;padding:0;border-radius:var(--__P__-radius-md)}details[open].__P__-form-done{width:min(100%,420px);background:var(--__P__-surface)}.__P__-form-done-summary{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;cursor:pointer;list-style:none}.__P__-form-done-summary::-webkit-details-marker{display:none}.__P__-form-done-summary>svg:last-child{color:var(--__P__-fg-muted);transition:transform .15s var(--__P__-ease)}details[open]>.__P__-form-done-summary>svg:last-child{transform:rotate(90deg)}.__P__-form-answers{margin:0;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);display:grid;gap:var(--__P__-space-3);text-align:start}.__P__-form-answer{display:grid;gap:6px}.__P__-form-answer dt{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-form-answer dd{margin:0;padding:10px var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);font-size:var(--__P__-text-sm);font-weight:400;color:var(--__P__-fg);overflow-wrap:anywhere}.__P__-toolui{display:flex;flex-direction:column;gap:var(--__P__-space-3);margin-top:6px;padding:var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated);font-size:var(--__P__-text-sm)}.__P__-toolui-stale{opacity:.7}details.__P__-toolui-collapsible{gap:0}details.__P__-toolui-collapsible>:not(summary){margin-top:var(--__P__-space-3)}.__P__-toolui-collapsible>summary{cursor:pointer;list-style:none}.__P__-toolui-collapsible>summary::-webkit-details-marker{display:none}.__P__-toolui-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.__P__-toolui-title{margin-inline-end:auto;font-weight:600;color:var(--__P__-fg);overflow-wrap:anywhere}.__P__-toolui-badge{padding:3px 10px;border-radius:999px;border:1px solid var(--__P__-border);background:var(--__P__-bg);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600;white-space:nowrap}.__P__-toolui-badge-accent{border-color:color-mix(in oklab,var(--__P__-warning, #f59e0b) 55%,transparent);background:color-mix(in oklab,var(--__P__-warning, #f59e0b) 12%,transparent);color:var(--__P__-warning, #f59e0b)}.__P__-toolui-status{display:inline-flex;align-items:center;gap:5px;margin-inline-start:auto;font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted)}.__P__-toolui-status[data-status=completed],.__P__-toolui-status[data-status=approved]{color:var(--__P__-success, #16a34a)}.__P__-toolui-status[data-status=denied],.__P__-toolui-status[data-status=error]{color:var(--__P__-danger, #dc2626)}.__P__-toolui-desc{margin:0;padding:var(--__P__-space-3);border-radius:var(--__P__-radius-sm);background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);line-height:1.5}.__P__-toolui-section{display:flex;flex-direction:column;gap:6px;padding:var(--__P__-space-3);border-radius:var(--__P__-radius-sm);background:var(--__P__-bg);border:1px solid var(--__P__-border)}.__P__-toolui-label{font-size:var(--__P__-text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--__P__-fg-muted)}.__P__-toolui-text{margin:0;font-size:var(--__P__-text-base);font-weight:600;color:var(--__P__-fg);line-height:1.4;overflow-wrap:anywhere}.__P__-toolui-code{margin:0;max-height:220px;overflow:auto;color:var(--__P__-fg);font-size:var(--__P__-text-xs);white-space:pre-wrap;word-break:break-word}.__P__-toolui-code[data-error=true]{color:var(--__P__-danger, #dc2626)}.__P__-toolui-note{margin:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}:host([dir="rtl"]) .__P__-icon-dir{transform:scaleX(-1)}:host([dir="rtl"]) .__P__-field-input[type=date],:host([dir="rtl"]) .__P__-field-input[type=time]{position:relative;text-align:right;padding-left:34px}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-datetime-edit,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-datetime-edit{text-align:right}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-calendar-picker-indicator,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-calendar-picker-indicator{position:absolute;left:var(--__P__-space-3);margin:0}\n';
|
|
1242
1401
|
|
|
1243
1402
|
// src/styles/standalone.css
|
|
1244
1403
|
var standalone_default = ".__P__-standalone-page{margin:0;height:100vh;background:var(--__P__-bg, #fff);display:grid;place-items:stretch}\n";
|
|
@@ -1326,22 +1485,22 @@ function attachAdoptedSheet(shadow, doc) {
|
|
|
1326
1485
|
}
|
|
1327
1486
|
}
|
|
1328
1487
|
function applyThemeOverrides(host, overrides) {
|
|
1329
|
-
const
|
|
1330
|
-
if (overrides.accent) host.style.setProperty(`--${
|
|
1331
|
-
if (overrides.accentText) host.style.setProperty(`--${
|
|
1332
|
-
if (overrides.radius) host.style.setProperty(`--${
|
|
1333
|
-
if (overrides.fontFamily) host.style.setProperty(`--${
|
|
1488
|
+
const p36 = BRAND.cssPrefix;
|
|
1489
|
+
if (overrides.accent) host.style.setProperty(`--${p36}-accent-user`, overrides.accent);
|
|
1490
|
+
if (overrides.accentText) host.style.setProperty(`--${p36}-accent-text-user`, overrides.accentText);
|
|
1491
|
+
if (overrides.radius) host.style.setProperty(`--${p36}-radius`, overrides.radius);
|
|
1492
|
+
if (overrides.fontFamily) host.style.setProperty(`--${p36}-font`, overrides.fontFamily);
|
|
1334
1493
|
}
|
|
1335
1494
|
function applyThemeMode(host, mode) {
|
|
1336
1495
|
host.dataset.theme = mode;
|
|
1337
1496
|
}
|
|
1338
1497
|
function applySize(host, size) {
|
|
1339
|
-
const
|
|
1340
|
-
if (size.width !== void 0) host.style.setProperty(`--${
|
|
1341
|
-
if (size.height !== void 0) host.style.setProperty(`--${
|
|
1342
|
-
if (size.expanded?.width !== void 0) host.style.setProperty(`--${
|
|
1343
|
-
if (size.expanded?.height !== void 0) host.style.setProperty(`--${
|
|
1344
|
-
if (size.inset !== void 0) host.style.setProperty(`--${
|
|
1498
|
+
const p36 = BRAND.cssPrefix;
|
|
1499
|
+
if (size.width !== void 0) host.style.setProperty(`--${p36}-panel-w`, size.width);
|
|
1500
|
+
if (size.height !== void 0) host.style.setProperty(`--${p36}-panel-h`, size.height);
|
|
1501
|
+
if (size.expanded?.width !== void 0) host.style.setProperty(`--${p36}-expanded-w`, size.expanded.width);
|
|
1502
|
+
if (size.expanded?.height !== void 0) host.style.setProperty(`--${p36}-expanded-h`, size.expanded.height);
|
|
1503
|
+
if (size.inset !== void 0) host.style.setProperty(`--${p36}-panel-inset`, size.inset);
|
|
1345
1504
|
}
|
|
1346
1505
|
function applyPosition(host, pos) {
|
|
1347
1506
|
host.dataset.position = pos;
|
|
@@ -1445,7 +1604,7 @@ function createAuth(opts) {
|
|
|
1445
1604
|
}
|
|
1446
1605
|
|
|
1447
1606
|
// src/core/version.ts
|
|
1448
|
-
var ELEMENTS_VERSION = true ? "0.
|
|
1607
|
+
var ELEMENTS_VERSION = true ? "0.47.0" : "0.0.0-dev";
|
|
1449
1608
|
var ELEMENTS_VERSION_PARAM = "_ev";
|
|
1450
1609
|
|
|
1451
1610
|
// src/stream/types.ts
|
|
@@ -1530,11 +1689,11 @@ function toBase64Url(json) {
|
|
|
1530
1689
|
var nonEmpty = (ctx) => ctx && Object.keys(ctx).length > 0 ? ctx : void 0;
|
|
1531
1690
|
function encodeContext(user, page) {
|
|
1532
1691
|
const u = nonEmpty(user);
|
|
1533
|
-
const
|
|
1534
|
-
if (!u && !
|
|
1692
|
+
const p36 = nonEmpty(page);
|
|
1693
|
+
if (!u && !p36) return void 0;
|
|
1535
1694
|
const envelope = {};
|
|
1536
1695
|
if (u) envelope.user = u;
|
|
1537
|
-
if (
|
|
1696
|
+
if (p36) envelope.page = p36;
|
|
1538
1697
|
return toBase64Url(JSON.stringify(envelope));
|
|
1539
1698
|
}
|
|
1540
1699
|
|
|
@@ -1544,8 +1703,8 @@ function parseWireDate(value) {
|
|
|
1544
1703
|
const ms = Date.parse(value);
|
|
1545
1704
|
return Number.isFinite(ms) ? ms : void 0;
|
|
1546
1705
|
}
|
|
1547
|
-
function toolPartType(
|
|
1548
|
-
const bare =
|
|
1706
|
+
function toolPartType(toolName2) {
|
|
1707
|
+
const bare = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
|
|
1549
1708
|
return `tool-${bare}`;
|
|
1550
1709
|
}
|
|
1551
1710
|
function toolNameFromType(type) {
|
|
@@ -1633,8 +1792,8 @@ function buildSendMessageRequest(params) {
|
|
|
1633
1792
|
if (tools?.length) body.data = { tools };
|
|
1634
1793
|
return body;
|
|
1635
1794
|
}
|
|
1636
|
-
function isResolvedToolPart(
|
|
1637
|
-
return
|
|
1795
|
+
function isResolvedToolPart(p36) {
|
|
1796
|
+
return p36.state === "output-available" || p36.state === "output-error" || p36.state === "output-denied" || p36.approval?.approved !== void 0;
|
|
1638
1797
|
}
|
|
1639
1798
|
function normalizeToolRef(ref) {
|
|
1640
1799
|
if (typeof ref === "string") return ref ? { code: ref } : null;
|
|
@@ -1642,29 +1801,29 @@ function normalizeToolRef(ref) {
|
|
|
1642
1801
|
}
|
|
1643
1802
|
function messageToWireParts(m) {
|
|
1644
1803
|
const out = [];
|
|
1645
|
-
for (const
|
|
1646
|
-
if (
|
|
1804
|
+
for (const p36 of m.parts) {
|
|
1805
|
+
if (p36.kind === "step-start") {
|
|
1647
1806
|
out.push({ type: "step-start" });
|
|
1648
1807
|
}
|
|
1649
|
-
if (
|
|
1650
|
-
out.push({ type: "reasoning", text:
|
|
1808
|
+
if (p36.kind === "reasoning" && p36.text) {
|
|
1809
|
+
out.push({ type: "reasoning", text: p36.text, state: p36.done ? "done" : "streaming" });
|
|
1651
1810
|
}
|
|
1652
|
-
if (
|
|
1653
|
-
out.push({ text:
|
|
1811
|
+
if (p36.kind === "text" && p36.text) {
|
|
1812
|
+
out.push({ text: p36.text, type: "text" });
|
|
1654
1813
|
}
|
|
1655
|
-
if (
|
|
1656
|
-
out.push({ mediaType:
|
|
1814
|
+
if (p36.kind === "file" && p36.url) {
|
|
1815
|
+
out.push({ mediaType: p36.mediaType, type: "file", url: p36.url });
|
|
1657
1816
|
}
|
|
1658
|
-
if (
|
|
1817
|
+
if (p36.kind === "tool" && isResolvedToolPart(p36)) {
|
|
1659
1818
|
const part = {
|
|
1660
|
-
type: toolPartType(
|
|
1661
|
-
toolCallId:
|
|
1662
|
-
state:
|
|
1819
|
+
type: toolPartType(p36.toolName),
|
|
1820
|
+
toolCallId: p36.toolCallId,
|
|
1821
|
+
state: p36.state
|
|
1663
1822
|
};
|
|
1664
|
-
if (
|
|
1665
|
-
if (
|
|
1666
|
-
if (
|
|
1667
|
-
if (
|
|
1823
|
+
if (p36.input !== void 0) part.input = p36.input;
|
|
1824
|
+
if (p36.output !== void 0) part.output = p36.output;
|
|
1825
|
+
if (p36.error !== void 0) part.errorText = p36.error;
|
|
1826
|
+
if (p36.approval && p36.approval.approved !== void 0) part.approval = p36.approval;
|
|
1668
1827
|
out.push(part);
|
|
1669
1828
|
}
|
|
1670
1829
|
}
|
|
@@ -2333,12 +2492,13 @@ function makeAssistantMessage() {
|
|
|
2333
2492
|
};
|
|
2334
2493
|
}
|
|
2335
2494
|
function makeInstantWelcomeMessage(m) {
|
|
2495
|
+
const id = uuid7();
|
|
2336
2496
|
return toReactive({
|
|
2337
|
-
id
|
|
2497
|
+
id,
|
|
2338
2498
|
role: m.role,
|
|
2339
2499
|
createdAt: Date.now(),
|
|
2340
2500
|
status: "complete",
|
|
2341
|
-
parts: [{ kind: "text", id: `${
|
|
2501
|
+
parts: [{ kind: "text", id: `${id}-t0`, text: m.text, done: true }]
|
|
2342
2502
|
});
|
|
2343
2503
|
}
|
|
2344
2504
|
function toReactive(m) {
|
|
@@ -2399,7 +2559,7 @@ function fromWireMessage(w) {
|
|
|
2399
2559
|
};
|
|
2400
2560
|
}
|
|
2401
2561
|
return null;
|
|
2402
|
-
}).filter((
|
|
2562
|
+
}).filter((p36) => p36 !== null);
|
|
2403
2563
|
return {
|
|
2404
2564
|
id: w.id,
|
|
2405
2565
|
role: w.role,
|
|
@@ -2433,43 +2593,43 @@ function assistantText(m) {
|
|
|
2433
2593
|
}
|
|
2434
2594
|
return out;
|
|
2435
2595
|
}
|
|
2436
|
-
function partToReactive(
|
|
2437
|
-
if (
|
|
2438
|
-
return { kind:
|
|
2596
|
+
function partToReactive(p36) {
|
|
2597
|
+
if (p36.kind === "text" || p36.kind === "reasoning") {
|
|
2598
|
+
return { kind: p36.kind, id: p36.id, textSig: signal(p36.text), doneSig: signal(p36.done) };
|
|
2439
2599
|
}
|
|
2440
|
-
if (
|
|
2600
|
+
if (p36.kind === "tool") {
|
|
2441
2601
|
return {
|
|
2442
2602
|
kind: "tool",
|
|
2443
|
-
toolCallId:
|
|
2444
|
-
toolName:
|
|
2445
|
-
inputPartialSig: signal(
|
|
2446
|
-
inputSig: signal(
|
|
2447
|
-
outputSig: signal(
|
|
2448
|
-
errorSig: signal(
|
|
2449
|
-
stateSig: signal(
|
|
2450
|
-
approvalSig: signal(
|
|
2603
|
+
toolCallId: p36.toolCallId,
|
|
2604
|
+
toolName: p36.toolName,
|
|
2605
|
+
inputPartialSig: signal(p36.inputPartial),
|
|
2606
|
+
inputSig: signal(p36.input),
|
|
2607
|
+
outputSig: signal(p36.output),
|
|
2608
|
+
errorSig: signal(p36.error),
|
|
2609
|
+
stateSig: signal(p36.state),
|
|
2610
|
+
approvalSig: signal(p36.approval)
|
|
2451
2611
|
};
|
|
2452
2612
|
}
|
|
2453
|
-
return
|
|
2613
|
+
return p36;
|
|
2454
2614
|
}
|
|
2455
|
-
function partFromReactive(
|
|
2456
|
-
if (
|
|
2457
|
-
return { kind:
|
|
2615
|
+
function partFromReactive(p36) {
|
|
2616
|
+
if (p36.kind === "text" || p36.kind === "reasoning") {
|
|
2617
|
+
return { kind: p36.kind, id: p36.id, text: p36.textSig.value, done: p36.doneSig.value };
|
|
2458
2618
|
}
|
|
2459
|
-
if (
|
|
2619
|
+
if (p36.kind === "tool") {
|
|
2460
2620
|
return {
|
|
2461
2621
|
kind: "tool",
|
|
2462
|
-
toolCallId:
|
|
2463
|
-
toolName:
|
|
2464
|
-
inputPartial:
|
|
2465
|
-
input:
|
|
2466
|
-
output:
|
|
2467
|
-
error:
|
|
2468
|
-
state:
|
|
2469
|
-
approval:
|
|
2622
|
+
toolCallId: p36.toolCallId,
|
|
2623
|
+
toolName: p36.toolName,
|
|
2624
|
+
inputPartial: p36.inputPartialSig.value,
|
|
2625
|
+
input: p36.inputSig.value,
|
|
2626
|
+
output: p36.outputSig.value,
|
|
2627
|
+
error: p36.errorSig.value,
|
|
2628
|
+
state: p36.stateSig.value,
|
|
2629
|
+
approval: p36.approvalSig.value
|
|
2470
2630
|
};
|
|
2471
2631
|
}
|
|
2472
|
-
return
|
|
2632
|
+
return p36;
|
|
2473
2633
|
}
|
|
2474
2634
|
|
|
2475
2635
|
// src/stream/reducer.ts
|
|
@@ -2515,8 +2675,8 @@ var StreamReducer = class {
|
|
|
2515
2675
|
ensureTextPart(m, "text", chunk.id);
|
|
2516
2676
|
return;
|
|
2517
2677
|
case "text-delta": {
|
|
2518
|
-
const
|
|
2519
|
-
|
|
2678
|
+
const p36 = ensureTextPart(m, "text", chunk.id);
|
|
2679
|
+
p36.textSig.value += chunk.delta;
|
|
2520
2680
|
return;
|
|
2521
2681
|
}
|
|
2522
2682
|
case "text-end":
|
|
@@ -2526,8 +2686,8 @@ var StreamReducer = class {
|
|
|
2526
2686
|
ensureTextPart(m, "reasoning", chunk.id).doneSig.value = false;
|
|
2527
2687
|
return;
|
|
2528
2688
|
case "reasoning-delta": {
|
|
2529
|
-
const
|
|
2530
|
-
|
|
2689
|
+
const p36 = ensureTextPart(m, "reasoning", chunk.id);
|
|
2690
|
+
p36.textSig.value += chunk.delta;
|
|
2531
2691
|
return;
|
|
2532
2692
|
}
|
|
2533
2693
|
case "reasoning-end":
|
|
@@ -2577,19 +2737,19 @@ var StreamReducer = class {
|
|
|
2577
2737
|
}
|
|
2578
2738
|
};
|
|
2579
2739
|
function ensureTextPart(m, kind, id) {
|
|
2580
|
-
const existing = m.partsSig.value.find((
|
|
2740
|
+
const existing = m.partsSig.value.find((p36) => p36.kind === kind && p36.id === id);
|
|
2581
2741
|
if (existing) return existing;
|
|
2582
2742
|
const part = { kind, id, textSig: signal2(""), doneSig: signal2(false) };
|
|
2583
2743
|
appendPart(m, part);
|
|
2584
2744
|
return part;
|
|
2585
2745
|
}
|
|
2586
|
-
function ensureToolPart(m, toolCallId,
|
|
2587
|
-
const existing = m.partsSig.value.find((
|
|
2746
|
+
function ensureToolPart(m, toolCallId, toolName2) {
|
|
2747
|
+
const existing = m.partsSig.value.find((p36) => p36.kind === "tool" && p36.toolCallId === toolCallId);
|
|
2588
2748
|
if (existing) return existing;
|
|
2589
2749
|
const part = {
|
|
2590
2750
|
kind: "tool",
|
|
2591
2751
|
toolCallId,
|
|
2592
|
-
toolName:
|
|
2752
|
+
toolName: toolName2 ?? "tool",
|
|
2593
2753
|
inputPartialSig: signal2(""),
|
|
2594
2754
|
inputSig: signal2(void 0),
|
|
2595
2755
|
outputSig: signal2(void 0),
|
|
@@ -2604,7 +2764,7 @@ function appendPart(m, part) {
|
|
|
2604
2764
|
m.partsSig.value = [...m.partsSig.value, part];
|
|
2605
2765
|
}
|
|
2606
2766
|
function appendSource(m, source) {
|
|
2607
|
-
if (m.partsSig.value.some((
|
|
2767
|
+
if (m.partsSig.value.some((p36) => p36.kind === "source" && p36.sourceId === source.sourceId)) return;
|
|
2608
2768
|
appendPart(m, source);
|
|
2609
2769
|
}
|
|
2610
2770
|
function applyTool(m, chunk) {
|
|
@@ -2613,37 +2773,37 @@ function applyTool(m, chunk) {
|
|
|
2613
2773
|
ensureToolPart(m, chunk.toolCallId, chunk.toolName);
|
|
2614
2774
|
return;
|
|
2615
2775
|
case "tool-input-delta": {
|
|
2616
|
-
const
|
|
2617
|
-
|
|
2776
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2777
|
+
p36.inputPartialSig.value += chunk.inputTextDelta;
|
|
2618
2778
|
return;
|
|
2619
2779
|
}
|
|
2620
2780
|
case "tool-input-available": {
|
|
2621
|
-
const
|
|
2622
|
-
|
|
2623
|
-
|
|
2781
|
+
const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
|
|
2782
|
+
p36.inputSig.value = chunk.input;
|
|
2783
|
+
p36.stateSig.value = "input-available";
|
|
2624
2784
|
return;
|
|
2625
2785
|
}
|
|
2626
2786
|
case "tool-approval-request": {
|
|
2627
|
-
const
|
|
2628
|
-
|
|
2629
|
-
|
|
2787
|
+
const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
|
|
2788
|
+
p36.approvalSig.value = { id: chunk.approvalId };
|
|
2789
|
+
p36.stateSig.value = "approval-requested";
|
|
2630
2790
|
return;
|
|
2631
2791
|
}
|
|
2632
2792
|
case "tool-output-available": {
|
|
2633
|
-
const
|
|
2634
|
-
|
|
2635
|
-
|
|
2793
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2794
|
+
p36.outputSig.value = chunk.output;
|
|
2795
|
+
p36.stateSig.value = "output-available";
|
|
2636
2796
|
return;
|
|
2637
2797
|
}
|
|
2638
2798
|
case "tool-output-error": {
|
|
2639
|
-
const
|
|
2640
|
-
|
|
2641
|
-
|
|
2799
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2800
|
+
p36.errorSig.value = chunk.errorText;
|
|
2801
|
+
p36.stateSig.value = "output-error";
|
|
2642
2802
|
return;
|
|
2643
2803
|
}
|
|
2644
2804
|
case "tool-output-denied": {
|
|
2645
|
-
const
|
|
2646
|
-
|
|
2805
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2806
|
+
p36.stateSig.value = "output-denied";
|
|
2647
2807
|
return;
|
|
2648
2808
|
}
|
|
2649
2809
|
default:
|
|
@@ -3340,24 +3500,24 @@ import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef6
|
|
|
3340
3500
|
import { useEffect as useEffect2, useRef } from "preact/hooks";
|
|
3341
3501
|
import { jsx as jsx3 } from "preact/jsx-runtime";
|
|
3342
3502
|
function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, strings }) {
|
|
3343
|
-
const
|
|
3503
|
+
const p36 = BRAND.cssPrefix;
|
|
3344
3504
|
const dragRef = useRef(null);
|
|
3345
3505
|
useEffect2(() => {
|
|
3346
3506
|
if (!panelEl) return;
|
|
3347
3507
|
const style = panelEl.style;
|
|
3348
|
-
if (resize.minWidth) style.setProperty(`--${
|
|
3349
|
-
if (resize.maxWidth) style.setProperty(`--${
|
|
3350
|
-
if (resize.minHeight) style.setProperty(`--${
|
|
3351
|
-
if (resize.maxHeight) style.setProperty(`--${
|
|
3508
|
+
if (resize.minWidth) style.setProperty(`--${p36}-resize-min-w`, resize.minWidth);
|
|
3509
|
+
if (resize.maxWidth) style.setProperty(`--${p36}-resize-max-w`, resize.maxWidth);
|
|
3510
|
+
if (resize.minHeight) style.setProperty(`--${p36}-resize-min-h`, resize.minHeight);
|
|
3511
|
+
if (resize.maxHeight) style.setProperty(`--${p36}-resize-max-h`, resize.maxHeight);
|
|
3352
3512
|
if (initialSize) {
|
|
3353
|
-
style.setProperty(`--${
|
|
3354
|
-
style.setProperty(`--${
|
|
3513
|
+
style.setProperty(`--${p36}-widget-w`, `${initialSize.width}px`);
|
|
3514
|
+
style.setProperty(`--${p36}-widget-h`, `${initialSize.height}px`);
|
|
3355
3515
|
}
|
|
3356
|
-
}, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight,
|
|
3516
|
+
}, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p36, initialSize]);
|
|
3357
3517
|
if (!panelEl) return null;
|
|
3358
3518
|
const isTop = position.startsWith("top-");
|
|
3359
3519
|
const isRight = position.endsWith("-right");
|
|
3360
|
-
const cornerClass = `${
|
|
3520
|
+
const cornerClass = `${p36}-resize-grip ${p36}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
|
|
3361
3521
|
const onPointerDown = (e) => {
|
|
3362
3522
|
if (!panelEl) return;
|
|
3363
3523
|
const target = e.currentTarget;
|
|
@@ -3382,8 +3542,8 @@ function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, stri
|
|
|
3382
3542
|
if (!d || e.pointerId !== d.pointerId || !panelEl) return;
|
|
3383
3543
|
const dx = (e.clientX - d.startX) * d.dirX;
|
|
3384
3544
|
const dy = (e.clientY - d.startY) * d.dirY;
|
|
3385
|
-
panelEl.style.setProperty(`--${
|
|
3386
|
-
panelEl.style.setProperty(`--${
|
|
3545
|
+
panelEl.style.setProperty(`--${p36}-widget-w`, `${d.startW + dx}px`);
|
|
3546
|
+
panelEl.style.setProperty(`--${p36}-widget-h`, `${d.startH + dy}px`);
|
|
3387
3547
|
};
|
|
3388
3548
|
const onPointerUp = (e) => {
|
|
3389
3549
|
const d = dragRef.current;
|
|
@@ -4120,7 +4280,7 @@ function usePopoverMenu({ itemCount, initialFocusIndex }) {
|
|
|
4120
4280
|
// src/ui/overflow-menu.tsx
|
|
4121
4281
|
import { jsx as jsx8, jsxs as jsxs6 } from "preact/jsx-runtime";
|
|
4122
4282
|
function OverflowMenu({ items, triggerLabel }) {
|
|
4123
|
-
const
|
|
4283
|
+
const p36 = BRAND.cssPrefix;
|
|
4124
4284
|
const menu = usePopoverMenu({ itemCount: items.length });
|
|
4125
4285
|
const handleSelect = (item) => {
|
|
4126
4286
|
if (item.disabled) return;
|
|
@@ -4143,13 +4303,13 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4143
4303
|
e.stopPropagation();
|
|
4144
4304
|
pickSegment(item, segs[next].value);
|
|
4145
4305
|
};
|
|
4146
|
-
return /* @__PURE__ */ jsxs6("div", { class: `${
|
|
4306
|
+
return /* @__PURE__ */ jsxs6("div", { class: `${p36}-menu-wrap`, children: [
|
|
4147
4307
|
/* @__PURE__ */ jsx8(
|
|
4148
4308
|
"button",
|
|
4149
4309
|
{
|
|
4150
4310
|
ref: menu.triggerRef,
|
|
4151
4311
|
type: "button",
|
|
4152
|
-
class: `${
|
|
4312
|
+
class: `${p36}-icon-btn`,
|
|
4153
4313
|
"aria-label": triggerLabel,
|
|
4154
4314
|
"aria-haspopup": "menu",
|
|
4155
4315
|
"aria-expanded": menu.open,
|
|
@@ -4163,7 +4323,7 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4163
4323
|
"div",
|
|
4164
4324
|
{
|
|
4165
4325
|
ref: menu.menuRef,
|
|
4166
|
-
class: `${
|
|
4326
|
+
class: `${p36}-menu`,
|
|
4167
4327
|
role: "menu",
|
|
4168
4328
|
"aria-label": triggerLabel,
|
|
4169
4329
|
onKeyDown: menu.onMenuKey,
|
|
@@ -4173,14 +4333,14 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4173
4333
|
"div",
|
|
4174
4334
|
{
|
|
4175
4335
|
role: "menuitem",
|
|
4176
|
-
class: `${
|
|
4336
|
+
class: `${p36}-menu-item ${p36}-menu-item-segmented`,
|
|
4177
4337
|
"aria-label": item.label,
|
|
4178
4338
|
tabIndex: -1,
|
|
4179
4339
|
onKeyDown: (e) => onSegmentRowKey(e, item),
|
|
4180
4340
|
children: [
|
|
4181
|
-
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${
|
|
4182
|
-
/* @__PURE__ */ jsx8("span", { class: `${
|
|
4183
|
-
/* @__PURE__ */ jsx8("span", { class: `${
|
|
4341
|
+
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
|
|
4342
|
+
/* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
|
|
4343
|
+
/* @__PURE__ */ jsx8("span", { class: `${p36}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
|
|
4184
4344
|
const active = seg.value === item.value;
|
|
4185
4345
|
return /* @__PURE__ */ jsx8(
|
|
4186
4346
|
"button",
|
|
@@ -4188,7 +4348,7 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4188
4348
|
type: "button",
|
|
4189
4349
|
role: "menuitemradio",
|
|
4190
4350
|
"aria-checked": active,
|
|
4191
|
-
class: `${
|
|
4351
|
+
class: `${p36}-segment`,
|
|
4192
4352
|
"data-on": active ? "true" : void 0,
|
|
4193
4353
|
lang: seg.lang,
|
|
4194
4354
|
title: seg.value,
|
|
@@ -4208,14 +4368,14 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4208
4368
|
{
|
|
4209
4369
|
type: "button",
|
|
4210
4370
|
role: "menuitem",
|
|
4211
|
-
class: `${
|
|
4371
|
+
class: `${p36}-menu-item`,
|
|
4212
4372
|
"aria-pressed": item.type === "switch" ? item.on : void 0,
|
|
4213
4373
|
disabled: item.disabled,
|
|
4214
4374
|
onClick: () => handleSelect(item),
|
|
4215
4375
|
children: [
|
|
4216
|
-
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${
|
|
4217
|
-
/* @__PURE__ */ jsx8("span", { class: `${
|
|
4218
|
-
item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${
|
|
4376
|
+
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
|
|
4377
|
+
/* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
|
|
4378
|
+
item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
|
|
4219
4379
|
]
|
|
4220
4380
|
},
|
|
4221
4381
|
item.id
|
|
@@ -4458,6 +4618,7 @@ function DynamicForm({
|
|
|
4458
4618
|
onSubmit,
|
|
4459
4619
|
skipLabel,
|
|
4460
4620
|
onSkip,
|
|
4621
|
+
footerHint,
|
|
4461
4622
|
disabled,
|
|
4462
4623
|
rootTestId,
|
|
4463
4624
|
submitTestId,
|
|
@@ -4504,6 +4665,7 @@ function DynamicForm({
|
|
|
4504
4665
|
field.name
|
|
4505
4666
|
)),
|
|
4506
4667
|
/* @__PURE__ */ jsxs8("div", { class: `${p10}-form-actions`, children: [
|
|
4668
|
+
footerHint ? /* @__PURE__ */ jsx10("span", { class: `${p10}-form-hint`, children: footerHint }) : null,
|
|
4507
4669
|
skipLabel && onSkip ? /* @__PURE__ */ jsx10("button", { type: "button", class: `${p10}-form-skip`, onClick: onSkip, disabled, "data-testid": skipTestId, children: skipLabel }) : null,
|
|
4508
4670
|
/* @__PURE__ */ jsx10("button", { type: "submit", class: `${p10}-form-submit`, disabled, "data-testid": submitTestId, children: submitLabel })
|
|
4509
4671
|
] })
|
|
@@ -4758,9 +4920,9 @@ function FormDoneMarker({
|
|
|
4758
4920
|
import { useComputed as useComputed5 } from "@preact/signals";
|
|
4759
4921
|
|
|
4760
4922
|
// src/stream/constants.ts
|
|
4761
|
-
function isAskUserInputTool(
|
|
4762
|
-
if (!
|
|
4763
|
-
const name =
|
|
4923
|
+
function isAskUserInputTool(toolName2) {
|
|
4924
|
+
if (!toolName2) return false;
|
|
4925
|
+
const name = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
|
|
4764
4926
|
return name === "ask-user-input" || name === "ask_user_input" || name === "request-user-input" || name === "request_user_input";
|
|
4765
4927
|
}
|
|
4766
4928
|
|
|
@@ -4854,36 +5016,92 @@ function SourceView({ part, strings }) {
|
|
|
4854
5016
|
|
|
4855
5017
|
// src/ui/tool-approval.tsx
|
|
4856
5018
|
import { useComputed as useComputed2, useSignal } from "@preact/signals";
|
|
4857
|
-
|
|
5019
|
+
|
|
5020
|
+
// src/ui/tool-card.tsx
|
|
5021
|
+
import { jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
|
|
4858
5022
|
var p13 = BRAND.cssPrefix;
|
|
4859
|
-
function
|
|
4860
|
-
|
|
5023
|
+
function toolName(raw) {
|
|
5024
|
+
if (raw.startsWith("tool:")) return raw.slice(5);
|
|
5025
|
+
if (raw.startsWith("tool-")) return raw.slice(5);
|
|
5026
|
+
return raw;
|
|
5027
|
+
}
|
|
5028
|
+
function statusOf(state, approval) {
|
|
5029
|
+
if (state === "output-error") return "error";
|
|
5030
|
+
if (state === "output-denied" || approval?.approved === false) return "denied";
|
|
5031
|
+
if (state === "output-available") return "completed";
|
|
5032
|
+
if (approval?.approved === true) return "approved";
|
|
5033
|
+
return "pending";
|
|
5034
|
+
}
|
|
5035
|
+
var ICON = {
|
|
5036
|
+
completed: "\u2713",
|
|
5037
|
+
approved: "\u2713",
|
|
5038
|
+
denied: "\u2715",
|
|
5039
|
+
error: "\u26A0",
|
|
5040
|
+
pending: "\u2022"
|
|
5041
|
+
};
|
|
5042
|
+
function ToolStatus({
|
|
5043
|
+
state,
|
|
5044
|
+
approval,
|
|
5045
|
+
strings
|
|
5046
|
+
}) {
|
|
5047
|
+
const status = statusOf(state, approval);
|
|
5048
|
+
const label = status === "completed" ? strings.statusCompleted : status === "approved" ? strings.approved : status === "denied" ? strings.statusDenied : status === "error" ? strings.statusError : "";
|
|
5049
|
+
if (!label) return null;
|
|
5050
|
+
return /* @__PURE__ */ jsxs11("span", { class: `${p13}-toolui-status`, "data-status": status, children: [
|
|
5051
|
+
/* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-status-icon`, "aria-hidden": "true", children: ICON[status] }),
|
|
5052
|
+
label
|
|
5053
|
+
] });
|
|
5054
|
+
}
|
|
5055
|
+
function ToolSection({ label, value, error }) {
|
|
5056
|
+
const text = error ? String(value ?? "") : pretty(unwrapResult(value));
|
|
5057
|
+
if (!text) return null;
|
|
5058
|
+
return /* @__PURE__ */ jsxs11("div", { class: `${p13}-toolui-section`, children: [
|
|
5059
|
+
/* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-label`, children: label }),
|
|
5060
|
+
/* @__PURE__ */ jsx14("pre", { class: `${p13}-toolui-code`, "data-error": error ? "true" : void 0, children: text })
|
|
5061
|
+
] });
|
|
4861
5062
|
}
|
|
5063
|
+
function unwrapResult(output) {
|
|
5064
|
+
if (output && typeof output === "object") {
|
|
5065
|
+
const rec = output;
|
|
5066
|
+
if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
|
|
5067
|
+
}
|
|
5068
|
+
return output;
|
|
5069
|
+
}
|
|
5070
|
+
function pretty(value) {
|
|
5071
|
+
if (value == null) return "";
|
|
5072
|
+
try {
|
|
5073
|
+
const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
|
|
5074
|
+
if (!json || json === "{}" || json === "[]" || json === '""') return "";
|
|
5075
|
+
return json.length > 800 ? `${json.slice(0, 800)}\u2026` : json;
|
|
5076
|
+
} catch {
|
|
5077
|
+
return "";
|
|
5078
|
+
}
|
|
5079
|
+
}
|
|
5080
|
+
|
|
5081
|
+
// src/ui/tool-approval.tsx
|
|
5082
|
+
import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
|
|
5083
|
+
var p14 = BRAND.cssPrefix;
|
|
4862
5084
|
function ToolApproval({ part, strings, active, onDecision }) {
|
|
4863
5085
|
const approval = useComputed2(() => part.approvalSig.value);
|
|
5086
|
+
const state = useComputed2(() => part.stateSig.value);
|
|
4864
5087
|
const input = useComputed2(() => part.inputSig.value);
|
|
5088
|
+
const output = useComputed2(() => part.outputSig.value);
|
|
5089
|
+
const error = useComputed2(() => part.errorSig.value);
|
|
4865
5090
|
const reason = useSignal("");
|
|
4866
|
-
const decided = approval.value?.approved !== void 0;
|
|
4867
|
-
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
/* @__PURE__ */
|
|
4871
|
-
/* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) }),
|
|
4872
|
-
ap?.reason ? /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-value`, children: ap.reason }) : null
|
|
4873
|
-
] });
|
|
4874
|
-
}
|
|
4875
|
-
const args = summarizeInput(input.value);
|
|
4876
|
-
return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval`, "data-testid": TID.toolApproval, children: [
|
|
4877
|
-
/* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-head`, children: [
|
|
4878
|
-
/* @__PURE__ */ jsx14("span", { class: `${p13}-tool-badge`, children: strings.approvalRequired }),
|
|
4879
|
-
/* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) })
|
|
5091
|
+
const decided = approval.value?.approved !== void 0 || state.value !== "approval-requested";
|
|
5092
|
+
return /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui`, "data-testid": decided ? TID.toolDecision : TID.toolApproval, children: [
|
|
5093
|
+
/* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui-head`, children: [
|
|
5094
|
+
/* @__PURE__ */ jsx15("strong", { class: `${p14}-toolui-title`, children: toolName(part.toolName) }),
|
|
5095
|
+
decided ? /* @__PURE__ */ jsx15(ToolStatus, { state: state.value, approval: approval.value, strings }) : /* @__PURE__ */ jsx15("span", { class: `${p14}-toolui-badge ${p14}-toolui-badge-accent`, children: strings.approvalRequired })
|
|
4880
5096
|
] }),
|
|
4881
|
-
|
|
4882
|
-
|
|
4883
|
-
|
|
5097
|
+
/* @__PURE__ */ jsx15(ToolSection, { label: strings.toolParameters, value: input.value }),
|
|
5098
|
+
output.value !== void 0 ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolResult, value: output.value }) : null,
|
|
5099
|
+
error.value ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null,
|
|
5100
|
+
decided ? null : active ? /* @__PURE__ */ jsxs12(Fragment2, { children: [
|
|
5101
|
+
/* @__PURE__ */ jsx15(
|
|
4884
5102
|
"input",
|
|
4885
5103
|
{
|
|
4886
|
-
class: `${
|
|
5104
|
+
class: `${p14}-field-input`,
|
|
4887
5105
|
value: reason.value,
|
|
4888
5106
|
placeholder: strings.approvalReason,
|
|
4889
5107
|
onInput: (e) => {
|
|
@@ -4891,40 +5109,34 @@ function ToolApproval({ part, strings, active, onDecision }) {
|
|
|
4891
5109
|
}
|
|
4892
5110
|
}
|
|
4893
5111
|
),
|
|
4894
|
-
/* @__PURE__ */
|
|
4895
|
-
/* @__PURE__ */
|
|
5112
|
+
/* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
|
|
5113
|
+
/* @__PURE__ */ jsx15(
|
|
4896
5114
|
"button",
|
|
4897
5115
|
{
|
|
4898
5116
|
type: "button",
|
|
4899
|
-
class: `${
|
|
5117
|
+
class: `${p14}-form-skip`,
|
|
4900
5118
|
onClick: () => onDecision(part.toolCallId, false, reason.value.trim() || void 0),
|
|
4901
5119
|
"data-testid": TID.toolReject,
|
|
4902
5120
|
children: strings.reject
|
|
4903
5121
|
}
|
|
4904
5122
|
),
|
|
4905
|
-
/* @__PURE__ */
|
|
5123
|
+
/* @__PURE__ */ jsx15(
|
|
4906
5124
|
"button",
|
|
4907
5125
|
{
|
|
4908
5126
|
type: "button",
|
|
4909
|
-
class: `${
|
|
5127
|
+
class: `${p14}-form-submit`,
|
|
4910
5128
|
onClick: () => onDecision(part.toolCallId, true, reason.value.trim() || void 0),
|
|
4911
5129
|
"data-testid": TID.toolApprove,
|
|
4912
5130
|
children: strings.approve
|
|
4913
5131
|
}
|
|
4914
5132
|
)
|
|
4915
5133
|
] })
|
|
4916
|
-
] }) :
|
|
5134
|
+
] }) : (
|
|
5135
|
+
// eslint-disable-next-line unicorn/no-nested-ternary -- decided → none; active → controls; stale → note
|
|
5136
|
+
/* @__PURE__ */ jsx15("p", { class: `${p14}-toolui-note`, children: strings.stepNoLongerActive })
|
|
5137
|
+
)
|
|
4917
5138
|
] });
|
|
4918
5139
|
}
|
|
4919
|
-
function summarizeInput(input) {
|
|
4920
|
-
if (input == null) return "";
|
|
4921
|
-
try {
|
|
4922
|
-
const json = typeof input === "string" ? input : JSON.stringify(input, null, 2);
|
|
4923
|
-
return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
|
|
4924
|
-
} catch {
|
|
4925
|
-
return "";
|
|
4926
|
-
}
|
|
4927
|
-
}
|
|
4928
5140
|
|
|
4929
5141
|
// src/ui/tool-ask-input.tsx
|
|
4930
5142
|
import { useComputed as useComputed3 } from "@preact/signals";
|
|
@@ -4984,8 +5196,20 @@ function num(v) {
|
|
|
4984
5196
|
}
|
|
4985
5197
|
|
|
4986
5198
|
// src/ui/tool-ask-input.tsx
|
|
4987
|
-
import { jsx as
|
|
4988
|
-
var
|
|
5199
|
+
import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
|
|
5200
|
+
var p15 = BRAND.cssPrefix;
|
|
5201
|
+
function responseTypeLabel(req, s) {
|
|
5202
|
+
switch (req.responseType) {
|
|
5203
|
+
case "single-choice":
|
|
5204
|
+
return s.respSingleChoice;
|
|
5205
|
+
case "multi-choice":
|
|
5206
|
+
return s.respMultiChoice;
|
|
5207
|
+
case "confirmation":
|
|
5208
|
+
return s.respConfirmation;
|
|
5209
|
+
default:
|
|
5210
|
+
return s.respFreeText;
|
|
5211
|
+
}
|
|
5212
|
+
}
|
|
4989
5213
|
function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
|
|
4990
5214
|
const state = useComputed3(() => part.stateSig.value);
|
|
4991
5215
|
const approval = useComputed3(() => part.approvalSig.value);
|
|
@@ -4997,71 +5221,93 @@ function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
|
|
|
4997
5221
|
else if (request.value.responseType === "confirmation") onSubmit(part.toolCallId, { confirmed: accepted });
|
|
4998
5222
|
else onSubmit(part.toolCallId, accepted ? { answer } : {});
|
|
4999
5223
|
};
|
|
5224
|
+
const req = request.value;
|
|
5000
5225
|
if (decided) {
|
|
5001
|
-
return /* @__PURE__ */
|
|
5002
|
-
}
|
|
5003
|
-
if (!active) {
|
|
5004
|
-
return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-stale`, "data-testid": TID.toolAskInput, children: [
|
|
5005
|
-
/* @__PURE__ */ jsx15(Header, { strings, title: request.value.title ?? request.value.question }),
|
|
5006
|
-
/* @__PURE__ */ jsx15("p", { class: `${p14}-tool-stale-note`, children: strings.stepNoLongerActive })
|
|
5007
|
-
] });
|
|
5226
|
+
return /* @__PURE__ */ jsx16(DecidedCard, { part, strings, req });
|
|
5008
5227
|
}
|
|
5009
|
-
const
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5016
|
-
|
|
5228
|
+
const stale = !active;
|
|
5229
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui${stale ? ` ${p15}-toolui-stale` : ""}`, "data-testid": TID.toolAskInput, children: [
|
|
5230
|
+
/* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
|
|
5231
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputRequired }),
|
|
5232
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: responseTypeLabel(req, strings) })
|
|
5233
|
+
] }),
|
|
5234
|
+
req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
|
|
5235
|
+
/* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
|
|
5236
|
+
stale ? /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-note`, children: strings.stepNoLongerActive }) : /* @__PURE__ */ jsx16(AskBody, { req, strings, resolve })
|
|
5237
|
+
] });
|
|
5238
|
+
}
|
|
5239
|
+
function AskBody({
|
|
5240
|
+
req,
|
|
5241
|
+
strings,
|
|
5242
|
+
resolve
|
|
5243
|
+
}) {
|
|
5244
|
+
if (req.responseType === "confirmation") {
|
|
5245
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-form-actions`, children: [
|
|
5246
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-form-hint`, children: strings.inputSubmitHint }),
|
|
5247
|
+
/* @__PURE__ */ jsx16(
|
|
5017
5248
|
"button",
|
|
5018
5249
|
{
|
|
5019
5250
|
type: "button",
|
|
5020
|
-
class: `${
|
|
5251
|
+
class: `${p15}-form-skip`,
|
|
5021
5252
|
onClick: () => resolve(void 0, false),
|
|
5022
5253
|
"data-testid": TID.toolInputSkip,
|
|
5023
5254
|
children: strings.reject
|
|
5024
5255
|
}
|
|
5025
5256
|
),
|
|
5026
|
-
/* @__PURE__ */
|
|
5257
|
+
/* @__PURE__ */ jsx16(
|
|
5027
5258
|
"button",
|
|
5028
5259
|
{
|
|
5029
5260
|
type: "button",
|
|
5030
|
-
class: `${
|
|
5261
|
+
class: `${p15}-form-submit`,
|
|
5031
5262
|
onClick: () => resolve(void 0, true),
|
|
5032
5263
|
"data-testid": TID.toolInputSubmit,
|
|
5033
5264
|
children: strings.approve
|
|
5034
5265
|
}
|
|
5035
5266
|
)
|
|
5036
|
-
] })
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
|
|
5049
|
-
|
|
5267
|
+
] });
|
|
5268
|
+
}
|
|
5269
|
+
const fields = askInputToFields(req).map((f) => {
|
|
5270
|
+
f.label = strings.inputYourAnswer;
|
|
5271
|
+
return f;
|
|
5272
|
+
});
|
|
5273
|
+
return /* @__PURE__ */ jsx16(
|
|
5274
|
+
DynamicForm,
|
|
5275
|
+
{
|
|
5276
|
+
fields,
|
|
5277
|
+
strings,
|
|
5278
|
+
submitLabel: strings.inputSubmit,
|
|
5279
|
+
footerHint: strings.inputSubmitHint,
|
|
5280
|
+
onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
|
|
5281
|
+
skipLabel: req.required === false ? strings.inputSkip : void 0,
|
|
5282
|
+
onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
|
|
5283
|
+
submitTestId: TID.toolInputSubmit,
|
|
5284
|
+
skipTestId: TID.toolInputSkip
|
|
5285
|
+
}
|
|
5286
|
+
);
|
|
5050
5287
|
}
|
|
5051
|
-
function
|
|
5052
|
-
return /* @__PURE__ */
|
|
5053
|
-
/* @__PURE__ */
|
|
5054
|
-
|
|
5288
|
+
function Section({ label, text }) {
|
|
5289
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-section`, children: [
|
|
5290
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-label`, children: label }),
|
|
5291
|
+
/* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-text`, children: text })
|
|
5055
5292
|
] });
|
|
5056
5293
|
}
|
|
5057
|
-
function
|
|
5294
|
+
function DecidedCard({
|
|
5295
|
+
part,
|
|
5296
|
+
strings,
|
|
5297
|
+
req
|
|
5298
|
+
}) {
|
|
5058
5299
|
const output = useComputed3(() => part.outputSig.value);
|
|
5059
5300
|
const approval = useComputed3(() => part.approvalSig.value);
|
|
5060
|
-
const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
|
|
5061
5301
|
const skipped = approval.value?.approved === false;
|
|
5062
|
-
|
|
5063
|
-
|
|
5064
|
-
/* @__PURE__ */
|
|
5302
|
+
const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
|
|
5303
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui`, "data-testid": TID.toolDecision, children: [
|
|
5304
|
+
/* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
|
|
5305
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputBadge }),
|
|
5306
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: skipped ? strings.inputSkipped : strings.inputAnswered })
|
|
5307
|
+
] }),
|
|
5308
|
+
req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
|
|
5309
|
+
/* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
|
|
5310
|
+
!skipped && answer ? /* @__PURE__ */ jsx16(Section, { label: strings.inputResponse, text: answer }) : null
|
|
5065
5311
|
] });
|
|
5066
5312
|
}
|
|
5067
5313
|
function summarizeOutput(output) {
|
|
@@ -5070,6 +5316,7 @@ function summarizeOutput(output) {
|
|
|
5070
5316
|
if (typeof output === "object") {
|
|
5071
5317
|
const rec = output;
|
|
5072
5318
|
if ("confirmed" in rec) return rec.confirmed ? "Yes" : "No";
|
|
5319
|
+
if (typeof rec.responseText === "string" && rec.responseText) return rec.responseText;
|
|
5073
5320
|
return Object.values(rec).filter((v) => typeof v === "string" || typeof v === "number").join(", ");
|
|
5074
5321
|
}
|
|
5075
5322
|
return String(output);
|
|
@@ -5077,52 +5324,30 @@ function summarizeOutput(output) {
|
|
|
5077
5324
|
|
|
5078
5325
|
// src/ui/tool-call.tsx
|
|
5079
5326
|
import { useComputed as useComputed4 } from "@preact/signals";
|
|
5080
|
-
import { jsx as
|
|
5081
|
-
var
|
|
5082
|
-
function displayToolName2(toolName) {
|
|
5083
|
-
return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ").trim();
|
|
5084
|
-
}
|
|
5327
|
+
import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
|
|
5328
|
+
var p16 = BRAND.cssPrefix;
|
|
5085
5329
|
function ToolCall({ part, strings }) {
|
|
5086
|
-
const
|
|
5087
|
-
const
|
|
5088
|
-
const
|
|
5089
|
-
|
|
5090
|
-
|
|
5091
|
-
|
|
5092
|
-
|
|
5093
|
-
|
|
5330
|
+
const input = useComputed4(() => part.inputSig.value);
|
|
5331
|
+
const output = useComputed4(() => part.outputSig.value);
|
|
5332
|
+
const error = useComputed4(() => part.errorSig.value);
|
|
5333
|
+
const state = useComputed4(() => part.stateSig.value);
|
|
5334
|
+
const approval = useComputed4(() => part.approvalSig.value);
|
|
5335
|
+
const hasDetails = useComputed4(() => !!pretty(input.value) || !!error.value || !!pretty(unwrapResult(output.value)));
|
|
5336
|
+
if (!hasDetails.value) return null;
|
|
5337
|
+
return /* @__PURE__ */ jsxs14("details", { class: `${p16}-toolui ${p16}-toolui-collapsible`, "data-testid": TID.toolCall, children: [
|
|
5338
|
+
/* @__PURE__ */ jsxs14("summary", { class: `${p16}-toolui-head`, children: [
|
|
5339
|
+
/* @__PURE__ */ jsx17("strong", { class: `${p16}-toolui-title`, children: toolName(part.toolName) }),
|
|
5340
|
+
/* @__PURE__ */ jsx17(ToolStatus, { state: state.value, approval: approval.value, strings })
|
|
5094
5341
|
] }),
|
|
5095
|
-
|
|
5096
|
-
|
|
5097
|
-
|
|
5098
|
-
] }) : null,
|
|
5099
|
-
result.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, "data-error": isError.value ? "true" : void 0, children: [
|
|
5100
|
-
/* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolResult }),
|
|
5101
|
-
/* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: result.value })
|
|
5102
|
-
] }) : null
|
|
5342
|
+
/* @__PURE__ */ jsx17(ToolSection, { label: strings.toolParameters, value: input.value }),
|
|
5343
|
+
output.value !== void 0 ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolResult, value: output.value }) : null,
|
|
5344
|
+
error.value ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null
|
|
5103
5345
|
] });
|
|
5104
5346
|
}
|
|
5105
|
-
function unwrapResult(output) {
|
|
5106
|
-
if (output && typeof output === "object") {
|
|
5107
|
-
const rec = output;
|
|
5108
|
-
if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
|
|
5109
|
-
}
|
|
5110
|
-
return output;
|
|
5111
|
-
}
|
|
5112
|
-
function pretty(value) {
|
|
5113
|
-
if (value == null) return "";
|
|
5114
|
-
try {
|
|
5115
|
-
const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
|
|
5116
|
-
if (!json || json === "{}" || json === "[]" || json === '""') return "";
|
|
5117
|
-
return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
|
|
5118
|
-
} catch {
|
|
5119
|
-
return "";
|
|
5120
|
-
}
|
|
5121
|
-
}
|
|
5122
5347
|
|
|
5123
5348
|
// src/ui/message-bubble.tsx
|
|
5124
|
-
import { jsx as
|
|
5125
|
-
var
|
|
5349
|
+
import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
|
|
5350
|
+
var p17 = BRAND.cssPrefix;
|
|
5126
5351
|
function MessageBubble({
|
|
5127
5352
|
message,
|
|
5128
5353
|
strings,
|
|
@@ -5146,9 +5371,9 @@ function MessageBubble({
|
|
|
5146
5371
|
const working = streaming && !hasAnswerText.value;
|
|
5147
5372
|
const showStreamDots = streaming && !bufferedHold && !(reasoningVisible.value && working);
|
|
5148
5373
|
const stamp = formatStamp(message.createdAt);
|
|
5149
|
-
return /* @__PURE__ */
|
|
5150
|
-
/* @__PURE__ */
|
|
5151
|
-
bufferedHold ? /* @__PURE__ */
|
|
5374
|
+
return /* @__PURE__ */ jsx18("div", { class: `${p17}-bubble-row`, "data-role": message.role, "data-testid": tid(TID.messageBubble, message.id), children: /* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble-col`, children: [
|
|
5375
|
+
/* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble`, children: [
|
|
5376
|
+
bufferedHold ? /* @__PURE__ */ jsx18(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx18(
|
|
5152
5377
|
PartView,
|
|
5153
5378
|
{
|
|
5154
5379
|
part,
|
|
@@ -5162,10 +5387,10 @@ function MessageBubble({
|
|
|
5162
5387
|
},
|
|
5163
5388
|
partKey(part)
|
|
5164
5389
|
)),
|
|
5165
|
-
showStreamDots && /* @__PURE__ */
|
|
5166
|
-
message.status === "error" && message.errorText ? /* @__PURE__ */
|
|
5390
|
+
showStreamDots && /* @__PURE__ */ jsx18(TypingDots, {}),
|
|
5391
|
+
message.status === "error" && message.errorText ? /* @__PURE__ */ jsx18("div", { class: `${p17}-error`, role: "alert", children: /* @__PURE__ */ jsx18("span", { children: message.errorText }) }) : null
|
|
5167
5392
|
] }),
|
|
5168
|
-
stamp ? /* @__PURE__ */
|
|
5393
|
+
stamp ? /* @__PURE__ */ jsx18("time", { class: `${p17}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
|
|
5169
5394
|
] }) });
|
|
5170
5395
|
}
|
|
5171
5396
|
function formatStamp(createdAt) {
|
|
@@ -5195,11 +5420,11 @@ function PartView({
|
|
|
5195
5420
|
case "step-start":
|
|
5196
5421
|
return null;
|
|
5197
5422
|
case "text":
|
|
5198
|
-
return /* @__PURE__ */
|
|
5423
|
+
return /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
|
|
5199
5424
|
case "reasoning":
|
|
5200
|
-
return showReasoning ? /* @__PURE__ */
|
|
5425
|
+
return showReasoning ? /* @__PURE__ */ jsx18(ReasoningView, { part, active, strings }) : null;
|
|
5201
5426
|
case "tool":
|
|
5202
|
-
return /* @__PURE__ */
|
|
5427
|
+
return /* @__PURE__ */ jsx18(
|
|
5203
5428
|
ToolPartView,
|
|
5204
5429
|
{
|
|
5205
5430
|
part,
|
|
@@ -5211,11 +5436,11 @@ function PartView({
|
|
|
5211
5436
|
);
|
|
5212
5437
|
case "file":
|
|
5213
5438
|
if (part.mediaType.startsWith("image/")) {
|
|
5214
|
-
return /* @__PURE__ */
|
|
5439
|
+
return /* @__PURE__ */ jsx18("img", { src: part.url, alt: "", loading: "lazy" });
|
|
5215
5440
|
}
|
|
5216
|
-
return /* @__PURE__ */
|
|
5441
|
+
return /* @__PURE__ */ jsx18("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
|
|
5217
5442
|
case "source":
|
|
5218
|
-
return showSources ? /* @__PURE__ */
|
|
5443
|
+
return showSources ? /* @__PURE__ */ jsx18(SourceView, { part, strings }) : null;
|
|
5219
5444
|
}
|
|
5220
5445
|
}
|
|
5221
5446
|
function ToolPartView({
|
|
@@ -5228,7 +5453,7 @@ function ToolPartView({
|
|
|
5228
5453
|
const hasApproval = useComputed5(() => part.approvalSig.value !== void 0);
|
|
5229
5454
|
if (tool?.humanInLoop) {
|
|
5230
5455
|
if (isAskUserInputTool(part.toolName)) {
|
|
5231
|
-
return /* @__PURE__ */
|
|
5456
|
+
return /* @__PURE__ */ jsx18(
|
|
5232
5457
|
ToolAskInput,
|
|
5233
5458
|
{
|
|
5234
5459
|
part,
|
|
@@ -5240,19 +5465,19 @@ function ToolPartView({
|
|
|
5240
5465
|
);
|
|
5241
5466
|
}
|
|
5242
5467
|
if (hasApproval.value) {
|
|
5243
|
-
return /* @__PURE__ */
|
|
5468
|
+
return /* @__PURE__ */ jsx18(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
|
|
5244
5469
|
}
|
|
5245
5470
|
}
|
|
5246
|
-
return showToolCalls ? /* @__PURE__ */
|
|
5471
|
+
return showToolCalls ? /* @__PURE__ */ jsx18(ToolCall, { part, strings }) : null;
|
|
5247
5472
|
}
|
|
5248
5473
|
function ReasoningView({
|
|
5249
5474
|
part,
|
|
5250
5475
|
active,
|
|
5251
5476
|
strings
|
|
5252
5477
|
}) {
|
|
5253
|
-
return /* @__PURE__ */
|
|
5254
|
-
/* @__PURE__ */
|
|
5255
|
-
/* @__PURE__ */
|
|
5478
|
+
return /* @__PURE__ */ jsxs15("details", { class: `${p17}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
|
|
5479
|
+
/* @__PURE__ */ jsx18("summary", { class: `${p17}-reasoning-summary`, children: /* @__PURE__ */ jsx18("span", { class: `${p17}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
|
|
5480
|
+
/* @__PURE__ */ jsx18("div", { class: `${p17}-reasoning-body`, children: /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
|
|
5256
5481
|
] });
|
|
5257
5482
|
}
|
|
5258
5483
|
function partKey(part) {
|
|
@@ -5270,22 +5495,22 @@ function partKey(part) {
|
|
|
5270
5495
|
}
|
|
5271
5496
|
}
|
|
5272
5497
|
function TypingDots() {
|
|
5273
|
-
return /* @__PURE__ */
|
|
5274
|
-
/* @__PURE__ */
|
|
5275
|
-
/* @__PURE__ */
|
|
5276
|
-
/* @__PURE__ */
|
|
5498
|
+
return /* @__PURE__ */ jsxs15("span", { class: `${p17}-typing`, "aria-hidden": "true", children: [
|
|
5499
|
+
/* @__PURE__ */ jsx18("span", {}),
|
|
5500
|
+
/* @__PURE__ */ jsx18("span", {}),
|
|
5501
|
+
/* @__PURE__ */ jsx18("span", {})
|
|
5277
5502
|
] });
|
|
5278
5503
|
}
|
|
5279
5504
|
function LoadingSpinner({ label }) {
|
|
5280
|
-
return /* @__PURE__ */
|
|
5281
|
-
/* @__PURE__ */
|
|
5282
|
-
/* @__PURE__ */
|
|
5505
|
+
return /* @__PURE__ */ jsxs15("span", { class: `${p17}-loading`, role: "status", children: [
|
|
5506
|
+
/* @__PURE__ */ jsx18("span", { class: `${p17}-loading-spinner`, "aria-hidden": "true" }),
|
|
5507
|
+
/* @__PURE__ */ jsx18("span", { class: `${p17}-loading-label`, children: label })
|
|
5283
5508
|
] });
|
|
5284
5509
|
}
|
|
5285
5510
|
|
|
5286
5511
|
// src/ui/message-list.tsx
|
|
5287
|
-
import { jsx as
|
|
5288
|
-
var
|
|
5512
|
+
import { jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
|
|
5513
|
+
var p18 = BRAND.cssPrefix;
|
|
5289
5514
|
var STICK_THRESHOLD = 120;
|
|
5290
5515
|
var INTERACTION_GRACE_MS = 350;
|
|
5291
5516
|
var DIVIDER_IDLE_MS = 1200;
|
|
@@ -5456,7 +5681,7 @@ function MessageList({
|
|
|
5456
5681
|
const pendingMarkers = [...formMarkers ?? []].toSorted(
|
|
5457
5682
|
(a, b) => (a.createdAt ?? Infinity) - (b.createdAt ?? Infinity)
|
|
5458
5683
|
);
|
|
5459
|
-
const markerRow = (marker) => /* @__PURE__ */
|
|
5684
|
+
const markerRow = (marker) => /* @__PURE__ */ jsx19(
|
|
5460
5685
|
FormDoneMarker,
|
|
5461
5686
|
{
|
|
5462
5687
|
marker,
|
|
@@ -5477,12 +5702,12 @@ function MessageList({
|
|
|
5477
5702
|
const day = dayKey(m.createdAt);
|
|
5478
5703
|
if (day && day !== prevDay) {
|
|
5479
5704
|
rows.push(
|
|
5480
|
-
/* @__PURE__ */
|
|
5705
|
+
/* @__PURE__ */ jsx19("div", { class: `${p18}-date-divider`, children: /* @__PURE__ */ jsx19("span", { class: `${p18}-date-pill`, title: fullDate(m.createdAt), children: dayLabel(m.createdAt, strings) }) }, `day:${day}`)
|
|
5481
5706
|
);
|
|
5482
5707
|
prevDay = day;
|
|
5483
5708
|
}
|
|
5484
5709
|
rows.push(
|
|
5485
|
-
/* @__PURE__ */
|
|
5710
|
+
/* @__PURE__ */ jsx19(
|
|
5486
5711
|
MessageBubble,
|
|
5487
5712
|
{
|
|
5488
5713
|
message: m,
|
|
@@ -5501,33 +5726,33 @@ function MessageList({
|
|
|
5501
5726
|
for (const marker of pendingMarkers) {
|
|
5502
5727
|
rows.push(markerRow(marker));
|
|
5503
5728
|
}
|
|
5504
|
-
return /* @__PURE__ */
|
|
5505
|
-
/* @__PURE__ */
|
|
5729
|
+
return /* @__PURE__ */ jsxs16("div", { class: `${p18}-list-wrap`, children: [
|
|
5730
|
+
/* @__PURE__ */ jsxs16(
|
|
5506
5731
|
"div",
|
|
5507
5732
|
{
|
|
5508
5733
|
ref,
|
|
5509
|
-
class: `${
|
|
5734
|
+
class: `${p18}-list`,
|
|
5510
5735
|
role: "log",
|
|
5511
5736
|
"aria-live": "polite",
|
|
5512
5737
|
"aria-relevant": "additions text",
|
|
5513
5738
|
"data-scrolling": scrolling ? "true" : void 0,
|
|
5514
5739
|
children: [
|
|
5515
|
-
loading && messages.value.length === 0 ? /* @__PURE__ */
|
|
5740
|
+
loading && messages.value.length === 0 ? /* @__PURE__ */ jsx19("div", { class: `${p18}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
|
|
5516
5741
|
rows,
|
|
5517
|
-
form ? /* @__PURE__ */
|
|
5742
|
+
form ? /* @__PURE__ */ jsx19(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
|
|
5518
5743
|
]
|
|
5519
5744
|
}
|
|
5520
5745
|
),
|
|
5521
|
-
showJump ? /* @__PURE__ */
|
|
5746
|
+
showJump ? /* @__PURE__ */ jsx19(
|
|
5522
5747
|
"button",
|
|
5523
5748
|
{
|
|
5524
5749
|
type: "button",
|
|
5525
|
-
class: `${
|
|
5750
|
+
class: `${p18}-jump`,
|
|
5526
5751
|
onClick: jumpToBottom,
|
|
5527
5752
|
"aria-label": strings.scrollToBottom,
|
|
5528
5753
|
title: strings.scrollToBottom,
|
|
5529
5754
|
"data-testid": TID.scrollToBottom,
|
|
5530
|
-
children: /* @__PURE__ */
|
|
5755
|
+
children: /* @__PURE__ */ jsx19(ChevronDownIcon, {})
|
|
5531
5756
|
}
|
|
5532
5757
|
) : null
|
|
5533
5758
|
] });
|
|
@@ -5586,7 +5811,7 @@ function startOfDay(ms) {
|
|
|
5586
5811
|
}
|
|
5587
5812
|
|
|
5588
5813
|
// src/ui/conversation-list.tsx
|
|
5589
|
-
import { Fragment as Fragment3, jsx as
|
|
5814
|
+
import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs17 } from "preact/jsx-runtime";
|
|
5590
5815
|
var log11 = logger.scope("history");
|
|
5591
5816
|
var DEFAULT_SKELETON_ROWS = 3;
|
|
5592
5817
|
var MAX_SKELETON_ROWS = 6;
|
|
@@ -5613,7 +5838,7 @@ function ConversationList({
|
|
|
5613
5838
|
onSelect,
|
|
5614
5839
|
onNewConversation
|
|
5615
5840
|
}) {
|
|
5616
|
-
const
|
|
5841
|
+
const p36 = BRAND.cssPrefix;
|
|
5617
5842
|
const seed = transport.peekConversations({ visitorId });
|
|
5618
5843
|
const [state, setState] = useState7(seed ? "loaded" : "loading");
|
|
5619
5844
|
const [conversations, setChats] = useState7(seed?.conversations ?? []);
|
|
@@ -5634,32 +5859,32 @@ function ConversationList({
|
|
|
5634
5859
|
cancelled = true;
|
|
5635
5860
|
};
|
|
5636
5861
|
}, [transport, visitorId, persistence]);
|
|
5637
|
-
const newChatButton = onNewConversation ? /* @__PURE__ */
|
|
5862
|
+
const newChatButton = onNewConversation ? /* @__PURE__ */ jsx20("div", { class: `${p36}-history-footer`, children: /* @__PURE__ */ jsxs17(
|
|
5638
5863
|
"button",
|
|
5639
5864
|
{
|
|
5640
5865
|
type: "button",
|
|
5641
|
-
class: `${
|
|
5866
|
+
class: `${p36}-history-new`,
|
|
5642
5867
|
onClick: onNewConversation,
|
|
5643
5868
|
"data-testid": TID.sidebarNewConversation,
|
|
5644
5869
|
children: [
|
|
5645
|
-
/* @__PURE__ */
|
|
5870
|
+
/* @__PURE__ */ jsx20(PlusIcon, {}),
|
|
5646
5871
|
strings.newConversation
|
|
5647
5872
|
]
|
|
5648
5873
|
}
|
|
5649
5874
|
) }) : null;
|
|
5650
5875
|
if (state === "loading") {
|
|
5651
5876
|
const rows = Math.min(persistence.loadHistoryCount() ?? DEFAULT_SKELETON_ROWS, MAX_SKELETON_ROWS);
|
|
5652
|
-
return /* @__PURE__ */
|
|
5653
|
-
/* @__PURE__ */
|
|
5654
|
-
/* @__PURE__ */
|
|
5655
|
-
/* @__PURE__ */
|
|
5656
|
-
/* @__PURE__ */
|
|
5657
|
-
/* @__PURE__ */
|
|
5658
|
-
/* @__PURE__ */
|
|
5659
|
-
/* @__PURE__ */
|
|
5660
|
-
/* @__PURE__ */
|
|
5877
|
+
return /* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
5878
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history`, "aria-busy": "true", "aria-label": strings.historyLoading, children: /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-group`, "aria-hidden": "true", children: [
|
|
5879
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-heading` }) }),
|
|
5880
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-card`, children: Array.from({ length: Math.max(1, rows) }, (_, i) => /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-item ${p36}-history-item-skeleton`, children: [
|
|
5881
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar ${p36}-skeleton` }),
|
|
5882
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
|
|
5883
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
|
|
5884
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-title` }) }),
|
|
5885
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-time` }) })
|
|
5661
5886
|
] }),
|
|
5662
|
-
/* @__PURE__ */
|
|
5887
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-row`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-history-preview`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-preview` }) }) })
|
|
5663
5888
|
] })
|
|
5664
5889
|
] }, i)) })
|
|
5665
5890
|
] }) }),
|
|
@@ -5667,36 +5892,36 @@ function ConversationList({
|
|
|
5667
5892
|
] });
|
|
5668
5893
|
}
|
|
5669
5894
|
if (state === "error" || conversations.length === 0) {
|
|
5670
|
-
return /* @__PURE__ */
|
|
5671
|
-
/* @__PURE__ */
|
|
5895
|
+
return /* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
5896
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-empty`, children: strings.historyEmpty }),
|
|
5672
5897
|
newChatButton
|
|
5673
5898
|
] });
|
|
5674
5899
|
}
|
|
5675
5900
|
const now = Date.now();
|
|
5676
5901
|
const groups = groupByBucket(now, conversations);
|
|
5677
|
-
return /* @__PURE__ */
|
|
5678
|
-
/* @__PURE__ */
|
|
5679
|
-
/* @__PURE__ */
|
|
5680
|
-
/* @__PURE__ */
|
|
5902
|
+
return /* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
5903
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-group`, children: [
|
|
5904
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
|
|
5905
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs17(
|
|
5681
5906
|
"button",
|
|
5682
5907
|
{
|
|
5683
5908
|
type: "button",
|
|
5684
5909
|
role: "listitem",
|
|
5685
|
-
class: `${
|
|
5910
|
+
class: `${p36}-history-item`,
|
|
5686
5911
|
onClick: () => onSelect(chat),
|
|
5687
5912
|
"data-closed": chat.canContinue ? void 0 : "true",
|
|
5688
5913
|
"data-unread": (chat.unreadCount ?? 0) > 0 ? "true" : void 0,
|
|
5689
5914
|
"data-testid": tid(TID.historyItem, chat.conversationId),
|
|
5690
5915
|
children: [
|
|
5691
|
-
/* @__PURE__ */
|
|
5692
|
-
/* @__PURE__ */
|
|
5693
|
-
/* @__PURE__ */
|
|
5694
|
-
/* @__PURE__ */
|
|
5695
|
-
/* @__PURE__ */
|
|
5916
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx20(MessageIcon, {}) }),
|
|
5917
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
|
|
5918
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
|
|
5919
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: chat.title }),
|
|
5920
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
|
|
5696
5921
|
] }),
|
|
5697
|
-
/* @__PURE__ */
|
|
5698
|
-
/* @__PURE__ */
|
|
5699
|
-
(chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */
|
|
5922
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
|
|
5923
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
|
|
5924
|
+
(chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx20("span", { class: `${p36}-history-dot` }) : null
|
|
5700
5925
|
] })
|
|
5701
5926
|
] })
|
|
5702
5927
|
]
|
|
@@ -5709,15 +5934,15 @@ function ConversationList({
|
|
|
5709
5934
|
}
|
|
5710
5935
|
|
|
5711
5936
|
// src/ui/suggestions.tsx
|
|
5712
|
-
import { jsx as
|
|
5713
|
-
var
|
|
5937
|
+
import { jsx as jsx21 } from "preact/jsx-runtime";
|
|
5938
|
+
var p19 = BRAND.cssPrefix;
|
|
5714
5939
|
function Suggestions({ suggestions, onPick }) {
|
|
5715
5940
|
if (suggestions.length === 0) return null;
|
|
5716
|
-
return /* @__PURE__ */
|
|
5941
|
+
return /* @__PURE__ */ jsx21("div", { class: `${p19}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx21(
|
|
5717
5942
|
"button",
|
|
5718
5943
|
{
|
|
5719
5944
|
type: "button",
|
|
5720
|
-
class: `${
|
|
5945
|
+
class: `${p19}-suggestion`,
|
|
5721
5946
|
onClick: () => onPick(s),
|
|
5722
5947
|
"data-testid": tid(TID.suggestion, i),
|
|
5723
5948
|
children: s.label
|
|
@@ -5727,8 +5952,8 @@ function Suggestions({ suggestions, onPick }) {
|
|
|
5727
5952
|
}
|
|
5728
5953
|
|
|
5729
5954
|
// src/ui/panel.tsx
|
|
5730
|
-
import { Fragment as Fragment4, jsx as
|
|
5731
|
-
var
|
|
5955
|
+
import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
|
|
5956
|
+
var p20 = BRAND.cssPrefix;
|
|
5732
5957
|
function Panel(props2) {
|
|
5733
5958
|
const { options, onClose } = props2;
|
|
5734
5959
|
const s = options.strings;
|
|
@@ -5752,18 +5977,18 @@ function Panel(props2) {
|
|
|
5752
5977
|
}, []);
|
|
5753
5978
|
const { visible: dragOver } = useFileDrop({ containerRef, onDrop: onDropItems });
|
|
5754
5979
|
useDragMove(containerRef.current, options.mode === "modal");
|
|
5755
|
-
return /* @__PURE__ */
|
|
5980
|
+
return /* @__PURE__ */ jsxs18(
|
|
5756
5981
|
"div",
|
|
5757
5982
|
{
|
|
5758
5983
|
ref: containerRef,
|
|
5759
|
-
class: `${
|
|
5984
|
+
class: `${p20}-panel`,
|
|
5760
5985
|
role: "dialog",
|
|
5761
5986
|
"aria-modal": "false",
|
|
5762
5987
|
"aria-label": s.panelTitle,
|
|
5763
5988
|
style: { position: "relative" },
|
|
5764
5989
|
"data-testid": TID.panel,
|
|
5765
5990
|
children: [
|
|
5766
|
-
/* @__PURE__ */
|
|
5991
|
+
/* @__PURE__ */ jsx22(
|
|
5767
5992
|
PanelContent,
|
|
5768
5993
|
{
|
|
5769
5994
|
...props2,
|
|
@@ -5772,7 +5997,7 @@ function Panel(props2) {
|
|
|
5772
5997
|
composerAttachApiRef
|
|
5773
5998
|
}
|
|
5774
5999
|
),
|
|
5775
|
-
/* @__PURE__ */
|
|
6000
|
+
/* @__PURE__ */ jsx22(PoweredByBar, { poweredBy: props2.options.poweredBy })
|
|
5776
6001
|
]
|
|
5777
6002
|
}
|
|
5778
6003
|
);
|
|
@@ -5819,9 +6044,9 @@ function PanelContent(props2) {
|
|
|
5819
6044
|
if (activeForm) {
|
|
5820
6045
|
composerArea = null;
|
|
5821
6046
|
} else if (canSend) {
|
|
5822
|
-
composerArea = /* @__PURE__ */
|
|
5823
|
-
/* @__PURE__ */
|
|
5824
|
-
/* @__PURE__ */
|
|
6047
|
+
composerArea = /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6048
|
+
/* @__PURE__ */ jsx22(Suggestions, { suggestions, onPick: onSuggestion }),
|
|
6049
|
+
/* @__PURE__ */ jsx22(
|
|
5825
6050
|
Composer,
|
|
5826
6051
|
{
|
|
5827
6052
|
options,
|
|
@@ -5836,10 +6061,10 @@ function PanelContent(props2) {
|
|
|
5836
6061
|
)
|
|
5837
6062
|
] });
|
|
5838
6063
|
} else {
|
|
5839
|
-
composerArea = /* @__PURE__ */
|
|
6064
|
+
composerArea = /* @__PURE__ */ jsx22(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
|
|
5840
6065
|
}
|
|
5841
|
-
return /* @__PURE__ */
|
|
5842
|
-
view === "history" ? /* @__PURE__ */
|
|
6066
|
+
return /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6067
|
+
view === "history" ? /* @__PURE__ */ jsx22(
|
|
5843
6068
|
HistoryHeader,
|
|
5844
6069
|
{
|
|
5845
6070
|
strings: s,
|
|
@@ -5847,22 +6072,22 @@ function PanelContent(props2) {
|
|
|
5847
6072
|
onClose,
|
|
5848
6073
|
showClose: canShowClose(options.mode, panelSize, options.actions)
|
|
5849
6074
|
}
|
|
5850
|
-
) : /* @__PURE__ */
|
|
5851
|
-
onBack ? /* @__PURE__ */
|
|
6075
|
+
) : /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, "data-testid": TID.panelHeader, children: [
|
|
6076
|
+
onBack ? /* @__PURE__ */ jsx22(
|
|
5852
6077
|
"button",
|
|
5853
6078
|
{
|
|
5854
6079
|
type: "button",
|
|
5855
|
-
class: `${
|
|
6080
|
+
class: `${p20}-icon-btn`,
|
|
5856
6081
|
onClick: onBack,
|
|
5857
6082
|
"aria-label": s.moduleBack,
|
|
5858
6083
|
title: s.moduleBack,
|
|
5859
|
-
children: /* @__PURE__ */
|
|
6084
|
+
children: /* @__PURE__ */ jsx22(BackIcon, {})
|
|
5860
6085
|
}
|
|
5861
6086
|
) : null,
|
|
5862
|
-
agent ? /* @__PURE__ */
|
|
5863
|
-
/* @__PURE__ */
|
|
6087
|
+
agent ? /* @__PURE__ */ jsx22(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx22("h1", { children: s.panelTitle }),
|
|
6088
|
+
/* @__PURE__ */ jsx22(HeaderActions, { panelProps: props2, variant: "chat" })
|
|
5864
6089
|
] }),
|
|
5865
|
-
view === "history" ? /* @__PURE__ */
|
|
6090
|
+
view === "history" ? /* @__PURE__ */ jsx22(
|
|
5866
6091
|
ConversationList,
|
|
5867
6092
|
{
|
|
5868
6093
|
transport,
|
|
@@ -5873,9 +6098,9 @@ function PanelContent(props2) {
|
|
|
5873
6098
|
onSelect: (conversation) => onSelectHistoryConversation(conversation.conversationId),
|
|
5874
6099
|
onNewConversation
|
|
5875
6100
|
}
|
|
5876
|
-
) : /* @__PURE__ */
|
|
5877
|
-
/* @__PURE__ */
|
|
5878
|
-
/* @__PURE__ */
|
|
6101
|
+
) : /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6102
|
+
/* @__PURE__ */ jsx22(DropZone, { visible: dragOver, strings: s }),
|
|
6103
|
+
/* @__PURE__ */ jsx22(
|
|
5879
6104
|
MessageList,
|
|
5880
6105
|
{
|
|
5881
6106
|
messagesSig,
|
|
@@ -5893,9 +6118,9 @@ function PanelContent(props2) {
|
|
|
5893
6118
|
}
|
|
5894
6119
|
),
|
|
5895
6120
|
composerArea,
|
|
5896
|
-
/* @__PURE__ */
|
|
6121
|
+
/* @__PURE__ */ jsx22(ComposerFooter, { disclaimer: options.composerDisclaimer })
|
|
5897
6122
|
] }),
|
|
5898
|
-
options.size.resize?.enabled ? /* @__PURE__ */
|
|
6123
|
+
options.size.resize?.enabled ? /* @__PURE__ */ jsx22(
|
|
5899
6124
|
ResizeGrip,
|
|
5900
6125
|
{
|
|
5901
6126
|
panelEl: containerEl,
|
|
@@ -5914,28 +6139,28 @@ function HistoryHeader({
|
|
|
5914
6139
|
onClose,
|
|
5915
6140
|
showClose
|
|
5916
6141
|
}) {
|
|
5917
|
-
return /* @__PURE__ */
|
|
5918
|
-
/* @__PURE__ */
|
|
6142
|
+
return /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, children: [
|
|
6143
|
+
/* @__PURE__ */ jsx22(
|
|
5919
6144
|
"button",
|
|
5920
6145
|
{
|
|
5921
6146
|
type: "button",
|
|
5922
|
-
class: `${
|
|
6147
|
+
class: `${p20}-icon-btn`,
|
|
5923
6148
|
onClick: onBack,
|
|
5924
6149
|
"aria-label": strings.historyBack,
|
|
5925
6150
|
title: strings.historyBack,
|
|
5926
|
-
children: /* @__PURE__ */
|
|
6151
|
+
children: /* @__PURE__ */ jsx22(BackIcon, {})
|
|
5927
6152
|
}
|
|
5928
6153
|
),
|
|
5929
|
-
/* @__PURE__ */
|
|
5930
|
-
showClose ? /* @__PURE__ */
|
|
6154
|
+
/* @__PURE__ */ jsx22("h1", { children: strings.historyTitle }),
|
|
6155
|
+
showClose ? /* @__PURE__ */ jsx22(
|
|
5931
6156
|
"button",
|
|
5932
6157
|
{
|
|
5933
6158
|
type: "button",
|
|
5934
|
-
class: `${
|
|
6159
|
+
class: `${p20}-icon-btn`,
|
|
5935
6160
|
onClick: onClose,
|
|
5936
6161
|
"aria-label": strings.close,
|
|
5937
6162
|
title: strings.close,
|
|
5938
|
-
children: /* @__PURE__ */
|
|
6163
|
+
children: /* @__PURE__ */ jsx22(CloseIcon, {})
|
|
5939
6164
|
}
|
|
5940
6165
|
) : null
|
|
5941
6166
|
] });
|
|
@@ -5945,28 +6170,28 @@ function ReadOnlyBanner({
|
|
|
5945
6170
|
ctaLabel,
|
|
5946
6171
|
onNewConversation
|
|
5947
6172
|
}) {
|
|
5948
|
-
return /* @__PURE__ */
|
|
5949
|
-
/* @__PURE__ */
|
|
5950
|
-
/* @__PURE__ */
|
|
6173
|
+
return /* @__PURE__ */ jsxs18("div", { class: `${p20}-readonly-banner`, role: "note", children: [
|
|
6174
|
+
/* @__PURE__ */ jsx22("span", { class: `${p20}-readonly-label`, children: label }),
|
|
6175
|
+
/* @__PURE__ */ jsx22("button", { type: "button", class: `${p20}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
|
|
5951
6176
|
] });
|
|
5952
6177
|
}
|
|
5953
6178
|
function ComposerFooter({ disclaimer }) {
|
|
5954
6179
|
if (!disclaimer) return null;
|
|
5955
|
-
return /* @__PURE__ */
|
|
6180
|
+
return /* @__PURE__ */ jsx22("div", { class: `${p20}-composer-footer`, children: /* @__PURE__ */ jsx22("div", { class: `${p20}-disclaimer`, children: disclaimer }) });
|
|
5956
6181
|
}
|
|
5957
6182
|
function PoweredByBar({ poweredBy }) {
|
|
5958
6183
|
if (!poweredBy) return null;
|
|
5959
|
-
return /* @__PURE__ */
|
|
6184
|
+
return /* @__PURE__ */ jsx22("div", { class: `${p20}-poweredby-bar`, children: /* @__PURE__ */ jsx22(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
|
|
5960
6185
|
}
|
|
5961
6186
|
function PoweredBy({ logoUrl, text, href }) {
|
|
5962
|
-
const inner = /* @__PURE__ */
|
|
5963
|
-
logoUrl ? /* @__PURE__ */
|
|
5964
|
-
text ? /* @__PURE__ */
|
|
6187
|
+
const inner = /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6188
|
+
logoUrl ? /* @__PURE__ */ jsx22("img", { class: `${p20}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
|
|
6189
|
+
text ? /* @__PURE__ */ jsx22("span", { children: text }) : null
|
|
5965
6190
|
] });
|
|
5966
6191
|
if (href) {
|
|
5967
|
-
return /* @__PURE__ */
|
|
6192
|
+
return /* @__PURE__ */ jsx22("a", { class: `${p20}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
|
|
5968
6193
|
}
|
|
5969
|
-
return /* @__PURE__ */
|
|
6194
|
+
return /* @__PURE__ */ jsx22("span", { class: `${p20}-poweredby`, children: inner });
|
|
5970
6195
|
}
|
|
5971
6196
|
|
|
5972
6197
|
// src/ui/form/form-controller.ts
|
|
@@ -6049,34 +6274,34 @@ function whenPasses(form, d) {
|
|
|
6049
6274
|
}
|
|
6050
6275
|
|
|
6051
6276
|
// src/ui/sidebar.tsx
|
|
6052
|
-
import { Fragment as Fragment5, jsx as
|
|
6277
|
+
import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
|
|
6053
6278
|
function Sidebar(props2) {
|
|
6054
|
-
const
|
|
6279
|
+
const p36 = BRAND.cssPrefix;
|
|
6055
6280
|
const { site, blocks, strings, collapsed } = props2;
|
|
6056
6281
|
const navigation = blocks?.navigation ?? [];
|
|
6057
6282
|
const linkCards = blocks?.linkCards ?? [];
|
|
6058
6283
|
const toggleLabel = collapsed ? strings.expandSidebar : strings.collapseSidebar;
|
|
6059
|
-
return /* @__PURE__ */
|
|
6060
|
-
/* @__PURE__ */
|
|
6061
|
-
/* @__PURE__ */
|
|
6062
|
-
/* @__PURE__ */
|
|
6284
|
+
return /* @__PURE__ */ jsxs19("aside", { class: `${p36}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
|
|
6285
|
+
/* @__PURE__ */ jsxs19("div", { class: `${p36}-sidebar-header`, children: [
|
|
6286
|
+
/* @__PURE__ */ jsx23(SidebarBrand, { site }),
|
|
6287
|
+
/* @__PURE__ */ jsx23(
|
|
6063
6288
|
"button",
|
|
6064
6289
|
{
|
|
6065
6290
|
type: "button",
|
|
6066
|
-
class: `${
|
|
6291
|
+
class: `${p36}-sidebar-toggle`,
|
|
6067
6292
|
"aria-label": toggleLabel,
|
|
6068
6293
|
"aria-expanded": collapsed ? "false" : "true",
|
|
6069
6294
|
title: toggleLabel,
|
|
6070
6295
|
onClick: props2.onToggleCollapsed,
|
|
6071
6296
|
"data-testid": TID.sidebarToggle,
|
|
6072
|
-
children: /* @__PURE__ */
|
|
6297
|
+
children: /* @__PURE__ */ jsx23(SidebarToggleIcon, { collapsed })
|
|
6073
6298
|
}
|
|
6074
6299
|
)
|
|
6075
6300
|
] }),
|
|
6076
|
-
collapsed ? null : /* @__PURE__ */
|
|
6077
|
-
navigation.length > 0 ? /* @__PURE__ */
|
|
6078
|
-
linkCards.length > 0 ? /* @__PURE__ */
|
|
6079
|
-
props2.showConversations ? /* @__PURE__ */
|
|
6301
|
+
collapsed ? null : /* @__PURE__ */ jsxs19(Fragment5, { children: [
|
|
6302
|
+
navigation.length > 0 ? /* @__PURE__ */ jsx23("nav", { class: `${p36}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx23(SidebarNav, { items: navigation }) }) : null,
|
|
6303
|
+
linkCards.length > 0 ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx23(SidebarCards, { items: linkCards }) }) : null,
|
|
6304
|
+
props2.showConversations ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-conversations`, children: /* @__PURE__ */ jsx23(
|
|
6080
6305
|
ConversationList,
|
|
6081
6306
|
{
|
|
6082
6307
|
transport: props2.transport,
|
|
@@ -6092,18 +6317,18 @@ function Sidebar(props2) {
|
|
|
6092
6317
|
] });
|
|
6093
6318
|
}
|
|
6094
6319
|
function SidebarBrand({ site }) {
|
|
6095
|
-
const
|
|
6320
|
+
const p36 = BRAND.cssPrefix;
|
|
6096
6321
|
if (site?.logo?.url) {
|
|
6097
6322
|
const alt = site.logo.alt ?? site.title ?? "Logo";
|
|
6098
|
-
return /* @__PURE__ */
|
|
6099
|
-
site.logoDark?.url ? /* @__PURE__ */
|
|
6100
|
-
/* @__PURE__ */
|
|
6323
|
+
return /* @__PURE__ */ jsxs19("picture", { children: [
|
|
6324
|
+
site.logoDark?.url ? /* @__PURE__ */ jsx23("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
|
|
6325
|
+
/* @__PURE__ */ jsx23("img", { class: `${p36}-sidebar-logo`, src: site.logo.url, alt })
|
|
6101
6326
|
] });
|
|
6102
6327
|
}
|
|
6103
|
-
return /* @__PURE__ */
|
|
6328
|
+
return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-title`, children: site?.title ?? BRAND.name });
|
|
6104
6329
|
}
|
|
6105
6330
|
function SidebarToggleIcon({ collapsed }) {
|
|
6106
|
-
return /* @__PURE__ */
|
|
6331
|
+
return /* @__PURE__ */ jsx23(
|
|
6107
6332
|
"svg",
|
|
6108
6333
|
{
|
|
6109
6334
|
width: "16",
|
|
@@ -6113,38 +6338,38 @@ function SidebarToggleIcon({ collapsed }) {
|
|
|
6113
6338
|
stroke: "currentColor",
|
|
6114
6339
|
"stroke-width": "2",
|
|
6115
6340
|
"aria-hidden": "true",
|
|
6116
|
-
children: collapsed ? /* @__PURE__ */
|
|
6341
|
+
children: collapsed ? /* @__PURE__ */ jsx23("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx23("polyline", { points: "15 6 9 12 15 18" })
|
|
6117
6342
|
}
|
|
6118
6343
|
);
|
|
6119
6344
|
}
|
|
6120
6345
|
function SidebarNav({ items }) {
|
|
6121
|
-
const
|
|
6122
|
-
return /* @__PURE__ */
|
|
6346
|
+
const p36 = BRAND.cssPrefix;
|
|
6347
|
+
return /* @__PURE__ */ jsx23("ul", { class: `${p36}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx23("li", { children: /* @__PURE__ */ jsxs19(
|
|
6123
6348
|
"a",
|
|
6124
6349
|
{
|
|
6125
|
-
class: `${
|
|
6350
|
+
class: `${p36}-sidebar-nav-item`,
|
|
6126
6351
|
href: item.href,
|
|
6127
6352
|
target: item.href ? "_blank" : void 0,
|
|
6128
6353
|
rel: item.href ? "noreferrer" : void 0,
|
|
6129
6354
|
children: [
|
|
6130
|
-
item.icon ? /* @__PURE__ */
|
|
6131
|
-
/* @__PURE__ */
|
|
6355
|
+
item.icon ? /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
|
|
6356
|
+
/* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-label`, children: item.label })
|
|
6132
6357
|
]
|
|
6133
6358
|
}
|
|
6134
6359
|
) }, item.id ?? item.label)) });
|
|
6135
6360
|
}
|
|
6136
6361
|
function SidebarCards({ items }) {
|
|
6137
|
-
const
|
|
6138
|
-
return /* @__PURE__ */
|
|
6362
|
+
const p36 = BRAND.cssPrefix;
|
|
6363
|
+
return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs19(
|
|
6139
6364
|
"a",
|
|
6140
6365
|
{
|
|
6141
|
-
class: `${
|
|
6366
|
+
class: `${p36}-sidebar-card`,
|
|
6142
6367
|
href: item.href,
|
|
6143
6368
|
target: item.href ? "_blank" : void 0,
|
|
6144
6369
|
rel: item.href ? "noreferrer" : void 0,
|
|
6145
6370
|
children: [
|
|
6146
|
-
/* @__PURE__ */
|
|
6147
|
-
item.description ? /* @__PURE__ */
|
|
6371
|
+
/* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-label`, children: item.label }),
|
|
6372
|
+
item.description ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-desc`, children: item.description }) : null
|
|
6148
6373
|
]
|
|
6149
6374
|
},
|
|
6150
6375
|
item.id ?? item.label
|
|
@@ -6152,11 +6377,11 @@ function SidebarCards({ items }) {
|
|
|
6152
6377
|
}
|
|
6153
6378
|
|
|
6154
6379
|
// src/ui/page-shell.tsx
|
|
6155
|
-
import { jsx as
|
|
6156
|
-
var
|
|
6380
|
+
import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
|
|
6381
|
+
var p21 = BRAND.cssPrefix;
|
|
6157
6382
|
function PageShell(props2) {
|
|
6158
|
-
return /* @__PURE__ */
|
|
6159
|
-
/* @__PURE__ */
|
|
6383
|
+
return /* @__PURE__ */ jsxs20("main", { class: `${p21}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
|
|
6384
|
+
/* @__PURE__ */ jsx24(
|
|
6160
6385
|
Sidebar,
|
|
6161
6386
|
{
|
|
6162
6387
|
site: props2.site,
|
|
@@ -6173,7 +6398,7 @@ function PageShell(props2) {
|
|
|
6173
6398
|
onToggleCollapsed: props2.onToggleSidebarCollapsed
|
|
6174
6399
|
}
|
|
6175
6400
|
),
|
|
6176
|
-
/* @__PURE__ */
|
|
6401
|
+
/* @__PURE__ */ jsx24("section", { class: `${p21}-page-chat`, "aria-label": "Chat", children: props2.children })
|
|
6177
6402
|
] });
|
|
6178
6403
|
}
|
|
6179
6404
|
|
|
@@ -6223,80 +6448,80 @@ var chatLayout = {
|
|
|
6223
6448
|
import { useEffect as useEffect10, useMemo as useMemo2, useState as useState8 } from "preact/hooks";
|
|
6224
6449
|
|
|
6225
6450
|
// src/ui/back-header.tsx
|
|
6226
|
-
import { jsx as
|
|
6227
|
-
var
|
|
6451
|
+
import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
|
|
6452
|
+
var p22 = BRAND.cssPrefix;
|
|
6228
6453
|
function TitleBar({ title, actions }) {
|
|
6229
|
-
return /* @__PURE__ */
|
|
6230
|
-
/* @__PURE__ */
|
|
6231
|
-
/* @__PURE__ */
|
|
6232
|
-
actions ?? /* @__PURE__ */
|
|
6454
|
+
return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-variant": "title", children: [
|
|
6455
|
+
/* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" }),
|
|
6456
|
+
/* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
|
|
6457
|
+
actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
|
|
6233
6458
|
] });
|
|
6234
6459
|
}
|
|
6235
6460
|
function BackHeader({ title, backLabel, onBack, actions, testid }) {
|
|
6236
|
-
return /* @__PURE__ */
|
|
6237
|
-
/* @__PURE__ */
|
|
6238
|
-
/* @__PURE__ */
|
|
6239
|
-
actions ?? /* @__PURE__ */
|
|
6461
|
+
return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-testid": testid, children: [
|
|
6462
|
+
/* @__PURE__ */ jsx25("button", { type: "button", class: `${p22}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx25(BackIcon, {}) }),
|
|
6463
|
+
/* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
|
|
6464
|
+
actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
|
|
6240
6465
|
] });
|
|
6241
6466
|
}
|
|
6242
6467
|
|
|
6243
6468
|
// src/ui/home-search.tsx
|
|
6244
|
-
import { jsx as
|
|
6245
|
-
var
|
|
6469
|
+
import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
|
|
6470
|
+
var p23 = BRAND.cssPrefix;
|
|
6246
6471
|
function HomeSearchButton({ placeholder, onActivate }) {
|
|
6247
|
-
return /* @__PURE__ */
|
|
6248
|
-
/* @__PURE__ */
|
|
6249
|
-
/* @__PURE__ */
|
|
6472
|
+
return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
|
|
6473
|
+
/* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-text`, children: placeholder }),
|
|
6474
|
+
/* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
|
|
6250
6475
|
] });
|
|
6251
6476
|
}
|
|
6252
6477
|
function HelpSearchInput({ placeholder, value, onInput }) {
|
|
6253
|
-
return /* @__PURE__ */
|
|
6254
|
-
/* @__PURE__ */
|
|
6478
|
+
return /* @__PURE__ */ jsxs22("div", { class: `${p23}-home-search`, "data-input": "true", children: [
|
|
6479
|
+
/* @__PURE__ */ jsx26(
|
|
6255
6480
|
"input",
|
|
6256
6481
|
{
|
|
6257
6482
|
type: "search",
|
|
6258
|
-
class: `${
|
|
6483
|
+
class: `${p23}-home-search-input`,
|
|
6259
6484
|
placeholder,
|
|
6260
6485
|
value,
|
|
6261
6486
|
onInput: (e) => onInput(e.currentTarget.value),
|
|
6262
6487
|
"data-testid": TID.helpSearch
|
|
6263
6488
|
}
|
|
6264
6489
|
),
|
|
6265
|
-
/* @__PURE__ */
|
|
6490
|
+
/* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
|
|
6266
6491
|
] });
|
|
6267
6492
|
}
|
|
6268
6493
|
|
|
6269
6494
|
// src/ui/list-row.tsx
|
|
6270
|
-
import { jsx as
|
|
6271
|
-
var
|
|
6495
|
+
import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
|
|
6496
|
+
var p24 = BRAND.cssPrefix;
|
|
6272
6497
|
function ListRow({ title, subtitle, onClick, testid }) {
|
|
6273
|
-
return /* @__PURE__ */
|
|
6274
|
-
/* @__PURE__ */
|
|
6275
|
-
/* @__PURE__ */
|
|
6276
|
-
subtitle ? /* @__PURE__ */
|
|
6498
|
+
return /* @__PURE__ */ jsxs23("button", { type: "button", class: `${p24}-list-row`, onClick, "data-testid": testid, children: [
|
|
6499
|
+
/* @__PURE__ */ jsxs23("span", { class: `${p24}-list-row-body`, children: [
|
|
6500
|
+
/* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-title`, children: title }),
|
|
6501
|
+
subtitle ? /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-sub`, children: subtitle }) : null
|
|
6277
6502
|
] }),
|
|
6278
|
-
/* @__PURE__ */
|
|
6503
|
+
/* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx27(ChevronRightIcon, {}) })
|
|
6279
6504
|
] });
|
|
6280
6505
|
}
|
|
6281
6506
|
|
|
6282
6507
|
// src/ui/module-state.tsx
|
|
6283
|
-
import { jsx as
|
|
6284
|
-
var
|
|
6508
|
+
import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
|
|
6509
|
+
var p25 = BRAND.cssPrefix;
|
|
6285
6510
|
function ModuleState({
|
|
6286
6511
|
tone = "info",
|
|
6287
6512
|
message,
|
|
6288
6513
|
onRetry,
|
|
6289
6514
|
strings
|
|
6290
6515
|
}) {
|
|
6291
|
-
return /* @__PURE__ */
|
|
6292
|
-
/* @__PURE__ */
|
|
6293
|
-
onRetry ? /* @__PURE__ */
|
|
6516
|
+
return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
|
|
6517
|
+
/* @__PURE__ */ jsx28("span", { children: message }),
|
|
6518
|
+
onRetry ? /* @__PURE__ */ jsx28("button", { type: "button", class: `${p25}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
|
|
6294
6519
|
] });
|
|
6295
6520
|
}
|
|
6296
6521
|
|
|
6297
6522
|
// src/ui/modules/help.tsx
|
|
6298
|
-
import { jsx as
|
|
6299
|
-
var
|
|
6523
|
+
import { jsx as jsx29, jsxs as jsxs25 } from "preact/jsx-runtime";
|
|
6524
|
+
var p26 = BRAND.cssPrefix;
|
|
6300
6525
|
var log12 = logger.scope("help");
|
|
6301
6526
|
var openArticle = (nav, a) => a.url ? nav.push({ kind: "iframe", url: a.url, title: a.title }) : nav.push({ kind: "content", id: a.id, title: a.title });
|
|
6302
6527
|
function groupByCategory(items) {
|
|
@@ -6325,7 +6550,7 @@ function fuzzySearch(items, query) {
|
|
|
6325
6550
|
return items.map((item) => ({ item, score: Math.max(fuzzyScore(q, item.title) * 2, fuzzyScore(q, item.description ?? "")) })).filter((r) => r.score > 0).toSorted((a, b) => b.score - a.score).map((r) => r.item);
|
|
6326
6551
|
}
|
|
6327
6552
|
function ArticleRow({ article, nav }) {
|
|
6328
|
-
return /* @__PURE__ */
|
|
6553
|
+
return /* @__PURE__ */ jsx29(
|
|
6329
6554
|
ListRow,
|
|
6330
6555
|
{
|
|
6331
6556
|
title: article.title,
|
|
@@ -6370,46 +6595,46 @@ function HelpRoot({ transport, strings, config, nav, bus, panelProps }) {
|
|
|
6370
6595
|
}, [query, results, bus]);
|
|
6371
6596
|
function renderBody() {
|
|
6372
6597
|
if (query.trim().length > 0) {
|
|
6373
|
-
if (results.length === 0) return /* @__PURE__ */
|
|
6374
|
-
return /* @__PURE__ */
|
|
6598
|
+
if (results.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpSearchEmpty, strings });
|
|
6599
|
+
return /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) });
|
|
6375
6600
|
}
|
|
6376
|
-
if (state === "loading") return /* @__PURE__ */
|
|
6601
|
+
if (state === "loading") return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpLoading, strings });
|
|
6377
6602
|
if (state === "error") {
|
|
6378
|
-
return /* @__PURE__ */
|
|
6603
|
+
return /* @__PURE__ */ jsx29(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
|
|
6379
6604
|
}
|
|
6380
|
-
if (items.length === 0) return /* @__PURE__ */
|
|
6381
|
-
return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */
|
|
6382
|
-
category ? /* @__PURE__ */
|
|
6383
|
-
/* @__PURE__ */
|
|
6605
|
+
if (items.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpEmpty, strings });
|
|
6606
|
+
return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs25("section", { class: `${p26}-help-group`, children: [
|
|
6607
|
+
category ? /* @__PURE__ */ jsx29("h2", { class: `${p26}-help-section-title`, children: category }) : null,
|
|
6608
|
+
/* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) })
|
|
6384
6609
|
] }, category));
|
|
6385
6610
|
}
|
|
6386
|
-
return /* @__PURE__ */
|
|
6387
|
-
/* @__PURE__ */
|
|
6388
|
-
/* @__PURE__ */
|
|
6389
|
-
/* @__PURE__ */
|
|
6611
|
+
return /* @__PURE__ */ jsxs25("div", { class: `${p26}-module`, children: [
|
|
6612
|
+
/* @__PURE__ */ jsx29(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx29(HeaderActions, { panelProps, variant: "plain" }) }),
|
|
6613
|
+
/* @__PURE__ */ jsx29("div", { class: `${p26}-module-pad`, children: /* @__PURE__ */ jsx29(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
|
|
6614
|
+
/* @__PURE__ */ jsx29("div", { class: `${p26}-help-list`, children: renderBody() })
|
|
6390
6615
|
] });
|
|
6391
6616
|
}
|
|
6392
6617
|
var helpLayout = {
|
|
6393
6618
|
Icon: HelpIcon,
|
|
6394
|
-
Root: (props2) => /* @__PURE__ */
|
|
6619
|
+
Root: (props2) => /* @__PURE__ */ jsx29(HelpRoot, { ...props2 })
|
|
6395
6620
|
};
|
|
6396
6621
|
|
|
6397
6622
|
// src/ui/modules/home.tsx
|
|
6398
6623
|
import { useEffect as useEffect11, useState as useState9 } from "preact/hooks";
|
|
6399
6624
|
|
|
6400
6625
|
// src/ui/home-card.tsx
|
|
6401
|
-
import { jsx as
|
|
6402
|
-
var
|
|
6626
|
+
import { jsx as jsx30 } from "preact/jsx-runtime";
|
|
6627
|
+
var p27 = BRAND.cssPrefix;
|
|
6403
6628
|
function HomeCard({ onClick, children, testid }) {
|
|
6404
6629
|
if (onClick) {
|
|
6405
|
-
return /* @__PURE__ */
|
|
6630
|
+
return /* @__PURE__ */ jsx30("button", { type: "button", class: `${p27}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
|
|
6406
6631
|
}
|
|
6407
|
-
return /* @__PURE__ */
|
|
6632
|
+
return /* @__PURE__ */ jsx30("div", { class: `${p27}-home-card`, "data-testid": testid, children });
|
|
6408
6633
|
}
|
|
6409
6634
|
|
|
6410
6635
|
// src/ui/modules/home.tsx
|
|
6411
|
-
import { Fragment as Fragment6, jsx as
|
|
6412
|
-
var
|
|
6636
|
+
import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
|
|
6637
|
+
var p28 = BRAND.cssPrefix;
|
|
6413
6638
|
var log13 = logger.scope("home");
|
|
6414
6639
|
function resolveGreeting(props2) {
|
|
6415
6640
|
const name = props2.options.userContext?.name;
|
|
@@ -6452,49 +6677,49 @@ function HomeRoot(props2) {
|
|
|
6452
6677
|
const status = config.status;
|
|
6453
6678
|
const statusText = status?.text ? localizeText(strings, status.text) : strings.homeStatus;
|
|
6454
6679
|
const contentTitle = config.contentBlockTitle ? localizeText(strings, config.contentBlockTitle) : strings.homeContentTitle;
|
|
6455
|
-
return /* @__PURE__ */
|
|
6456
|
-
/* @__PURE__ */
|
|
6457
|
-
/* @__PURE__ */
|
|
6458
|
-
config.brandName ? /* @__PURE__ */
|
|
6459
|
-
/* @__PURE__ */
|
|
6460
|
-
avatars.length > 0 ? /* @__PURE__ */
|
|
6461
|
-
/* @__PURE__ */
|
|
6680
|
+
return /* @__PURE__ */ jsx31("div", { class: `${p28}-module ${p28}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-scroll`, children: [
|
|
6681
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero`, children: [
|
|
6682
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-top`, children: [
|
|
6683
|
+
config.brandName ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-brand`, "data-testid": TID.homeBrand, children: config.brandName }) : /* @__PURE__ */ jsx31("span", { class: `${p28}-home-brand-spacer`, "aria-hidden": "true" }),
|
|
6684
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-actions`, children: [
|
|
6685
|
+
avatars.length > 0 ? /* @__PURE__ */ jsx31("div", { class: `${p28}-home-avatars`, children: avatars.map((a) => /* @__PURE__ */ jsx31("span", { class: `${p28}-home-avatar`, title: a.role ? `${a.name} \xB7 ${a.role}` : a.name, children: a.avatar ? /* @__PURE__ */ jsx31("img", { src: a.avatar, alt: "", loading: "lazy" }) : /* @__PURE__ */ jsx31("span", { children: initials(a.name) }) }, a.name)) }) : null,
|
|
6686
|
+
/* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" })
|
|
6462
6687
|
] })
|
|
6463
6688
|
] }),
|
|
6464
|
-
config.showGreeting !== false ? /* @__PURE__ */
|
|
6465
|
-
/* @__PURE__ */
|
|
6466
|
-
greeting.subtitle ? /* @__PURE__ */
|
|
6689
|
+
config.showGreeting !== false ? /* @__PURE__ */ jsxs26(Fragment6, { children: [
|
|
6690
|
+
/* @__PURE__ */ jsx31("h1", { class: `${p28}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
|
|
6691
|
+
greeting.subtitle ? /* @__PURE__ */ jsx31("p", { class: `${p28}-home-lead`, children: greeting.subtitle }) : null
|
|
6467
6692
|
] }) : null
|
|
6468
6693
|
] }),
|
|
6469
|
-
/* @__PURE__ */
|
|
6470
|
-
config.showSearchBar !== false ? /* @__PURE__ */
|
|
6694
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-cards`, children: [
|
|
6695
|
+
config.showSearchBar !== false ? /* @__PURE__ */ jsx31(
|
|
6471
6696
|
HomeSearchButton,
|
|
6472
6697
|
{
|
|
6473
6698
|
placeholder: strings.homeSearchPlaceholder,
|
|
6474
6699
|
onActivate: () => nav.switchToLayout("help")
|
|
6475
6700
|
}
|
|
6476
6701
|
) : null,
|
|
6477
|
-
recent ? /* @__PURE__ */
|
|
6478
|
-
/* @__PURE__ */
|
|
6479
|
-
/* @__PURE__ */
|
|
6480
|
-
/* @__PURE__ */
|
|
6481
|
-
recent.preview ? /* @__PURE__ */
|
|
6702
|
+
recent ? /* @__PURE__ */ jsx31(HomeCard, { onClick: () => nav.selectConversation(recent.conversationId), testid: TID.homeRecent, children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-recent-row`, "data-unread": (recent.unreadCount ?? 0) > 0 ? "true" : void 0, children: [
|
|
6703
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(BubblesIcon, {}) }),
|
|
6704
|
+
/* @__PURE__ */ jsxs26("span", { class: `${p28}-home-recent-body`, children: [
|
|
6705
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-title`, children: recent.title }),
|
|
6706
|
+
recent.preview ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-preview`, children: recent.preview }) : null
|
|
6482
6707
|
] }),
|
|
6483
|
-
(recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */
|
|
6708
|
+
(recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-dot`, "aria-label": "Unread" }) : null
|
|
6484
6709
|
] }) }) : null,
|
|
6485
|
-
status ? /* @__PURE__ */
|
|
6710
|
+
status ? /* @__PURE__ */ jsx31(
|
|
6486
6711
|
HomeCard,
|
|
6487
6712
|
{
|
|
6488
6713
|
onClick: status.url ? () => nav.push({ kind: "iframe", url: status.url, title: statusText }) : void 0,
|
|
6489
|
-
children: /* @__PURE__ */
|
|
6490
|
-
/* @__PURE__ */
|
|
6491
|
-
/* @__PURE__ */
|
|
6714
|
+
children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-status`, "data-level": status.level ?? "operational", children: [
|
|
6715
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(StatusOkIcon, {}) }),
|
|
6716
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-text`, children: statusText })
|
|
6492
6717
|
] })
|
|
6493
6718
|
}
|
|
6494
6719
|
) : null,
|
|
6495
|
-
content.length > 0 ? /* @__PURE__ */
|
|
6496
|
-
/* @__PURE__ */
|
|
6497
|
-
/* @__PURE__ */
|
|
6720
|
+
content.length > 0 ? /* @__PURE__ */ jsxs26("section", { class: `${p28}-home-content`, children: [
|
|
6721
|
+
/* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-title`, children: contentTitle }),
|
|
6722
|
+
/* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx31(
|
|
6498
6723
|
ListRow,
|
|
6499
6724
|
{
|
|
6500
6725
|
title: item.title,
|
|
@@ -6510,13 +6735,13 @@ function HomeRoot(props2) {
|
|
|
6510
6735
|
}
|
|
6511
6736
|
var homeLayout = {
|
|
6512
6737
|
Icon: HomeIcon,
|
|
6513
|
-
Root: (props2) => /* @__PURE__ */
|
|
6738
|
+
Root: (props2) => /* @__PURE__ */ jsx31(HomeRoot, { ...props2 })
|
|
6514
6739
|
};
|
|
6515
6740
|
|
|
6516
6741
|
// src/ui/modules/news.tsx
|
|
6517
6742
|
import { useEffect as useEffect12, useState as useState10 } from "preact/hooks";
|
|
6518
|
-
import { jsx as
|
|
6519
|
-
var
|
|
6743
|
+
import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
|
|
6744
|
+
var p29 = BRAND.cssPrefix;
|
|
6520
6745
|
var log14 = logger.scope("news");
|
|
6521
6746
|
function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
|
|
6522
6747
|
const tags = config.contentTags;
|
|
@@ -6544,37 +6769,37 @@ function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
|
|
|
6544
6769
|
};
|
|
6545
6770
|
}, [transport, tags, reloadKey, bus]);
|
|
6546
6771
|
function renderBody() {
|
|
6547
|
-
if (state === "loading") return /* @__PURE__ */
|
|
6772
|
+
if (state === "loading") return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsLoading, strings });
|
|
6548
6773
|
if (state === "error") {
|
|
6549
|
-
return /* @__PURE__ */
|
|
6774
|
+
return /* @__PURE__ */ jsx32(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
|
|
6550
6775
|
}
|
|
6551
|
-
if (items.length === 0) return /* @__PURE__ */
|
|
6552
|
-
return /* @__PURE__ */
|
|
6776
|
+
if (items.length === 0) return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsEmpty, strings });
|
|
6777
|
+
return /* @__PURE__ */ jsx32("div", { class: `${p29}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs27(
|
|
6553
6778
|
"button",
|
|
6554
6779
|
{
|
|
6555
6780
|
type: "button",
|
|
6556
|
-
class: `${
|
|
6781
|
+
class: `${p29}-news-card`,
|
|
6557
6782
|
onClick: () => nav.push({ kind: "content", id: item.id, title: item.title }),
|
|
6558
6783
|
"data-testid": tid(TID.newsItem, item.id),
|
|
6559
6784
|
children: [
|
|
6560
|
-
item.image ? /* @__PURE__ */
|
|
6561
|
-
/* @__PURE__ */
|
|
6562
|
-
/* @__PURE__ */
|
|
6563
|
-
item.description ? /* @__PURE__ */
|
|
6785
|
+
item.image ? /* @__PURE__ */ jsx32("img", { class: `${p29}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
|
|
6786
|
+
/* @__PURE__ */ jsxs27("span", { class: `${p29}-news-body`, children: [
|
|
6787
|
+
/* @__PURE__ */ jsx32("span", { class: `${p29}-news-title`, children: item.title }),
|
|
6788
|
+
item.description ? /* @__PURE__ */ jsx32("span", { class: `${p29}-news-summary`, children: item.description }) : null
|
|
6564
6789
|
] })
|
|
6565
6790
|
]
|
|
6566
6791
|
},
|
|
6567
6792
|
item.id
|
|
6568
6793
|
)) });
|
|
6569
6794
|
}
|
|
6570
|
-
return /* @__PURE__ */
|
|
6571
|
-
/* @__PURE__ */
|
|
6572
|
-
/* @__PURE__ */
|
|
6795
|
+
return /* @__PURE__ */ jsxs27("div", { class: `${p29}-module`, children: [
|
|
6796
|
+
/* @__PURE__ */ jsx32(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx32(HeaderActions, { panelProps, variant: "plain" }) }),
|
|
6797
|
+
/* @__PURE__ */ jsx32("div", { class: `${p29}-module-scroll`, children: renderBody() })
|
|
6573
6798
|
] });
|
|
6574
6799
|
}
|
|
6575
6800
|
var newsLayout = {
|
|
6576
6801
|
Icon: NewsIcon,
|
|
6577
|
-
Root: (props2) => /* @__PURE__ */
|
|
6802
|
+
Root: (props2) => /* @__PURE__ */ jsx32(NewsRoot, { ...props2 })
|
|
6578
6803
|
};
|
|
6579
6804
|
|
|
6580
6805
|
// src/ui/modules/registry.ts
|
|
@@ -6586,28 +6811,28 @@ var LAYOUTS = {
|
|
|
6586
6811
|
};
|
|
6587
6812
|
|
|
6588
6813
|
// src/ui/home-tab-bar.tsx
|
|
6589
|
-
import { jsx as
|
|
6590
|
-
var
|
|
6814
|
+
import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
|
|
6815
|
+
var p30 = BRAND.cssPrefix;
|
|
6591
6816
|
function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
|
|
6592
|
-
return /* @__PURE__ */
|
|
6817
|
+
return /* @__PURE__ */ jsx33("nav", { class: `${p30}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
|
|
6593
6818
|
const Icon = LAYOUTS[m.layout].Icon;
|
|
6594
6819
|
const selected = m.id === activeTab;
|
|
6595
6820
|
const badge = m.layout === "chat" && unreadCount > 0 ? unreadCount > 9 ? "9+" : String(unreadCount) : null;
|
|
6596
|
-
return /* @__PURE__ */
|
|
6821
|
+
return /* @__PURE__ */ jsxs28(
|
|
6597
6822
|
"button",
|
|
6598
6823
|
{
|
|
6599
6824
|
type: "button",
|
|
6600
6825
|
role: "tab",
|
|
6601
6826
|
"aria-selected": selected,
|
|
6602
|
-
class: `${
|
|
6827
|
+
class: `${p30}-tab`,
|
|
6603
6828
|
onClick: () => onSelect(m.id),
|
|
6604
6829
|
"data-testid": tid(TID.tab, m.id),
|
|
6605
6830
|
children: [
|
|
6606
|
-
/* @__PURE__ */
|
|
6607
|
-
/* @__PURE__ */
|
|
6608
|
-
badge ? /* @__PURE__ */
|
|
6831
|
+
/* @__PURE__ */ jsxs28("span", { class: `${p30}-tab-icon`, "aria-hidden": "true", children: [
|
|
6832
|
+
/* @__PURE__ */ jsx33(Icon, {}),
|
|
6833
|
+
badge ? /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
|
|
6609
6834
|
] }),
|
|
6610
|
-
/* @__PURE__ */
|
|
6835
|
+
/* @__PURE__ */ jsx33("span", { class: `${p30}-tab-label`, children: localizeText(strings, m.label) })
|
|
6611
6836
|
]
|
|
6612
6837
|
},
|
|
6613
6838
|
m.id
|
|
@@ -6616,12 +6841,12 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
|
|
|
6616
6841
|
}
|
|
6617
6842
|
|
|
6618
6843
|
// src/ui/iframe-view.tsx
|
|
6619
|
-
import { jsx as
|
|
6620
|
-
var
|
|
6844
|
+
import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
|
|
6845
|
+
var p31 = BRAND.cssPrefix;
|
|
6621
6846
|
var SANDBOX = "allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads";
|
|
6622
6847
|
function IframeView({ url, title, strings, onBack, actions }) {
|
|
6623
|
-
return /* @__PURE__ */
|
|
6624
|
-
/* @__PURE__ */
|
|
6848
|
+
return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
|
|
6849
|
+
/* @__PURE__ */ jsx34(
|
|
6625
6850
|
BackHeader,
|
|
6626
6851
|
{
|
|
6627
6852
|
title: title || strings.moduleBack,
|
|
@@ -6630,10 +6855,10 @@ function IframeView({ url, title, strings, onBack, actions }) {
|
|
|
6630
6855
|
actions
|
|
6631
6856
|
}
|
|
6632
6857
|
),
|
|
6633
|
-
/* @__PURE__ */
|
|
6858
|
+
/* @__PURE__ */ jsx34(
|
|
6634
6859
|
"iframe",
|
|
6635
6860
|
{
|
|
6636
|
-
class: `${
|
|
6861
|
+
class: `${p31}-content-frame`,
|
|
6637
6862
|
src: url,
|
|
6638
6863
|
title: title || "content",
|
|
6639
6864
|
sandbox: SANDBOX,
|
|
@@ -6647,8 +6872,8 @@ function IframeView({ url, title, strings, onBack, actions }) {
|
|
|
6647
6872
|
|
|
6648
6873
|
// src/ui/content-view.tsx
|
|
6649
6874
|
import { useCallback as useCallback3, useEffect as useEffect13, useState as useState11 } from "preact/hooks";
|
|
6650
|
-
import { jsx as
|
|
6651
|
-
var
|
|
6875
|
+
import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
|
|
6876
|
+
var p32 = BRAND.cssPrefix;
|
|
6652
6877
|
var log15 = logger.scope("content");
|
|
6653
6878
|
var READ_DWELL_MS = 5e3;
|
|
6654
6879
|
function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
|
|
@@ -6692,16 +6917,16 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
|
|
|
6692
6917
|
[bus, id]
|
|
6693
6918
|
);
|
|
6694
6919
|
function renderBody() {
|
|
6695
|
-
if (failed) return /* @__PURE__ */
|
|
6696
|
-
if (item === null) return /* @__PURE__ */
|
|
6697
|
-
return /* @__PURE__ */
|
|
6698
|
-
item.image ? /* @__PURE__ */
|
|
6699
|
-
item.description ? /* @__PURE__ */
|
|
6700
|
-
/* @__PURE__ */
|
|
6920
|
+
if (failed) return /* @__PURE__ */ jsx35(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
|
|
6921
|
+
if (item === null) return /* @__PURE__ */ jsx35(ModuleState, { message: strings.contentLoading, strings });
|
|
6922
|
+
return /* @__PURE__ */ jsxs30("article", { class: `${p32}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
|
|
6923
|
+
item.image ? /* @__PURE__ */ jsx35("img", { class: `${p32}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
|
|
6924
|
+
item.description ? /* @__PURE__ */ jsx35("p", { class: `${p32}-content-subtitle`, children: item.description }) : null,
|
|
6925
|
+
/* @__PURE__ */ jsx35(StaticMarkdown, { text: item.content ?? "" })
|
|
6701
6926
|
] });
|
|
6702
6927
|
}
|
|
6703
|
-
return /* @__PURE__ */
|
|
6704
|
-
/* @__PURE__ */
|
|
6928
|
+
return /* @__PURE__ */ jsxs30("div", { class: `${p32}-module`, children: [
|
|
6929
|
+
/* @__PURE__ */ jsx35(
|
|
6705
6930
|
BackHeader,
|
|
6706
6931
|
{
|
|
6707
6932
|
title: item?.title || title || strings.moduleBack,
|
|
@@ -6711,13 +6936,13 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
|
|
|
6711
6936
|
testid: TID.backHeader
|
|
6712
6937
|
}
|
|
6713
6938
|
),
|
|
6714
|
-
/* @__PURE__ */
|
|
6939
|
+
/* @__PURE__ */ jsx35("div", { class: `${p32}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
|
|
6715
6940
|
] });
|
|
6716
6941
|
}
|
|
6717
6942
|
|
|
6718
6943
|
// src/ui/messenger-home.tsx
|
|
6719
|
-
import { jsx as
|
|
6720
|
-
var
|
|
6944
|
+
import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
|
|
6945
|
+
var p33 = BRAND.cssPrefix;
|
|
6721
6946
|
function MessengerHome({
|
|
6722
6947
|
panelProps,
|
|
6723
6948
|
enabledModules,
|
|
@@ -6788,12 +7013,12 @@ function MessengerHome({
|
|
|
6788
7013
|
bus,
|
|
6789
7014
|
panelProps
|
|
6790
7015
|
});
|
|
6791
|
-
const plainActions = /* @__PURE__ */
|
|
7016
|
+
const plainActions = /* @__PURE__ */ jsx36(HeaderActions, { panelProps, variant: "plain" });
|
|
6792
7017
|
if (activeModule) visitedRef.current.add(activeModule.id);
|
|
6793
7018
|
const visitedTabs = enabledModules.filter((m) => visitedRef.current.has(m.id));
|
|
6794
7019
|
const tabRoot = (module) => {
|
|
6795
7020
|
if (module.layout === "chat") {
|
|
6796
|
-
return /* @__PURE__ */
|
|
7021
|
+
return /* @__PURE__ */ jsx36(
|
|
6797
7022
|
PanelContent,
|
|
6798
7023
|
{
|
|
6799
7024
|
...panelProps,
|
|
@@ -6804,14 +7029,14 @@ function MessengerHome({
|
|
|
6804
7029
|
);
|
|
6805
7030
|
}
|
|
6806
7031
|
const Root = LAYOUTS[module.layout].Root;
|
|
6807
|
-
return Root ? /* @__PURE__ */
|
|
7032
|
+
return Root ? /* @__PURE__ */ jsx36(Root, { ...screenProps(module) }) : null;
|
|
6808
7033
|
};
|
|
6809
7034
|
const renderReader = () => {
|
|
6810
7035
|
if (top?.kind === "iframe") {
|
|
6811
|
-
return /* @__PURE__ */
|
|
7036
|
+
return /* @__PURE__ */ jsx36(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
|
|
6812
7037
|
}
|
|
6813
7038
|
if (top?.kind === "content") {
|
|
6814
|
-
return /* @__PURE__ */
|
|
7039
|
+
return /* @__PURE__ */ jsx36(
|
|
6815
7040
|
ContentView,
|
|
6816
7041
|
{
|
|
6817
7042
|
id: top.id,
|
|
@@ -6826,22 +7051,22 @@ function MessengerHome({
|
|
|
6826
7051
|
}
|
|
6827
7052
|
return null;
|
|
6828
7053
|
};
|
|
6829
|
-
return /* @__PURE__ */
|
|
7054
|
+
return /* @__PURE__ */ jsxs31(
|
|
6830
7055
|
"div",
|
|
6831
7056
|
{
|
|
6832
7057
|
ref: containerRef,
|
|
6833
|
-
class: `${
|
|
7058
|
+
class: `${p33}-panel ${p33}-messenger`,
|
|
6834
7059
|
role: "dialog",
|
|
6835
7060
|
"aria-modal": "false",
|
|
6836
7061
|
"aria-label": strings.panelTitle,
|
|
6837
7062
|
style: { position: "relative" },
|
|
6838
7063
|
"data-testid": TID.messengerHome,
|
|
6839
7064
|
children: [
|
|
6840
|
-
/* @__PURE__ */
|
|
6841
|
-
visitedTabs.map((m) => /* @__PURE__ */
|
|
7065
|
+
/* @__PURE__ */ jsxs31("div", { class: `${p33}-messenger-body`, children: [
|
|
7066
|
+
visitedTabs.map((m) => /* @__PURE__ */ jsx36("div", { class: `${p33}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
|
|
6842
7067
|
renderReader()
|
|
6843
7068
|
] }),
|
|
6844
|
-
showTabBar ? /* @__PURE__ */
|
|
7069
|
+
showTabBar ? /* @__PURE__ */ jsx36(
|
|
6845
7070
|
HomeTabBar,
|
|
6846
7071
|
{
|
|
6847
7072
|
modules: enabledModules,
|
|
@@ -6851,8 +7076,8 @@ function MessengerHome({
|
|
|
6851
7076
|
onSelect: nav.switchTab
|
|
6852
7077
|
}
|
|
6853
7078
|
) : null,
|
|
6854
|
-
/* @__PURE__ */
|
|
6855
|
-
options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */
|
|
7079
|
+
/* @__PURE__ */ jsx36(PoweredByBar, { poweredBy: options.poweredBy }),
|
|
7080
|
+
options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx36(
|
|
6856
7081
|
ResizeGrip,
|
|
6857
7082
|
{
|
|
6858
7083
|
panelEl: containerRef.current,
|
|
@@ -6869,29 +7094,29 @@ function MessengerHome({
|
|
|
6869
7094
|
}
|
|
6870
7095
|
|
|
6871
7096
|
// src/ui/modules-empty.tsx
|
|
6872
|
-
import { jsx as
|
|
6873
|
-
var
|
|
7097
|
+
import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
|
|
7098
|
+
var p34 = BRAND.cssPrefix;
|
|
6874
7099
|
function ModulesEmpty({ strings, onClose }) {
|
|
6875
|
-
return /* @__PURE__ */
|
|
7100
|
+
return /* @__PURE__ */ jsxs32(
|
|
6876
7101
|
"div",
|
|
6877
7102
|
{
|
|
6878
|
-
class: `${
|
|
7103
|
+
class: `${p34}-panel ${p34}-modules-empty`,
|
|
6879
7104
|
role: "dialog",
|
|
6880
7105
|
"aria-label": strings.panelTitle,
|
|
6881
7106
|
"data-testid": TID.modulesEmpty,
|
|
6882
7107
|
children: [
|
|
6883
|
-
onClose ? /* @__PURE__ */
|
|
7108
|
+
onClose ? /* @__PURE__ */ jsx37(
|
|
6884
7109
|
"button",
|
|
6885
7110
|
{
|
|
6886
7111
|
type: "button",
|
|
6887
|
-
class: `${
|
|
7112
|
+
class: `${p34}-icon-btn ${p34}-modules-empty-close`,
|
|
6888
7113
|
onClick: onClose,
|
|
6889
7114
|
"aria-label": strings.close,
|
|
6890
7115
|
title: strings.close,
|
|
6891
|
-
children: /* @__PURE__ */
|
|
7116
|
+
children: /* @__PURE__ */ jsx37(CloseIcon, {})
|
|
6892
7117
|
}
|
|
6893
7118
|
) : null,
|
|
6894
|
-
/* @__PURE__ */
|
|
7119
|
+
/* @__PURE__ */ jsx37("p", { class: `${p34}-modules-empty-text`, children: strings.modulesEmpty })
|
|
6895
7120
|
]
|
|
6896
7121
|
}
|
|
6897
7122
|
);
|
|
@@ -6914,16 +7139,19 @@ function useLauncherCallout({ callout, persistence }) {
|
|
|
6914
7139
|
}
|
|
6915
7140
|
|
|
6916
7141
|
// src/ui/app.tsx
|
|
6917
|
-
import { jsx as
|
|
7142
|
+
import { jsx as jsx38, jsxs as jsxs33 } from "preact/jsx-runtime";
|
|
6918
7143
|
var log16 = logger.scope("app");
|
|
6919
|
-
var
|
|
7144
|
+
var p35 = BRAND.cssPrefix;
|
|
6920
7145
|
function makeLocalizedWelcome(w, strings) {
|
|
6921
7146
|
return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
|
|
6922
7147
|
}
|
|
7148
|
+
function firstText(m) {
|
|
7149
|
+
return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
|
|
7150
|
+
}
|
|
6923
7151
|
function allToolPartsSettled(msg) {
|
|
6924
|
-
const tools = msg.partsSig.value.filter((
|
|
6925
|
-
return tools.length > 0 && tools.every((
|
|
6926
|
-
const s =
|
|
7152
|
+
const tools = msg.partsSig.value.filter((pt) => pt.kind === "tool");
|
|
7153
|
+
return tools.length > 0 && tools.every((pt) => {
|
|
7154
|
+
const s = pt.stateSig.value;
|
|
6927
7155
|
return s === "output-available" || s === "output-error" || s === "output-denied" || s === "approval-responded";
|
|
6928
7156
|
});
|
|
6929
7157
|
}
|
|
@@ -7113,8 +7341,9 @@ function App({ options, hostElement, bus }) {
|
|
|
7113
7341
|
(n) => n !== void 0
|
|
7114
7342
|
);
|
|
7115
7343
|
const welcomeAnchor = (timelineStamps.length ? Math.min(...timelineStamps) : Date.now()) - 1;
|
|
7116
|
-
const
|
|
7117
|
-
const
|
|
7344
|
+
const welcomeKey = (role, text) => `${role}|${text}`;
|
|
7345
|
+
const loadedKeys = new Set(loaded.map((m) => welcomeKey(m.role, firstText(m))));
|
|
7346
|
+
const welcomeRows = (welcomeRef.current?.messages ?? []).filter((w) => !loadedKeys.has(welcomeKey(w.role, localizeText(stringsRef.current, w.text)))).map((w) => {
|
|
7118
7347
|
const row = makeLocalizedWelcome(w, stringsRef.current);
|
|
7119
7348
|
row.createdAt = welcomeAnchor;
|
|
7120
7349
|
return row;
|
|
@@ -7841,12 +8070,12 @@ function App({ options, hostElement, bus }) {
|
|
|
7841
8070
|
const renderSurface = (size) => {
|
|
7842
8071
|
const closeable = isActionVisible("close", effectiveOptions.mode, size);
|
|
7843
8072
|
if (enabledModules.length === 0) {
|
|
7844
|
-
return /* @__PURE__ */
|
|
8073
|
+
return /* @__PURE__ */ jsx38(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
|
|
7845
8074
|
}
|
|
7846
8075
|
if (enabledModules.length === 1 && enabledModules[0]?.layout === "chat") {
|
|
7847
|
-
return /* @__PURE__ */
|
|
8076
|
+
return /* @__PURE__ */ jsx38(Panel, { ...panelProps, panelSize: size });
|
|
7848
8077
|
}
|
|
7849
|
-
return /* @__PURE__ */
|
|
8078
|
+
return /* @__PURE__ */ jsx38(
|
|
7850
8079
|
MessengerHome,
|
|
7851
8080
|
{
|
|
7852
8081
|
panelProps: { ...panelProps, panelSize: size, onClose: closeable ? handleClose : void 0 },
|
|
@@ -7865,7 +8094,7 @@ function App({ options, hostElement, bus }) {
|
|
|
7865
8094
|
void handleSelectHistoryConversation(chat.conversationId);
|
|
7866
8095
|
};
|
|
7867
8096
|
const conversationsEnabled = enabledModules.some((m) => m.layout === "chat");
|
|
7868
|
-
return /* @__PURE__ */
|
|
8097
|
+
return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: /* @__PURE__ */ jsx38(
|
|
7869
8098
|
PageShell,
|
|
7870
8099
|
{
|
|
7871
8100
|
site: parsedSite,
|
|
@@ -7886,15 +8115,15 @@ function App({ options, hostElement, bus }) {
|
|
|
7886
8115
|
}
|
|
7887
8116
|
if (isInlineLike) {
|
|
7888
8117
|
const inlineSize = options.mode === "standalone" ? "fullscreen" : panelSize;
|
|
7889
|
-
return /* @__PURE__ */
|
|
8118
|
+
return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: renderSurface(inlineSize) });
|
|
7890
8119
|
}
|
|
7891
8120
|
const drawerEdgeTab = options.mode === "drawer";
|
|
7892
8121
|
const triggerOwnedByPage = options.mode === "modal";
|
|
7893
8122
|
const launcherVisible = !triggerOwnedByPage && !options.launcher.hidden && (!isOpen || launcherLeaving);
|
|
7894
8123
|
const calloutToRender = launcherVisible && !launcherLeaving && !calloutDismissed && !drawerEdgeTab ? effectiveOptions.launcher.callout : null;
|
|
7895
|
-
return /* @__PURE__ */
|
|
7896
|
-
isOpen || activated ? /* @__PURE__ */
|
|
7897
|
-
launcherVisible ? /* @__PURE__ */
|
|
8124
|
+
return /* @__PURE__ */ jsxs33("div", { class: `${p35}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
|
|
8125
|
+
isOpen || activated ? /* @__PURE__ */ jsx38("div", { class: `${p35}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
|
|
8126
|
+
launcherVisible ? /* @__PURE__ */ jsx38(
|
|
7898
8127
|
Launcher,
|
|
7899
8128
|
{
|
|
7900
8129
|
onToggle: handleOpen,
|
|
@@ -7904,7 +8133,7 @@ function App({ options, hostElement, bus }) {
|
|
|
7904
8133
|
edgeTab: drawerEdgeTab
|
|
7905
8134
|
}
|
|
7906
8135
|
) : null,
|
|
7907
|
-
calloutToRender ? /* @__PURE__ */
|
|
8136
|
+
calloutToRender ? /* @__PURE__ */ jsx38(
|
|
7908
8137
|
LauncherCallout,
|
|
7909
8138
|
{
|
|
7910
8139
|
callout: calloutToRender,
|
|
@@ -7969,34 +8198,34 @@ var TRACKED = {
|
|
|
7969
8198
|
expand: (on) => ({ on }),
|
|
7970
8199
|
fullscreen: (on) => ({ on }),
|
|
7971
8200
|
// Conversation funnel. `send` is the key conversion; text never rides.
|
|
7972
|
-
send: (
|
|
7973
|
-
message: (
|
|
8201
|
+
send: (p36) => ({ attachments: p36.attachmentCount }),
|
|
8202
|
+
message: (p36) => ({ role: p36.role }),
|
|
7974
8203
|
stop: () => void 0,
|
|
7975
8204
|
clear: () => void 0,
|
|
7976
8205
|
suggestion: () => void 0,
|
|
7977
|
-
toggleHistory: (
|
|
8206
|
+
toggleHistory: (p36) => ({ view: p36.view }),
|
|
7978
8207
|
handshake: () => void 0,
|
|
7979
8208
|
// Forms + human-in-the-loop — ids and outcomes, never values.
|
|
7980
|
-
formSubmit: (
|
|
8209
|
+
formSubmit: (p36) => ({ formId: p36.formId, skipped: p36.skipped }),
|
|
7981
8210
|
toolResult: () => void 0,
|
|
7982
|
-
toolDecision: (
|
|
8211
|
+
toolDecision: (p36) => ({ approved: p36.approved }),
|
|
7983
8212
|
// Content — ids, tags + counts only; titles/bodies never ride.
|
|
7984
|
-
contentView: (
|
|
7985
|
-
contentOpen: (
|
|
7986
|
-
contentSearch: (
|
|
7987
|
-
contentRead: (
|
|
7988
|
-
contentLinkClick: (
|
|
8213
|
+
contentView: (p36) => ({ section: p36.section, tags: p36.tags, count: p36.count }),
|
|
8214
|
+
contentOpen: (p36) => ({ contentId: p36.contentId, tags: p36.tags }),
|
|
8215
|
+
contentSearch: (p36) => ({ qlen: p36.queryLength, hits: p36.hitCount }),
|
|
8216
|
+
contentRead: (p36) => ({ contentId: p36.contentId }),
|
|
8217
|
+
contentLinkClick: (p36) => ({ contentId: p36.contentId }),
|
|
7989
8218
|
// Composer / attachments / voice.
|
|
7990
|
-
attach: (
|
|
8219
|
+
attach: (p36) => ({ count: p36.count, bytes: p36.totalBytes }),
|
|
7991
8220
|
voiceStart: () => void 0,
|
|
7992
|
-
voiceStop: (
|
|
8221
|
+
voiceStop: (p36) => ({ ms: p36.durationMs }),
|
|
7993
8222
|
voiceCancel: () => void 0,
|
|
7994
8223
|
// Preferences — how visitors tune the surface.
|
|
7995
8224
|
localeChange: (locale) => ({ locale }),
|
|
7996
8225
|
themeChange: (theme) => ({ theme }),
|
|
7997
8226
|
textSizeChange: (size) => ({ size }),
|
|
7998
|
-
soundToggle: (
|
|
7999
|
-
sidebarToggle: (
|
|
8227
|
+
soundToggle: (p36) => ({ muted: p36.muted }),
|
|
8228
|
+
sidebarToggle: (p36) => ({ collapsed: p36.collapsed }),
|
|
8000
8229
|
calloutDismiss: () => void 0,
|
|
8001
8230
|
// Health signal only — the error object itself never leaves the page.
|
|
8002
8231
|
error: () => void 0
|