@helpai/elements 0.46.3 → 0.47.1
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 +793 -563
- package/package.json +1 -1
- package/style.css +1 -1
- package/web-component.mjs +793 -563
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.1" : "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
|
}
|
|
@@ -2339,6 +2498,8 @@ function makeInstantWelcomeMessage(m) {
|
|
|
2339
2498
|
role: m.role,
|
|
2340
2499
|
createdAt: Date.now(),
|
|
2341
2500
|
status: "complete",
|
|
2501
|
+
// Client-only intro — rendered, never sent to the backend (see Message.ephemeral).
|
|
2502
|
+
ephemeral: true,
|
|
2342
2503
|
parts: [{ kind: "text", id: `${id}-t0`, text: m.text, done: true }]
|
|
2343
2504
|
});
|
|
2344
2505
|
}
|
|
@@ -2351,6 +2512,7 @@ function toReactive(m) {
|
|
|
2351
2512
|
errorText: m.errorText,
|
|
2352
2513
|
finishReason: m.finishReason,
|
|
2353
2514
|
serverMessageId: m.serverMessageId,
|
|
2515
|
+
ephemeral: m.ephemeral,
|
|
2354
2516
|
attachments: m.attachments,
|
|
2355
2517
|
partsSig: signal(m.parts.map(partToReactive))
|
|
2356
2518
|
};
|
|
@@ -2400,7 +2562,7 @@ function fromWireMessage(w) {
|
|
|
2400
2562
|
};
|
|
2401
2563
|
}
|
|
2402
2564
|
return null;
|
|
2403
|
-
}).filter((
|
|
2565
|
+
}).filter((p36) => p36 !== null);
|
|
2404
2566
|
return {
|
|
2405
2567
|
id: w.id,
|
|
2406
2568
|
role: w.role,
|
|
@@ -2423,6 +2585,7 @@ function fromReactive(m) {
|
|
|
2423
2585
|
errorText: m.errorText,
|
|
2424
2586
|
finishReason: m.finishReason,
|
|
2425
2587
|
serverMessageId: m.serverMessageId,
|
|
2588
|
+
ephemeral: m.ephemeral,
|
|
2426
2589
|
attachments: m.attachments,
|
|
2427
2590
|
parts: m.partsSig.value.map(partFromReactive)
|
|
2428
2591
|
};
|
|
@@ -2434,43 +2597,43 @@ function assistantText(m) {
|
|
|
2434
2597
|
}
|
|
2435
2598
|
return out;
|
|
2436
2599
|
}
|
|
2437
|
-
function partToReactive(
|
|
2438
|
-
if (
|
|
2439
|
-
return { kind:
|
|
2600
|
+
function partToReactive(p36) {
|
|
2601
|
+
if (p36.kind === "text" || p36.kind === "reasoning") {
|
|
2602
|
+
return { kind: p36.kind, id: p36.id, textSig: signal(p36.text), doneSig: signal(p36.done) };
|
|
2440
2603
|
}
|
|
2441
|
-
if (
|
|
2604
|
+
if (p36.kind === "tool") {
|
|
2442
2605
|
return {
|
|
2443
2606
|
kind: "tool",
|
|
2444
|
-
toolCallId:
|
|
2445
|
-
toolName:
|
|
2446
|
-
inputPartialSig: signal(
|
|
2447
|
-
inputSig: signal(
|
|
2448
|
-
outputSig: signal(
|
|
2449
|
-
errorSig: signal(
|
|
2450
|
-
stateSig: signal(
|
|
2451
|
-
approvalSig: signal(
|
|
2607
|
+
toolCallId: p36.toolCallId,
|
|
2608
|
+
toolName: p36.toolName,
|
|
2609
|
+
inputPartialSig: signal(p36.inputPartial),
|
|
2610
|
+
inputSig: signal(p36.input),
|
|
2611
|
+
outputSig: signal(p36.output),
|
|
2612
|
+
errorSig: signal(p36.error),
|
|
2613
|
+
stateSig: signal(p36.state),
|
|
2614
|
+
approvalSig: signal(p36.approval)
|
|
2452
2615
|
};
|
|
2453
2616
|
}
|
|
2454
|
-
return
|
|
2617
|
+
return p36;
|
|
2455
2618
|
}
|
|
2456
|
-
function partFromReactive(
|
|
2457
|
-
if (
|
|
2458
|
-
return { kind:
|
|
2619
|
+
function partFromReactive(p36) {
|
|
2620
|
+
if (p36.kind === "text" || p36.kind === "reasoning") {
|
|
2621
|
+
return { kind: p36.kind, id: p36.id, text: p36.textSig.value, done: p36.doneSig.value };
|
|
2459
2622
|
}
|
|
2460
|
-
if (
|
|
2623
|
+
if (p36.kind === "tool") {
|
|
2461
2624
|
return {
|
|
2462
2625
|
kind: "tool",
|
|
2463
|
-
toolCallId:
|
|
2464
|
-
toolName:
|
|
2465
|
-
inputPartial:
|
|
2466
|
-
input:
|
|
2467
|
-
output:
|
|
2468
|
-
error:
|
|
2469
|
-
state:
|
|
2470
|
-
approval:
|
|
2626
|
+
toolCallId: p36.toolCallId,
|
|
2627
|
+
toolName: p36.toolName,
|
|
2628
|
+
inputPartial: p36.inputPartialSig.value,
|
|
2629
|
+
input: p36.inputSig.value,
|
|
2630
|
+
output: p36.outputSig.value,
|
|
2631
|
+
error: p36.errorSig.value,
|
|
2632
|
+
state: p36.stateSig.value,
|
|
2633
|
+
approval: p36.approvalSig.value
|
|
2471
2634
|
};
|
|
2472
2635
|
}
|
|
2473
|
-
return
|
|
2636
|
+
return p36;
|
|
2474
2637
|
}
|
|
2475
2638
|
|
|
2476
2639
|
// src/stream/reducer.ts
|
|
@@ -2516,8 +2679,8 @@ var StreamReducer = class {
|
|
|
2516
2679
|
ensureTextPart(m, "text", chunk.id);
|
|
2517
2680
|
return;
|
|
2518
2681
|
case "text-delta": {
|
|
2519
|
-
const
|
|
2520
|
-
|
|
2682
|
+
const p36 = ensureTextPart(m, "text", chunk.id);
|
|
2683
|
+
p36.textSig.value += chunk.delta;
|
|
2521
2684
|
return;
|
|
2522
2685
|
}
|
|
2523
2686
|
case "text-end":
|
|
@@ -2527,8 +2690,8 @@ var StreamReducer = class {
|
|
|
2527
2690
|
ensureTextPart(m, "reasoning", chunk.id).doneSig.value = false;
|
|
2528
2691
|
return;
|
|
2529
2692
|
case "reasoning-delta": {
|
|
2530
|
-
const
|
|
2531
|
-
|
|
2693
|
+
const p36 = ensureTextPart(m, "reasoning", chunk.id);
|
|
2694
|
+
p36.textSig.value += chunk.delta;
|
|
2532
2695
|
return;
|
|
2533
2696
|
}
|
|
2534
2697
|
case "reasoning-end":
|
|
@@ -2578,19 +2741,19 @@ var StreamReducer = class {
|
|
|
2578
2741
|
}
|
|
2579
2742
|
};
|
|
2580
2743
|
function ensureTextPart(m, kind, id) {
|
|
2581
|
-
const existing = m.partsSig.value.find((
|
|
2744
|
+
const existing = m.partsSig.value.find((p36) => p36.kind === kind && p36.id === id);
|
|
2582
2745
|
if (existing) return existing;
|
|
2583
2746
|
const part = { kind, id, textSig: signal2(""), doneSig: signal2(false) };
|
|
2584
2747
|
appendPart(m, part);
|
|
2585
2748
|
return part;
|
|
2586
2749
|
}
|
|
2587
|
-
function ensureToolPart(m, toolCallId,
|
|
2588
|
-
const existing = m.partsSig.value.find((
|
|
2750
|
+
function ensureToolPart(m, toolCallId, toolName2) {
|
|
2751
|
+
const existing = m.partsSig.value.find((p36) => p36.kind === "tool" && p36.toolCallId === toolCallId);
|
|
2589
2752
|
if (existing) return existing;
|
|
2590
2753
|
const part = {
|
|
2591
2754
|
kind: "tool",
|
|
2592
2755
|
toolCallId,
|
|
2593
|
-
toolName:
|
|
2756
|
+
toolName: toolName2 ?? "tool",
|
|
2594
2757
|
inputPartialSig: signal2(""),
|
|
2595
2758
|
inputSig: signal2(void 0),
|
|
2596
2759
|
outputSig: signal2(void 0),
|
|
@@ -2605,7 +2768,7 @@ function appendPart(m, part) {
|
|
|
2605
2768
|
m.partsSig.value = [...m.partsSig.value, part];
|
|
2606
2769
|
}
|
|
2607
2770
|
function appendSource(m, source) {
|
|
2608
|
-
if (m.partsSig.value.some((
|
|
2771
|
+
if (m.partsSig.value.some((p36) => p36.kind === "source" && p36.sourceId === source.sourceId)) return;
|
|
2609
2772
|
appendPart(m, source);
|
|
2610
2773
|
}
|
|
2611
2774
|
function applyTool(m, chunk) {
|
|
@@ -2614,37 +2777,37 @@ function applyTool(m, chunk) {
|
|
|
2614
2777
|
ensureToolPart(m, chunk.toolCallId, chunk.toolName);
|
|
2615
2778
|
return;
|
|
2616
2779
|
case "tool-input-delta": {
|
|
2617
|
-
const
|
|
2618
|
-
|
|
2780
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2781
|
+
p36.inputPartialSig.value += chunk.inputTextDelta;
|
|
2619
2782
|
return;
|
|
2620
2783
|
}
|
|
2621
2784
|
case "tool-input-available": {
|
|
2622
|
-
const
|
|
2623
|
-
|
|
2624
|
-
|
|
2785
|
+
const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
|
|
2786
|
+
p36.inputSig.value = chunk.input;
|
|
2787
|
+
p36.stateSig.value = "input-available";
|
|
2625
2788
|
return;
|
|
2626
2789
|
}
|
|
2627
2790
|
case "tool-approval-request": {
|
|
2628
|
-
const
|
|
2629
|
-
|
|
2630
|
-
|
|
2791
|
+
const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
|
|
2792
|
+
p36.approvalSig.value = { id: chunk.approvalId };
|
|
2793
|
+
p36.stateSig.value = "approval-requested";
|
|
2631
2794
|
return;
|
|
2632
2795
|
}
|
|
2633
2796
|
case "tool-output-available": {
|
|
2634
|
-
const
|
|
2635
|
-
|
|
2636
|
-
|
|
2797
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2798
|
+
p36.outputSig.value = chunk.output;
|
|
2799
|
+
p36.stateSig.value = "output-available";
|
|
2637
2800
|
return;
|
|
2638
2801
|
}
|
|
2639
2802
|
case "tool-output-error": {
|
|
2640
|
-
const
|
|
2641
|
-
|
|
2642
|
-
|
|
2803
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2804
|
+
p36.errorSig.value = chunk.errorText;
|
|
2805
|
+
p36.stateSig.value = "output-error";
|
|
2643
2806
|
return;
|
|
2644
2807
|
}
|
|
2645
2808
|
case "tool-output-denied": {
|
|
2646
|
-
const
|
|
2647
|
-
|
|
2809
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2810
|
+
p36.stateSig.value = "output-denied";
|
|
2648
2811
|
return;
|
|
2649
2812
|
}
|
|
2650
2813
|
default:
|
|
@@ -3341,24 +3504,24 @@ import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef6
|
|
|
3341
3504
|
import { useEffect as useEffect2, useRef } from "preact/hooks";
|
|
3342
3505
|
import { jsx as jsx3 } from "preact/jsx-runtime";
|
|
3343
3506
|
function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, strings }) {
|
|
3344
|
-
const
|
|
3507
|
+
const p36 = BRAND.cssPrefix;
|
|
3345
3508
|
const dragRef = useRef(null);
|
|
3346
3509
|
useEffect2(() => {
|
|
3347
3510
|
if (!panelEl) return;
|
|
3348
3511
|
const style = panelEl.style;
|
|
3349
|
-
if (resize.minWidth) style.setProperty(`--${
|
|
3350
|
-
if (resize.maxWidth) style.setProperty(`--${
|
|
3351
|
-
if (resize.minHeight) style.setProperty(`--${
|
|
3352
|
-
if (resize.maxHeight) style.setProperty(`--${
|
|
3512
|
+
if (resize.minWidth) style.setProperty(`--${p36}-resize-min-w`, resize.minWidth);
|
|
3513
|
+
if (resize.maxWidth) style.setProperty(`--${p36}-resize-max-w`, resize.maxWidth);
|
|
3514
|
+
if (resize.minHeight) style.setProperty(`--${p36}-resize-min-h`, resize.minHeight);
|
|
3515
|
+
if (resize.maxHeight) style.setProperty(`--${p36}-resize-max-h`, resize.maxHeight);
|
|
3353
3516
|
if (initialSize) {
|
|
3354
|
-
style.setProperty(`--${
|
|
3355
|
-
style.setProperty(`--${
|
|
3517
|
+
style.setProperty(`--${p36}-widget-w`, `${initialSize.width}px`);
|
|
3518
|
+
style.setProperty(`--${p36}-widget-h`, `${initialSize.height}px`);
|
|
3356
3519
|
}
|
|
3357
|
-
}, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight,
|
|
3520
|
+
}, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p36, initialSize]);
|
|
3358
3521
|
if (!panelEl) return null;
|
|
3359
3522
|
const isTop = position.startsWith("top-");
|
|
3360
3523
|
const isRight = position.endsWith("-right");
|
|
3361
|
-
const cornerClass = `${
|
|
3524
|
+
const cornerClass = `${p36}-resize-grip ${p36}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
|
|
3362
3525
|
const onPointerDown = (e) => {
|
|
3363
3526
|
if (!panelEl) return;
|
|
3364
3527
|
const target = e.currentTarget;
|
|
@@ -3383,8 +3546,8 @@ function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, stri
|
|
|
3383
3546
|
if (!d || e.pointerId !== d.pointerId || !panelEl) return;
|
|
3384
3547
|
const dx = (e.clientX - d.startX) * d.dirX;
|
|
3385
3548
|
const dy = (e.clientY - d.startY) * d.dirY;
|
|
3386
|
-
panelEl.style.setProperty(`--${
|
|
3387
|
-
panelEl.style.setProperty(`--${
|
|
3549
|
+
panelEl.style.setProperty(`--${p36}-widget-w`, `${d.startW + dx}px`);
|
|
3550
|
+
panelEl.style.setProperty(`--${p36}-widget-h`, `${d.startH + dy}px`);
|
|
3388
3551
|
};
|
|
3389
3552
|
const onPointerUp = (e) => {
|
|
3390
3553
|
const d = dragRef.current;
|
|
@@ -4121,7 +4284,7 @@ function usePopoverMenu({ itemCount, initialFocusIndex }) {
|
|
|
4121
4284
|
// src/ui/overflow-menu.tsx
|
|
4122
4285
|
import { jsx as jsx8, jsxs as jsxs6 } from "preact/jsx-runtime";
|
|
4123
4286
|
function OverflowMenu({ items, triggerLabel }) {
|
|
4124
|
-
const
|
|
4287
|
+
const p36 = BRAND.cssPrefix;
|
|
4125
4288
|
const menu = usePopoverMenu({ itemCount: items.length });
|
|
4126
4289
|
const handleSelect = (item) => {
|
|
4127
4290
|
if (item.disabled) return;
|
|
@@ -4144,13 +4307,13 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4144
4307
|
e.stopPropagation();
|
|
4145
4308
|
pickSegment(item, segs[next].value);
|
|
4146
4309
|
};
|
|
4147
|
-
return /* @__PURE__ */ jsxs6("div", { class: `${
|
|
4310
|
+
return /* @__PURE__ */ jsxs6("div", { class: `${p36}-menu-wrap`, children: [
|
|
4148
4311
|
/* @__PURE__ */ jsx8(
|
|
4149
4312
|
"button",
|
|
4150
4313
|
{
|
|
4151
4314
|
ref: menu.triggerRef,
|
|
4152
4315
|
type: "button",
|
|
4153
|
-
class: `${
|
|
4316
|
+
class: `${p36}-icon-btn`,
|
|
4154
4317
|
"aria-label": triggerLabel,
|
|
4155
4318
|
"aria-haspopup": "menu",
|
|
4156
4319
|
"aria-expanded": menu.open,
|
|
@@ -4164,7 +4327,7 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4164
4327
|
"div",
|
|
4165
4328
|
{
|
|
4166
4329
|
ref: menu.menuRef,
|
|
4167
|
-
class: `${
|
|
4330
|
+
class: `${p36}-menu`,
|
|
4168
4331
|
role: "menu",
|
|
4169
4332
|
"aria-label": triggerLabel,
|
|
4170
4333
|
onKeyDown: menu.onMenuKey,
|
|
@@ -4174,14 +4337,14 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4174
4337
|
"div",
|
|
4175
4338
|
{
|
|
4176
4339
|
role: "menuitem",
|
|
4177
|
-
class: `${
|
|
4340
|
+
class: `${p36}-menu-item ${p36}-menu-item-segmented`,
|
|
4178
4341
|
"aria-label": item.label,
|
|
4179
4342
|
tabIndex: -1,
|
|
4180
4343
|
onKeyDown: (e) => onSegmentRowKey(e, item),
|
|
4181
4344
|
children: [
|
|
4182
|
-
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${
|
|
4183
|
-
/* @__PURE__ */ jsx8("span", { class: `${
|
|
4184
|
-
/* @__PURE__ */ jsx8("span", { class: `${
|
|
4345
|
+
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
|
|
4346
|
+
/* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
|
|
4347
|
+
/* @__PURE__ */ jsx8("span", { class: `${p36}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
|
|
4185
4348
|
const active = seg.value === item.value;
|
|
4186
4349
|
return /* @__PURE__ */ jsx8(
|
|
4187
4350
|
"button",
|
|
@@ -4189,7 +4352,7 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4189
4352
|
type: "button",
|
|
4190
4353
|
role: "menuitemradio",
|
|
4191
4354
|
"aria-checked": active,
|
|
4192
|
-
class: `${
|
|
4355
|
+
class: `${p36}-segment`,
|
|
4193
4356
|
"data-on": active ? "true" : void 0,
|
|
4194
4357
|
lang: seg.lang,
|
|
4195
4358
|
title: seg.value,
|
|
@@ -4209,14 +4372,14 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4209
4372
|
{
|
|
4210
4373
|
type: "button",
|
|
4211
4374
|
role: "menuitem",
|
|
4212
|
-
class: `${
|
|
4375
|
+
class: `${p36}-menu-item`,
|
|
4213
4376
|
"aria-pressed": item.type === "switch" ? item.on : void 0,
|
|
4214
4377
|
disabled: item.disabled,
|
|
4215
4378
|
onClick: () => handleSelect(item),
|
|
4216
4379
|
children: [
|
|
4217
|
-
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${
|
|
4218
|
-
/* @__PURE__ */ jsx8("span", { class: `${
|
|
4219
|
-
item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${
|
|
4380
|
+
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
|
|
4381
|
+
/* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
|
|
4382
|
+
item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
|
|
4220
4383
|
]
|
|
4221
4384
|
},
|
|
4222
4385
|
item.id
|
|
@@ -4459,6 +4622,7 @@ function DynamicForm({
|
|
|
4459
4622
|
onSubmit,
|
|
4460
4623
|
skipLabel,
|
|
4461
4624
|
onSkip,
|
|
4625
|
+
footerHint,
|
|
4462
4626
|
disabled,
|
|
4463
4627
|
rootTestId,
|
|
4464
4628
|
submitTestId,
|
|
@@ -4505,6 +4669,7 @@ function DynamicForm({
|
|
|
4505
4669
|
field.name
|
|
4506
4670
|
)),
|
|
4507
4671
|
/* @__PURE__ */ jsxs8("div", { class: `${p10}-form-actions`, children: [
|
|
4672
|
+
footerHint ? /* @__PURE__ */ jsx10("span", { class: `${p10}-form-hint`, children: footerHint }) : null,
|
|
4508
4673
|
skipLabel && onSkip ? /* @__PURE__ */ jsx10("button", { type: "button", class: `${p10}-form-skip`, onClick: onSkip, disabled, "data-testid": skipTestId, children: skipLabel }) : null,
|
|
4509
4674
|
/* @__PURE__ */ jsx10("button", { type: "submit", class: `${p10}-form-submit`, disabled, "data-testid": submitTestId, children: submitLabel })
|
|
4510
4675
|
] })
|
|
@@ -4759,9 +4924,9 @@ function FormDoneMarker({
|
|
|
4759
4924
|
import { useComputed as useComputed5 } from "@preact/signals";
|
|
4760
4925
|
|
|
4761
4926
|
// src/stream/constants.ts
|
|
4762
|
-
function isAskUserInputTool(
|
|
4763
|
-
if (!
|
|
4764
|
-
const name =
|
|
4927
|
+
function isAskUserInputTool(toolName2) {
|
|
4928
|
+
if (!toolName2) return false;
|
|
4929
|
+
const name = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
|
|
4765
4930
|
return name === "ask-user-input" || name === "ask_user_input" || name === "request-user-input" || name === "request_user_input";
|
|
4766
4931
|
}
|
|
4767
4932
|
|
|
@@ -4855,36 +5020,92 @@ function SourceView({ part, strings }) {
|
|
|
4855
5020
|
|
|
4856
5021
|
// src/ui/tool-approval.tsx
|
|
4857
5022
|
import { useComputed as useComputed2, useSignal } from "@preact/signals";
|
|
4858
|
-
|
|
5023
|
+
|
|
5024
|
+
// src/ui/tool-card.tsx
|
|
5025
|
+
import { jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
|
|
4859
5026
|
var p13 = BRAND.cssPrefix;
|
|
4860
|
-
function
|
|
4861
|
-
|
|
5027
|
+
function toolName(raw) {
|
|
5028
|
+
if (raw.startsWith("tool:")) return raw.slice(5);
|
|
5029
|
+
if (raw.startsWith("tool-")) return raw.slice(5);
|
|
5030
|
+
return raw;
|
|
5031
|
+
}
|
|
5032
|
+
function statusOf(state, approval) {
|
|
5033
|
+
if (state === "output-error") return "error";
|
|
5034
|
+
if (state === "output-denied" || approval?.approved === false) return "denied";
|
|
5035
|
+
if (state === "output-available") return "completed";
|
|
5036
|
+
if (approval?.approved === true) return "approved";
|
|
5037
|
+
return "pending";
|
|
5038
|
+
}
|
|
5039
|
+
var ICON = {
|
|
5040
|
+
completed: "\u2713",
|
|
5041
|
+
approved: "\u2713",
|
|
5042
|
+
denied: "\u2715",
|
|
5043
|
+
error: "\u26A0",
|
|
5044
|
+
pending: "\u2022"
|
|
5045
|
+
};
|
|
5046
|
+
function ToolStatus({
|
|
5047
|
+
state,
|
|
5048
|
+
approval,
|
|
5049
|
+
strings
|
|
5050
|
+
}) {
|
|
5051
|
+
const status = statusOf(state, approval);
|
|
5052
|
+
const label = status === "completed" ? strings.statusCompleted : status === "approved" ? strings.approved : status === "denied" ? strings.statusDenied : status === "error" ? strings.statusError : "";
|
|
5053
|
+
if (!label) return null;
|
|
5054
|
+
return /* @__PURE__ */ jsxs11("span", { class: `${p13}-toolui-status`, "data-status": status, children: [
|
|
5055
|
+
/* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-status-icon`, "aria-hidden": "true", children: ICON[status] }),
|
|
5056
|
+
label
|
|
5057
|
+
] });
|
|
5058
|
+
}
|
|
5059
|
+
function ToolSection({ label, value, error }) {
|
|
5060
|
+
const text = error ? String(value ?? "") : pretty(unwrapResult(value));
|
|
5061
|
+
if (!text) return null;
|
|
5062
|
+
return /* @__PURE__ */ jsxs11("div", { class: `${p13}-toolui-section`, children: [
|
|
5063
|
+
/* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-label`, children: label }),
|
|
5064
|
+
/* @__PURE__ */ jsx14("pre", { class: `${p13}-toolui-code`, "data-error": error ? "true" : void 0, children: text })
|
|
5065
|
+
] });
|
|
5066
|
+
}
|
|
5067
|
+
function unwrapResult(output) {
|
|
5068
|
+
if (output && typeof output === "object") {
|
|
5069
|
+
const rec = output;
|
|
5070
|
+
if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
|
|
5071
|
+
}
|
|
5072
|
+
return output;
|
|
4862
5073
|
}
|
|
5074
|
+
function pretty(value) {
|
|
5075
|
+
if (value == null) return "";
|
|
5076
|
+
try {
|
|
5077
|
+
const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
|
|
5078
|
+
if (!json || json === "{}" || json === "[]" || json === '""') return "";
|
|
5079
|
+
return json.length > 800 ? `${json.slice(0, 800)}\u2026` : json;
|
|
5080
|
+
} catch {
|
|
5081
|
+
return "";
|
|
5082
|
+
}
|
|
5083
|
+
}
|
|
5084
|
+
|
|
5085
|
+
// src/ui/tool-approval.tsx
|
|
5086
|
+
import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
|
|
5087
|
+
var p14 = BRAND.cssPrefix;
|
|
4863
5088
|
function ToolApproval({ part, strings, active, onDecision }) {
|
|
4864
5089
|
const approval = useComputed2(() => part.approvalSig.value);
|
|
5090
|
+
const state = useComputed2(() => part.stateSig.value);
|
|
4865
5091
|
const input = useComputed2(() => part.inputSig.value);
|
|
5092
|
+
const output = useComputed2(() => part.outputSig.value);
|
|
5093
|
+
const error = useComputed2(() => part.errorSig.value);
|
|
4866
5094
|
const reason = useSignal("");
|
|
4867
|
-
const decided = approval.value?.approved !== void 0;
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
|
|
4871
|
-
/* @__PURE__ */
|
|
4872
|
-
/* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) }),
|
|
4873
|
-
ap?.reason ? /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-value`, children: ap.reason }) : null
|
|
4874
|
-
] });
|
|
4875
|
-
}
|
|
4876
|
-
const args = summarizeInput(input.value);
|
|
4877
|
-
return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval`, "data-testid": TID.toolApproval, children: [
|
|
4878
|
-
/* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-head`, children: [
|
|
4879
|
-
/* @__PURE__ */ jsx14("span", { class: `${p13}-tool-badge`, children: strings.approvalRequired }),
|
|
4880
|
-
/* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) })
|
|
5095
|
+
const decided = approval.value?.approved !== void 0 || state.value !== "approval-requested";
|
|
5096
|
+
return /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui`, "data-testid": decided ? TID.toolDecision : TID.toolApproval, children: [
|
|
5097
|
+
/* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui-head`, children: [
|
|
5098
|
+
/* @__PURE__ */ jsx15("strong", { class: `${p14}-toolui-title`, children: toolName(part.toolName) }),
|
|
5099
|
+
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 })
|
|
4881
5100
|
] }),
|
|
4882
|
-
|
|
4883
|
-
|
|
4884
|
-
|
|
5101
|
+
/* @__PURE__ */ jsx15(ToolSection, { label: strings.toolParameters, value: input.value }),
|
|
5102
|
+
output.value !== void 0 ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolResult, value: output.value }) : null,
|
|
5103
|
+
error.value ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null,
|
|
5104
|
+
decided ? null : active ? /* @__PURE__ */ jsxs12(Fragment2, { children: [
|
|
5105
|
+
/* @__PURE__ */ jsx15(
|
|
4885
5106
|
"input",
|
|
4886
5107
|
{
|
|
4887
|
-
class: `${
|
|
5108
|
+
class: `${p14}-field-input`,
|
|
4888
5109
|
value: reason.value,
|
|
4889
5110
|
placeholder: strings.approvalReason,
|
|
4890
5111
|
onInput: (e) => {
|
|
@@ -4892,40 +5113,34 @@ function ToolApproval({ part, strings, active, onDecision }) {
|
|
|
4892
5113
|
}
|
|
4893
5114
|
}
|
|
4894
5115
|
),
|
|
4895
|
-
/* @__PURE__ */
|
|
4896
|
-
/* @__PURE__ */
|
|
5116
|
+
/* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
|
|
5117
|
+
/* @__PURE__ */ jsx15(
|
|
4897
5118
|
"button",
|
|
4898
5119
|
{
|
|
4899
5120
|
type: "button",
|
|
4900
|
-
class: `${
|
|
5121
|
+
class: `${p14}-form-skip`,
|
|
4901
5122
|
onClick: () => onDecision(part.toolCallId, false, reason.value.trim() || void 0),
|
|
4902
5123
|
"data-testid": TID.toolReject,
|
|
4903
5124
|
children: strings.reject
|
|
4904
5125
|
}
|
|
4905
5126
|
),
|
|
4906
|
-
/* @__PURE__ */
|
|
5127
|
+
/* @__PURE__ */ jsx15(
|
|
4907
5128
|
"button",
|
|
4908
5129
|
{
|
|
4909
5130
|
type: "button",
|
|
4910
|
-
class: `${
|
|
5131
|
+
class: `${p14}-form-submit`,
|
|
4911
5132
|
onClick: () => onDecision(part.toolCallId, true, reason.value.trim() || void 0),
|
|
4912
5133
|
"data-testid": TID.toolApprove,
|
|
4913
5134
|
children: strings.approve
|
|
4914
5135
|
}
|
|
4915
5136
|
)
|
|
4916
5137
|
] })
|
|
4917
|
-
] }) :
|
|
5138
|
+
] }) : (
|
|
5139
|
+
// eslint-disable-next-line unicorn/no-nested-ternary -- decided → none; active → controls; stale → note
|
|
5140
|
+
/* @__PURE__ */ jsx15("p", { class: `${p14}-toolui-note`, children: strings.stepNoLongerActive })
|
|
5141
|
+
)
|
|
4918
5142
|
] });
|
|
4919
5143
|
}
|
|
4920
|
-
function summarizeInput(input) {
|
|
4921
|
-
if (input == null) return "";
|
|
4922
|
-
try {
|
|
4923
|
-
const json = typeof input === "string" ? input : JSON.stringify(input, null, 2);
|
|
4924
|
-
return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
|
|
4925
|
-
} catch {
|
|
4926
|
-
return "";
|
|
4927
|
-
}
|
|
4928
|
-
}
|
|
4929
5144
|
|
|
4930
5145
|
// src/ui/tool-ask-input.tsx
|
|
4931
5146
|
import { useComputed as useComputed3 } from "@preact/signals";
|
|
@@ -4985,8 +5200,20 @@ function num(v) {
|
|
|
4985
5200
|
}
|
|
4986
5201
|
|
|
4987
5202
|
// src/ui/tool-ask-input.tsx
|
|
4988
|
-
import { jsx as
|
|
4989
|
-
var
|
|
5203
|
+
import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
|
|
5204
|
+
var p15 = BRAND.cssPrefix;
|
|
5205
|
+
function responseTypeLabel(req, s) {
|
|
5206
|
+
switch (req.responseType) {
|
|
5207
|
+
case "single-choice":
|
|
5208
|
+
return s.respSingleChoice;
|
|
5209
|
+
case "multi-choice":
|
|
5210
|
+
return s.respMultiChoice;
|
|
5211
|
+
case "confirmation":
|
|
5212
|
+
return s.respConfirmation;
|
|
5213
|
+
default:
|
|
5214
|
+
return s.respFreeText;
|
|
5215
|
+
}
|
|
5216
|
+
}
|
|
4990
5217
|
function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
|
|
4991
5218
|
const state = useComputed3(() => part.stateSig.value);
|
|
4992
5219
|
const approval = useComputed3(() => part.approvalSig.value);
|
|
@@ -4998,71 +5225,93 @@ function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
|
|
|
4998
5225
|
else if (request.value.responseType === "confirmation") onSubmit(part.toolCallId, { confirmed: accepted });
|
|
4999
5226
|
else onSubmit(part.toolCallId, accepted ? { answer } : {});
|
|
5000
5227
|
};
|
|
5228
|
+
const req = request.value;
|
|
5001
5229
|
if (decided) {
|
|
5002
|
-
return /* @__PURE__ */
|
|
5230
|
+
return /* @__PURE__ */ jsx16(DecidedCard, { part, strings, req });
|
|
5003
5231
|
}
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5007
|
-
/* @__PURE__ */
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5232
|
+
const stale = !active;
|
|
5233
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui${stale ? ` ${p15}-toolui-stale` : ""}`, "data-testid": TID.toolAskInput, children: [
|
|
5234
|
+
/* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
|
|
5235
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputRequired }),
|
|
5236
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: responseTypeLabel(req, strings) })
|
|
5237
|
+
] }),
|
|
5238
|
+
req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
|
|
5239
|
+
/* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
|
|
5240
|
+
stale ? /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-note`, children: strings.stepNoLongerActive }) : /* @__PURE__ */ jsx16(AskBody, { req, strings, resolve })
|
|
5241
|
+
] });
|
|
5242
|
+
}
|
|
5243
|
+
function AskBody({
|
|
5244
|
+
req,
|
|
5245
|
+
strings,
|
|
5246
|
+
resolve
|
|
5247
|
+
}) {
|
|
5248
|
+
if (req.responseType === "confirmation") {
|
|
5249
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-form-actions`, children: [
|
|
5250
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-form-hint`, children: strings.inputSubmitHint }),
|
|
5251
|
+
/* @__PURE__ */ jsx16(
|
|
5018
5252
|
"button",
|
|
5019
5253
|
{
|
|
5020
5254
|
type: "button",
|
|
5021
|
-
class: `${
|
|
5255
|
+
class: `${p15}-form-skip`,
|
|
5022
5256
|
onClick: () => resolve(void 0, false),
|
|
5023
5257
|
"data-testid": TID.toolInputSkip,
|
|
5024
5258
|
children: strings.reject
|
|
5025
5259
|
}
|
|
5026
5260
|
),
|
|
5027
|
-
/* @__PURE__ */
|
|
5261
|
+
/* @__PURE__ */ jsx16(
|
|
5028
5262
|
"button",
|
|
5029
5263
|
{
|
|
5030
5264
|
type: "button",
|
|
5031
|
-
class: `${
|
|
5265
|
+
class: `${p15}-form-submit`,
|
|
5032
5266
|
onClick: () => resolve(void 0, true),
|
|
5033
5267
|
"data-testid": TID.toolInputSubmit,
|
|
5034
5268
|
children: strings.approve
|
|
5035
5269
|
}
|
|
5036
5270
|
)
|
|
5037
|
-
] })
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
|
|
5049
|
-
|
|
5050
|
-
|
|
5271
|
+
] });
|
|
5272
|
+
}
|
|
5273
|
+
const fields = askInputToFields(req).map((f) => {
|
|
5274
|
+
f.label = strings.inputYourAnswer;
|
|
5275
|
+
return f;
|
|
5276
|
+
});
|
|
5277
|
+
return /* @__PURE__ */ jsx16(
|
|
5278
|
+
DynamicForm,
|
|
5279
|
+
{
|
|
5280
|
+
fields,
|
|
5281
|
+
strings,
|
|
5282
|
+
submitLabel: strings.inputSubmit,
|
|
5283
|
+
footerHint: strings.inputSubmitHint,
|
|
5284
|
+
onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
|
|
5285
|
+
skipLabel: req.required === false ? strings.inputSkip : void 0,
|
|
5286
|
+
onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
|
|
5287
|
+
submitTestId: TID.toolInputSubmit,
|
|
5288
|
+
skipTestId: TID.toolInputSkip
|
|
5289
|
+
}
|
|
5290
|
+
);
|
|
5051
5291
|
}
|
|
5052
|
-
function
|
|
5053
|
-
return /* @__PURE__ */
|
|
5054
|
-
/* @__PURE__ */
|
|
5055
|
-
|
|
5292
|
+
function Section({ label, text }) {
|
|
5293
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-section`, children: [
|
|
5294
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-label`, children: label }),
|
|
5295
|
+
/* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-text`, children: text })
|
|
5056
5296
|
] });
|
|
5057
5297
|
}
|
|
5058
|
-
function
|
|
5298
|
+
function DecidedCard({
|
|
5299
|
+
part,
|
|
5300
|
+
strings,
|
|
5301
|
+
req
|
|
5302
|
+
}) {
|
|
5059
5303
|
const output = useComputed3(() => part.outputSig.value);
|
|
5060
5304
|
const approval = useComputed3(() => part.approvalSig.value);
|
|
5061
|
-
const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
|
|
5062
5305
|
const skipped = approval.value?.approved === false;
|
|
5063
|
-
|
|
5064
|
-
|
|
5065
|
-
/* @__PURE__ */
|
|
5306
|
+
const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
|
|
5307
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui`, "data-testid": TID.toolDecision, children: [
|
|
5308
|
+
/* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
|
|
5309
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputBadge }),
|
|
5310
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: skipped ? strings.inputSkipped : strings.inputAnswered })
|
|
5311
|
+
] }),
|
|
5312
|
+
req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
|
|
5313
|
+
/* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
|
|
5314
|
+
!skipped && answer ? /* @__PURE__ */ jsx16(Section, { label: strings.inputResponse, text: answer }) : null
|
|
5066
5315
|
] });
|
|
5067
5316
|
}
|
|
5068
5317
|
function summarizeOutput(output) {
|
|
@@ -5071,6 +5320,7 @@ function summarizeOutput(output) {
|
|
|
5071
5320
|
if (typeof output === "object") {
|
|
5072
5321
|
const rec = output;
|
|
5073
5322
|
if ("confirmed" in rec) return rec.confirmed ? "Yes" : "No";
|
|
5323
|
+
if (typeof rec.responseText === "string" && rec.responseText) return rec.responseText;
|
|
5074
5324
|
return Object.values(rec).filter((v) => typeof v === "string" || typeof v === "number").join(", ");
|
|
5075
5325
|
}
|
|
5076
5326
|
return String(output);
|
|
@@ -5078,52 +5328,30 @@ function summarizeOutput(output) {
|
|
|
5078
5328
|
|
|
5079
5329
|
// src/ui/tool-call.tsx
|
|
5080
5330
|
import { useComputed as useComputed4 } from "@preact/signals";
|
|
5081
|
-
import { jsx as
|
|
5082
|
-
var
|
|
5083
|
-
function displayToolName2(toolName) {
|
|
5084
|
-
return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ").trim();
|
|
5085
|
-
}
|
|
5331
|
+
import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
|
|
5332
|
+
var p16 = BRAND.cssPrefix;
|
|
5086
5333
|
function ToolCall({ part, strings }) {
|
|
5087
|
-
const
|
|
5088
|
-
const
|
|
5089
|
-
const
|
|
5090
|
-
|
|
5091
|
-
|
|
5092
|
-
|
|
5093
|
-
|
|
5094
|
-
|
|
5334
|
+
const input = useComputed4(() => part.inputSig.value);
|
|
5335
|
+
const output = useComputed4(() => part.outputSig.value);
|
|
5336
|
+
const error = useComputed4(() => part.errorSig.value);
|
|
5337
|
+
const state = useComputed4(() => part.stateSig.value);
|
|
5338
|
+
const approval = useComputed4(() => part.approvalSig.value);
|
|
5339
|
+
const hasDetails = useComputed4(() => !!pretty(input.value) || !!error.value || !!pretty(unwrapResult(output.value)));
|
|
5340
|
+
if (!hasDetails.value) return null;
|
|
5341
|
+
return /* @__PURE__ */ jsxs14("details", { class: `${p16}-toolui ${p16}-toolui-collapsible`, "data-testid": TID.toolCall, children: [
|
|
5342
|
+
/* @__PURE__ */ jsxs14("summary", { class: `${p16}-toolui-head`, children: [
|
|
5343
|
+
/* @__PURE__ */ jsx17("strong", { class: `${p16}-toolui-title`, children: toolName(part.toolName) }),
|
|
5344
|
+
/* @__PURE__ */ jsx17(ToolStatus, { state: state.value, approval: approval.value, strings })
|
|
5095
5345
|
] }),
|
|
5096
|
-
|
|
5097
|
-
|
|
5098
|
-
|
|
5099
|
-
] }) : null,
|
|
5100
|
-
result.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, "data-error": isError.value ? "true" : void 0, children: [
|
|
5101
|
-
/* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolResult }),
|
|
5102
|
-
/* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: result.value })
|
|
5103
|
-
] }) : null
|
|
5346
|
+
/* @__PURE__ */ jsx17(ToolSection, { label: strings.toolParameters, value: input.value }),
|
|
5347
|
+
output.value !== void 0 ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolResult, value: output.value }) : null,
|
|
5348
|
+
error.value ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null
|
|
5104
5349
|
] });
|
|
5105
5350
|
}
|
|
5106
|
-
function unwrapResult(output) {
|
|
5107
|
-
if (output && typeof output === "object") {
|
|
5108
|
-
const rec = output;
|
|
5109
|
-
if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
|
|
5110
|
-
}
|
|
5111
|
-
return output;
|
|
5112
|
-
}
|
|
5113
|
-
function pretty(value) {
|
|
5114
|
-
if (value == null) return "";
|
|
5115
|
-
try {
|
|
5116
|
-
const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
|
|
5117
|
-
if (!json || json === "{}" || json === "[]" || json === '""') return "";
|
|
5118
|
-
return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
|
|
5119
|
-
} catch {
|
|
5120
|
-
return "";
|
|
5121
|
-
}
|
|
5122
|
-
}
|
|
5123
5351
|
|
|
5124
5352
|
// src/ui/message-bubble.tsx
|
|
5125
|
-
import { jsx as
|
|
5126
|
-
var
|
|
5353
|
+
import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
|
|
5354
|
+
var p17 = BRAND.cssPrefix;
|
|
5127
5355
|
function MessageBubble({
|
|
5128
5356
|
message,
|
|
5129
5357
|
strings,
|
|
@@ -5147,9 +5375,9 @@ function MessageBubble({
|
|
|
5147
5375
|
const working = streaming && !hasAnswerText.value;
|
|
5148
5376
|
const showStreamDots = streaming && !bufferedHold && !(reasoningVisible.value && working);
|
|
5149
5377
|
const stamp = formatStamp(message.createdAt);
|
|
5150
|
-
return /* @__PURE__ */
|
|
5151
|
-
/* @__PURE__ */
|
|
5152
|
-
bufferedHold ? /* @__PURE__ */
|
|
5378
|
+
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: [
|
|
5379
|
+
/* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble`, children: [
|
|
5380
|
+
bufferedHold ? /* @__PURE__ */ jsx18(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx18(
|
|
5153
5381
|
PartView,
|
|
5154
5382
|
{
|
|
5155
5383
|
part,
|
|
@@ -5163,10 +5391,10 @@ function MessageBubble({
|
|
|
5163
5391
|
},
|
|
5164
5392
|
partKey(part)
|
|
5165
5393
|
)),
|
|
5166
|
-
showStreamDots && /* @__PURE__ */
|
|
5167
|
-
message.status === "error" && message.errorText ? /* @__PURE__ */
|
|
5394
|
+
showStreamDots && /* @__PURE__ */ jsx18(TypingDots, {}),
|
|
5395
|
+
message.status === "error" && message.errorText ? /* @__PURE__ */ jsx18("div", { class: `${p17}-error`, role: "alert", children: /* @__PURE__ */ jsx18("span", { children: message.errorText }) }) : null
|
|
5168
5396
|
] }),
|
|
5169
|
-
stamp ? /* @__PURE__ */
|
|
5397
|
+
stamp ? /* @__PURE__ */ jsx18("time", { class: `${p17}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
|
|
5170
5398
|
] }) });
|
|
5171
5399
|
}
|
|
5172
5400
|
function formatStamp(createdAt) {
|
|
@@ -5196,11 +5424,11 @@ function PartView({
|
|
|
5196
5424
|
case "step-start":
|
|
5197
5425
|
return null;
|
|
5198
5426
|
case "text":
|
|
5199
|
-
return /* @__PURE__ */
|
|
5427
|
+
return /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
|
|
5200
5428
|
case "reasoning":
|
|
5201
|
-
return showReasoning ? /* @__PURE__ */
|
|
5429
|
+
return showReasoning ? /* @__PURE__ */ jsx18(ReasoningView, { part, active, strings }) : null;
|
|
5202
5430
|
case "tool":
|
|
5203
|
-
return /* @__PURE__ */
|
|
5431
|
+
return /* @__PURE__ */ jsx18(
|
|
5204
5432
|
ToolPartView,
|
|
5205
5433
|
{
|
|
5206
5434
|
part,
|
|
@@ -5212,11 +5440,11 @@ function PartView({
|
|
|
5212
5440
|
);
|
|
5213
5441
|
case "file":
|
|
5214
5442
|
if (part.mediaType.startsWith("image/")) {
|
|
5215
|
-
return /* @__PURE__ */
|
|
5443
|
+
return /* @__PURE__ */ jsx18("img", { src: part.url, alt: "", loading: "lazy" });
|
|
5216
5444
|
}
|
|
5217
|
-
return /* @__PURE__ */
|
|
5445
|
+
return /* @__PURE__ */ jsx18("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
|
|
5218
5446
|
case "source":
|
|
5219
|
-
return showSources ? /* @__PURE__ */
|
|
5447
|
+
return showSources ? /* @__PURE__ */ jsx18(SourceView, { part, strings }) : null;
|
|
5220
5448
|
}
|
|
5221
5449
|
}
|
|
5222
5450
|
function ToolPartView({
|
|
@@ -5229,7 +5457,7 @@ function ToolPartView({
|
|
|
5229
5457
|
const hasApproval = useComputed5(() => part.approvalSig.value !== void 0);
|
|
5230
5458
|
if (tool?.humanInLoop) {
|
|
5231
5459
|
if (isAskUserInputTool(part.toolName)) {
|
|
5232
|
-
return /* @__PURE__ */
|
|
5460
|
+
return /* @__PURE__ */ jsx18(
|
|
5233
5461
|
ToolAskInput,
|
|
5234
5462
|
{
|
|
5235
5463
|
part,
|
|
@@ -5241,19 +5469,19 @@ function ToolPartView({
|
|
|
5241
5469
|
);
|
|
5242
5470
|
}
|
|
5243
5471
|
if (hasApproval.value) {
|
|
5244
|
-
return /* @__PURE__ */
|
|
5472
|
+
return /* @__PURE__ */ jsx18(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
|
|
5245
5473
|
}
|
|
5246
5474
|
}
|
|
5247
|
-
return showToolCalls ? /* @__PURE__ */
|
|
5475
|
+
return showToolCalls ? /* @__PURE__ */ jsx18(ToolCall, { part, strings }) : null;
|
|
5248
5476
|
}
|
|
5249
5477
|
function ReasoningView({
|
|
5250
5478
|
part,
|
|
5251
5479
|
active,
|
|
5252
5480
|
strings
|
|
5253
5481
|
}) {
|
|
5254
|
-
return /* @__PURE__ */
|
|
5255
|
-
/* @__PURE__ */
|
|
5256
|
-
/* @__PURE__ */
|
|
5482
|
+
return /* @__PURE__ */ jsxs15("details", { class: `${p17}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
|
|
5483
|
+
/* @__PURE__ */ jsx18("summary", { class: `${p17}-reasoning-summary`, children: /* @__PURE__ */ jsx18("span", { class: `${p17}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
|
|
5484
|
+
/* @__PURE__ */ jsx18("div", { class: `${p17}-reasoning-body`, children: /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
|
|
5257
5485
|
] });
|
|
5258
5486
|
}
|
|
5259
5487
|
function partKey(part) {
|
|
@@ -5271,22 +5499,22 @@ function partKey(part) {
|
|
|
5271
5499
|
}
|
|
5272
5500
|
}
|
|
5273
5501
|
function TypingDots() {
|
|
5274
|
-
return /* @__PURE__ */
|
|
5275
|
-
/* @__PURE__ */
|
|
5276
|
-
/* @__PURE__ */
|
|
5277
|
-
/* @__PURE__ */
|
|
5502
|
+
return /* @__PURE__ */ jsxs15("span", { class: `${p17}-typing`, "aria-hidden": "true", children: [
|
|
5503
|
+
/* @__PURE__ */ jsx18("span", {}),
|
|
5504
|
+
/* @__PURE__ */ jsx18("span", {}),
|
|
5505
|
+
/* @__PURE__ */ jsx18("span", {})
|
|
5278
5506
|
] });
|
|
5279
5507
|
}
|
|
5280
5508
|
function LoadingSpinner({ label }) {
|
|
5281
|
-
return /* @__PURE__ */
|
|
5282
|
-
/* @__PURE__ */
|
|
5283
|
-
/* @__PURE__ */
|
|
5509
|
+
return /* @__PURE__ */ jsxs15("span", { class: `${p17}-loading`, role: "status", children: [
|
|
5510
|
+
/* @__PURE__ */ jsx18("span", { class: `${p17}-loading-spinner`, "aria-hidden": "true" }),
|
|
5511
|
+
/* @__PURE__ */ jsx18("span", { class: `${p17}-loading-label`, children: label })
|
|
5284
5512
|
] });
|
|
5285
5513
|
}
|
|
5286
5514
|
|
|
5287
5515
|
// src/ui/message-list.tsx
|
|
5288
|
-
import { jsx as
|
|
5289
|
-
var
|
|
5516
|
+
import { jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
|
|
5517
|
+
var p18 = BRAND.cssPrefix;
|
|
5290
5518
|
var STICK_THRESHOLD = 120;
|
|
5291
5519
|
var INTERACTION_GRACE_MS = 350;
|
|
5292
5520
|
var DIVIDER_IDLE_MS = 1200;
|
|
@@ -5457,7 +5685,7 @@ function MessageList({
|
|
|
5457
5685
|
const pendingMarkers = [...formMarkers ?? []].toSorted(
|
|
5458
5686
|
(a, b) => (a.createdAt ?? Infinity) - (b.createdAt ?? Infinity)
|
|
5459
5687
|
);
|
|
5460
|
-
const markerRow = (marker) => /* @__PURE__ */
|
|
5688
|
+
const markerRow = (marker) => /* @__PURE__ */ jsx19(
|
|
5461
5689
|
FormDoneMarker,
|
|
5462
5690
|
{
|
|
5463
5691
|
marker,
|
|
@@ -5478,12 +5706,12 @@ function MessageList({
|
|
|
5478
5706
|
const day = dayKey(m.createdAt);
|
|
5479
5707
|
if (day && day !== prevDay) {
|
|
5480
5708
|
rows.push(
|
|
5481
|
-
/* @__PURE__ */
|
|
5709
|
+
/* @__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}`)
|
|
5482
5710
|
);
|
|
5483
5711
|
prevDay = day;
|
|
5484
5712
|
}
|
|
5485
5713
|
rows.push(
|
|
5486
|
-
/* @__PURE__ */
|
|
5714
|
+
/* @__PURE__ */ jsx19(
|
|
5487
5715
|
MessageBubble,
|
|
5488
5716
|
{
|
|
5489
5717
|
message: m,
|
|
@@ -5502,33 +5730,33 @@ function MessageList({
|
|
|
5502
5730
|
for (const marker of pendingMarkers) {
|
|
5503
5731
|
rows.push(markerRow(marker));
|
|
5504
5732
|
}
|
|
5505
|
-
return /* @__PURE__ */
|
|
5506
|
-
/* @__PURE__ */
|
|
5733
|
+
return /* @__PURE__ */ jsxs16("div", { class: `${p18}-list-wrap`, children: [
|
|
5734
|
+
/* @__PURE__ */ jsxs16(
|
|
5507
5735
|
"div",
|
|
5508
5736
|
{
|
|
5509
5737
|
ref,
|
|
5510
|
-
class: `${
|
|
5738
|
+
class: `${p18}-list`,
|
|
5511
5739
|
role: "log",
|
|
5512
5740
|
"aria-live": "polite",
|
|
5513
5741
|
"aria-relevant": "additions text",
|
|
5514
5742
|
"data-scrolling": scrolling ? "true" : void 0,
|
|
5515
5743
|
children: [
|
|
5516
|
-
loading && messages.value.length === 0 ? /* @__PURE__ */
|
|
5744
|
+
loading && messages.value.length === 0 ? /* @__PURE__ */ jsx19("div", { class: `${p18}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
|
|
5517
5745
|
rows,
|
|
5518
|
-
form ? /* @__PURE__ */
|
|
5746
|
+
form ? /* @__PURE__ */ jsx19(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
|
|
5519
5747
|
]
|
|
5520
5748
|
}
|
|
5521
5749
|
),
|
|
5522
|
-
showJump ? /* @__PURE__ */
|
|
5750
|
+
showJump ? /* @__PURE__ */ jsx19(
|
|
5523
5751
|
"button",
|
|
5524
5752
|
{
|
|
5525
5753
|
type: "button",
|
|
5526
|
-
class: `${
|
|
5754
|
+
class: `${p18}-jump`,
|
|
5527
5755
|
onClick: jumpToBottom,
|
|
5528
5756
|
"aria-label": strings.scrollToBottom,
|
|
5529
5757
|
title: strings.scrollToBottom,
|
|
5530
5758
|
"data-testid": TID.scrollToBottom,
|
|
5531
|
-
children: /* @__PURE__ */
|
|
5759
|
+
children: /* @__PURE__ */ jsx19(ChevronDownIcon, {})
|
|
5532
5760
|
}
|
|
5533
5761
|
) : null
|
|
5534
5762
|
] });
|
|
@@ -5587,7 +5815,7 @@ function startOfDay(ms) {
|
|
|
5587
5815
|
}
|
|
5588
5816
|
|
|
5589
5817
|
// src/ui/conversation-list.tsx
|
|
5590
|
-
import { Fragment as Fragment3, jsx as
|
|
5818
|
+
import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs17 } from "preact/jsx-runtime";
|
|
5591
5819
|
var log11 = logger.scope("history");
|
|
5592
5820
|
var DEFAULT_SKELETON_ROWS = 3;
|
|
5593
5821
|
var MAX_SKELETON_ROWS = 6;
|
|
@@ -5614,7 +5842,7 @@ function ConversationList({
|
|
|
5614
5842
|
onSelect,
|
|
5615
5843
|
onNewConversation
|
|
5616
5844
|
}) {
|
|
5617
|
-
const
|
|
5845
|
+
const p36 = BRAND.cssPrefix;
|
|
5618
5846
|
const seed = transport.peekConversations({ visitorId });
|
|
5619
5847
|
const [state, setState] = useState7(seed ? "loaded" : "loading");
|
|
5620
5848
|
const [conversations, setChats] = useState7(seed?.conversations ?? []);
|
|
@@ -5635,32 +5863,32 @@ function ConversationList({
|
|
|
5635
5863
|
cancelled = true;
|
|
5636
5864
|
};
|
|
5637
5865
|
}, [transport, visitorId, persistence]);
|
|
5638
|
-
const newChatButton = onNewConversation ? /* @__PURE__ */
|
|
5866
|
+
const newChatButton = onNewConversation ? /* @__PURE__ */ jsx20("div", { class: `${p36}-history-footer`, children: /* @__PURE__ */ jsxs17(
|
|
5639
5867
|
"button",
|
|
5640
5868
|
{
|
|
5641
5869
|
type: "button",
|
|
5642
|
-
class: `${
|
|
5870
|
+
class: `${p36}-history-new`,
|
|
5643
5871
|
onClick: onNewConversation,
|
|
5644
5872
|
"data-testid": TID.sidebarNewConversation,
|
|
5645
5873
|
children: [
|
|
5646
|
-
/* @__PURE__ */
|
|
5874
|
+
/* @__PURE__ */ jsx20(PlusIcon, {}),
|
|
5647
5875
|
strings.newConversation
|
|
5648
5876
|
]
|
|
5649
5877
|
}
|
|
5650
5878
|
) }) : null;
|
|
5651
5879
|
if (state === "loading") {
|
|
5652
5880
|
const rows = Math.min(persistence.loadHistoryCount() ?? DEFAULT_SKELETON_ROWS, MAX_SKELETON_ROWS);
|
|
5653
|
-
return /* @__PURE__ */
|
|
5654
|
-
/* @__PURE__ */
|
|
5655
|
-
/* @__PURE__ */
|
|
5656
|
-
/* @__PURE__ */
|
|
5657
|
-
/* @__PURE__ */
|
|
5658
|
-
/* @__PURE__ */
|
|
5659
|
-
/* @__PURE__ */
|
|
5660
|
-
/* @__PURE__ */
|
|
5661
|
-
/* @__PURE__ */
|
|
5881
|
+
return /* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
5882
|
+
/* @__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: [
|
|
5883
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-heading` }) }),
|
|
5884
|
+
/* @__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: [
|
|
5885
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar ${p36}-skeleton` }),
|
|
5886
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
|
|
5887
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
|
|
5888
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-title` }) }),
|
|
5889
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-time` }) })
|
|
5662
5890
|
] }),
|
|
5663
|
-
/* @__PURE__ */
|
|
5891
|
+
/* @__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` }) }) })
|
|
5664
5892
|
] })
|
|
5665
5893
|
] }, i)) })
|
|
5666
5894
|
] }) }),
|
|
@@ -5668,36 +5896,36 @@ function ConversationList({
|
|
|
5668
5896
|
] });
|
|
5669
5897
|
}
|
|
5670
5898
|
if (state === "error" || conversations.length === 0) {
|
|
5671
|
-
return /* @__PURE__ */
|
|
5672
|
-
/* @__PURE__ */
|
|
5899
|
+
return /* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
5900
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-empty`, children: strings.historyEmpty }),
|
|
5673
5901
|
newChatButton
|
|
5674
5902
|
] });
|
|
5675
5903
|
}
|
|
5676
5904
|
const now = Date.now();
|
|
5677
5905
|
const groups = groupByBucket(now, conversations);
|
|
5678
|
-
return /* @__PURE__ */
|
|
5679
|
-
/* @__PURE__ */
|
|
5680
|
-
/* @__PURE__ */
|
|
5681
|
-
/* @__PURE__ */
|
|
5906
|
+
return /* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
5907
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-group`, children: [
|
|
5908
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
|
|
5909
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs17(
|
|
5682
5910
|
"button",
|
|
5683
5911
|
{
|
|
5684
5912
|
type: "button",
|
|
5685
5913
|
role: "listitem",
|
|
5686
|
-
class: `${
|
|
5914
|
+
class: `${p36}-history-item`,
|
|
5687
5915
|
onClick: () => onSelect(chat),
|
|
5688
5916
|
"data-closed": chat.canContinue ? void 0 : "true",
|
|
5689
5917
|
"data-unread": (chat.unreadCount ?? 0) > 0 ? "true" : void 0,
|
|
5690
5918
|
"data-testid": tid(TID.historyItem, chat.conversationId),
|
|
5691
5919
|
children: [
|
|
5692
|
-
/* @__PURE__ */
|
|
5693
|
-
/* @__PURE__ */
|
|
5694
|
-
/* @__PURE__ */
|
|
5695
|
-
/* @__PURE__ */
|
|
5696
|
-
/* @__PURE__ */
|
|
5920
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx20(MessageIcon, {}) }),
|
|
5921
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
|
|
5922
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
|
|
5923
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: chat.title }),
|
|
5924
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
|
|
5697
5925
|
] }),
|
|
5698
|
-
/* @__PURE__ */
|
|
5699
|
-
/* @__PURE__ */
|
|
5700
|
-
(chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */
|
|
5926
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
|
|
5927
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
|
|
5928
|
+
(chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx20("span", { class: `${p36}-history-dot` }) : null
|
|
5701
5929
|
] })
|
|
5702
5930
|
] })
|
|
5703
5931
|
]
|
|
@@ -5710,15 +5938,15 @@ function ConversationList({
|
|
|
5710
5938
|
}
|
|
5711
5939
|
|
|
5712
5940
|
// src/ui/suggestions.tsx
|
|
5713
|
-
import { jsx as
|
|
5714
|
-
var
|
|
5941
|
+
import { jsx as jsx21 } from "preact/jsx-runtime";
|
|
5942
|
+
var p19 = BRAND.cssPrefix;
|
|
5715
5943
|
function Suggestions({ suggestions, onPick }) {
|
|
5716
5944
|
if (suggestions.length === 0) return null;
|
|
5717
|
-
return /* @__PURE__ */
|
|
5945
|
+
return /* @__PURE__ */ jsx21("div", { class: `${p19}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx21(
|
|
5718
5946
|
"button",
|
|
5719
5947
|
{
|
|
5720
5948
|
type: "button",
|
|
5721
|
-
class: `${
|
|
5949
|
+
class: `${p19}-suggestion`,
|
|
5722
5950
|
onClick: () => onPick(s),
|
|
5723
5951
|
"data-testid": tid(TID.suggestion, i),
|
|
5724
5952
|
children: s.label
|
|
@@ -5728,8 +5956,8 @@ function Suggestions({ suggestions, onPick }) {
|
|
|
5728
5956
|
}
|
|
5729
5957
|
|
|
5730
5958
|
// src/ui/panel.tsx
|
|
5731
|
-
import { Fragment as Fragment4, jsx as
|
|
5732
|
-
var
|
|
5959
|
+
import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
|
|
5960
|
+
var p20 = BRAND.cssPrefix;
|
|
5733
5961
|
function Panel(props2) {
|
|
5734
5962
|
const { options, onClose } = props2;
|
|
5735
5963
|
const s = options.strings;
|
|
@@ -5753,18 +5981,18 @@ function Panel(props2) {
|
|
|
5753
5981
|
}, []);
|
|
5754
5982
|
const { visible: dragOver } = useFileDrop({ containerRef, onDrop: onDropItems });
|
|
5755
5983
|
useDragMove(containerRef.current, options.mode === "modal");
|
|
5756
|
-
return /* @__PURE__ */
|
|
5984
|
+
return /* @__PURE__ */ jsxs18(
|
|
5757
5985
|
"div",
|
|
5758
5986
|
{
|
|
5759
5987
|
ref: containerRef,
|
|
5760
|
-
class: `${
|
|
5988
|
+
class: `${p20}-panel`,
|
|
5761
5989
|
role: "dialog",
|
|
5762
5990
|
"aria-modal": "false",
|
|
5763
5991
|
"aria-label": s.panelTitle,
|
|
5764
5992
|
style: { position: "relative" },
|
|
5765
5993
|
"data-testid": TID.panel,
|
|
5766
5994
|
children: [
|
|
5767
|
-
/* @__PURE__ */
|
|
5995
|
+
/* @__PURE__ */ jsx22(
|
|
5768
5996
|
PanelContent,
|
|
5769
5997
|
{
|
|
5770
5998
|
...props2,
|
|
@@ -5773,7 +6001,7 @@ function Panel(props2) {
|
|
|
5773
6001
|
composerAttachApiRef
|
|
5774
6002
|
}
|
|
5775
6003
|
),
|
|
5776
|
-
/* @__PURE__ */
|
|
6004
|
+
/* @__PURE__ */ jsx22(PoweredByBar, { poweredBy: props2.options.poweredBy })
|
|
5777
6005
|
]
|
|
5778
6006
|
}
|
|
5779
6007
|
);
|
|
@@ -5820,9 +6048,9 @@ function PanelContent(props2) {
|
|
|
5820
6048
|
if (activeForm) {
|
|
5821
6049
|
composerArea = null;
|
|
5822
6050
|
} else if (canSend) {
|
|
5823
|
-
composerArea = /* @__PURE__ */
|
|
5824
|
-
/* @__PURE__ */
|
|
5825
|
-
/* @__PURE__ */
|
|
6051
|
+
composerArea = /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6052
|
+
/* @__PURE__ */ jsx22(Suggestions, { suggestions, onPick: onSuggestion }),
|
|
6053
|
+
/* @__PURE__ */ jsx22(
|
|
5826
6054
|
Composer,
|
|
5827
6055
|
{
|
|
5828
6056
|
options,
|
|
@@ -5837,10 +6065,10 @@ function PanelContent(props2) {
|
|
|
5837
6065
|
)
|
|
5838
6066
|
] });
|
|
5839
6067
|
} else {
|
|
5840
|
-
composerArea = /* @__PURE__ */
|
|
6068
|
+
composerArea = /* @__PURE__ */ jsx22(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
|
|
5841
6069
|
}
|
|
5842
|
-
return /* @__PURE__ */
|
|
5843
|
-
view === "history" ? /* @__PURE__ */
|
|
6070
|
+
return /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6071
|
+
view === "history" ? /* @__PURE__ */ jsx22(
|
|
5844
6072
|
HistoryHeader,
|
|
5845
6073
|
{
|
|
5846
6074
|
strings: s,
|
|
@@ -5848,22 +6076,22 @@ function PanelContent(props2) {
|
|
|
5848
6076
|
onClose,
|
|
5849
6077
|
showClose: canShowClose(options.mode, panelSize, options.actions)
|
|
5850
6078
|
}
|
|
5851
|
-
) : /* @__PURE__ */
|
|
5852
|
-
onBack ? /* @__PURE__ */
|
|
6079
|
+
) : /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, "data-testid": TID.panelHeader, children: [
|
|
6080
|
+
onBack ? /* @__PURE__ */ jsx22(
|
|
5853
6081
|
"button",
|
|
5854
6082
|
{
|
|
5855
6083
|
type: "button",
|
|
5856
|
-
class: `${
|
|
6084
|
+
class: `${p20}-icon-btn`,
|
|
5857
6085
|
onClick: onBack,
|
|
5858
6086
|
"aria-label": s.moduleBack,
|
|
5859
6087
|
title: s.moduleBack,
|
|
5860
|
-
children: /* @__PURE__ */
|
|
6088
|
+
children: /* @__PURE__ */ jsx22(BackIcon, {})
|
|
5861
6089
|
}
|
|
5862
6090
|
) : null,
|
|
5863
|
-
agent ? /* @__PURE__ */
|
|
5864
|
-
/* @__PURE__ */
|
|
6091
|
+
agent ? /* @__PURE__ */ jsx22(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx22("h1", { children: s.panelTitle }),
|
|
6092
|
+
/* @__PURE__ */ jsx22(HeaderActions, { panelProps: props2, variant: "chat" })
|
|
5865
6093
|
] }),
|
|
5866
|
-
view === "history" ? /* @__PURE__ */
|
|
6094
|
+
view === "history" ? /* @__PURE__ */ jsx22(
|
|
5867
6095
|
ConversationList,
|
|
5868
6096
|
{
|
|
5869
6097
|
transport,
|
|
@@ -5874,9 +6102,9 @@ function PanelContent(props2) {
|
|
|
5874
6102
|
onSelect: (conversation) => onSelectHistoryConversation(conversation.conversationId),
|
|
5875
6103
|
onNewConversation
|
|
5876
6104
|
}
|
|
5877
|
-
) : /* @__PURE__ */
|
|
5878
|
-
/* @__PURE__ */
|
|
5879
|
-
/* @__PURE__ */
|
|
6105
|
+
) : /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6106
|
+
/* @__PURE__ */ jsx22(DropZone, { visible: dragOver, strings: s }),
|
|
6107
|
+
/* @__PURE__ */ jsx22(
|
|
5880
6108
|
MessageList,
|
|
5881
6109
|
{
|
|
5882
6110
|
messagesSig,
|
|
@@ -5894,9 +6122,9 @@ function PanelContent(props2) {
|
|
|
5894
6122
|
}
|
|
5895
6123
|
),
|
|
5896
6124
|
composerArea,
|
|
5897
|
-
/* @__PURE__ */
|
|
6125
|
+
/* @__PURE__ */ jsx22(ComposerFooter, { disclaimer: options.composerDisclaimer })
|
|
5898
6126
|
] }),
|
|
5899
|
-
options.size.resize?.enabled ? /* @__PURE__ */
|
|
6127
|
+
options.size.resize?.enabled ? /* @__PURE__ */ jsx22(
|
|
5900
6128
|
ResizeGrip,
|
|
5901
6129
|
{
|
|
5902
6130
|
panelEl: containerEl,
|
|
@@ -5915,28 +6143,28 @@ function HistoryHeader({
|
|
|
5915
6143
|
onClose,
|
|
5916
6144
|
showClose
|
|
5917
6145
|
}) {
|
|
5918
|
-
return /* @__PURE__ */
|
|
5919
|
-
/* @__PURE__ */
|
|
6146
|
+
return /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, children: [
|
|
6147
|
+
/* @__PURE__ */ jsx22(
|
|
5920
6148
|
"button",
|
|
5921
6149
|
{
|
|
5922
6150
|
type: "button",
|
|
5923
|
-
class: `${
|
|
6151
|
+
class: `${p20}-icon-btn`,
|
|
5924
6152
|
onClick: onBack,
|
|
5925
6153
|
"aria-label": strings.historyBack,
|
|
5926
6154
|
title: strings.historyBack,
|
|
5927
|
-
children: /* @__PURE__ */
|
|
6155
|
+
children: /* @__PURE__ */ jsx22(BackIcon, {})
|
|
5928
6156
|
}
|
|
5929
6157
|
),
|
|
5930
|
-
/* @__PURE__ */
|
|
5931
|
-
showClose ? /* @__PURE__ */
|
|
6158
|
+
/* @__PURE__ */ jsx22("h1", { children: strings.historyTitle }),
|
|
6159
|
+
showClose ? /* @__PURE__ */ jsx22(
|
|
5932
6160
|
"button",
|
|
5933
6161
|
{
|
|
5934
6162
|
type: "button",
|
|
5935
|
-
class: `${
|
|
6163
|
+
class: `${p20}-icon-btn`,
|
|
5936
6164
|
onClick: onClose,
|
|
5937
6165
|
"aria-label": strings.close,
|
|
5938
6166
|
title: strings.close,
|
|
5939
|
-
children: /* @__PURE__ */
|
|
6167
|
+
children: /* @__PURE__ */ jsx22(CloseIcon, {})
|
|
5940
6168
|
}
|
|
5941
6169
|
) : null
|
|
5942
6170
|
] });
|
|
@@ -5946,28 +6174,28 @@ function ReadOnlyBanner({
|
|
|
5946
6174
|
ctaLabel,
|
|
5947
6175
|
onNewConversation
|
|
5948
6176
|
}) {
|
|
5949
|
-
return /* @__PURE__ */
|
|
5950
|
-
/* @__PURE__ */
|
|
5951
|
-
/* @__PURE__ */
|
|
6177
|
+
return /* @__PURE__ */ jsxs18("div", { class: `${p20}-readonly-banner`, role: "note", children: [
|
|
6178
|
+
/* @__PURE__ */ jsx22("span", { class: `${p20}-readonly-label`, children: label }),
|
|
6179
|
+
/* @__PURE__ */ jsx22("button", { type: "button", class: `${p20}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
|
|
5952
6180
|
] });
|
|
5953
6181
|
}
|
|
5954
6182
|
function ComposerFooter({ disclaimer }) {
|
|
5955
6183
|
if (!disclaimer) return null;
|
|
5956
|
-
return /* @__PURE__ */
|
|
6184
|
+
return /* @__PURE__ */ jsx22("div", { class: `${p20}-composer-footer`, children: /* @__PURE__ */ jsx22("div", { class: `${p20}-disclaimer`, children: disclaimer }) });
|
|
5957
6185
|
}
|
|
5958
6186
|
function PoweredByBar({ poweredBy }) {
|
|
5959
6187
|
if (!poweredBy) return null;
|
|
5960
|
-
return /* @__PURE__ */
|
|
6188
|
+
return /* @__PURE__ */ jsx22("div", { class: `${p20}-poweredby-bar`, children: /* @__PURE__ */ jsx22(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
|
|
5961
6189
|
}
|
|
5962
6190
|
function PoweredBy({ logoUrl, text, href }) {
|
|
5963
|
-
const inner = /* @__PURE__ */
|
|
5964
|
-
logoUrl ? /* @__PURE__ */
|
|
5965
|
-
text ? /* @__PURE__ */
|
|
6191
|
+
const inner = /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6192
|
+
logoUrl ? /* @__PURE__ */ jsx22("img", { class: `${p20}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
|
|
6193
|
+
text ? /* @__PURE__ */ jsx22("span", { children: text }) : null
|
|
5966
6194
|
] });
|
|
5967
6195
|
if (href) {
|
|
5968
|
-
return /* @__PURE__ */
|
|
6196
|
+
return /* @__PURE__ */ jsx22("a", { class: `${p20}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
|
|
5969
6197
|
}
|
|
5970
|
-
return /* @__PURE__ */
|
|
6198
|
+
return /* @__PURE__ */ jsx22("span", { class: `${p20}-poweredby`, children: inner });
|
|
5971
6199
|
}
|
|
5972
6200
|
|
|
5973
6201
|
// src/ui/form/form-controller.ts
|
|
@@ -6050,34 +6278,34 @@ function whenPasses(form, d) {
|
|
|
6050
6278
|
}
|
|
6051
6279
|
|
|
6052
6280
|
// src/ui/sidebar.tsx
|
|
6053
|
-
import { Fragment as Fragment5, jsx as
|
|
6281
|
+
import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
|
|
6054
6282
|
function Sidebar(props2) {
|
|
6055
|
-
const
|
|
6283
|
+
const p36 = BRAND.cssPrefix;
|
|
6056
6284
|
const { site, blocks, strings, collapsed } = props2;
|
|
6057
6285
|
const navigation = blocks?.navigation ?? [];
|
|
6058
6286
|
const linkCards = blocks?.linkCards ?? [];
|
|
6059
6287
|
const toggleLabel = collapsed ? strings.expandSidebar : strings.collapseSidebar;
|
|
6060
|
-
return /* @__PURE__ */
|
|
6061
|
-
/* @__PURE__ */
|
|
6062
|
-
/* @__PURE__ */
|
|
6063
|
-
/* @__PURE__ */
|
|
6288
|
+
return /* @__PURE__ */ jsxs19("aside", { class: `${p36}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
|
|
6289
|
+
/* @__PURE__ */ jsxs19("div", { class: `${p36}-sidebar-header`, children: [
|
|
6290
|
+
/* @__PURE__ */ jsx23(SidebarBrand, { site }),
|
|
6291
|
+
/* @__PURE__ */ jsx23(
|
|
6064
6292
|
"button",
|
|
6065
6293
|
{
|
|
6066
6294
|
type: "button",
|
|
6067
|
-
class: `${
|
|
6295
|
+
class: `${p36}-sidebar-toggle`,
|
|
6068
6296
|
"aria-label": toggleLabel,
|
|
6069
6297
|
"aria-expanded": collapsed ? "false" : "true",
|
|
6070
6298
|
title: toggleLabel,
|
|
6071
6299
|
onClick: props2.onToggleCollapsed,
|
|
6072
6300
|
"data-testid": TID.sidebarToggle,
|
|
6073
|
-
children: /* @__PURE__ */
|
|
6301
|
+
children: /* @__PURE__ */ jsx23(SidebarToggleIcon, { collapsed })
|
|
6074
6302
|
}
|
|
6075
6303
|
)
|
|
6076
6304
|
] }),
|
|
6077
|
-
collapsed ? null : /* @__PURE__ */
|
|
6078
|
-
navigation.length > 0 ? /* @__PURE__ */
|
|
6079
|
-
linkCards.length > 0 ? /* @__PURE__ */
|
|
6080
|
-
props2.showConversations ? /* @__PURE__ */
|
|
6305
|
+
collapsed ? null : /* @__PURE__ */ jsxs19(Fragment5, { children: [
|
|
6306
|
+
navigation.length > 0 ? /* @__PURE__ */ jsx23("nav", { class: `${p36}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx23(SidebarNav, { items: navigation }) }) : null,
|
|
6307
|
+
linkCards.length > 0 ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx23(SidebarCards, { items: linkCards }) }) : null,
|
|
6308
|
+
props2.showConversations ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-conversations`, children: /* @__PURE__ */ jsx23(
|
|
6081
6309
|
ConversationList,
|
|
6082
6310
|
{
|
|
6083
6311
|
transport: props2.transport,
|
|
@@ -6093,18 +6321,18 @@ function Sidebar(props2) {
|
|
|
6093
6321
|
] });
|
|
6094
6322
|
}
|
|
6095
6323
|
function SidebarBrand({ site }) {
|
|
6096
|
-
const
|
|
6324
|
+
const p36 = BRAND.cssPrefix;
|
|
6097
6325
|
if (site?.logo?.url) {
|
|
6098
6326
|
const alt = site.logo.alt ?? site.title ?? "Logo";
|
|
6099
|
-
return /* @__PURE__ */
|
|
6100
|
-
site.logoDark?.url ? /* @__PURE__ */
|
|
6101
|
-
/* @__PURE__ */
|
|
6327
|
+
return /* @__PURE__ */ jsxs19("picture", { children: [
|
|
6328
|
+
site.logoDark?.url ? /* @__PURE__ */ jsx23("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
|
|
6329
|
+
/* @__PURE__ */ jsx23("img", { class: `${p36}-sidebar-logo`, src: site.logo.url, alt })
|
|
6102
6330
|
] });
|
|
6103
6331
|
}
|
|
6104
|
-
return /* @__PURE__ */
|
|
6332
|
+
return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-title`, children: site?.title ?? BRAND.name });
|
|
6105
6333
|
}
|
|
6106
6334
|
function SidebarToggleIcon({ collapsed }) {
|
|
6107
|
-
return /* @__PURE__ */
|
|
6335
|
+
return /* @__PURE__ */ jsx23(
|
|
6108
6336
|
"svg",
|
|
6109
6337
|
{
|
|
6110
6338
|
width: "16",
|
|
@@ -6114,38 +6342,38 @@ function SidebarToggleIcon({ collapsed }) {
|
|
|
6114
6342
|
stroke: "currentColor",
|
|
6115
6343
|
"stroke-width": "2",
|
|
6116
6344
|
"aria-hidden": "true",
|
|
6117
|
-
children: collapsed ? /* @__PURE__ */
|
|
6345
|
+
children: collapsed ? /* @__PURE__ */ jsx23("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx23("polyline", { points: "15 6 9 12 15 18" })
|
|
6118
6346
|
}
|
|
6119
6347
|
);
|
|
6120
6348
|
}
|
|
6121
6349
|
function SidebarNav({ items }) {
|
|
6122
|
-
const
|
|
6123
|
-
return /* @__PURE__ */
|
|
6350
|
+
const p36 = BRAND.cssPrefix;
|
|
6351
|
+
return /* @__PURE__ */ jsx23("ul", { class: `${p36}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx23("li", { children: /* @__PURE__ */ jsxs19(
|
|
6124
6352
|
"a",
|
|
6125
6353
|
{
|
|
6126
|
-
class: `${
|
|
6354
|
+
class: `${p36}-sidebar-nav-item`,
|
|
6127
6355
|
href: item.href,
|
|
6128
6356
|
target: item.href ? "_blank" : void 0,
|
|
6129
6357
|
rel: item.href ? "noreferrer" : void 0,
|
|
6130
6358
|
children: [
|
|
6131
|
-
item.icon ? /* @__PURE__ */
|
|
6132
|
-
/* @__PURE__ */
|
|
6359
|
+
item.icon ? /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
|
|
6360
|
+
/* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-label`, children: item.label })
|
|
6133
6361
|
]
|
|
6134
6362
|
}
|
|
6135
6363
|
) }, item.id ?? item.label)) });
|
|
6136
6364
|
}
|
|
6137
6365
|
function SidebarCards({ items }) {
|
|
6138
|
-
const
|
|
6139
|
-
return /* @__PURE__ */
|
|
6366
|
+
const p36 = BRAND.cssPrefix;
|
|
6367
|
+
return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs19(
|
|
6140
6368
|
"a",
|
|
6141
6369
|
{
|
|
6142
|
-
class: `${
|
|
6370
|
+
class: `${p36}-sidebar-card`,
|
|
6143
6371
|
href: item.href,
|
|
6144
6372
|
target: item.href ? "_blank" : void 0,
|
|
6145
6373
|
rel: item.href ? "noreferrer" : void 0,
|
|
6146
6374
|
children: [
|
|
6147
|
-
/* @__PURE__ */
|
|
6148
|
-
item.description ? /* @__PURE__ */
|
|
6375
|
+
/* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-label`, children: item.label }),
|
|
6376
|
+
item.description ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-desc`, children: item.description }) : null
|
|
6149
6377
|
]
|
|
6150
6378
|
},
|
|
6151
6379
|
item.id ?? item.label
|
|
@@ -6153,11 +6381,11 @@ function SidebarCards({ items }) {
|
|
|
6153
6381
|
}
|
|
6154
6382
|
|
|
6155
6383
|
// src/ui/page-shell.tsx
|
|
6156
|
-
import { jsx as
|
|
6157
|
-
var
|
|
6384
|
+
import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
|
|
6385
|
+
var p21 = BRAND.cssPrefix;
|
|
6158
6386
|
function PageShell(props2) {
|
|
6159
|
-
return /* @__PURE__ */
|
|
6160
|
-
/* @__PURE__ */
|
|
6387
|
+
return /* @__PURE__ */ jsxs20("main", { class: `${p21}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
|
|
6388
|
+
/* @__PURE__ */ jsx24(
|
|
6161
6389
|
Sidebar,
|
|
6162
6390
|
{
|
|
6163
6391
|
site: props2.site,
|
|
@@ -6174,7 +6402,7 @@ function PageShell(props2) {
|
|
|
6174
6402
|
onToggleCollapsed: props2.onToggleSidebarCollapsed
|
|
6175
6403
|
}
|
|
6176
6404
|
),
|
|
6177
|
-
/* @__PURE__ */
|
|
6405
|
+
/* @__PURE__ */ jsx24("section", { class: `${p21}-page-chat`, "aria-label": "Chat", children: props2.children })
|
|
6178
6406
|
] });
|
|
6179
6407
|
}
|
|
6180
6408
|
|
|
@@ -6224,80 +6452,80 @@ var chatLayout = {
|
|
|
6224
6452
|
import { useEffect as useEffect10, useMemo as useMemo2, useState as useState8 } from "preact/hooks";
|
|
6225
6453
|
|
|
6226
6454
|
// src/ui/back-header.tsx
|
|
6227
|
-
import { jsx as
|
|
6228
|
-
var
|
|
6455
|
+
import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
|
|
6456
|
+
var p22 = BRAND.cssPrefix;
|
|
6229
6457
|
function TitleBar({ title, actions }) {
|
|
6230
|
-
return /* @__PURE__ */
|
|
6231
|
-
/* @__PURE__ */
|
|
6232
|
-
/* @__PURE__ */
|
|
6233
|
-
actions ?? /* @__PURE__ */
|
|
6458
|
+
return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-variant": "title", children: [
|
|
6459
|
+
/* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" }),
|
|
6460
|
+
/* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
|
|
6461
|
+
actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
|
|
6234
6462
|
] });
|
|
6235
6463
|
}
|
|
6236
6464
|
function BackHeader({ title, backLabel, onBack, actions, testid }) {
|
|
6237
|
-
return /* @__PURE__ */
|
|
6238
|
-
/* @__PURE__ */
|
|
6239
|
-
/* @__PURE__ */
|
|
6240
|
-
actions ?? /* @__PURE__ */
|
|
6465
|
+
return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-testid": testid, children: [
|
|
6466
|
+
/* @__PURE__ */ jsx25("button", { type: "button", class: `${p22}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx25(BackIcon, {}) }),
|
|
6467
|
+
/* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
|
|
6468
|
+
actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
|
|
6241
6469
|
] });
|
|
6242
6470
|
}
|
|
6243
6471
|
|
|
6244
6472
|
// src/ui/home-search.tsx
|
|
6245
|
-
import { jsx as
|
|
6246
|
-
var
|
|
6473
|
+
import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
|
|
6474
|
+
var p23 = BRAND.cssPrefix;
|
|
6247
6475
|
function HomeSearchButton({ placeholder, onActivate }) {
|
|
6248
|
-
return /* @__PURE__ */
|
|
6249
|
-
/* @__PURE__ */
|
|
6250
|
-
/* @__PURE__ */
|
|
6476
|
+
return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
|
|
6477
|
+
/* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-text`, children: placeholder }),
|
|
6478
|
+
/* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
|
|
6251
6479
|
] });
|
|
6252
6480
|
}
|
|
6253
6481
|
function HelpSearchInput({ placeholder, value, onInput }) {
|
|
6254
|
-
return /* @__PURE__ */
|
|
6255
|
-
/* @__PURE__ */
|
|
6482
|
+
return /* @__PURE__ */ jsxs22("div", { class: `${p23}-home-search`, "data-input": "true", children: [
|
|
6483
|
+
/* @__PURE__ */ jsx26(
|
|
6256
6484
|
"input",
|
|
6257
6485
|
{
|
|
6258
6486
|
type: "search",
|
|
6259
|
-
class: `${
|
|
6487
|
+
class: `${p23}-home-search-input`,
|
|
6260
6488
|
placeholder,
|
|
6261
6489
|
value,
|
|
6262
6490
|
onInput: (e) => onInput(e.currentTarget.value),
|
|
6263
6491
|
"data-testid": TID.helpSearch
|
|
6264
6492
|
}
|
|
6265
6493
|
),
|
|
6266
|
-
/* @__PURE__ */
|
|
6494
|
+
/* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
|
|
6267
6495
|
] });
|
|
6268
6496
|
}
|
|
6269
6497
|
|
|
6270
6498
|
// src/ui/list-row.tsx
|
|
6271
|
-
import { jsx as
|
|
6272
|
-
var
|
|
6499
|
+
import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
|
|
6500
|
+
var p24 = BRAND.cssPrefix;
|
|
6273
6501
|
function ListRow({ title, subtitle, onClick, testid }) {
|
|
6274
|
-
return /* @__PURE__ */
|
|
6275
|
-
/* @__PURE__ */
|
|
6276
|
-
/* @__PURE__ */
|
|
6277
|
-
subtitle ? /* @__PURE__ */
|
|
6502
|
+
return /* @__PURE__ */ jsxs23("button", { type: "button", class: `${p24}-list-row`, onClick, "data-testid": testid, children: [
|
|
6503
|
+
/* @__PURE__ */ jsxs23("span", { class: `${p24}-list-row-body`, children: [
|
|
6504
|
+
/* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-title`, children: title }),
|
|
6505
|
+
subtitle ? /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-sub`, children: subtitle }) : null
|
|
6278
6506
|
] }),
|
|
6279
|
-
/* @__PURE__ */
|
|
6507
|
+
/* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx27(ChevronRightIcon, {}) })
|
|
6280
6508
|
] });
|
|
6281
6509
|
}
|
|
6282
6510
|
|
|
6283
6511
|
// src/ui/module-state.tsx
|
|
6284
|
-
import { jsx as
|
|
6285
|
-
var
|
|
6512
|
+
import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
|
|
6513
|
+
var p25 = BRAND.cssPrefix;
|
|
6286
6514
|
function ModuleState({
|
|
6287
6515
|
tone = "info",
|
|
6288
6516
|
message,
|
|
6289
6517
|
onRetry,
|
|
6290
6518
|
strings
|
|
6291
6519
|
}) {
|
|
6292
|
-
return /* @__PURE__ */
|
|
6293
|
-
/* @__PURE__ */
|
|
6294
|
-
onRetry ? /* @__PURE__ */
|
|
6520
|
+
return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
|
|
6521
|
+
/* @__PURE__ */ jsx28("span", { children: message }),
|
|
6522
|
+
onRetry ? /* @__PURE__ */ jsx28("button", { type: "button", class: `${p25}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
|
|
6295
6523
|
] });
|
|
6296
6524
|
}
|
|
6297
6525
|
|
|
6298
6526
|
// src/ui/modules/help.tsx
|
|
6299
|
-
import { jsx as
|
|
6300
|
-
var
|
|
6527
|
+
import { jsx as jsx29, jsxs as jsxs25 } from "preact/jsx-runtime";
|
|
6528
|
+
var p26 = BRAND.cssPrefix;
|
|
6301
6529
|
var log12 = logger.scope("help");
|
|
6302
6530
|
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 });
|
|
6303
6531
|
function groupByCategory(items) {
|
|
@@ -6326,7 +6554,7 @@ function fuzzySearch(items, query) {
|
|
|
6326
6554
|
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);
|
|
6327
6555
|
}
|
|
6328
6556
|
function ArticleRow({ article, nav }) {
|
|
6329
|
-
return /* @__PURE__ */
|
|
6557
|
+
return /* @__PURE__ */ jsx29(
|
|
6330
6558
|
ListRow,
|
|
6331
6559
|
{
|
|
6332
6560
|
title: article.title,
|
|
@@ -6371,46 +6599,46 @@ function HelpRoot({ transport, strings, config, nav, bus, panelProps }) {
|
|
|
6371
6599
|
}, [query, results, bus]);
|
|
6372
6600
|
function renderBody() {
|
|
6373
6601
|
if (query.trim().length > 0) {
|
|
6374
|
-
if (results.length === 0) return /* @__PURE__ */
|
|
6375
|
-
return /* @__PURE__ */
|
|
6602
|
+
if (results.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpSearchEmpty, strings });
|
|
6603
|
+
return /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) });
|
|
6376
6604
|
}
|
|
6377
|
-
if (state === "loading") return /* @__PURE__ */
|
|
6605
|
+
if (state === "loading") return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpLoading, strings });
|
|
6378
6606
|
if (state === "error") {
|
|
6379
|
-
return /* @__PURE__ */
|
|
6607
|
+
return /* @__PURE__ */ jsx29(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
|
|
6380
6608
|
}
|
|
6381
|
-
if (items.length === 0) return /* @__PURE__ */
|
|
6382
|
-
return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */
|
|
6383
|
-
category ? /* @__PURE__ */
|
|
6384
|
-
/* @__PURE__ */
|
|
6609
|
+
if (items.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpEmpty, strings });
|
|
6610
|
+
return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs25("section", { class: `${p26}-help-group`, children: [
|
|
6611
|
+
category ? /* @__PURE__ */ jsx29("h2", { class: `${p26}-help-section-title`, children: category }) : null,
|
|
6612
|
+
/* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) })
|
|
6385
6613
|
] }, category));
|
|
6386
6614
|
}
|
|
6387
|
-
return /* @__PURE__ */
|
|
6388
|
-
/* @__PURE__ */
|
|
6389
|
-
/* @__PURE__ */
|
|
6390
|
-
/* @__PURE__ */
|
|
6615
|
+
return /* @__PURE__ */ jsxs25("div", { class: `${p26}-module`, children: [
|
|
6616
|
+
/* @__PURE__ */ jsx29(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx29(HeaderActions, { panelProps, variant: "plain" }) }),
|
|
6617
|
+
/* @__PURE__ */ jsx29("div", { class: `${p26}-module-pad`, children: /* @__PURE__ */ jsx29(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
|
|
6618
|
+
/* @__PURE__ */ jsx29("div", { class: `${p26}-help-list`, children: renderBody() })
|
|
6391
6619
|
] });
|
|
6392
6620
|
}
|
|
6393
6621
|
var helpLayout = {
|
|
6394
6622
|
Icon: HelpIcon,
|
|
6395
|
-
Root: (props2) => /* @__PURE__ */
|
|
6623
|
+
Root: (props2) => /* @__PURE__ */ jsx29(HelpRoot, { ...props2 })
|
|
6396
6624
|
};
|
|
6397
6625
|
|
|
6398
6626
|
// src/ui/modules/home.tsx
|
|
6399
6627
|
import { useEffect as useEffect11, useState as useState9 } from "preact/hooks";
|
|
6400
6628
|
|
|
6401
6629
|
// src/ui/home-card.tsx
|
|
6402
|
-
import { jsx as
|
|
6403
|
-
var
|
|
6630
|
+
import { jsx as jsx30 } from "preact/jsx-runtime";
|
|
6631
|
+
var p27 = BRAND.cssPrefix;
|
|
6404
6632
|
function HomeCard({ onClick, children, testid }) {
|
|
6405
6633
|
if (onClick) {
|
|
6406
|
-
return /* @__PURE__ */
|
|
6634
|
+
return /* @__PURE__ */ jsx30("button", { type: "button", class: `${p27}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
|
|
6407
6635
|
}
|
|
6408
|
-
return /* @__PURE__ */
|
|
6636
|
+
return /* @__PURE__ */ jsx30("div", { class: `${p27}-home-card`, "data-testid": testid, children });
|
|
6409
6637
|
}
|
|
6410
6638
|
|
|
6411
6639
|
// src/ui/modules/home.tsx
|
|
6412
|
-
import { Fragment as Fragment6, jsx as
|
|
6413
|
-
var
|
|
6640
|
+
import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
|
|
6641
|
+
var p28 = BRAND.cssPrefix;
|
|
6414
6642
|
var log13 = logger.scope("home");
|
|
6415
6643
|
function resolveGreeting(props2) {
|
|
6416
6644
|
const name = props2.options.userContext?.name;
|
|
@@ -6453,49 +6681,49 @@ function HomeRoot(props2) {
|
|
|
6453
6681
|
const status = config.status;
|
|
6454
6682
|
const statusText = status?.text ? localizeText(strings, status.text) : strings.homeStatus;
|
|
6455
6683
|
const contentTitle = config.contentBlockTitle ? localizeText(strings, config.contentBlockTitle) : strings.homeContentTitle;
|
|
6456
|
-
return /* @__PURE__ */
|
|
6457
|
-
/* @__PURE__ */
|
|
6458
|
-
/* @__PURE__ */
|
|
6459
|
-
config.brandName ? /* @__PURE__ */
|
|
6460
|
-
/* @__PURE__ */
|
|
6461
|
-
avatars.length > 0 ? /* @__PURE__ */
|
|
6462
|
-
/* @__PURE__ */
|
|
6684
|
+
return /* @__PURE__ */ jsx31("div", { class: `${p28}-module ${p28}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-scroll`, children: [
|
|
6685
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero`, children: [
|
|
6686
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-top`, children: [
|
|
6687
|
+
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" }),
|
|
6688
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-actions`, children: [
|
|
6689
|
+
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,
|
|
6690
|
+
/* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" })
|
|
6463
6691
|
] })
|
|
6464
6692
|
] }),
|
|
6465
|
-
config.showGreeting !== false ? /* @__PURE__ */
|
|
6466
|
-
/* @__PURE__ */
|
|
6467
|
-
greeting.subtitle ? /* @__PURE__ */
|
|
6693
|
+
config.showGreeting !== false ? /* @__PURE__ */ jsxs26(Fragment6, { children: [
|
|
6694
|
+
/* @__PURE__ */ jsx31("h1", { class: `${p28}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
|
|
6695
|
+
greeting.subtitle ? /* @__PURE__ */ jsx31("p", { class: `${p28}-home-lead`, children: greeting.subtitle }) : null
|
|
6468
6696
|
] }) : null
|
|
6469
6697
|
] }),
|
|
6470
|
-
/* @__PURE__ */
|
|
6471
|
-
config.showSearchBar !== false ? /* @__PURE__ */
|
|
6698
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-cards`, children: [
|
|
6699
|
+
config.showSearchBar !== false ? /* @__PURE__ */ jsx31(
|
|
6472
6700
|
HomeSearchButton,
|
|
6473
6701
|
{
|
|
6474
6702
|
placeholder: strings.homeSearchPlaceholder,
|
|
6475
6703
|
onActivate: () => nav.switchToLayout("help")
|
|
6476
6704
|
}
|
|
6477
6705
|
) : null,
|
|
6478
|
-
recent ? /* @__PURE__ */
|
|
6479
|
-
/* @__PURE__ */
|
|
6480
|
-
/* @__PURE__ */
|
|
6481
|
-
/* @__PURE__ */
|
|
6482
|
-
recent.preview ? /* @__PURE__ */
|
|
6706
|
+
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: [
|
|
6707
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(BubblesIcon, {}) }),
|
|
6708
|
+
/* @__PURE__ */ jsxs26("span", { class: `${p28}-home-recent-body`, children: [
|
|
6709
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-title`, children: recent.title }),
|
|
6710
|
+
recent.preview ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-preview`, children: recent.preview }) : null
|
|
6483
6711
|
] }),
|
|
6484
|
-
(recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */
|
|
6712
|
+
(recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-dot`, "aria-label": "Unread" }) : null
|
|
6485
6713
|
] }) }) : null,
|
|
6486
|
-
status ? /* @__PURE__ */
|
|
6714
|
+
status ? /* @__PURE__ */ jsx31(
|
|
6487
6715
|
HomeCard,
|
|
6488
6716
|
{
|
|
6489
6717
|
onClick: status.url ? () => nav.push({ kind: "iframe", url: status.url, title: statusText }) : void 0,
|
|
6490
|
-
children: /* @__PURE__ */
|
|
6491
|
-
/* @__PURE__ */
|
|
6492
|
-
/* @__PURE__ */
|
|
6718
|
+
children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-status`, "data-level": status.level ?? "operational", children: [
|
|
6719
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(StatusOkIcon, {}) }),
|
|
6720
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-text`, children: statusText })
|
|
6493
6721
|
] })
|
|
6494
6722
|
}
|
|
6495
6723
|
) : null,
|
|
6496
|
-
content.length > 0 ? /* @__PURE__ */
|
|
6497
|
-
/* @__PURE__ */
|
|
6498
|
-
/* @__PURE__ */
|
|
6724
|
+
content.length > 0 ? /* @__PURE__ */ jsxs26("section", { class: `${p28}-home-content`, children: [
|
|
6725
|
+
/* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-title`, children: contentTitle }),
|
|
6726
|
+
/* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx31(
|
|
6499
6727
|
ListRow,
|
|
6500
6728
|
{
|
|
6501
6729
|
title: item.title,
|
|
@@ -6511,13 +6739,13 @@ function HomeRoot(props2) {
|
|
|
6511
6739
|
}
|
|
6512
6740
|
var homeLayout = {
|
|
6513
6741
|
Icon: HomeIcon,
|
|
6514
|
-
Root: (props2) => /* @__PURE__ */
|
|
6742
|
+
Root: (props2) => /* @__PURE__ */ jsx31(HomeRoot, { ...props2 })
|
|
6515
6743
|
};
|
|
6516
6744
|
|
|
6517
6745
|
// src/ui/modules/news.tsx
|
|
6518
6746
|
import { useEffect as useEffect12, useState as useState10 } from "preact/hooks";
|
|
6519
|
-
import { jsx as
|
|
6520
|
-
var
|
|
6747
|
+
import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
|
|
6748
|
+
var p29 = BRAND.cssPrefix;
|
|
6521
6749
|
var log14 = logger.scope("news");
|
|
6522
6750
|
function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
|
|
6523
6751
|
const tags = config.contentTags;
|
|
@@ -6545,37 +6773,37 @@ function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
|
|
|
6545
6773
|
};
|
|
6546
6774
|
}, [transport, tags, reloadKey, bus]);
|
|
6547
6775
|
function renderBody() {
|
|
6548
|
-
if (state === "loading") return /* @__PURE__ */
|
|
6776
|
+
if (state === "loading") return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsLoading, strings });
|
|
6549
6777
|
if (state === "error") {
|
|
6550
|
-
return /* @__PURE__ */
|
|
6778
|
+
return /* @__PURE__ */ jsx32(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
|
|
6551
6779
|
}
|
|
6552
|
-
if (items.length === 0) return /* @__PURE__ */
|
|
6553
|
-
return /* @__PURE__ */
|
|
6780
|
+
if (items.length === 0) return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsEmpty, strings });
|
|
6781
|
+
return /* @__PURE__ */ jsx32("div", { class: `${p29}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs27(
|
|
6554
6782
|
"button",
|
|
6555
6783
|
{
|
|
6556
6784
|
type: "button",
|
|
6557
|
-
class: `${
|
|
6785
|
+
class: `${p29}-news-card`,
|
|
6558
6786
|
onClick: () => nav.push({ kind: "content", id: item.id, title: item.title }),
|
|
6559
6787
|
"data-testid": tid(TID.newsItem, item.id),
|
|
6560
6788
|
children: [
|
|
6561
|
-
item.image ? /* @__PURE__ */
|
|
6562
|
-
/* @__PURE__ */
|
|
6563
|
-
/* @__PURE__ */
|
|
6564
|
-
item.description ? /* @__PURE__ */
|
|
6789
|
+
item.image ? /* @__PURE__ */ jsx32("img", { class: `${p29}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
|
|
6790
|
+
/* @__PURE__ */ jsxs27("span", { class: `${p29}-news-body`, children: [
|
|
6791
|
+
/* @__PURE__ */ jsx32("span", { class: `${p29}-news-title`, children: item.title }),
|
|
6792
|
+
item.description ? /* @__PURE__ */ jsx32("span", { class: `${p29}-news-summary`, children: item.description }) : null
|
|
6565
6793
|
] })
|
|
6566
6794
|
]
|
|
6567
6795
|
},
|
|
6568
6796
|
item.id
|
|
6569
6797
|
)) });
|
|
6570
6798
|
}
|
|
6571
|
-
return /* @__PURE__ */
|
|
6572
|
-
/* @__PURE__ */
|
|
6573
|
-
/* @__PURE__ */
|
|
6799
|
+
return /* @__PURE__ */ jsxs27("div", { class: `${p29}-module`, children: [
|
|
6800
|
+
/* @__PURE__ */ jsx32(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx32(HeaderActions, { panelProps, variant: "plain" }) }),
|
|
6801
|
+
/* @__PURE__ */ jsx32("div", { class: `${p29}-module-scroll`, children: renderBody() })
|
|
6574
6802
|
] });
|
|
6575
6803
|
}
|
|
6576
6804
|
var newsLayout = {
|
|
6577
6805
|
Icon: NewsIcon,
|
|
6578
|
-
Root: (props2) => /* @__PURE__ */
|
|
6806
|
+
Root: (props2) => /* @__PURE__ */ jsx32(NewsRoot, { ...props2 })
|
|
6579
6807
|
};
|
|
6580
6808
|
|
|
6581
6809
|
// src/ui/modules/registry.ts
|
|
@@ -6587,28 +6815,28 @@ var LAYOUTS = {
|
|
|
6587
6815
|
};
|
|
6588
6816
|
|
|
6589
6817
|
// src/ui/home-tab-bar.tsx
|
|
6590
|
-
import { jsx as
|
|
6591
|
-
var
|
|
6818
|
+
import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
|
|
6819
|
+
var p30 = BRAND.cssPrefix;
|
|
6592
6820
|
function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
|
|
6593
|
-
return /* @__PURE__ */
|
|
6821
|
+
return /* @__PURE__ */ jsx33("nav", { class: `${p30}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
|
|
6594
6822
|
const Icon = LAYOUTS[m.layout].Icon;
|
|
6595
6823
|
const selected = m.id === activeTab;
|
|
6596
6824
|
const badge = m.layout === "chat" && unreadCount > 0 ? unreadCount > 9 ? "9+" : String(unreadCount) : null;
|
|
6597
|
-
return /* @__PURE__ */
|
|
6825
|
+
return /* @__PURE__ */ jsxs28(
|
|
6598
6826
|
"button",
|
|
6599
6827
|
{
|
|
6600
6828
|
type: "button",
|
|
6601
6829
|
role: "tab",
|
|
6602
6830
|
"aria-selected": selected,
|
|
6603
|
-
class: `${
|
|
6831
|
+
class: `${p30}-tab`,
|
|
6604
6832
|
onClick: () => onSelect(m.id),
|
|
6605
6833
|
"data-testid": tid(TID.tab, m.id),
|
|
6606
6834
|
children: [
|
|
6607
|
-
/* @__PURE__ */
|
|
6608
|
-
/* @__PURE__ */
|
|
6609
|
-
badge ? /* @__PURE__ */
|
|
6835
|
+
/* @__PURE__ */ jsxs28("span", { class: `${p30}-tab-icon`, "aria-hidden": "true", children: [
|
|
6836
|
+
/* @__PURE__ */ jsx33(Icon, {}),
|
|
6837
|
+
badge ? /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
|
|
6610
6838
|
] }),
|
|
6611
|
-
/* @__PURE__ */
|
|
6839
|
+
/* @__PURE__ */ jsx33("span", { class: `${p30}-tab-label`, children: localizeText(strings, m.label) })
|
|
6612
6840
|
]
|
|
6613
6841
|
},
|
|
6614
6842
|
m.id
|
|
@@ -6617,12 +6845,12 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
|
|
|
6617
6845
|
}
|
|
6618
6846
|
|
|
6619
6847
|
// src/ui/iframe-view.tsx
|
|
6620
|
-
import { jsx as
|
|
6621
|
-
var
|
|
6848
|
+
import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
|
|
6849
|
+
var p31 = BRAND.cssPrefix;
|
|
6622
6850
|
var SANDBOX = "allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads";
|
|
6623
6851
|
function IframeView({ url, title, strings, onBack, actions }) {
|
|
6624
|
-
return /* @__PURE__ */
|
|
6625
|
-
/* @__PURE__ */
|
|
6852
|
+
return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
|
|
6853
|
+
/* @__PURE__ */ jsx34(
|
|
6626
6854
|
BackHeader,
|
|
6627
6855
|
{
|
|
6628
6856
|
title: title || strings.moduleBack,
|
|
@@ -6631,10 +6859,10 @@ function IframeView({ url, title, strings, onBack, actions }) {
|
|
|
6631
6859
|
actions
|
|
6632
6860
|
}
|
|
6633
6861
|
),
|
|
6634
|
-
/* @__PURE__ */
|
|
6862
|
+
/* @__PURE__ */ jsx34(
|
|
6635
6863
|
"iframe",
|
|
6636
6864
|
{
|
|
6637
|
-
class: `${
|
|
6865
|
+
class: `${p31}-content-frame`,
|
|
6638
6866
|
src: url,
|
|
6639
6867
|
title: title || "content",
|
|
6640
6868
|
sandbox: SANDBOX,
|
|
@@ -6648,8 +6876,8 @@ function IframeView({ url, title, strings, onBack, actions }) {
|
|
|
6648
6876
|
|
|
6649
6877
|
// src/ui/content-view.tsx
|
|
6650
6878
|
import { useCallback as useCallback3, useEffect as useEffect13, useState as useState11 } from "preact/hooks";
|
|
6651
|
-
import { jsx as
|
|
6652
|
-
var
|
|
6879
|
+
import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
|
|
6880
|
+
var p32 = BRAND.cssPrefix;
|
|
6653
6881
|
var log15 = logger.scope("content");
|
|
6654
6882
|
var READ_DWELL_MS = 5e3;
|
|
6655
6883
|
function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
|
|
@@ -6693,16 +6921,16 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
|
|
|
6693
6921
|
[bus, id]
|
|
6694
6922
|
);
|
|
6695
6923
|
function renderBody() {
|
|
6696
|
-
if (failed) return /* @__PURE__ */
|
|
6697
|
-
if (item === null) return /* @__PURE__ */
|
|
6698
|
-
return /* @__PURE__ */
|
|
6699
|
-
item.image ? /* @__PURE__ */
|
|
6700
|
-
item.description ? /* @__PURE__ */
|
|
6701
|
-
/* @__PURE__ */
|
|
6924
|
+
if (failed) return /* @__PURE__ */ jsx35(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
|
|
6925
|
+
if (item === null) return /* @__PURE__ */ jsx35(ModuleState, { message: strings.contentLoading, strings });
|
|
6926
|
+
return /* @__PURE__ */ jsxs30("article", { class: `${p32}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
|
|
6927
|
+
item.image ? /* @__PURE__ */ jsx35("img", { class: `${p32}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
|
|
6928
|
+
item.description ? /* @__PURE__ */ jsx35("p", { class: `${p32}-content-subtitle`, children: item.description }) : null,
|
|
6929
|
+
/* @__PURE__ */ jsx35(StaticMarkdown, { text: item.content ?? "" })
|
|
6702
6930
|
] });
|
|
6703
6931
|
}
|
|
6704
|
-
return /* @__PURE__ */
|
|
6705
|
-
/* @__PURE__ */
|
|
6932
|
+
return /* @__PURE__ */ jsxs30("div", { class: `${p32}-module`, children: [
|
|
6933
|
+
/* @__PURE__ */ jsx35(
|
|
6706
6934
|
BackHeader,
|
|
6707
6935
|
{
|
|
6708
6936
|
title: item?.title || title || strings.moduleBack,
|
|
@@ -6712,13 +6940,13 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
|
|
|
6712
6940
|
testid: TID.backHeader
|
|
6713
6941
|
}
|
|
6714
6942
|
),
|
|
6715
|
-
/* @__PURE__ */
|
|
6943
|
+
/* @__PURE__ */ jsx35("div", { class: `${p32}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
|
|
6716
6944
|
] });
|
|
6717
6945
|
}
|
|
6718
6946
|
|
|
6719
6947
|
// src/ui/messenger-home.tsx
|
|
6720
|
-
import { jsx as
|
|
6721
|
-
var
|
|
6948
|
+
import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
|
|
6949
|
+
var p33 = BRAND.cssPrefix;
|
|
6722
6950
|
function MessengerHome({
|
|
6723
6951
|
panelProps,
|
|
6724
6952
|
enabledModules,
|
|
@@ -6789,12 +7017,12 @@ function MessengerHome({
|
|
|
6789
7017
|
bus,
|
|
6790
7018
|
panelProps
|
|
6791
7019
|
});
|
|
6792
|
-
const plainActions = /* @__PURE__ */
|
|
7020
|
+
const plainActions = /* @__PURE__ */ jsx36(HeaderActions, { panelProps, variant: "plain" });
|
|
6793
7021
|
if (activeModule) visitedRef.current.add(activeModule.id);
|
|
6794
7022
|
const visitedTabs = enabledModules.filter((m) => visitedRef.current.has(m.id));
|
|
6795
7023
|
const tabRoot = (module) => {
|
|
6796
7024
|
if (module.layout === "chat") {
|
|
6797
|
-
return /* @__PURE__ */
|
|
7025
|
+
return /* @__PURE__ */ jsx36(
|
|
6798
7026
|
PanelContent,
|
|
6799
7027
|
{
|
|
6800
7028
|
...panelProps,
|
|
@@ -6805,14 +7033,14 @@ function MessengerHome({
|
|
|
6805
7033
|
);
|
|
6806
7034
|
}
|
|
6807
7035
|
const Root = LAYOUTS[module.layout].Root;
|
|
6808
|
-
return Root ? /* @__PURE__ */
|
|
7036
|
+
return Root ? /* @__PURE__ */ jsx36(Root, { ...screenProps(module) }) : null;
|
|
6809
7037
|
};
|
|
6810
7038
|
const renderReader = () => {
|
|
6811
7039
|
if (top?.kind === "iframe") {
|
|
6812
|
-
return /* @__PURE__ */
|
|
7040
|
+
return /* @__PURE__ */ jsx36(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
|
|
6813
7041
|
}
|
|
6814
7042
|
if (top?.kind === "content") {
|
|
6815
|
-
return /* @__PURE__ */
|
|
7043
|
+
return /* @__PURE__ */ jsx36(
|
|
6816
7044
|
ContentView,
|
|
6817
7045
|
{
|
|
6818
7046
|
id: top.id,
|
|
@@ -6827,22 +7055,22 @@ function MessengerHome({
|
|
|
6827
7055
|
}
|
|
6828
7056
|
return null;
|
|
6829
7057
|
};
|
|
6830
|
-
return /* @__PURE__ */
|
|
7058
|
+
return /* @__PURE__ */ jsxs31(
|
|
6831
7059
|
"div",
|
|
6832
7060
|
{
|
|
6833
7061
|
ref: containerRef,
|
|
6834
|
-
class: `${
|
|
7062
|
+
class: `${p33}-panel ${p33}-messenger`,
|
|
6835
7063
|
role: "dialog",
|
|
6836
7064
|
"aria-modal": "false",
|
|
6837
7065
|
"aria-label": strings.panelTitle,
|
|
6838
7066
|
style: { position: "relative" },
|
|
6839
7067
|
"data-testid": TID.messengerHome,
|
|
6840
7068
|
children: [
|
|
6841
|
-
/* @__PURE__ */
|
|
6842
|
-
visitedTabs.map((m) => /* @__PURE__ */
|
|
7069
|
+
/* @__PURE__ */ jsxs31("div", { class: `${p33}-messenger-body`, children: [
|
|
7070
|
+
visitedTabs.map((m) => /* @__PURE__ */ jsx36("div", { class: `${p33}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
|
|
6843
7071
|
renderReader()
|
|
6844
7072
|
] }),
|
|
6845
|
-
showTabBar ? /* @__PURE__ */
|
|
7073
|
+
showTabBar ? /* @__PURE__ */ jsx36(
|
|
6846
7074
|
HomeTabBar,
|
|
6847
7075
|
{
|
|
6848
7076
|
modules: enabledModules,
|
|
@@ -6852,8 +7080,8 @@ function MessengerHome({
|
|
|
6852
7080
|
onSelect: nav.switchTab
|
|
6853
7081
|
}
|
|
6854
7082
|
) : null,
|
|
6855
|
-
/* @__PURE__ */
|
|
6856
|
-
options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */
|
|
7083
|
+
/* @__PURE__ */ jsx36(PoweredByBar, { poweredBy: options.poweredBy }),
|
|
7084
|
+
options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx36(
|
|
6857
7085
|
ResizeGrip,
|
|
6858
7086
|
{
|
|
6859
7087
|
panelEl: containerRef.current,
|
|
@@ -6870,29 +7098,29 @@ function MessengerHome({
|
|
|
6870
7098
|
}
|
|
6871
7099
|
|
|
6872
7100
|
// src/ui/modules-empty.tsx
|
|
6873
|
-
import { jsx as
|
|
6874
|
-
var
|
|
7101
|
+
import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
|
|
7102
|
+
var p34 = BRAND.cssPrefix;
|
|
6875
7103
|
function ModulesEmpty({ strings, onClose }) {
|
|
6876
|
-
return /* @__PURE__ */
|
|
7104
|
+
return /* @__PURE__ */ jsxs32(
|
|
6877
7105
|
"div",
|
|
6878
7106
|
{
|
|
6879
|
-
class: `${
|
|
7107
|
+
class: `${p34}-panel ${p34}-modules-empty`,
|
|
6880
7108
|
role: "dialog",
|
|
6881
7109
|
"aria-label": strings.panelTitle,
|
|
6882
7110
|
"data-testid": TID.modulesEmpty,
|
|
6883
7111
|
children: [
|
|
6884
|
-
onClose ? /* @__PURE__ */
|
|
7112
|
+
onClose ? /* @__PURE__ */ jsx37(
|
|
6885
7113
|
"button",
|
|
6886
7114
|
{
|
|
6887
7115
|
type: "button",
|
|
6888
|
-
class: `${
|
|
7116
|
+
class: `${p34}-icon-btn ${p34}-modules-empty-close`,
|
|
6889
7117
|
onClick: onClose,
|
|
6890
7118
|
"aria-label": strings.close,
|
|
6891
7119
|
title: strings.close,
|
|
6892
|
-
children: /* @__PURE__ */
|
|
7120
|
+
children: /* @__PURE__ */ jsx37(CloseIcon, {})
|
|
6893
7121
|
}
|
|
6894
7122
|
) : null,
|
|
6895
|
-
/* @__PURE__ */
|
|
7123
|
+
/* @__PURE__ */ jsx37("p", { class: `${p34}-modules-empty-text`, children: strings.modulesEmpty })
|
|
6896
7124
|
]
|
|
6897
7125
|
}
|
|
6898
7126
|
);
|
|
@@ -6915,19 +7143,19 @@ function useLauncherCallout({ callout, persistence }) {
|
|
|
6915
7143
|
}
|
|
6916
7144
|
|
|
6917
7145
|
// src/ui/app.tsx
|
|
6918
|
-
import { jsx as
|
|
7146
|
+
import { jsx as jsx38, jsxs as jsxs33 } from "preact/jsx-runtime";
|
|
6919
7147
|
var log16 = logger.scope("app");
|
|
6920
|
-
var
|
|
7148
|
+
var p35 = BRAND.cssPrefix;
|
|
6921
7149
|
function makeLocalizedWelcome(w, strings) {
|
|
6922
7150
|
return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
|
|
6923
7151
|
}
|
|
6924
7152
|
function firstText(m) {
|
|
6925
|
-
return m.partsSig.value.find((
|
|
7153
|
+
return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
|
|
6926
7154
|
}
|
|
6927
7155
|
function allToolPartsSettled(msg) {
|
|
6928
|
-
const tools = msg.partsSig.value.filter((
|
|
6929
|
-
return tools.length > 0 && tools.every((
|
|
6930
|
-
const s =
|
|
7156
|
+
const tools = msg.partsSig.value.filter((pt) => pt.kind === "tool");
|
|
7157
|
+
return tools.length > 0 && tools.every((pt) => {
|
|
7158
|
+
const s = pt.stateSig.value;
|
|
6931
7159
|
return s === "output-available" || s === "output-error" || s === "output-denied" || s === "approval-responded";
|
|
6932
7160
|
});
|
|
6933
7161
|
}
|
|
@@ -7404,7 +7632,9 @@ function App({ options, hostElement, bus }) {
|
|
|
7404
7632
|
conversationIdSig.value = activeConversationId;
|
|
7405
7633
|
persistence.saveConversationId(activeConversationId);
|
|
7406
7634
|
}
|
|
7407
|
-
const thread = continueExisting ? messagesSig.value : messagesSig.value.slice(0, -1)
|
|
7635
|
+
const thread = (continueExisting ? messagesSig.value : messagesSig.value.slice(0, -1)).filter(
|
|
7636
|
+
(m) => !m.ephemeral
|
|
7637
|
+
);
|
|
7408
7638
|
const body = buildSendMessageRequest({
|
|
7409
7639
|
messages: thread.map(fromReactive),
|
|
7410
7640
|
conversationId: activeConversationId,
|
|
@@ -7846,12 +8076,12 @@ function App({ options, hostElement, bus }) {
|
|
|
7846
8076
|
const renderSurface = (size) => {
|
|
7847
8077
|
const closeable = isActionVisible("close", effectiveOptions.mode, size);
|
|
7848
8078
|
if (enabledModules.length === 0) {
|
|
7849
|
-
return /* @__PURE__ */
|
|
8079
|
+
return /* @__PURE__ */ jsx38(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
|
|
7850
8080
|
}
|
|
7851
8081
|
if (enabledModules.length === 1 && enabledModules[0]?.layout === "chat") {
|
|
7852
|
-
return /* @__PURE__ */
|
|
8082
|
+
return /* @__PURE__ */ jsx38(Panel, { ...panelProps, panelSize: size });
|
|
7853
8083
|
}
|
|
7854
|
-
return /* @__PURE__ */
|
|
8084
|
+
return /* @__PURE__ */ jsx38(
|
|
7855
8085
|
MessengerHome,
|
|
7856
8086
|
{
|
|
7857
8087
|
panelProps: { ...panelProps, panelSize: size, onClose: closeable ? handleClose : void 0 },
|
|
@@ -7870,7 +8100,7 @@ function App({ options, hostElement, bus }) {
|
|
|
7870
8100
|
void handleSelectHistoryConversation(chat.conversationId);
|
|
7871
8101
|
};
|
|
7872
8102
|
const conversationsEnabled = enabledModules.some((m) => m.layout === "chat");
|
|
7873
|
-
return /* @__PURE__ */
|
|
8103
|
+
return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: /* @__PURE__ */ jsx38(
|
|
7874
8104
|
PageShell,
|
|
7875
8105
|
{
|
|
7876
8106
|
site: parsedSite,
|
|
@@ -7891,15 +8121,15 @@ function App({ options, hostElement, bus }) {
|
|
|
7891
8121
|
}
|
|
7892
8122
|
if (isInlineLike) {
|
|
7893
8123
|
const inlineSize = options.mode === "standalone" ? "fullscreen" : panelSize;
|
|
7894
|
-
return /* @__PURE__ */
|
|
8124
|
+
return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: renderSurface(inlineSize) });
|
|
7895
8125
|
}
|
|
7896
8126
|
const drawerEdgeTab = options.mode === "drawer";
|
|
7897
8127
|
const triggerOwnedByPage = options.mode === "modal";
|
|
7898
8128
|
const launcherVisible = !triggerOwnedByPage && !options.launcher.hidden && (!isOpen || launcherLeaving);
|
|
7899
8129
|
const calloutToRender = launcherVisible && !launcherLeaving && !calloutDismissed && !drawerEdgeTab ? effectiveOptions.launcher.callout : null;
|
|
7900
|
-
return /* @__PURE__ */
|
|
7901
|
-
isOpen || activated ? /* @__PURE__ */
|
|
7902
|
-
launcherVisible ? /* @__PURE__ */
|
|
8130
|
+
return /* @__PURE__ */ jsxs33("div", { class: `${p35}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
|
|
8131
|
+
isOpen || activated ? /* @__PURE__ */ jsx38("div", { class: `${p35}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
|
|
8132
|
+
launcherVisible ? /* @__PURE__ */ jsx38(
|
|
7903
8133
|
Launcher,
|
|
7904
8134
|
{
|
|
7905
8135
|
onToggle: handleOpen,
|
|
@@ -7909,7 +8139,7 @@ function App({ options, hostElement, bus }) {
|
|
|
7909
8139
|
edgeTab: drawerEdgeTab
|
|
7910
8140
|
}
|
|
7911
8141
|
) : null,
|
|
7912
|
-
calloutToRender ? /* @__PURE__ */
|
|
8142
|
+
calloutToRender ? /* @__PURE__ */ jsx38(
|
|
7913
8143
|
LauncherCallout,
|
|
7914
8144
|
{
|
|
7915
8145
|
callout: calloutToRender,
|
|
@@ -7974,34 +8204,34 @@ var TRACKED = {
|
|
|
7974
8204
|
expand: (on) => ({ on }),
|
|
7975
8205
|
fullscreen: (on) => ({ on }),
|
|
7976
8206
|
// Conversation funnel. `send` is the key conversion; text never rides.
|
|
7977
|
-
send: (
|
|
7978
|
-
message: (
|
|
8207
|
+
send: (p36) => ({ attachments: p36.attachmentCount }),
|
|
8208
|
+
message: (p36) => ({ role: p36.role }),
|
|
7979
8209
|
stop: () => void 0,
|
|
7980
8210
|
clear: () => void 0,
|
|
7981
8211
|
suggestion: () => void 0,
|
|
7982
|
-
toggleHistory: (
|
|
8212
|
+
toggleHistory: (p36) => ({ view: p36.view }),
|
|
7983
8213
|
handshake: () => void 0,
|
|
7984
8214
|
// Forms + human-in-the-loop — ids and outcomes, never values.
|
|
7985
|
-
formSubmit: (
|
|
8215
|
+
formSubmit: (p36) => ({ formId: p36.formId, skipped: p36.skipped }),
|
|
7986
8216
|
toolResult: () => void 0,
|
|
7987
|
-
toolDecision: (
|
|
8217
|
+
toolDecision: (p36) => ({ approved: p36.approved }),
|
|
7988
8218
|
// Content — ids, tags + counts only; titles/bodies never ride.
|
|
7989
|
-
contentView: (
|
|
7990
|
-
contentOpen: (
|
|
7991
|
-
contentSearch: (
|
|
7992
|
-
contentRead: (
|
|
7993
|
-
contentLinkClick: (
|
|
8219
|
+
contentView: (p36) => ({ section: p36.section, tags: p36.tags, count: p36.count }),
|
|
8220
|
+
contentOpen: (p36) => ({ contentId: p36.contentId, tags: p36.tags }),
|
|
8221
|
+
contentSearch: (p36) => ({ qlen: p36.queryLength, hits: p36.hitCount }),
|
|
8222
|
+
contentRead: (p36) => ({ contentId: p36.contentId }),
|
|
8223
|
+
contentLinkClick: (p36) => ({ contentId: p36.contentId }),
|
|
7994
8224
|
// Composer / attachments / voice.
|
|
7995
|
-
attach: (
|
|
8225
|
+
attach: (p36) => ({ count: p36.count, bytes: p36.totalBytes }),
|
|
7996
8226
|
voiceStart: () => void 0,
|
|
7997
|
-
voiceStop: (
|
|
8227
|
+
voiceStop: (p36) => ({ ms: p36.durationMs }),
|
|
7998
8228
|
voiceCancel: () => void 0,
|
|
7999
8229
|
// Preferences — how visitors tune the surface.
|
|
8000
8230
|
localeChange: (locale) => ({ locale }),
|
|
8001
8231
|
themeChange: (theme) => ({ theme }),
|
|
8002
8232
|
textSizeChange: (size) => ({ size }),
|
|
8003
|
-
soundToggle: (
|
|
8004
|
-
sidebarToggle: (
|
|
8233
|
+
soundToggle: (p36) => ({ muted: p36.muted }),
|
|
8234
|
+
sidebarToggle: (p36) => ({ collapsed: p36.collapsed }),
|
|
8005
8235
|
calloutDismiss: () => void 0,
|
|
8006
8236
|
// Health signal only — the error object itself never leaves the page.
|
|
8007
8237
|
error: () => void 0
|