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