@bbearai/react 0.4.6 → 0.5.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/dist/index.mjs CHANGED
@@ -45,6 +45,8 @@ var BugBearContext = createContext({
45
45
  issueCounts: { open: 0, done: 0, reopened: 0 },
46
46
  refreshIssueCounts: async () => {
47
47
  },
48
+ queuedCount: 0,
49
+ dashboardUrl: void 0,
48
50
  onError: void 0
49
51
  });
50
52
  function useBugBear() {
@@ -63,6 +65,7 @@ function BugBearProvider({ config, children, enabled = true }) {
63
65
  const [threads, setThreads] = useState([]);
64
66
  const [unreadCount, setUnreadCount] = useState(0);
65
67
  const [issueCounts, setIssueCounts] = useState({ open: 0, done: 0, reopened: 0 });
68
+ const [queuedCount, setQueuedCount] = useState(0);
66
69
  const refreshAssignments = useCallback(async () => {
67
70
  if (!client) return;
68
71
  const newAssignments = await client.getAssignedTests();
@@ -210,18 +213,45 @@ function BugBearProvider({ config, children, enabled = true }) {
210
213
  hasInitialized.current = true;
211
214
  contextCapture.startCapture();
212
215
  const newClient = createBugBear(config);
216
+ if (newClient.queue) {
217
+ newClient.queue.onChange(setQueuedCount);
218
+ newClient.initQueue();
219
+ }
213
220
  setClient(newClient);
214
221
  initializeBugBear(newClient);
215
222
  }
216
223
  }, [enabled, config, initializeBugBear]);
224
+ useEffect(() => {
225
+ if (!client?.queue) return;
226
+ const handleOnline = () => {
227
+ client.queue?.flush();
228
+ };
229
+ window.addEventListener("online", handleOnline);
230
+ if (navigator.onLine && client.queue.count > 0) {
231
+ client.queue.flush();
232
+ }
233
+ return () => window.removeEventListener("online", handleOnline);
234
+ }, [client]);
217
235
  useEffect(() => {
218
236
  if (!client || !isTester || !isQAEnabled) return;
237
+ let unsubscribe;
238
+ if (client.realtimeEnabled) {
239
+ unsubscribe = client.subscribeToChanges({
240
+ onAssignmentChange: refreshAssignments,
241
+ onMessageChange: refreshThreads,
242
+ onReportChange: refreshIssueCounts
243
+ });
244
+ }
245
+ const pollInterval = client.realtimeEnabled ? 12e4 : 3e4;
219
246
  const interval = setInterval(() => {
220
247
  refreshThreads();
221
248
  refreshIssueCounts();
222
- }, 3e4);
223
- return () => clearInterval(interval);
224
- }, [client, isTester, isQAEnabled, refreshThreads, refreshIssueCounts]);
249
+ }, pollInterval);
250
+ return () => {
251
+ clearInterval(interval);
252
+ unsubscribe?.();
253
+ };
254
+ }, [client, isTester, isQAEnabled, refreshThreads, refreshIssueCounts, refreshAssignments]);
225
255
  const currentAssignment = assignments.find(
226
256
  (a) => a.status === "in_progress"
227
257
  ) || assignments.find(
@@ -264,6 +294,8 @@ function BugBearProvider({ config, children, enabled = true }) {
264
294
  // Issue tracking
265
295
  issueCounts,
266
296
  refreshIssueCounts,
297
+ queuedCount,
298
+ dashboardUrl: config.dashboardUrl,
267
299
  onError: config.onError
268
300
  },
269
301
  children
@@ -390,9 +422,148 @@ function getThreadTypeIcon(type) {
390
422
 
391
423
  // src/widget/screens/HomeScreen.tsx
392
424
  import { useEffect as useEffect2 } from "react";
425
+
426
+ // src/widget/Skeleton.tsx
393
427
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
428
+ var PULSE_CSS = `@keyframes bb-skeleton-pulse{0%,100%{opacity:.6}50%{opacity:.25}}`;
429
+ var styleInjected = false;
430
+ function injectStyle() {
431
+ if (styleInjected || typeof document === "undefined") return;
432
+ const style = document.createElement("style");
433
+ style.textContent = PULSE_CSS;
434
+ document.head.appendChild(style);
435
+ styleInjected = true;
436
+ }
437
+ function Bar({ width = "100%", height = 12, radius = 6, style }) {
438
+ injectStyle();
439
+ return /* @__PURE__ */ jsx2(
440
+ "div",
441
+ {
442
+ style: {
443
+ width,
444
+ height,
445
+ borderRadius: radius,
446
+ backgroundColor: colors.border,
447
+ animation: "bb-skeleton-pulse 1.5s ease-in-out infinite",
448
+ ...style
449
+ }
450
+ }
451
+ );
452
+ }
453
+ function Circle({ size = 20, style }) {
454
+ injectStyle();
455
+ return /* @__PURE__ */ jsx2(
456
+ "div",
457
+ {
458
+ style: {
459
+ width: size,
460
+ height: size,
461
+ borderRadius: size / 2,
462
+ backgroundColor: colors.border,
463
+ animation: "bb-skeleton-pulse 1.5s ease-in-out infinite",
464
+ flexShrink: 0,
465
+ ...style
466
+ }
467
+ }
468
+ );
469
+ }
470
+ function HomeScreenSkeleton() {
471
+ return /* @__PURE__ */ jsxs("div", { children: [
472
+ /* @__PURE__ */ jsx2(Bar, { width: "100%", height: 100, radius: 16, style: { marginBottom: 20 } }),
473
+ /* @__PURE__ */ jsx2("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: 12, marginBottom: 20 }, children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsxs("div", { style: { backgroundColor: colors.card, border: `1px solid ${colors.border}`, borderRadius: 12, padding: 16, display: "flex", flexDirection: "column", alignItems: "center", gap: 8 }, children: [
474
+ /* @__PURE__ */ jsx2(Circle, { size: 28 }),
475
+ /* @__PURE__ */ jsx2(Bar, { width: 60, height: 10 })
476
+ ] }, i)) }),
477
+ /* @__PURE__ */ jsx2("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr", gap: 10, marginBottom: 20 }, children: [0, 1, 2].map((i) => /* @__PURE__ */ jsxs("div", { style: { backgroundColor: colors.card, border: `1px solid ${colors.border}`, borderRadius: 10, padding: "12px 8px", display: "flex", flexDirection: "column", alignItems: "center", gap: 6 }, children: [
478
+ /* @__PURE__ */ jsx2(Bar, { width: 30, height: 18 }),
479
+ /* @__PURE__ */ jsx2(Bar, { width: 40, height: 8 })
480
+ ] }, i)) }),
481
+ /* @__PURE__ */ jsx2(Bar, { width: "100%", height: 6, radius: 3, style: { marginBottom: 8 } }),
482
+ /* @__PURE__ */ jsx2(Bar, { width: 120, height: 10, style: { margin: "0 auto 16px" } })
483
+ ] });
484
+ }
485
+ function TestItemSkeleton({ delay = 0 }) {
486
+ return /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", padding: "10px 12px", borderRadius: 8, marginBottom: 4, backgroundColor: colors.card }, children: [
487
+ /* @__PURE__ */ jsx2(Circle, { size: 18, style: { marginRight: 10, animationDelay: `${delay}ms` } }),
488
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
489
+ /* @__PURE__ */ jsx2(Bar, { width: "70%", height: 11, style: { marginBottom: 4, animationDelay: `${delay}ms` } }),
490
+ /* @__PURE__ */ jsx2(Bar, { width: "45%", height: 8, style: { animationDelay: `${delay}ms` } })
491
+ ] }),
492
+ /* @__PURE__ */ jsx2(Bar, { width: 50, height: 18, radius: 6, style: { marginLeft: 8, animationDelay: `${delay}ms` } })
493
+ ] });
494
+ }
495
+ function TestListScreenSkeleton() {
496
+ return /* @__PURE__ */ jsxs("div", { children: [
497
+ /* @__PURE__ */ jsx2("div", { style: { display: "flex", gap: 8, marginBottom: 8 }, children: [55, 50, 50, 70].map((w, i) => /* @__PURE__ */ jsx2(Bar, { width: w, height: 28, radius: 8, style: { animationDelay: `${i * 50}ms` } }, i)) }),
498
+ /* @__PURE__ */ jsx2(Bar, { width: "100%", height: 36, radius: 8, style: { marginBottom: 10 } }),
499
+ [0, 1].map((g) => /* @__PURE__ */ jsxs("div", { style: { marginBottom: 12 }, children: [
500
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: 8, padding: "8px 4px" }, children: [
501
+ /* @__PURE__ */ jsx2(Bar, { width: 12, height: 10 }),
502
+ /* @__PURE__ */ jsx2(Bar, { width: "40%", height: 12 }),
503
+ /* @__PURE__ */ jsx2(Bar, { width: 40, height: 4, radius: 2, style: { marginLeft: "auto" } }),
504
+ /* @__PURE__ */ jsx2(Bar, { width: 24, height: 10 })
505
+ ] }),
506
+ [0, 1, 2].map((i) => /* @__PURE__ */ jsx2(TestItemSkeleton, { delay: (g * 3 + i) * 80 }, i))
507
+ ] }, g))
508
+ ] });
509
+ }
510
+ function IssueListScreenSkeleton() {
511
+ return /* @__PURE__ */ jsx2("div", { children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsxs(
512
+ "div",
513
+ {
514
+ style: {
515
+ backgroundColor: colors.card,
516
+ border: `1px solid ${colors.border}`,
517
+ borderRadius: 10,
518
+ padding: "12px 14px",
519
+ marginBottom: 8
520
+ },
521
+ children: [
522
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
523
+ /* @__PURE__ */ jsx2(Circle, { size: 8, style: { animationDelay: `${i * 100}ms` } }),
524
+ /* @__PURE__ */ jsx2(Bar, { width: "65%", height: 11, style: { animationDelay: `${i * 100}ms` } })
525
+ ] }),
526
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 8 }, children: [
527
+ /* @__PURE__ */ jsx2(Bar, { width: "40%", height: 8, style: { animationDelay: `${i * 100}ms` } }),
528
+ /* @__PURE__ */ jsx2(Bar, { width: 40, height: 8, style: { animationDelay: `${i * 100}ms` } })
529
+ ] })
530
+ ]
531
+ },
532
+ i
533
+ )) });
534
+ }
535
+ function MessageListScreenSkeleton() {
536
+ return /* @__PURE__ */ jsxs("div", { children: [
537
+ /* @__PURE__ */ jsx2(Bar, { width: "100%", height: 44, radius: 12, style: { marginBottom: 16 } }),
538
+ [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsxs(
539
+ "div",
540
+ {
541
+ style: {
542
+ display: "flex",
543
+ alignItems: "flex-start",
544
+ padding: 12,
545
+ borderRadius: 10,
546
+ marginBottom: 4,
547
+ backgroundColor: colors.card
548
+ },
549
+ children: [
550
+ /* @__PURE__ */ jsx2(Circle, { size: 20, style: { marginRight: 10, marginTop: 2, animationDelay: `${i * 100}ms` } }),
551
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
552
+ /* @__PURE__ */ jsx2(Bar, { width: "55%", height: 11, style: { marginBottom: 5, animationDelay: `${i * 100}ms` } }),
553
+ /* @__PURE__ */ jsx2(Bar, { width: "80%", height: 9, style: { animationDelay: `${i * 100}ms` } })
554
+ ] }),
555
+ /* @__PURE__ */ jsx2(Bar, { width: 30, height: 8, style: { marginLeft: 8, animationDelay: `${i * 100}ms` } })
556
+ ]
557
+ },
558
+ i
559
+ ))
560
+ ] });
561
+ }
562
+
563
+ // src/widget/screens/HomeScreen.tsx
564
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
394
565
  function HomeScreen({ nav }) {
395
- const { assignments, unreadCount, threads, refreshAssignments, refreshThreads, issueCounts, refreshIssueCounts } = useBugBear();
566
+ const { assignments, unreadCount, threads, refreshAssignments, refreshThreads, issueCounts, refreshIssueCounts, isLoading } = useBugBear();
396
567
  useEffect2(() => {
397
568
  refreshAssignments();
398
569
  refreshThreads();
@@ -403,8 +574,9 @@ function HomeScreen({ nav }) {
403
574
  const retestCount = pendingAssignments.filter((a) => a.isVerification).length;
404
575
  const completedCount = assignments.filter((a) => a.status === "passed" || a.status === "failed").length;
405
576
  const totalTests = assignments.length;
406
- return /* @__PURE__ */ jsxs("div", { children: [
407
- pendingCount > 0 ? /* @__PURE__ */ jsxs(
577
+ if (isLoading) return /* @__PURE__ */ jsx3(HomeScreenSkeleton, {});
578
+ return /* @__PURE__ */ jsxs2("div", { children: [
579
+ pendingCount > 0 ? /* @__PURE__ */ jsxs2(
408
580
  "div",
409
581
  {
410
582
  role: "button",
@@ -426,13 +598,13 @@ function HomeScreen({ nav }) {
426
598
  userSelect: "none"
427
599
  },
428
600
  children: [
429
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 48, fontWeight: 700, color: colors.blueLight }, children: pendingCount }),
430
- /* @__PURE__ */ jsxs("span", { style: { fontSize: 16, color: colors.blueText, marginTop: 2 }, children: [
601
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 48, fontWeight: 700, color: colors.blueLight }, children: pendingCount }),
602
+ /* @__PURE__ */ jsxs2("span", { style: { fontSize: 16, color: colors.blueText, marginTop: 2 }, children: [
431
603
  "test",
432
604
  pendingCount !== 1 ? "s" : "",
433
605
  " waiting"
434
606
  ] }),
435
- retestCount > 0 && /* @__PURE__ */ jsxs(
607
+ retestCount > 0 && /* @__PURE__ */ jsxs2(
436
608
  "span",
437
609
  {
438
610
  style: {
@@ -456,10 +628,10 @@ function HomeScreen({ nav }) {
456
628
  ]
457
629
  }
458
630
  ),
459
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 14, fontWeight: 600, color: colors.blue, marginTop: 12 }, children: "Start Testing \u2192" })
631
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 14, fontWeight: 600, color: colors.blue, marginTop: 12 }, children: "Start Testing \u2192" })
460
632
  ]
461
633
  }
462
- ) : unreadCount > 0 ? /* @__PURE__ */ jsxs(
634
+ ) : unreadCount > 0 ? /* @__PURE__ */ jsxs2(
463
635
  "div",
464
636
  {
465
637
  role: "button",
@@ -481,15 +653,15 @@ function HomeScreen({ nav }) {
481
653
  userSelect: "none"
482
654
  },
483
655
  children: [
484
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 48, fontWeight: 700, color: colors.blueLight }, children: unreadCount }),
485
- /* @__PURE__ */ jsxs("span", { style: { fontSize: 16, color: colors.blueText, marginTop: 2 }, children: [
656
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 48, fontWeight: 700, color: colors.blueLight }, children: unreadCount }),
657
+ /* @__PURE__ */ jsxs2("span", { style: { fontSize: 16, color: colors.blueText, marginTop: 2 }, children: [
486
658
  "unread message",
487
659
  unreadCount !== 1 ? "s" : ""
488
660
  ] }),
489
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 14, fontWeight: 600, color: colors.blue, marginTop: 12 }, children: "View Messages \u2192" })
661
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 14, fontWeight: 600, color: colors.blue, marginTop: 12 }, children: "View Messages \u2192" })
490
662
  ]
491
663
  }
492
- ) : /* @__PURE__ */ jsxs(
664
+ ) : /* @__PURE__ */ jsxs2(
493
665
  "div",
494
666
  {
495
667
  style: {
@@ -503,9 +675,9 @@ function HomeScreen({ nav }) {
503
675
  marginBottom: 20
504
676
  },
505
677
  children: [
506
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 36, marginBottom: 8 }, children: "\u2705" }),
507
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 18, fontWeight: 600, color: colors.textPrimary }, children: "All caught up!" }),
508
- totalTests > 0 && /* @__PURE__ */ jsxs("span", { style: { fontSize: 14, color: colors.textMuted, marginTop: 4 }, children: [
678
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 36, marginBottom: 8 }, children: "\u2705" }),
679
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 18, fontWeight: 600, color: colors.textPrimary }, children: "All caught up!" }),
680
+ totalTests > 0 && /* @__PURE__ */ jsxs2("span", { style: { fontSize: 14, color: colors.textMuted, marginTop: 4 }, children: [
509
681
  completedCount,
510
682
  "/",
511
683
  totalTests,
@@ -514,7 +686,7 @@ function HomeScreen({ nav }) {
514
686
  ]
515
687
  }
516
688
  ),
517
- /* @__PURE__ */ jsxs(
689
+ /* @__PURE__ */ jsxs2(
518
690
  "div",
519
691
  {
520
692
  style: {
@@ -524,7 +696,7 @@ function HomeScreen({ nav }) {
524
696
  marginBottom: 20
525
697
  },
526
698
  children: [
527
- /* @__PURE__ */ jsxs(
699
+ /* @__PURE__ */ jsxs2(
528
700
  "div",
529
701
  {
530
702
  role: "button",
@@ -546,9 +718,9 @@ function HomeScreen({ nav }) {
546
718
  userSelect: "none"
547
719
  },
548
720
  children: [
549
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u2705" }),
550
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Tests" }),
551
- pendingCount > 0 && /* @__PURE__ */ jsx2(
721
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u2705" }),
722
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Tests" }),
723
+ pendingCount > 0 && /* @__PURE__ */ jsx3(
552
724
  "span",
553
725
  {
554
726
  style: {
@@ -574,7 +746,7 @@ function HomeScreen({ nav }) {
574
746
  ]
575
747
  }
576
748
  ),
577
- /* @__PURE__ */ jsxs(
749
+ /* @__PURE__ */ jsxs2(
578
750
  "div",
579
751
  {
580
752
  role: "button",
@@ -596,12 +768,12 @@ function HomeScreen({ nav }) {
596
768
  userSelect: "none"
597
769
  },
598
770
  children: [
599
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u{1F41B}" }),
600
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Report Bug" })
771
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u{1F41B}" }),
772
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Report Bug" })
601
773
  ]
602
774
  }
603
775
  ),
604
- /* @__PURE__ */ jsxs(
776
+ /* @__PURE__ */ jsxs2(
605
777
  "div",
606
778
  {
607
779
  role: "button",
@@ -623,12 +795,12 @@ function HomeScreen({ nav }) {
623
795
  userSelect: "none"
624
796
  },
625
797
  children: [
626
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u{1F4A1}" }),
627
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Feedback" })
798
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u{1F4A1}" }),
799
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Feedback" })
628
800
  ]
629
801
  }
630
802
  ),
631
- /* @__PURE__ */ jsxs(
803
+ /* @__PURE__ */ jsxs2(
632
804
  "div",
633
805
  {
634
806
  role: "button",
@@ -650,9 +822,9 @@ function HomeScreen({ nav }) {
650
822
  userSelect: "none"
651
823
  },
652
824
  children: [
653
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u{1F4AC}" }),
654
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Messages" }),
655
- unreadCount > 0 && /* @__PURE__ */ jsx2(
825
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u{1F4AC}" }),
826
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Messages" }),
827
+ unreadCount > 0 && /* @__PURE__ */ jsx3(
656
828
  "span",
657
829
  {
658
830
  style: {
@@ -681,8 +853,8 @@ function HomeScreen({ nav }) {
681
853
  ]
682
854
  }
683
855
  ),
684
- /* @__PURE__ */ jsxs("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr", gap: 10, marginBottom: 20 }, children: [
685
- /* @__PURE__ */ jsxs(
856
+ /* @__PURE__ */ jsxs2("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr", gap: 10, marginBottom: 20 }, children: [
857
+ /* @__PURE__ */ jsxs2(
686
858
  "div",
687
859
  {
688
860
  role: "button",
@@ -704,12 +876,12 @@ function HomeScreen({ nav }) {
704
876
  userSelect: "none"
705
877
  },
706
878
  children: [
707
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 22, fontWeight: 700, color: "#f97316" }, children: issueCounts.open }),
708
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Open" })
879
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 22, fontWeight: 700, color: "#f97316" }, children: issueCounts.open }),
880
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Open" })
709
881
  ]
710
882
  }
711
883
  ),
712
- /* @__PURE__ */ jsxs(
884
+ /* @__PURE__ */ jsxs2(
713
885
  "div",
714
886
  {
715
887
  role: "button",
@@ -731,12 +903,12 @@ function HomeScreen({ nav }) {
731
903
  userSelect: "none"
732
904
  },
733
905
  children: [
734
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 22, fontWeight: 700, color: "#22c55e" }, children: issueCounts.done }),
735
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Done" })
906
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 22, fontWeight: 700, color: "#22c55e" }, children: issueCounts.done }),
907
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Done" })
736
908
  ]
737
909
  }
738
910
  ),
739
- /* @__PURE__ */ jsxs(
911
+ /* @__PURE__ */ jsxs2(
740
912
  "div",
741
913
  {
742
914
  role: "button",
@@ -758,14 +930,14 @@ function HomeScreen({ nav }) {
758
930
  userSelect: "none"
759
931
  },
760
932
  children: [
761
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 22, fontWeight: 700, color: "#ef4444" }, children: issueCounts.reopened }),
762
- /* @__PURE__ */ jsx2("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Reopened" })
933
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 22, fontWeight: 700, color: "#ef4444" }, children: issueCounts.reopened }),
934
+ /* @__PURE__ */ jsx3("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Reopened" })
763
935
  ]
764
936
  }
765
937
  )
766
938
  ] }),
767
- totalTests > 0 && /* @__PURE__ */ jsxs("div", { style: { marginBottom: 16 }, children: [
768
- /* @__PURE__ */ jsx2(
939
+ totalTests > 0 && /* @__PURE__ */ jsxs2("div", { style: { marginBottom: 16 }, children: [
940
+ /* @__PURE__ */ jsx3(
769
941
  "div",
770
942
  {
771
943
  style: {
@@ -775,7 +947,7 @@ function HomeScreen({ nav }) {
775
947
  overflow: "hidden",
776
948
  marginBottom: 6
777
949
  },
778
- children: /* @__PURE__ */ jsx2(
950
+ children: /* @__PURE__ */ jsx3(
779
951
  "div",
780
952
  {
781
953
  style: {
@@ -789,14 +961,14 @@ function HomeScreen({ nav }) {
789
961
  )
790
962
  }
791
963
  ),
792
- /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: colors.textMuted, textAlign: "center" }, children: [
964
+ /* @__PURE__ */ jsxs2("div", { style: { fontSize: 12, color: colors.textMuted, textAlign: "center" }, children: [
793
965
  completedCount,
794
966
  "/",
795
967
  totalTests,
796
968
  " tests completed"
797
969
  ] })
798
970
  ] }),
799
- /* @__PURE__ */ jsx2("div", { style: { display: "flex", justifyContent: "center", padding: "8px 0" }, children: /* @__PURE__ */ jsx2(
971
+ /* @__PURE__ */ jsx3("div", { style: { display: "flex", justifyContent: "center", padding: "8px 0" }, children: /* @__PURE__ */ jsx3(
800
972
  "button",
801
973
  {
802
974
  type: "button",
@@ -821,7 +993,7 @@ function HomeScreen({ nav }) {
821
993
 
822
994
  // src/widget/screens/TestDetailScreen.tsx
823
995
  import { useState as useState2, useEffect as useEffect3, useCallback as useCallback2 } from "react";
824
- import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
996
+ import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
825
997
  function TestDetailScreen({ testId, nav }) {
826
998
  const { client, assignments, currentAssignment, refreshAssignments, onNavigate } = useBugBear();
827
999
  const displayedAssignment = testId ? assignments.find((a) => a.id === testId) || currentAssignment : currentAssignment;
@@ -909,7 +1081,7 @@ function TestDetailScreen({ testId, nav }) {
909
1081
  }
910
1082
  }, [client, displayedAssignment, selectedSkipReason, skipNotes, refreshAssignments, assignments, nav]);
911
1083
  if (!displayedAssignment) {
912
- return /* @__PURE__ */ jsxs2(
1084
+ return /* @__PURE__ */ jsxs3(
913
1085
  "div",
914
1086
  {
915
1087
  style: {
@@ -920,10 +1092,10 @@ function TestDetailScreen({ testId, nav }) {
920
1092
  padding: 40
921
1093
  },
922
1094
  children: [
923
- /* @__PURE__ */ jsx3("span", { style: { fontSize: 48, marginBottom: 12 }, children: "\u2705" }),
924
- /* @__PURE__ */ jsx3("span", { style: { fontSize: 18, fontWeight: 600, color: colors.textPrimary, marginBottom: 4 }, children: "No tests assigned" }),
925
- /* @__PURE__ */ jsx3("span", { style: { fontSize: 14, color: colors.textMuted, marginBottom: 20 }, children: "Check back later for new tests" }),
926
- /* @__PURE__ */ jsx3(
1095
+ /* @__PURE__ */ jsx4("span", { style: { fontSize: 48, marginBottom: 12 }, children: "\u2705" }),
1096
+ /* @__PURE__ */ jsx4("span", { style: { fontSize: 18, fontWeight: 600, color: colors.textPrimary, marginBottom: 4 }, children: "No tests assigned" }),
1097
+ /* @__PURE__ */ jsx4("span", { style: { fontSize: 14, color: colors.textMuted, marginBottom: 20 }, children: "Check back later for new tests" }),
1098
+ /* @__PURE__ */ jsx4(
927
1099
  "button",
928
1100
  {
929
1101
  type: "button",
@@ -956,8 +1128,8 @@ function TestDetailScreen({ testId, nav }) {
956
1128
  { reason: "dependency", label: "\u{1F517} Needs another test first" },
957
1129
  { reason: "other", label: "\u{1F4DD} Other reason" }
958
1130
  ];
959
- return /* @__PURE__ */ jsxs2("div", { style: { paddingBottom: 16 }, children: [
960
- /* @__PURE__ */ jsxs2(
1131
+ return /* @__PURE__ */ jsxs3("div", { style: { paddingBottom: 16 }, children: [
1132
+ /* @__PURE__ */ jsxs3(
961
1133
  "div",
962
1134
  {
963
1135
  style: {
@@ -967,14 +1139,14 @@ function TestDetailScreen({ testId, nav }) {
967
1139
  marginBottom: 12
968
1140
  },
969
1141
  children: [
970
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
971
- /* @__PURE__ */ jsxs2("span", { style: { fontSize: 13, color: colors.textMuted }, children: [
1142
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
1143
+ /* @__PURE__ */ jsxs3("span", { style: { fontSize: 13, color: colors.textMuted }, children: [
972
1144
  "Test ",
973
1145
  currentIndex + 1,
974
1146
  " of ",
975
1147
  allTests.length
976
1148
  ] }),
977
- displayedAssignment.status === "in_progress" && assignmentElapsedTime > 0 && /* @__PURE__ */ jsx3(
1149
+ displayedAssignment.status === "in_progress" && assignmentElapsedTime > 0 && /* @__PURE__ */ jsx4(
978
1150
  "span",
979
1151
  {
980
1152
  style: {
@@ -993,7 +1165,7 @@ function TestDetailScreen({ testId, nav }) {
993
1165
  }
994
1166
  )
995
1167
  ] }),
996
- /* @__PURE__ */ jsx3(
1168
+ /* @__PURE__ */ jsx4(
997
1169
  "button",
998
1170
  {
999
1171
  type: "button",
@@ -1013,7 +1185,7 @@ function TestDetailScreen({ testId, nav }) {
1013
1185
  ]
1014
1186
  }
1015
1187
  ),
1016
- displayedAssignment.isVerification && /* @__PURE__ */ jsxs2(
1188
+ displayedAssignment.isVerification && /* @__PURE__ */ jsxs3(
1017
1189
  "div",
1018
1190
  {
1019
1191
  style: {
@@ -1027,14 +1199,14 @@ function TestDetailScreen({ testId, nav }) {
1027
1199
  marginBottom: 10
1028
1200
  },
1029
1201
  children: [
1030
- /* @__PURE__ */ jsx3("span", { style: { fontSize: 14 }, children: "\u{1F504}" }),
1031
- /* @__PURE__ */ jsx3("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Retest" }),
1032
- /* @__PURE__ */ jsx3("span", { style: { fontSize: 12, color: "#d97706" }, children: "\u2014 Verify bug fix" })
1202
+ /* @__PURE__ */ jsx4("span", { style: { fontSize: 14 }, children: "\u{1F504}" }),
1203
+ /* @__PURE__ */ jsx4("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Retest" }),
1204
+ /* @__PURE__ */ jsx4("span", { style: { fontSize: 12, color: "#d97706" }, children: "\u2014 Verify bug fix" })
1033
1205
  ]
1034
1206
  }
1035
1207
  ),
1036
- /* @__PURE__ */ jsx3("div", { style: { fontSize: 20, fontWeight: 700, color: colors.textPrimary, marginBottom: 4 }, children: testCase.title }),
1037
- testCase.testKey && /* @__PURE__ */ jsx3(
1208
+ /* @__PURE__ */ jsx4("div", { style: { fontSize: 20, fontWeight: 700, color: colors.textPrimary, marginBottom: 4 }, children: testCase.title }),
1209
+ testCase.testKey && /* @__PURE__ */ jsx4(
1038
1210
  "div",
1039
1211
  {
1040
1212
  style: {
@@ -1046,7 +1218,7 @@ function TestDetailScreen({ testId, nav }) {
1046
1218
  children: testCase.testKey
1047
1219
  }
1048
1220
  ),
1049
- /* @__PURE__ */ jsx3(
1221
+ /* @__PURE__ */ jsx4(
1050
1222
  "button",
1051
1223
  {
1052
1224
  type: "button",
@@ -1062,7 +1234,7 @@ function TestDetailScreen({ testId, nav }) {
1062
1234
  cursor: "pointer",
1063
1235
  textAlign: "left"
1064
1236
  },
1065
- children: /* @__PURE__ */ jsxs2("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textSecondary }, children: [
1237
+ children: /* @__PURE__ */ jsxs3("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textSecondary }, children: [
1066
1238
  showSteps ? "\u25BC" : "\u25B6",
1067
1239
  " ",
1068
1240
  info.icon,
@@ -1071,9 +1243,9 @@ function TestDetailScreen({ testId, nav }) {
1071
1243
  ] })
1072
1244
  }
1073
1245
  ),
1074
- showSteps && /* @__PURE__ */ jsxs2("div", { style: { marginBottom: 16 }, children: [
1075
- template === "steps" && steps.map((step, idx) => /* @__PURE__ */ jsxs2("div", { style: { display: "flex", marginBottom: 10 }, children: [
1076
- /* @__PURE__ */ jsx3(
1246
+ showSteps && /* @__PURE__ */ jsxs3("div", { style: { marginBottom: 16 }, children: [
1247
+ template === "steps" && steps.map((step, idx) => /* @__PURE__ */ jsxs3("div", { style: { display: "flex", marginBottom: 10 }, children: [
1248
+ /* @__PURE__ */ jsx4(
1077
1249
  "div",
1078
1250
  {
1079
1251
  style: {
@@ -1088,12 +1260,12 @@ function TestDetailScreen({ testId, nav }) {
1088
1260
  marginTop: 2,
1089
1261
  flexShrink: 0
1090
1262
  },
1091
- children: /* @__PURE__ */ jsx3("span", { style: { fontSize: 12, fontWeight: 600, color: "#fff" }, children: step.stepNumber })
1263
+ children: /* @__PURE__ */ jsx4("span", { style: { fontSize: 12, fontWeight: 600, color: "#fff" }, children: step.stepNumber })
1092
1264
  }
1093
1265
  ),
1094
- /* @__PURE__ */ jsxs2("div", { style: { flex: 1 }, children: [
1095
- /* @__PURE__ */ jsx3("span", { style: { fontSize: 14, color: colors.textPrimary, lineHeight: "20px" }, children: step.action }),
1096
- step.expectedResult && /* @__PURE__ */ jsxs2(
1266
+ /* @__PURE__ */ jsxs3("div", { style: { flex: 1 }, children: [
1267
+ /* @__PURE__ */ jsx4("span", { style: { fontSize: 14, color: colors.textPrimary, lineHeight: "20px" }, children: step.action }),
1268
+ step.expectedResult && /* @__PURE__ */ jsxs3(
1097
1269
  "div",
1098
1270
  {
1099
1271
  style: {
@@ -1110,8 +1282,8 @@ function TestDetailScreen({ testId, nav }) {
1110
1282
  )
1111
1283
  ] })
1112
1284
  ] }, idx)),
1113
- template === "checklist" && /* @__PURE__ */ jsxs2(Fragment, { children: [
1114
- steps.map((step, idx) => /* @__PURE__ */ jsxs2(
1285
+ template === "checklist" && /* @__PURE__ */ jsxs3(Fragment, { children: [
1286
+ steps.map((step, idx) => /* @__PURE__ */ jsxs3(
1115
1287
  "button",
1116
1288
  {
1117
1289
  type: "button",
@@ -1137,7 +1309,7 @@ function TestDetailScreen({ testId, nav }) {
1137
1309
  textAlign: "left"
1138
1310
  },
1139
1311
  children: [
1140
- /* @__PURE__ */ jsx3(
1312
+ /* @__PURE__ */ jsx4(
1141
1313
  "div",
1142
1314
  {
1143
1315
  style: {
@@ -1152,10 +1324,10 @@ function TestDetailScreen({ testId, nav }) {
1152
1324
  alignItems: "center",
1153
1325
  flexShrink: 0
1154
1326
  },
1155
- children: criteriaResults[idx] === true && /* @__PURE__ */ jsx3("span", { style: { color: "#fff", fontSize: 14, fontWeight: "bold" }, children: "\u2713" })
1327
+ children: criteriaResults[idx] === true && /* @__PURE__ */ jsx4("span", { style: { color: "#fff", fontSize: 14, fontWeight: "bold" }, children: "\u2713" })
1156
1328
  }
1157
1329
  ),
1158
- /* @__PURE__ */ jsx3(
1330
+ /* @__PURE__ */ jsx4(
1159
1331
  "span",
1160
1332
  {
1161
1333
  style: {
@@ -1171,7 +1343,7 @@ function TestDetailScreen({ testId, nav }) {
1171
1343
  },
1172
1344
  idx
1173
1345
  )),
1174
- Object.keys(criteriaResults).length > 0 && /* @__PURE__ */ jsx3("div", { style: { display: "flex", justifyContent: "flex-end", paddingTop: 4 }, children: /* @__PURE__ */ jsx3(
1346
+ Object.keys(criteriaResults).length > 0 && /* @__PURE__ */ jsx4("div", { style: { display: "flex", justifyContent: "flex-end", paddingTop: 4 }, children: /* @__PURE__ */ jsx4(
1175
1347
  "button",
1176
1348
  {
1177
1349
  type: "button",
@@ -1188,8 +1360,8 @@ function TestDetailScreen({ testId, nav }) {
1188
1360
  }
1189
1361
  ) })
1190
1362
  ] }),
1191
- template === "rubric" && steps.map((step, idx) => /* @__PURE__ */ jsxs2("div", { style: { marginBottom: 14 }, children: [
1192
- /* @__PURE__ */ jsxs2(
1363
+ template === "rubric" && steps.map((step, idx) => /* @__PURE__ */ jsxs3("div", { style: { marginBottom: 14 }, children: [
1364
+ /* @__PURE__ */ jsxs3(
1193
1365
  "div",
1194
1366
  {
1195
1367
  style: {
@@ -1205,7 +1377,7 @@ function TestDetailScreen({ testId, nav }) {
1205
1377
  ]
1206
1378
  }
1207
1379
  ),
1208
- step.expectedResult && /* @__PURE__ */ jsx3(
1380
+ step.expectedResult && /* @__PURE__ */ jsx4(
1209
1381
  "div",
1210
1382
  {
1211
1383
  style: {
@@ -1217,8 +1389,8 @@ function TestDetailScreen({ testId, nav }) {
1217
1389
  children: step.expectedResult
1218
1390
  }
1219
1391
  ),
1220
- rubricMode === "pass_fail" ? /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: 8, marginLeft: 16 }, children: [
1221
- /* @__PURE__ */ jsx3(
1392
+ rubricMode === "pass_fail" ? /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: 8, marginLeft: 16 }, children: [
1393
+ /* @__PURE__ */ jsx4(
1222
1394
  "button",
1223
1395
  {
1224
1396
  type: "button",
@@ -1239,7 +1411,7 @@ function TestDetailScreen({ testId, nav }) {
1239
1411
  children: "\u2713 Pass"
1240
1412
  }
1241
1413
  ),
1242
- /* @__PURE__ */ jsx3(
1414
+ /* @__PURE__ */ jsx4(
1243
1415
  "button",
1244
1416
  {
1245
1417
  type: "button",
@@ -1260,7 +1432,7 @@ function TestDetailScreen({ testId, nav }) {
1260
1432
  children: "\u2717 Fail"
1261
1433
  }
1262
1434
  )
1263
- ] }) : /* @__PURE__ */ jsx3("div", { style: { display: "flex", gap: 6, marginLeft: 16 }, children: [1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ jsx3(
1435
+ ] }) : /* @__PURE__ */ jsx4("div", { style: { display: "flex", gap: 6, marginLeft: 16 }, children: [1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ jsx4(
1264
1436
  "button",
1265
1437
  {
1266
1438
  type: "button",
@@ -1284,7 +1456,7 @@ function TestDetailScreen({ testId, nav }) {
1284
1456
  n
1285
1457
  )) })
1286
1458
  ] }, idx)),
1287
- template === "freeform" && /* @__PURE__ */ jsxs2(
1459
+ template === "freeform" && /* @__PURE__ */ jsxs3(
1288
1460
  "div",
1289
1461
  {
1290
1462
  style: {
@@ -1294,15 +1466,15 @@ function TestDetailScreen({ testId, nav }) {
1294
1466
  border: "1px solid #854d0e"
1295
1467
  },
1296
1468
  children: [
1297
- /* @__PURE__ */ jsx3("div", { style: { fontSize: 14, color: "#fde68a", marginBottom: 6 }, children: "Review the area and note:" }),
1298
- /* @__PURE__ */ jsx3("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 What works well" }),
1299
- /* @__PURE__ */ jsx3("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 Issues or concerns" }),
1300
- /* @__PURE__ */ jsx3("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 Suggestions" })
1469
+ /* @__PURE__ */ jsx4("div", { style: { fontSize: 14, color: "#fde68a", marginBottom: 6 }, children: "Review the area and note:" }),
1470
+ /* @__PURE__ */ jsx4("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 What works well" }),
1471
+ /* @__PURE__ */ jsx4("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 Issues or concerns" }),
1472
+ /* @__PURE__ */ jsx4("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 Suggestions" })
1301
1473
  ]
1302
1474
  }
1303
1475
  )
1304
1476
  ] }),
1305
- testCase.expectedResult && /* @__PURE__ */ jsxs2(
1477
+ testCase.expectedResult && /* @__PURE__ */ jsxs3(
1306
1478
  "div",
1307
1479
  {
1308
1480
  style: {
@@ -1313,12 +1485,12 @@ function TestDetailScreen({ testId, nav }) {
1313
1485
  marginBottom: 12
1314
1486
  },
1315
1487
  children: [
1316
- /* @__PURE__ */ jsx3("div", { style: { fontSize: 13, fontWeight: 600, color: colors.green, marginBottom: 4 }, children: "\u2705 Expected Result" }),
1317
- /* @__PURE__ */ jsx3("div", { style: { fontSize: 14, color: "#bbf7d0", lineHeight: "20px" }, children: testCase.expectedResult })
1488
+ /* @__PURE__ */ jsx4("div", { style: { fontSize: 13, fontWeight: 600, color: colors.green, marginBottom: 4 }, children: "\u2705 Expected Result" }),
1489
+ /* @__PURE__ */ jsx4("div", { style: { fontSize: 14, color: "#bbf7d0", lineHeight: "20px" }, children: testCase.expectedResult })
1318
1490
  ]
1319
1491
  }
1320
1492
  ),
1321
- testCase.targetRoute && onNavigate && /* @__PURE__ */ jsx3(
1493
+ testCase.targetRoute && onNavigate && /* @__PURE__ */ jsx4(
1322
1494
  "button",
1323
1495
  {
1324
1496
  type: "button",
@@ -1340,7 +1512,7 @@ function TestDetailScreen({ testId, nav }) {
1340
1512
  children: "\u{1F9ED} Go to test location"
1341
1513
  }
1342
1514
  ),
1343
- /* @__PURE__ */ jsxs2(
1515
+ /* @__PURE__ */ jsxs3(
1344
1516
  "button",
1345
1517
  {
1346
1518
  type: "button",
@@ -1364,7 +1536,7 @@ function TestDetailScreen({ testId, nav }) {
1364
1536
  ]
1365
1537
  }
1366
1538
  ),
1367
- showDetails && /* @__PURE__ */ jsxs2(
1539
+ showDetails && /* @__PURE__ */ jsxs3(
1368
1540
  "div",
1369
1541
  {
1370
1542
  style: {
@@ -1375,7 +1547,7 @@ function TestDetailScreen({ testId, nav }) {
1375
1547
  marginBottom: 16
1376
1548
  },
1377
1549
  children: [
1378
- testCase.testKey && /* @__PURE__ */ jsxs2(
1550
+ testCase.testKey && /* @__PURE__ */ jsxs3(
1379
1551
  "div",
1380
1552
  {
1381
1553
  style: {
@@ -1393,16 +1565,16 @@ function TestDetailScreen({ testId, nav }) {
1393
1565
  ]
1394
1566
  }
1395
1567
  ),
1396
- testCase.description && /* @__PURE__ */ jsx3("div", { style: { fontSize: 13, color: colors.textSecondary, lineHeight: "18px" }, children: testCase.description }),
1397
- testCase.group && /* @__PURE__ */ jsx3("div", { style: { marginTop: 8 }, children: /* @__PURE__ */ jsxs2("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
1568
+ testCase.description && /* @__PURE__ */ jsx4("div", { style: { fontSize: 13, color: colors.textSecondary, lineHeight: "18px" }, children: testCase.description }),
1569
+ testCase.group && /* @__PURE__ */ jsx4("div", { style: { marginTop: 8 }, children: /* @__PURE__ */ jsxs3("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
1398
1570
  "\u{1F4C1} ",
1399
1571
  testCase.group.name
1400
1572
  ] }) })
1401
1573
  ]
1402
1574
  }
1403
1575
  ),
1404
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: 10, marginTop: 8 }, children: [
1405
- /* @__PURE__ */ jsx3(
1576
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: 10, marginTop: 8 }, children: [
1577
+ /* @__PURE__ */ jsx4(
1406
1578
  "button",
1407
1579
  {
1408
1580
  type: "button",
@@ -1425,7 +1597,7 @@ function TestDetailScreen({ testId, nav }) {
1425
1597
  children: isSubmitting ? "Failing..." : "Fail"
1426
1598
  }
1427
1599
  ),
1428
- /* @__PURE__ */ jsx3(
1600
+ /* @__PURE__ */ jsx4(
1429
1601
  "button",
1430
1602
  {
1431
1603
  type: "button",
@@ -1448,7 +1620,7 @@ function TestDetailScreen({ testId, nav }) {
1448
1620
  children: "Skip"
1449
1621
  }
1450
1622
  ),
1451
- /* @__PURE__ */ jsx3(
1623
+ /* @__PURE__ */ jsx4(
1452
1624
  "button",
1453
1625
  {
1454
1626
  type: "button",
@@ -1472,7 +1644,7 @@ function TestDetailScreen({ testId, nav }) {
1472
1644
  }
1473
1645
  )
1474
1646
  ] }),
1475
- showSkipModal && /* @__PURE__ */ jsx3(
1647
+ showSkipModal && /* @__PURE__ */ jsx4(
1476
1648
  "div",
1477
1649
  {
1478
1650
  style: {
@@ -1485,7 +1657,7 @@ function TestDetailScreen({ testId, nav }) {
1485
1657
  zIndex: 9999,
1486
1658
  padding: 24
1487
1659
  },
1488
- children: /* @__PURE__ */ jsxs2(
1660
+ children: /* @__PURE__ */ jsxs3(
1489
1661
  "div",
1490
1662
  {
1491
1663
  style: {
@@ -1497,7 +1669,7 @@ function TestDetailScreen({ testId, nav }) {
1497
1669
  width: "100%"
1498
1670
  },
1499
1671
  children: [
1500
- /* @__PURE__ */ jsx3(
1672
+ /* @__PURE__ */ jsx4(
1501
1673
  "div",
1502
1674
  {
1503
1675
  style: {
@@ -1509,8 +1681,8 @@ function TestDetailScreen({ testId, nav }) {
1509
1681
  children: "Skip this test?"
1510
1682
  }
1511
1683
  ),
1512
- /* @__PURE__ */ jsx3("div", { style: { fontSize: 14, color: colors.textMuted, marginBottom: 12 }, children: "Select a reason:" }),
1513
- skipReasons.map(({ reason, label }) => /* @__PURE__ */ jsx3(
1684
+ /* @__PURE__ */ jsx4("div", { style: { fontSize: 14, color: colors.textMuted, marginBottom: 12 }, children: "Select a reason:" }),
1685
+ skipReasons.map(({ reason, label }) => /* @__PURE__ */ jsx4(
1514
1686
  "button",
1515
1687
  {
1516
1688
  type: "button",
@@ -1536,7 +1708,7 @@ function TestDetailScreen({ testId, nav }) {
1536
1708
  },
1537
1709
  reason
1538
1710
  )),
1539
- /* @__PURE__ */ jsx3(
1711
+ /* @__PURE__ */ jsx4(
1540
1712
  "textarea",
1541
1713
  {
1542
1714
  value: skipNotes,
@@ -1559,8 +1731,8 @@ function TestDetailScreen({ testId, nav }) {
1559
1731
  }
1560
1732
  }
1561
1733
  ),
1562
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: 10, marginTop: 14 }, children: [
1563
- /* @__PURE__ */ jsx3(
1734
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: 10, marginTop: 14 }, children: [
1735
+ /* @__PURE__ */ jsx4(
1564
1736
  "button",
1565
1737
  {
1566
1738
  type: "button",
@@ -1584,7 +1756,7 @@ function TestDetailScreen({ testId, nav }) {
1584
1756
  children: "Cancel"
1585
1757
  }
1586
1758
  ),
1587
- /* @__PURE__ */ jsx3(
1759
+ /* @__PURE__ */ jsx4(
1588
1760
  "button",
1589
1761
  {
1590
1762
  type: "button",
@@ -1618,11 +1790,14 @@ function TestDetailScreen({ testId, nav }) {
1618
1790
 
1619
1791
  // src/widget/screens/TestListScreen.tsx
1620
1792
  import { useState as useState3, useMemo, useCallback as useCallback3 } from "react";
1621
- import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
1793
+ import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
1622
1794
  function TestListScreen({ nav }) {
1623
- const { assignments, currentAssignment, refreshAssignments } = useBugBear();
1795
+ const { assignments, currentAssignment, refreshAssignments, isLoading } = useBugBear();
1624
1796
  const [filter, setFilter] = useState3("all");
1625
1797
  const [roleFilter, setRoleFilter] = useState3(null);
1798
+ const [trackFilter, setTrackFilter] = useState3(null);
1799
+ const [searchQuery, setSearchQuery] = useState3("");
1800
+ const [sortMode, setSortMode] = useState3("priority");
1626
1801
  const [collapsedFolders, setCollapsedFolders] = useState3(/* @__PURE__ */ new Set());
1627
1802
  const availableRoles = useMemo(() => {
1628
1803
  const roleMap = /* @__PURE__ */ new Map();
@@ -1631,6 +1806,13 @@ function TestListScreen({ nav }) {
1631
1806
  }
1632
1807
  return Array.from(roleMap.values());
1633
1808
  }, [assignments]);
1809
+ const availableTracks = useMemo(() => {
1810
+ const trackMap = /* @__PURE__ */ new Map();
1811
+ for (const a of assignments) {
1812
+ if (a.testCase.track) trackMap.set(a.testCase.track.id, a.testCase.track);
1813
+ }
1814
+ return Array.from(trackMap.values());
1815
+ }, [assignments]);
1634
1816
  const selectedRole = availableRoles.find((r) => r.id === roleFilter);
1635
1817
  const groupedAssignments = useMemo(() => {
1636
1818
  const groups = /* @__PURE__ */ new Map();
@@ -1664,6 +1846,12 @@ function TestListScreen({ nav }) {
1664
1846
  folder.assignments.sort((a, b) => {
1665
1847
  if (a.isVerification && !b.isVerification) return -1;
1666
1848
  if (!a.isVerification && b.isVerification) return 1;
1849
+ if (sortMode === "alpha") {
1850
+ return a.testCase.title.localeCompare(b.testCase.title);
1851
+ }
1852
+ if (sortMode === "recent") {
1853
+ return 0;
1854
+ }
1667
1855
  const sd = (statusOrder[a.status] ?? 5) - (statusOrder[b.status] ?? 5);
1668
1856
  if (sd !== 0) return sd;
1669
1857
  return (priorityOrder[a.testCase.priority] ?? 4) - (priorityOrder[b.testCase.priority] ?? 4);
@@ -1675,7 +1863,7 @@ function TestListScreen({ nav }) {
1675
1863
  if (!b.group) return -1;
1676
1864
  return a.group.sortOrder - b.group.sortOrder;
1677
1865
  });
1678
- }, [assignments]);
1866
+ }, [assignments, sortMode]);
1679
1867
  const toggleFolder = useCallback3((id) => {
1680
1868
  setCollapsedFolders((prev) => {
1681
1869
  const next = new Set(prev);
@@ -1684,13 +1872,20 @@ function TestListScreen({ nav }) {
1684
1872
  return next;
1685
1873
  });
1686
1874
  }, []);
1687
- const filterAssignment = (a) => {
1875
+ const filterAssignment = useCallback3((a) => {
1688
1876
  if (roleFilter && a.testCase.role?.id !== roleFilter) return false;
1877
+ if (trackFilter && a.testCase.track?.id !== trackFilter) return false;
1878
+ if (searchQuery) {
1879
+ const q = searchQuery.toLowerCase();
1880
+ const titleMatch = a.testCase.title.toLowerCase().includes(q);
1881
+ const keyMatch = a.testCase.testKey.toLowerCase().includes(q);
1882
+ if (!titleMatch && !keyMatch) return false;
1883
+ }
1689
1884
  if (filter === "pending") return a.status === "pending" || a.status === "in_progress";
1690
1885
  if (filter === "done") return a.status === "passed";
1691
1886
  if (filter === "reopened") return a.status === "failed";
1692
1887
  return true;
1693
- };
1888
+ }, [roleFilter, trackFilter, searchQuery, filter]);
1694
1889
  const pendingCount = assignments.filter(
1695
1890
  (a) => a.status === "pending" || a.status === "in_progress"
1696
1891
  ).length;
@@ -1702,8 +1897,9 @@ function TestListScreen({ nav }) {
1702
1897
  { key: "done", label: "Done", count: doneCount },
1703
1898
  { key: "reopened", label: "Re Opened", count: reopenedCount }
1704
1899
  ];
1705
- return /* @__PURE__ */ jsxs3("div", { children: [
1706
- /* @__PURE__ */ jsx4("div", { style: { display: "flex", gap: 8, marginBottom: availableRoles.length >= 2 ? 8 : 16 }, children: filters.map((f) => /* @__PURE__ */ jsxs3(
1900
+ if (isLoading) return /* @__PURE__ */ jsx5(TestListScreenSkeleton, {});
1901
+ return /* @__PURE__ */ jsxs4("div", { children: [
1902
+ /* @__PURE__ */ jsx5("div", { style: { display: "flex", gap: 8, marginBottom: availableRoles.length >= 2 ? 8 : 16 }, children: filters.map((f) => /* @__PURE__ */ jsxs4(
1707
1903
  "button",
1708
1904
  {
1709
1905
  type: "button",
@@ -1730,9 +1926,9 @@ function TestListScreen({ nav }) {
1730
1926
  },
1731
1927
  f.key
1732
1928
  )) }),
1733
- availableRoles.length >= 2 && /* @__PURE__ */ jsxs3("div", { style: { marginBottom: 12 }, children: [
1734
- /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: 6, flexWrap: "wrap", marginBottom: selectedRole?.loginHint ? 8 : 0 }, children: [
1735
- /* @__PURE__ */ jsx4(
1929
+ availableRoles.length >= 2 && /* @__PURE__ */ jsxs4("div", { style: { marginBottom: 12 }, children: [
1930
+ /* @__PURE__ */ jsxs4("div", { style: { display: "flex", gap: 6, flexWrap: "wrap", marginBottom: selectedRole?.loginHint ? 8 : 0 }, children: [
1931
+ /* @__PURE__ */ jsx5(
1736
1932
  "button",
1737
1933
  {
1738
1934
  type: "button",
@@ -1755,7 +1951,7 @@ function TestListScreen({ nav }) {
1755
1951
  ),
1756
1952
  availableRoles.map((role) => {
1757
1953
  const isActive = roleFilter === role.id;
1758
- return /* @__PURE__ */ jsxs3(
1954
+ return /* @__PURE__ */ jsxs4(
1759
1955
  "button",
1760
1956
  {
1761
1957
  type: "button",
@@ -1777,7 +1973,7 @@ function TestListScreen({ nav }) {
1777
1973
  fontWeight: isActive ? 600 : 400
1778
1974
  },
1779
1975
  children: [
1780
- /* @__PURE__ */ jsx4("span", { style: {
1976
+ /* @__PURE__ */ jsx5("span", { style: {
1781
1977
  width: 6,
1782
1978
  height: 6,
1783
1979
  borderRadius: 3,
@@ -1791,7 +1987,7 @@ function TestListScreen({ nav }) {
1791
1987
  );
1792
1988
  })
1793
1989
  ] }),
1794
- selectedRole?.loginHint && /* @__PURE__ */ jsxs3("div", { style: {
1990
+ selectedRole?.loginHint && /* @__PURE__ */ jsxs4("div", { style: {
1795
1991
  fontSize: 11,
1796
1992
  color: colors.textSecondary,
1797
1993
  backgroundColor: selectedRole.color + "10",
@@ -1803,6 +1999,103 @@ function TestListScreen({ nav }) {
1803
1999
  selectedRole.loginHint
1804
2000
  ] })
1805
2001
  ] }),
2002
+ /* @__PURE__ */ jsx5("div", { style: { marginBottom: 8 }, children: /* @__PURE__ */ jsx5(
2003
+ "input",
2004
+ {
2005
+ type: "text",
2006
+ value: searchQuery,
2007
+ onChange: (e) => setSearchQuery(e.target.value),
2008
+ placeholder: "Search tests...",
2009
+ style: {
2010
+ width: "100%",
2011
+ padding: "8px 12px",
2012
+ borderRadius: 8,
2013
+ border: `1px solid ${colors.border}`,
2014
+ backgroundColor: colors.card,
2015
+ color: colors.textPrimary,
2016
+ fontSize: 13,
2017
+ outline: "none",
2018
+ boxSizing: "border-box"
2019
+ }
2020
+ }
2021
+ ) }),
2022
+ (availableTracks.length >= 2 || true) && /* @__PURE__ */ jsxs4("div", { style: { display: "flex", alignItems: "center", gap: 6, marginBottom: 12 }, children: [
2023
+ availableTracks.length >= 2 && /* @__PURE__ */ jsxs4("div", { style: { display: "flex", gap: 4, flex: 1, overflow: "auto" }, children: [
2024
+ /* @__PURE__ */ jsx5(
2025
+ "button",
2026
+ {
2027
+ type: "button",
2028
+ onClick: () => setTrackFilter(null),
2029
+ style: {
2030
+ padding: "3px 8px",
2031
+ borderRadius: 6,
2032
+ backgroundColor: !trackFilter ? colors.card : "transparent",
2033
+ border: !trackFilter ? `1px solid ${colors.border}` : "1px solid transparent",
2034
+ cursor: "pointer",
2035
+ fontSize: 11,
2036
+ color: !trackFilter ? colors.textPrimary : colors.textMuted,
2037
+ fontWeight: !trackFilter ? 600 : 400,
2038
+ whiteSpace: "nowrap"
2039
+ },
2040
+ children: "All Tracks"
2041
+ }
2042
+ ),
2043
+ availableTracks.map((track) => {
2044
+ const isActive = trackFilter === track.id;
2045
+ return /* @__PURE__ */ jsxs4(
2046
+ "button",
2047
+ {
2048
+ type: "button",
2049
+ onClick: () => setTrackFilter(isActive ? null : track.id),
2050
+ style: {
2051
+ display: "flex",
2052
+ alignItems: "center",
2053
+ gap: 4,
2054
+ padding: "3px 8px",
2055
+ borderRadius: 6,
2056
+ backgroundColor: isActive ? track.color + "20" : "transparent",
2057
+ border: isActive ? `1px solid ${track.color}60` : "1px solid transparent",
2058
+ cursor: "pointer",
2059
+ fontSize: 11,
2060
+ color: isActive ? track.color : colors.textMuted,
2061
+ fontWeight: isActive ? 600 : 400,
2062
+ whiteSpace: "nowrap"
2063
+ },
2064
+ children: [
2065
+ track.icon,
2066
+ " ",
2067
+ track.name
2068
+ ]
2069
+ },
2070
+ track.id
2071
+ );
2072
+ })
2073
+ ] }),
2074
+ /* @__PURE__ */ jsx5("div", { style: { display: "flex", gap: 2, marginLeft: "auto", flexShrink: 0 }, children: [
2075
+ { key: "priority", label: "\u2195 Priority" },
2076
+ { key: "recent", label: "\u{1F550} Recent" },
2077
+ { key: "alpha", label: "A-Z" }
2078
+ ].map((s) => /* @__PURE__ */ jsx5(
2079
+ "button",
2080
+ {
2081
+ type: "button",
2082
+ onClick: () => setSortMode(s.key),
2083
+ style: {
2084
+ padding: "3px 8px",
2085
+ borderRadius: 6,
2086
+ backgroundColor: sortMode === s.key ? colors.card : "transparent",
2087
+ border: sortMode === s.key ? `1px solid ${colors.border}` : "1px solid transparent",
2088
+ cursor: "pointer",
2089
+ fontSize: 10,
2090
+ color: sortMode === s.key ? colors.textPrimary : colors.textMuted,
2091
+ fontWeight: sortMode === s.key ? 600 : 400,
2092
+ whiteSpace: "nowrap"
2093
+ },
2094
+ children: s.label
2095
+ },
2096
+ s.key
2097
+ )) })
2098
+ ] }),
1806
2099
  groupedAssignments.map((folder) => {
1807
2100
  const folderId = folder.group?.id || "ungrouped";
1808
2101
  const isCollapsed = collapsedFolders.has(folderId);
@@ -1810,8 +2103,8 @@ function TestListScreen({ nav }) {
1810
2103
  if (filtered.length === 0 && filter !== "all") return null;
1811
2104
  const completedInFolder = folder.stats.passed + folder.stats.failed;
1812
2105
  const progressPercent = folder.stats.total > 0 ? Math.round(completedInFolder / folder.stats.total * 100) : 0;
1813
- return /* @__PURE__ */ jsxs3("div", { style: { marginBottom: 12 }, children: [
1814
- /* @__PURE__ */ jsxs3(
2106
+ return /* @__PURE__ */ jsxs4("div", { style: { marginBottom: 12 }, children: [
2107
+ /* @__PURE__ */ jsxs4(
1815
2108
  "button",
1816
2109
  {
1817
2110
  type: "button",
@@ -1831,8 +2124,8 @@ function TestListScreen({ nav }) {
1831
2124
  textAlign: "left"
1832
2125
  },
1833
2126
  children: [
1834
- /* @__PURE__ */ jsx4("span", { style: { fontSize: 10, color: colors.textMuted, width: 14 }, children: isCollapsed ? "\u25B6" : "\u25BC" }),
1835
- /* @__PURE__ */ jsx4(
2127
+ /* @__PURE__ */ jsx5("span", { style: { fontSize: 10, color: colors.textMuted, width: 14 }, children: isCollapsed ? "\u25B6" : "\u25BC" }),
2128
+ /* @__PURE__ */ jsx5(
1836
2129
  "span",
1837
2130
  {
1838
2131
  style: {
@@ -1847,7 +2140,7 @@ function TestListScreen({ nav }) {
1847
2140
  children: folder.group?.name || "Ungrouped"
1848
2141
  }
1849
2142
  ),
1850
- /* @__PURE__ */ jsx4(
2143
+ /* @__PURE__ */ jsx5(
1851
2144
  "div",
1852
2145
  {
1853
2146
  style: {
@@ -1858,7 +2151,7 @@ function TestListScreen({ nav }) {
1858
2151
  overflow: "hidden",
1859
2152
  flexShrink: 0
1860
2153
  },
1861
- children: /* @__PURE__ */ jsx4(
2154
+ children: /* @__PURE__ */ jsx5(
1862
2155
  "div",
1863
2156
  {
1864
2157
  style: {
@@ -1872,7 +2165,7 @@ function TestListScreen({ nav }) {
1872
2165
  )
1873
2166
  }
1874
2167
  ),
1875
- /* @__PURE__ */ jsxs3(
2168
+ /* @__PURE__ */ jsxs4(
1876
2169
  "span",
1877
2170
  {
1878
2171
  style: {
@@ -1896,7 +2189,7 @@ function TestListScreen({ nav }) {
1896
2189
  const badge = getStatusBadge(assignment.status);
1897
2190
  const isCurrent = currentAssignment?.id === assignment.id;
1898
2191
  const priorityColor = assignment.testCase.priority === "P0" ? colors.red : assignment.testCase.priority === "P1" ? colors.orange : colors.textDim;
1899
- return /* @__PURE__ */ jsxs3(
2192
+ return /* @__PURE__ */ jsxs4(
1900
2193
  "button",
1901
2194
  {
1902
2195
  type: "button",
@@ -1918,9 +2211,9 @@ function TestListScreen({ nav }) {
1918
2211
  textAlign: "left"
1919
2212
  },
1920
2213
  children: [
1921
- /* @__PURE__ */ jsx4("span", { style: { fontSize: 16, marginRight: 10, width: 20, flexShrink: 0 }, children: badge.icon }),
1922
- /* @__PURE__ */ jsxs3("div", { style: { flex: 1, minWidth: 0 }, children: [
1923
- /* @__PURE__ */ jsx4(
2214
+ /* @__PURE__ */ jsx5("span", { style: { fontSize: 16, marginRight: 10, width: 20, flexShrink: 0 }, children: badge.icon }),
2215
+ /* @__PURE__ */ jsxs4("div", { style: { flex: 1, minWidth: 0 }, children: [
2216
+ /* @__PURE__ */ jsx5(
1924
2217
  "div",
1925
2218
  {
1926
2219
  style: {
@@ -1934,9 +2227,9 @@ function TestListScreen({ nav }) {
1934
2227
  children: assignment.testCase.title
1935
2228
  }
1936
2229
  ),
1937
- /* @__PURE__ */ jsxs3("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [
1938
- assignment.isVerification && /* @__PURE__ */ jsxs3(Fragment2, { children: [
1939
- /* @__PURE__ */ jsx4(
2230
+ /* @__PURE__ */ jsxs4("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [
2231
+ assignment.isVerification && /* @__PURE__ */ jsxs4(Fragment2, { children: [
2232
+ /* @__PURE__ */ jsx5(
1940
2233
  "span",
1941
2234
  {
1942
2235
  style: {
@@ -1951,9 +2244,9 @@ function TestListScreen({ nav }) {
1951
2244
  children: "Retest"
1952
2245
  }
1953
2246
  ),
1954
- /* @__PURE__ */ jsx4("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" })
2247
+ /* @__PURE__ */ jsx5("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" })
1955
2248
  ] }),
1956
- /* @__PURE__ */ jsx4(
2249
+ /* @__PURE__ */ jsx5(
1957
2250
  "span",
1958
2251
  {
1959
2252
  style: {
@@ -1964,8 +2257,8 @@ function TestListScreen({ nav }) {
1964
2257
  children: assignment.testCase.testKey
1965
2258
  }
1966
2259
  ),
1967
- /* @__PURE__ */ jsx4("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" }),
1968
- /* @__PURE__ */ jsx4(
2260
+ /* @__PURE__ */ jsx5("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" }),
2261
+ /* @__PURE__ */ jsx5(
1969
2262
  "span",
1970
2263
  {
1971
2264
  style: {
@@ -1976,9 +2269,9 @@ function TestListScreen({ nav }) {
1976
2269
  children: assignment.testCase.priority
1977
2270
  }
1978
2271
  ),
1979
- assignment.testCase.role && /* @__PURE__ */ jsxs3(Fragment2, { children: [
1980
- /* @__PURE__ */ jsx4("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" }),
1981
- /* @__PURE__ */ jsxs3("span", { style: {
2272
+ assignment.testCase.role && /* @__PURE__ */ jsxs4(Fragment2, { children: [
2273
+ /* @__PURE__ */ jsx5("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" }),
2274
+ /* @__PURE__ */ jsxs4("span", { style: {
1982
2275
  display: "inline-flex",
1983
2276
  alignItems: "center",
1984
2277
  gap: 3,
@@ -1986,7 +2279,7 @@ function TestListScreen({ nav }) {
1986
2279
  color: assignment.testCase.role.color,
1987
2280
  fontWeight: 500
1988
2281
  }, children: [
1989
- /* @__PURE__ */ jsx4("span", { style: {
2282
+ /* @__PURE__ */ jsx5("span", { style: {
1990
2283
  width: 5,
1991
2284
  height: 5,
1992
2285
  borderRadius: 3,
@@ -1997,7 +2290,7 @@ function TestListScreen({ nav }) {
1997
2290
  ] })
1998
2291
  ] })
1999
2292
  ] }),
2000
- /* @__PURE__ */ jsx4(
2293
+ /* @__PURE__ */ jsx5(
2001
2294
  "span",
2002
2295
  {
2003
2296
  style: {
@@ -2024,7 +2317,7 @@ function TestListScreen({ nav }) {
2024
2317
  groupedAssignments.every((folder) => {
2025
2318
  const filtered = folder.assignments.filter(filterAssignment);
2026
2319
  return filtered.length === 0;
2027
- }) && /* @__PURE__ */ jsxs3(
2320
+ }) && /* @__PURE__ */ jsxs4(
2028
2321
  "div",
2029
2322
  {
2030
2323
  style: {
@@ -2034,12 +2327,12 @@ function TestListScreen({ nav }) {
2034
2327
  padding: 32
2035
2328
  },
2036
2329
  children: [
2037
- /* @__PURE__ */ jsx4("span", { style: { fontSize: 32, marginBottom: 8 }, children: filter === "pending" ? "\u{1F389}" : filter === "reopened" ? "\u{1F44D}" : "\u{1F4CB}" }),
2038
- /* @__PURE__ */ jsx4("span", { style: { fontSize: 14, color: colors.textMuted }, children: filter === "pending" ? "All tests completed!" : filter === "done" ? "No passed tests yet" : filter === "reopened" ? "No reopened issues" : "No tests assigned" })
2330
+ /* @__PURE__ */ jsx5("span", { style: { fontSize: 32, marginBottom: 8 }, children: filter === "pending" ? "\u{1F389}" : filter === "reopened" ? "\u{1F44D}" : "\u{1F4CB}" }),
2331
+ /* @__PURE__ */ jsx5("span", { style: { fontSize: 14, color: colors.textMuted }, children: filter === "pending" ? "All tests completed!" : filter === "done" ? "No passed tests yet" : filter === "reopened" ? "No reopened issues" : "No tests assigned" })
2039
2332
  ]
2040
2333
  }
2041
2334
  ),
2042
- /* @__PURE__ */ jsx4("div", { style: { display: "flex", justifyContent: "center", paddingTop: 12, paddingBottom: 8 }, children: /* @__PURE__ */ jsx4(
2335
+ /* @__PURE__ */ jsx5("div", { style: { display: "flex", justifyContent: "center", paddingTop: 12, paddingBottom: 8 }, children: /* @__PURE__ */ jsx5(
2043
2336
  "button",
2044
2337
  {
2045
2338
  type: "button",
@@ -2135,13 +2428,13 @@ function useImageAttachments(uploadFn, maxImages, bucket = "screenshots") {
2135
2428
  }
2136
2429
 
2137
2430
  // src/widget/ImagePreviewStrip.tsx
2138
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
2431
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
2139
2432
  function ImagePreviewStrip({ images, onRemove }) {
2140
2433
  if (images.length === 0) return null;
2141
- return /* @__PURE__ */ jsxs4("div", { style: { display: "flex", gap: 8, overflowX: "auto", paddingTop: 4 }, children: [
2142
- images.map((img) => /* @__PURE__ */ jsxs4("div", { style: { position: "relative", width: 64, height: 64, flexShrink: 0, borderRadius: 8, overflow: "hidden" }, children: [
2143
- /* @__PURE__ */ jsx5("img", { src: img.localUri, alt: img.name, style: { width: 64, height: 64, objectFit: "cover", borderRadius: 8 } }),
2144
- img.status === "uploading" && /* @__PURE__ */ jsx5("div", { style: {
2434
+ return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", gap: 8, overflowX: "auto", paddingTop: 4 }, children: [
2435
+ images.map((img) => /* @__PURE__ */ jsxs5("div", { style: { position: "relative", width: 64, height: 64, flexShrink: 0, borderRadius: 8, overflow: "hidden" }, children: [
2436
+ /* @__PURE__ */ jsx6("img", { src: img.localUri, alt: img.name, style: { width: 64, height: 64, objectFit: "cover", borderRadius: 8 } }),
2437
+ img.status === "uploading" && /* @__PURE__ */ jsx6("div", { style: {
2145
2438
  position: "absolute",
2146
2439
  inset: 0,
2147
2440
  backgroundColor: "rgba(0,0,0,0.5)",
@@ -2149,7 +2442,7 @@ function ImagePreviewStrip({ images, onRemove }) {
2149
2442
  alignItems: "center",
2150
2443
  justifyContent: "center",
2151
2444
  borderRadius: 8
2152
- }, children: /* @__PURE__ */ jsx5("div", { style: {
2445
+ }, children: /* @__PURE__ */ jsx6("div", { style: {
2153
2446
  width: 16,
2154
2447
  height: 16,
2155
2448
  border: "2px solid #fff",
@@ -2157,7 +2450,7 @@ function ImagePreviewStrip({ images, onRemove }) {
2157
2450
  borderRadius: "50%",
2158
2451
  animation: "bb-spin 0.6s linear infinite"
2159
2452
  } }) }),
2160
- img.status === "error" && /* @__PURE__ */ jsx5("div", { style: {
2453
+ img.status === "error" && /* @__PURE__ */ jsx6("div", { style: {
2161
2454
  position: "absolute",
2162
2455
  inset: 0,
2163
2456
  backgroundColor: "rgba(127,29,29,0.7)",
@@ -2165,8 +2458,8 @@ function ImagePreviewStrip({ images, onRemove }) {
2165
2458
  alignItems: "center",
2166
2459
  justifyContent: "center",
2167
2460
  borderRadius: 8
2168
- }, children: /* @__PURE__ */ jsx5("span", { style: { color: "#fca5a5", fontSize: 18, fontWeight: "bold" }, children: "!" }) }),
2169
- /* @__PURE__ */ jsx5(
2461
+ }, children: /* @__PURE__ */ jsx6("span", { style: { color: "#fca5a5", fontSize: 18, fontWeight: "bold" }, children: "!" }) }),
2462
+ /* @__PURE__ */ jsx6(
2170
2463
  "button",
2171
2464
  {
2172
2465
  type: "button",
@@ -2193,18 +2486,18 @@ function ImagePreviewStrip({ images, onRemove }) {
2193
2486
  }
2194
2487
  )
2195
2488
  ] }, img.id)),
2196
- /* @__PURE__ */ jsx5("style", { children: `@keyframes bb-spin { to { transform: rotate(360deg); } }` })
2489
+ /* @__PURE__ */ jsx6("style", { children: `@keyframes bb-spin { to { transform: rotate(360deg); } }` })
2197
2490
  ] });
2198
2491
  }
2199
2492
 
2200
2493
  // src/widget/ImagePickerButtons.tsx
2201
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
2494
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
2202
2495
  function ImagePickerButtons({ images, maxImages, onPickGallery, onPickCamera, onRemove, label }) {
2203
2496
  const disabled = images.length >= maxImages;
2204
- return /* @__PURE__ */ jsxs5("div", { style: { marginTop: 12, marginBottom: 4 }, children: [
2205
- label && /* @__PURE__ */ jsx6("div", { style: { fontSize: 14, fontWeight: 500, color: "#e4e4e7", marginBottom: 8 }, children: label }),
2206
- /* @__PURE__ */ jsxs5("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 8 }, children: [
2207
- /* @__PURE__ */ jsx6(
2497
+ return /* @__PURE__ */ jsxs6("div", { style: { marginTop: 12, marginBottom: 4 }, children: [
2498
+ label && /* @__PURE__ */ jsx7("div", { style: { fontSize: 14, fontWeight: 500, color: "#e4e4e7", marginBottom: 8 }, children: label }),
2499
+ /* @__PURE__ */ jsxs6("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 8 }, children: [
2500
+ /* @__PURE__ */ jsx7(
2208
2501
  "button",
2209
2502
  {
2210
2503
  type: "button",
@@ -2225,7 +2518,7 @@ function ImagePickerButtons({ images, maxImages, onPickGallery, onPickCamera, on
2225
2518
  children: "Gallery"
2226
2519
  }
2227
2520
  ),
2228
- /* @__PURE__ */ jsx6(
2521
+ /* @__PURE__ */ jsx7(
2229
2522
  "button",
2230
2523
  {
2231
2524
  type: "button",
@@ -2246,18 +2539,18 @@ function ImagePickerButtons({ images, maxImages, onPickGallery, onPickCamera, on
2246
2539
  children: "Camera"
2247
2540
  }
2248
2541
  ),
2249
- /* @__PURE__ */ jsxs5("span", { style: { fontSize: 12, color: colors.textDim, marginLeft: 4 }, children: [
2542
+ /* @__PURE__ */ jsxs6("span", { style: { fontSize: 12, color: colors.textDim, marginLeft: 4 }, children: [
2250
2543
  images.length,
2251
2544
  "/",
2252
2545
  maxImages
2253
2546
  ] })
2254
2547
  ] }),
2255
- /* @__PURE__ */ jsx6(ImagePreviewStrip, { images, onRemove })
2548
+ /* @__PURE__ */ jsx7(ImagePreviewStrip, { images, onRemove })
2256
2549
  ] });
2257
2550
  }
2258
2551
 
2259
2552
  // src/widget/screens/TestFeedbackScreen.tsx
2260
- import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
2553
+ import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
2261
2554
  function TestFeedbackScreen({ status, assignmentId, nav }) {
2262
2555
  const { client, assignments, refreshAssignments, uploadImage } = useBugBear();
2263
2556
  const images = useImageAttachments(uploadImage, 3, "screenshots");
@@ -2326,10 +2619,10 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
2326
2619
  { key: "stepsUnclear", label: "Steps are unclear" },
2327
2620
  { key: "expectedResultUnclear", label: "Expected result unclear" }
2328
2621
  ];
2329
- return /* @__PURE__ */ jsxs6("div", { style: styles.container, children: [
2330
- /* @__PURE__ */ jsx7("div", { style: styles.header, children: status === "passed" ? "\u2705 Test Passed!" : "\u274C Test Failed" }),
2331
- /* @__PURE__ */ jsx7("div", { style: styles.subheader, children: "Rate this test case" }),
2332
- /* @__PURE__ */ jsx7("div", { style: styles.starRow, children: [1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ jsx7(
2622
+ return /* @__PURE__ */ jsxs7("div", { style: styles.container, children: [
2623
+ /* @__PURE__ */ jsx8("div", { style: styles.header, children: status === "passed" ? "\u2705 Test Passed!" : "\u274C Test Failed" }),
2624
+ /* @__PURE__ */ jsx8("div", { style: styles.subheader, children: "Rate this test case" }),
2625
+ /* @__PURE__ */ jsx8("div", { style: styles.starRow, children: [1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ jsx8(
2333
2626
  "button",
2334
2627
  {
2335
2628
  onClick: () => setRating(n),
@@ -2341,9 +2634,9 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
2341
2634
  },
2342
2635
  n
2343
2636
  )) }),
2344
- showFlags && /* @__PURE__ */ jsxs6("div", { style: styles.flagsSection, children: [
2345
- /* @__PURE__ */ jsx7("div", { style: styles.flagsLabel, children: "What could be improved?" }),
2346
- flagOptions.map(({ key, label }) => /* @__PURE__ */ jsxs6(
2637
+ showFlags && /* @__PURE__ */ jsxs7("div", { style: styles.flagsSection, children: [
2638
+ /* @__PURE__ */ jsx8("div", { style: styles.flagsLabel, children: "What could be improved?" }),
2639
+ flagOptions.map(({ key, label }) => /* @__PURE__ */ jsxs7(
2347
2640
  "button",
2348
2641
  {
2349
2642
  onClick: () => toggleFlag(key),
@@ -2352,17 +2645,17 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
2352
2645
  ...flags[key] ? styles.flagItemActive : {}
2353
2646
  },
2354
2647
  children: [
2355
- /* @__PURE__ */ jsx7(
2648
+ /* @__PURE__ */ jsx8(
2356
2649
  "div",
2357
2650
  {
2358
2651
  style: {
2359
2652
  ...styles.flagCheck,
2360
2653
  ...flags[key] ? styles.flagCheckActive : {}
2361
2654
  },
2362
- children: flags[key] && /* @__PURE__ */ jsx7("span", { style: styles.flagCheckmark, children: "\u2713" })
2655
+ children: flags[key] && /* @__PURE__ */ jsx8("span", { style: styles.flagCheckmark, children: "\u2713" })
2363
2656
  }
2364
2657
  ),
2365
- /* @__PURE__ */ jsx7(
2658
+ /* @__PURE__ */ jsx8(
2366
2659
  "span",
2367
2660
  {
2368
2661
  style: {
@@ -2377,7 +2670,7 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
2377
2670
  key
2378
2671
  ))
2379
2672
  ] }),
2380
- /* @__PURE__ */ jsx7(
2673
+ /* @__PURE__ */ jsx8(
2381
2674
  "textarea",
2382
2675
  {
2383
2676
  style: styles.noteInput,
@@ -2387,7 +2680,7 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
2387
2680
  rows: 3
2388
2681
  }
2389
2682
  ),
2390
- /* @__PURE__ */ jsx7(
2683
+ /* @__PURE__ */ jsx8(
2391
2684
  ImagePickerButtons,
2392
2685
  {
2393
2686
  images: images.images,
@@ -2398,9 +2691,9 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
2398
2691
  label: "Screenshots (optional)"
2399
2692
  }
2400
2693
  ),
2401
- /* @__PURE__ */ jsxs6("div", { style: styles.actions, children: [
2402
- /* @__PURE__ */ jsx7("button", { style: styles.skipButton, onClick: handleSkip, children: "Skip" }),
2403
- /* @__PURE__ */ jsx7(
2694
+ /* @__PURE__ */ jsxs7("div", { style: styles.actions, children: [
2695
+ /* @__PURE__ */ jsx8("button", { style: styles.skipButton, onClick: handleSkip, children: "Skip" }),
2696
+ /* @__PURE__ */ jsx8(
2404
2697
  "button",
2405
2698
  {
2406
2699
  style: {
@@ -2553,7 +2846,7 @@ var styles = {
2553
2846
  import React6, { useState as useState6, useRef as useRef2 } from "react";
2554
2847
 
2555
2848
  // src/widget/CategoryDropdown.tsx
2556
- import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
2849
+ import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
2557
2850
  var categoryOptions = [
2558
2851
  { value: "ui_ux", label: "UI/UX", icon: "\u{1F3A8}" },
2559
2852
  { value: "functional", label: "Functional", icon: "\u2699\uFE0F" },
@@ -2562,7 +2855,7 @@ var categoryOptions = [
2562
2855
  { value: "other", label: "Other", icon: "\u{1F4DD}" }
2563
2856
  ];
2564
2857
  function CategoryDropdown({ value, onChange, optional = true, disabled = false }) {
2565
- return /* @__PURE__ */ jsxs7(
2858
+ return /* @__PURE__ */ jsxs8(
2566
2859
  "select",
2567
2860
  {
2568
2861
  value: value || "",
@@ -2585,8 +2878,8 @@ function CategoryDropdown({ value, onChange, optional = true, disabled = false }
2585
2878
  paddingRight: 32
2586
2879
  },
2587
2880
  children: [
2588
- /* @__PURE__ */ jsx8("option", { value: "", children: optional ? "Select category (optional)" : "Select category" }),
2589
- categoryOptions.map(({ value: value2, label, icon }) => /* @__PURE__ */ jsxs7("option", { value: value2, children: [
2881
+ /* @__PURE__ */ jsx9("option", { value: "", children: optional ? "Select category (optional)" : "Select category" }),
2882
+ categoryOptions.map(({ value: value2, label, icon }) => /* @__PURE__ */ jsxs8("option", { value: value2, children: [
2590
2883
  icon,
2591
2884
  " ",
2592
2885
  label
@@ -2597,7 +2890,7 @@ function CategoryDropdown({ value, onChange, optional = true, disabled = false }
2597
2890
  }
2598
2891
 
2599
2892
  // src/widget/screens/ReportScreen.tsx
2600
- import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
2893
+ import { Fragment as Fragment3, jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
2601
2894
  function ReportScreen({ nav, prefill }) {
2602
2895
  const { client, refreshAssignments, uploadImage } = useBugBear();
2603
2896
  const images = useImageAttachments(uploadImage, 5, "screenshots");
@@ -2672,17 +2965,17 @@ function ReportScreen({ nav, prefill }) {
2672
2965
  { sev: "medium", color: "#eab308" },
2673
2966
  { sev: "low", color: "#6b7280" }
2674
2967
  ];
2675
- return /* @__PURE__ */ jsx9("div", { children: isRetestFailure ? /* @__PURE__ */ jsxs8(Fragment3, { children: [
2676
- /* @__PURE__ */ jsxs8("div", { style: styles2.retestBanner, children: [
2677
- /* @__PURE__ */ jsx9("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
2678
- /* @__PURE__ */ jsxs8("div", { children: [
2679
- /* @__PURE__ */ jsx9("div", { style: styles2.retestTitle, children: "Bug Still Present" }),
2680
- /* @__PURE__ */ jsx9("div", { style: styles2.retestSubtitle, children: "The fix did not resolve this issue" })
2968
+ return /* @__PURE__ */ jsx10("div", { children: isRetestFailure ? /* @__PURE__ */ jsxs9(Fragment3, { children: [
2969
+ /* @__PURE__ */ jsxs9("div", { style: styles2.retestBanner, children: [
2970
+ /* @__PURE__ */ jsx10("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
2971
+ /* @__PURE__ */ jsxs9("div", { children: [
2972
+ /* @__PURE__ */ jsx10("div", { style: styles2.retestTitle, children: "Bug Still Present" }),
2973
+ /* @__PURE__ */ jsx10("div", { style: styles2.retestSubtitle, children: "The fix did not resolve this issue" })
2681
2974
  ] })
2682
2975
  ] }),
2683
- /* @__PURE__ */ jsxs8("div", { style: styles2.section, children: [
2684
- /* @__PURE__ */ jsx9("div", { style: styles2.label, children: "Severity" }),
2685
- /* @__PURE__ */ jsx9("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ jsx9(
2976
+ /* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
2977
+ /* @__PURE__ */ jsx10("div", { style: styles2.label, children: "Severity" }),
2978
+ /* @__PURE__ */ jsx10("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ jsx10(
2686
2979
  "button",
2687
2980
  {
2688
2981
  onClick: () => setSeverity(sev),
@@ -2690,18 +2983,18 @@ function ReportScreen({ nav, prefill }) {
2690
2983
  ...styles2.sevButton,
2691
2984
  ...severity === sev ? { backgroundColor: `${color}30`, borderColor: color } : {}
2692
2985
  },
2693
- children: /* @__PURE__ */ jsx9("span", { style: { ...styles2.sevText, ...severity === sev ? { color } : {} }, children: sev })
2986
+ children: /* @__PURE__ */ jsx10("span", { style: { ...styles2.sevText, ...severity === sev ? { color } : {} }, children: sev })
2694
2987
  },
2695
2988
  sev
2696
2989
  )) })
2697
2990
  ] }),
2698
- /* @__PURE__ */ jsxs8("div", { style: styles2.section, children: [
2699
- /* @__PURE__ */ jsx9("div", { style: styles2.label, children: "Category (optional)" }),
2700
- /* @__PURE__ */ jsx9(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
2991
+ /* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
2992
+ /* @__PURE__ */ jsx10("div", { style: styles2.label, children: "Category (optional)" }),
2993
+ /* @__PURE__ */ jsx10(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
2701
2994
  ] }),
2702
- /* @__PURE__ */ jsxs8("div", { style: styles2.section, children: [
2703
- /* @__PURE__ */ jsx9("div", { style: styles2.label, children: "What went wrong?" }),
2704
- /* @__PURE__ */ jsx9(
2995
+ /* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
2996
+ /* @__PURE__ */ jsx10("div", { style: styles2.label, children: "What went wrong?" }),
2997
+ /* @__PURE__ */ jsx10(
2705
2998
  "textarea",
2706
2999
  {
2707
3000
  style: styles2.descInput,
@@ -2712,7 +3005,7 @@ function ReportScreen({ nav, prefill }) {
2712
3005
  }
2713
3006
  )
2714
3007
  ] }),
2715
- /* @__PURE__ */ jsx9(
3008
+ /* @__PURE__ */ jsx10(
2716
3009
  ImagePickerButtons,
2717
3010
  {
2718
3011
  images: images.images,
@@ -2723,8 +3016,8 @@ function ReportScreen({ nav, prefill }) {
2723
3016
  label: "Attachments (optional)"
2724
3017
  }
2725
3018
  ),
2726
- error && /* @__PURE__ */ jsx9("div", { style: styles2.errorBanner, children: error }),
2727
- /* @__PURE__ */ jsx9(
3019
+ error && /* @__PURE__ */ jsx10("div", { style: styles2.errorBanner, children: error }),
3020
+ /* @__PURE__ */ jsx10(
2728
3021
  "button",
2729
3022
  {
2730
3023
  style: {
@@ -2737,9 +3030,9 @@ function ReportScreen({ nav, prefill }) {
2737
3030
  children: images.isUploading ? "Uploading images..." : submitting ? "Submitting..." : error ? "Retry" : "Submit Failed Retest"
2738
3031
  }
2739
3032
  )
2740
- ] }) : /* @__PURE__ */ jsxs8(Fragment3, { children: [
2741
- /* @__PURE__ */ jsx9("div", { style: styles2.label, children: "What are you reporting?" }),
2742
- /* @__PURE__ */ jsx9("div", { style: styles2.typeRow, children: typeOptions.map(({ type, label, icon }) => /* @__PURE__ */ jsxs8(
3033
+ ] }) : /* @__PURE__ */ jsxs9(Fragment3, { children: [
3034
+ /* @__PURE__ */ jsx10("div", { style: styles2.label, children: "What are you reporting?" }),
3035
+ /* @__PURE__ */ jsx10("div", { style: styles2.typeRow, children: typeOptions.map(({ type, label, icon }) => /* @__PURE__ */ jsxs9(
2743
3036
  "button",
2744
3037
  {
2745
3038
  onClick: () => setReportType(type),
@@ -2748,8 +3041,8 @@ function ReportScreen({ nav, prefill }) {
2748
3041
  ...reportType === type ? styles2.typeCardActive : {}
2749
3042
  },
2750
3043
  children: [
2751
- /* @__PURE__ */ jsx9("div", { style: styles2.typeIcon, children: icon }),
2752
- /* @__PURE__ */ jsx9(
3044
+ /* @__PURE__ */ jsx10("div", { style: styles2.typeIcon, children: icon }),
3045
+ /* @__PURE__ */ jsx10(
2753
3046
  "div",
2754
3047
  {
2755
3048
  style: {
@@ -2763,9 +3056,9 @@ function ReportScreen({ nav, prefill }) {
2763
3056
  },
2764
3057
  type
2765
3058
  )) }),
2766
- isBugType && /* @__PURE__ */ jsxs8("div", { style: styles2.section, children: [
2767
- /* @__PURE__ */ jsx9("div", { style: styles2.label, children: "Severity" }),
2768
- /* @__PURE__ */ jsx9("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ jsx9(
3059
+ isBugType && /* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
3060
+ /* @__PURE__ */ jsx10("div", { style: styles2.label, children: "Severity" }),
3061
+ /* @__PURE__ */ jsx10("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ jsx10(
2769
3062
  "button",
2770
3063
  {
2771
3064
  onClick: () => setSeverity(sev),
@@ -2776,7 +3069,7 @@ function ReportScreen({ nav, prefill }) {
2776
3069
  borderColor: color
2777
3070
  } : {}
2778
3071
  },
2779
- children: /* @__PURE__ */ jsx9(
3072
+ children: /* @__PURE__ */ jsx10(
2780
3073
  "span",
2781
3074
  {
2782
3075
  style: {
@@ -2790,13 +3083,13 @@ function ReportScreen({ nav, prefill }) {
2790
3083
  sev
2791
3084
  )) })
2792
3085
  ] }),
2793
- isBugType && /* @__PURE__ */ jsxs8("div", { style: styles2.section, children: [
2794
- /* @__PURE__ */ jsx9("div", { style: styles2.label, children: "Category (optional)" }),
2795
- /* @__PURE__ */ jsx9(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
3086
+ isBugType && /* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
3087
+ /* @__PURE__ */ jsx10("div", { style: styles2.label, children: "Category (optional)" }),
3088
+ /* @__PURE__ */ jsx10(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
2796
3089
  ] }),
2797
- /* @__PURE__ */ jsxs8("div", { style: styles2.section, children: [
2798
- /* @__PURE__ */ jsx9("div", { style: styles2.label, children: "What happened?" }),
2799
- /* @__PURE__ */ jsx9(
3090
+ /* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
3091
+ /* @__PURE__ */ jsx10("div", { style: styles2.label, children: "What happened?" }),
3092
+ /* @__PURE__ */ jsx10(
2800
3093
  "textarea",
2801
3094
  {
2802
3095
  style: styles2.descInput,
@@ -2807,9 +3100,9 @@ function ReportScreen({ nav, prefill }) {
2807
3100
  }
2808
3101
  )
2809
3102
  ] }),
2810
- isBugType && /* @__PURE__ */ jsxs8("div", { style: styles2.section, children: [
2811
- /* @__PURE__ */ jsx9("div", { style: styles2.label, children: "Where did it happen?" }),
2812
- /* @__PURE__ */ jsx9(
3103
+ isBugType && /* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
3104
+ /* @__PURE__ */ jsx10("div", { style: styles2.label, children: "Where did it happen?" }),
3105
+ /* @__PURE__ */ jsx10(
2813
3106
  "input",
2814
3107
  {
2815
3108
  style: styles2.routeInput,
@@ -2818,13 +3111,13 @@ function ReportScreen({ nav, prefill }) {
2818
3111
  placeholder: observedRoute.current
2819
3112
  }
2820
3113
  ),
2821
- /* @__PURE__ */ jsxs8("div", { style: styles2.routeHint, children: [
3114
+ /* @__PURE__ */ jsxs9("div", { style: styles2.routeHint, children: [
2822
3115
  "Leave blank to use current page (",
2823
3116
  observedRoute.current,
2824
3117
  ")"
2825
3118
  ] })
2826
3119
  ] }),
2827
- /* @__PURE__ */ jsx9(
3120
+ /* @__PURE__ */ jsx10(
2828
3121
  ImagePickerButtons,
2829
3122
  {
2830
3123
  images: images.images,
@@ -2835,8 +3128,8 @@ function ReportScreen({ nav, prefill }) {
2835
3128
  label: "Screenshots (optional)"
2836
3129
  }
2837
3130
  ),
2838
- error && /* @__PURE__ */ jsx9("div", { style: styles2.errorBanner, children: error }),
2839
- /* @__PURE__ */ jsx9(
3131
+ error && /* @__PURE__ */ jsx10("div", { style: styles2.errorBanner, children: error }),
3132
+ /* @__PURE__ */ jsx10(
2840
3133
  "button",
2841
3134
  {
2842
3135
  style: {
@@ -3001,16 +3294,16 @@ var styles2 = {
3001
3294
 
3002
3295
  // src/widget/screens/ReportSuccessScreen.tsx
3003
3296
  import { useEffect as useEffect4 } from "react";
3004
- import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
3297
+ import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
3005
3298
  function ReportSuccessScreen({ nav }) {
3006
3299
  useEffect4(() => {
3007
3300
  const timer = setTimeout(() => nav.reset(), 2e3);
3008
3301
  return () => clearTimeout(timer);
3009
3302
  }, [nav]);
3010
- return /* @__PURE__ */ jsxs9("div", { style: styles3.container, children: [
3011
- /* @__PURE__ */ jsx10("div", { style: styles3.emoji, children: "\u{1F389}" }),
3012
- /* @__PURE__ */ jsx10("div", { style: styles3.title, children: "Report submitted!" }),
3013
- /* @__PURE__ */ jsx10("div", { style: styles3.subtitle, children: "Thank you for your feedback" })
3303
+ return /* @__PURE__ */ jsxs10("div", { style: styles3.container, children: [
3304
+ /* @__PURE__ */ jsx11("div", { style: styles3.emoji, children: "\u{1F389}" }),
3305
+ /* @__PURE__ */ jsx11("div", { style: styles3.title, children: "Report submitted!" }),
3306
+ /* @__PURE__ */ jsx11("div", { style: styles3.subtitle, children: "Thank you for your feedback" })
3014
3307
  ] });
3015
3308
  }
3016
3309
  var styles3 = {
@@ -3039,11 +3332,12 @@ var styles3 = {
3039
3332
  };
3040
3333
 
3041
3334
  // src/widget/screens/MessageListScreen.tsx
3042
- import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
3335
+ import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
3043
3336
  function MessageListScreen({ nav }) {
3044
- const { threads, unreadCount, refreshThreads } = useBugBear();
3045
- return /* @__PURE__ */ jsxs10("div", { children: [
3046
- /* @__PURE__ */ jsx11(
3337
+ const { threads, unreadCount, refreshThreads, isLoading } = useBugBear();
3338
+ if (isLoading) return /* @__PURE__ */ jsx12(MessageListScreenSkeleton, {});
3339
+ return /* @__PURE__ */ jsxs11("div", { children: [
3340
+ /* @__PURE__ */ jsx12(
3047
3341
  "button",
3048
3342
  {
3049
3343
  style: {
@@ -3062,7 +3356,7 @@ function MessageListScreen({ nav }) {
3062
3356
  children: "\u2709\uFE0F New Message"
3063
3357
  }
3064
3358
  ),
3065
- threads.length === 0 ? /* @__PURE__ */ jsxs10(
3359
+ threads.length === 0 ? /* @__PURE__ */ jsxs11(
3066
3360
  "div",
3067
3361
  {
3068
3362
  style: {
@@ -3073,8 +3367,8 @@ function MessageListScreen({ nav }) {
3073
3367
  paddingBottom: 40
3074
3368
  },
3075
3369
  children: [
3076
- /* @__PURE__ */ jsx11("span", { style: { fontSize: 36, marginBottom: 12 }, children: "\u{1F4AC}" }),
3077
- /* @__PURE__ */ jsx11(
3370
+ /* @__PURE__ */ jsx12("span", { style: { fontSize: 36, marginBottom: 12 }, children: "\u{1F4AC}" }),
3371
+ /* @__PURE__ */ jsx12(
3078
3372
  "span",
3079
3373
  {
3080
3374
  style: {
@@ -3086,7 +3380,7 @@ function MessageListScreen({ nav }) {
3086
3380
  children: "No messages yet"
3087
3381
  }
3088
3382
  ),
3089
- /* @__PURE__ */ jsx11(
3383
+ /* @__PURE__ */ jsx12(
3090
3384
  "span",
3091
3385
  {
3092
3386
  style: {
@@ -3099,7 +3393,7 @@ function MessageListScreen({ nav }) {
3099
3393
  )
3100
3394
  ]
3101
3395
  }
3102
- ) : /* @__PURE__ */ jsx11("div", { children: threads.map((thread) => /* @__PURE__ */ jsxs10(
3396
+ ) : /* @__PURE__ */ jsx12("div", { children: threads.map((thread) => /* @__PURE__ */ jsxs11(
3103
3397
  "button",
3104
3398
  {
3105
3399
  style: {
@@ -3117,8 +3411,8 @@ function MessageListScreen({ nav }) {
3117
3411
  },
3118
3412
  onClick: () => nav.push({ name: "THREAD_DETAIL", thread }),
3119
3413
  children: [
3120
- /* @__PURE__ */ jsxs10("div", { style: { display: "flex", flex: 1, minWidth: 0 }, children: [
3121
- /* @__PURE__ */ jsx11(
3414
+ /* @__PURE__ */ jsxs11("div", { style: { display: "flex", flex: 1, minWidth: 0 }, children: [
3415
+ /* @__PURE__ */ jsx12(
3122
3416
  "span",
3123
3417
  {
3124
3418
  style: {
@@ -3130,7 +3424,7 @@ function MessageListScreen({ nav }) {
3130
3424
  children: getThreadTypeIcon(thread.threadType)
3131
3425
  }
3132
3426
  ),
3133
- /* @__PURE__ */ jsxs10(
3427
+ /* @__PURE__ */ jsxs11(
3134
3428
  "div",
3135
3429
  {
3136
3430
  style: {
@@ -3138,7 +3432,7 @@ function MessageListScreen({ nav }) {
3138
3432
  minWidth: 0
3139
3433
  },
3140
3434
  children: [
3141
- /* @__PURE__ */ jsxs10(
3435
+ /* @__PURE__ */ jsxs11(
3142
3436
  "div",
3143
3437
  {
3144
3438
  style: {
@@ -3147,8 +3441,8 @@ function MessageListScreen({ nav }) {
3147
3441
  gap: 4
3148
3442
  },
3149
3443
  children: [
3150
- thread.isPinned && /* @__PURE__ */ jsx11("span", { style: { fontSize: 12, flexShrink: 0 }, children: "\u{1F4CC}" }),
3151
- /* @__PURE__ */ jsx11(
3444
+ thread.isPinned && /* @__PURE__ */ jsx12("span", { style: { fontSize: 12, flexShrink: 0 }, children: "\u{1F4CC}" }),
3445
+ /* @__PURE__ */ jsx12(
3152
3446
  "span",
3153
3447
  {
3154
3448
  style: {
@@ -3165,7 +3459,7 @@ function MessageListScreen({ nav }) {
3165
3459
  ]
3166
3460
  }
3167
3461
  ),
3168
- thread.lastMessage && /* @__PURE__ */ jsxs10(
3462
+ thread.lastMessage && /* @__PURE__ */ jsxs11(
3169
3463
  "span",
3170
3464
  {
3171
3465
  style: {
@@ -3189,7 +3483,7 @@ function MessageListScreen({ nav }) {
3189
3483
  }
3190
3484
  )
3191
3485
  ] }),
3192
- /* @__PURE__ */ jsxs10(
3486
+ /* @__PURE__ */ jsxs11(
3193
3487
  "div",
3194
3488
  {
3195
3489
  style: {
@@ -3201,8 +3495,8 @@ function MessageListScreen({ nav }) {
3201
3495
  flexShrink: 0
3202
3496
  },
3203
3497
  children: [
3204
- /* @__PURE__ */ jsx11("span", { style: { fontSize: 11, color: colors.textDim }, children: formatRelativeTime(thread.lastMessageAt) }),
3205
- thread.unreadCount > 0 && /* @__PURE__ */ jsx11(
3498
+ /* @__PURE__ */ jsx12("span", { style: { fontSize: 11, color: colors.textDim }, children: formatRelativeTime(thread.lastMessageAt) }),
3499
+ thread.unreadCount > 0 && /* @__PURE__ */ jsx12(
3206
3500
  "span",
3207
3501
  {
3208
3502
  style: {
@@ -3229,7 +3523,7 @@ function MessageListScreen({ nav }) {
3229
3523
  },
3230
3524
  thread.id
3231
3525
  )) }),
3232
- /* @__PURE__ */ jsxs10(
3526
+ /* @__PURE__ */ jsxs11(
3233
3527
  "div",
3234
3528
  {
3235
3529
  style: {
@@ -3241,7 +3535,7 @@ function MessageListScreen({ nav }) {
3241
3535
  paddingRight: 4
3242
3536
  },
3243
3537
  children: [
3244
- /* @__PURE__ */ jsxs10("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
3538
+ /* @__PURE__ */ jsxs11("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
3245
3539
  threads.length,
3246
3540
  " thread",
3247
3541
  threads.length !== 1 ? "s" : "",
@@ -3250,7 +3544,7 @@ function MessageListScreen({ nav }) {
3250
3544
  unreadCount,
3251
3545
  " unread"
3252
3546
  ] }),
3253
- /* @__PURE__ */ jsx11(
3547
+ /* @__PURE__ */ jsx12(
3254
3548
  "button",
3255
3549
  {
3256
3550
  style: {
@@ -3273,7 +3567,7 @@ function MessageListScreen({ nav }) {
3273
3567
 
3274
3568
  // src/widget/screens/ThreadDetailScreen.tsx
3275
3569
  import { useState as useState7, useEffect as useEffect5 } from "react";
3276
- import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
3570
+ import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
3277
3571
  var inputStyle = {
3278
3572
  backgroundColor: "#27272a",
3279
3573
  border: "1px solid #3f3f46",
@@ -3345,8 +3639,8 @@ function ThreadDetailScreen({
3345
3639
  handleSend();
3346
3640
  }
3347
3641
  };
3348
- return /* @__PURE__ */ jsxs11("div", { style: { display: "flex", flexDirection: "column", flex: 1 }, children: [
3349
- /* @__PURE__ */ jsxs11(
3642
+ return /* @__PURE__ */ jsxs12("div", { style: { display: "flex", flexDirection: "column", flex: 1 }, children: [
3643
+ /* @__PURE__ */ jsxs12(
3350
3644
  "div",
3351
3645
  {
3352
3646
  style: {
@@ -3358,8 +3652,8 @@ function ThreadDetailScreen({
3358
3652
  borderBottom: `1px solid ${colors.border}`
3359
3653
  },
3360
3654
  children: [
3361
- /* @__PURE__ */ jsx12("span", { style: { fontSize: 20 }, children: getThreadTypeIcon(thread.threadType) }),
3362
- /* @__PURE__ */ jsx12(
3655
+ /* @__PURE__ */ jsx13("span", { style: { fontSize: 20 }, children: getThreadTypeIcon(thread.threadType) }),
3656
+ /* @__PURE__ */ jsx13(
3363
3657
  "span",
3364
3658
  {
3365
3659
  style: {
@@ -3379,7 +3673,7 @@ function ThreadDetailScreen({
3379
3673
  ]
3380
3674
  }
3381
3675
  ),
3382
- loading ? /* @__PURE__ */ jsx12(
3676
+ loading ? /* @__PURE__ */ jsx13(
3383
3677
  "div",
3384
3678
  {
3385
3679
  style: {
@@ -3387,11 +3681,11 @@ function ThreadDetailScreen({
3387
3681
  paddingBottom: 40,
3388
3682
  textAlign: "center"
3389
3683
  },
3390
- children: /* @__PURE__ */ jsx12("span", { style: { fontSize: 14, color: colors.textMuted }, children: "Loading messages..." })
3684
+ children: /* @__PURE__ */ jsx13("span", { style: { fontSize: 14, color: colors.textMuted }, children: "Loading messages..." })
3391
3685
  }
3392
- ) : /* @__PURE__ */ jsx12("div", { style: { paddingBottom: 8, marginBottom: 8 }, children: messages.map((msg) => {
3686
+ ) : /* @__PURE__ */ jsx13("div", { style: { paddingBottom: 8, marginBottom: 8 }, children: messages.map((msg) => {
3393
3687
  const isTester = msg.senderType === "tester";
3394
- return /* @__PURE__ */ jsxs11(
3688
+ return /* @__PURE__ */ jsxs12(
3395
3689
  "div",
3396
3690
  {
3397
3691
  style: {
@@ -3407,7 +3701,7 @@ function ThreadDetailScreen({
3407
3701
  borderBottomRightRadius: isTester ? 4 : 16
3408
3702
  },
3409
3703
  children: [
3410
- /* @__PURE__ */ jsx12(
3704
+ /* @__PURE__ */ jsx13(
3411
3705
  "span",
3412
3706
  {
3413
3707
  style: {
@@ -3420,7 +3714,7 @@ function ThreadDetailScreen({
3420
3714
  children: isTester ? "You" : msg.senderName
3421
3715
  }
3422
3716
  ),
3423
- /* @__PURE__ */ jsx12(
3717
+ /* @__PURE__ */ jsx13(
3424
3718
  "span",
3425
3719
  {
3426
3720
  style: {
@@ -3434,7 +3728,7 @@ function ThreadDetailScreen({
3434
3728
  children: msg.content
3435
3729
  }
3436
3730
  ),
3437
- msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */ jsx12("div", { style: { marginTop: 8, display: "flex", flexDirection: "column", gap: 6 }, children: msg.attachments.filter((a) => a.type === "image" && typeof a.url === "string" && /^https?:\/\//i.test(a.url)).map((att, idx) => /* @__PURE__ */ jsx12(
3731
+ msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */ jsx13("div", { style: { marginTop: 8, display: "flex", flexDirection: "column", gap: 6 }, children: msg.attachments.filter((a) => a.type === "image" && typeof a.url === "string" && /^https?:\/\//i.test(a.url)).map((att, idx) => /* @__PURE__ */ jsx13(
3438
3732
  "img",
3439
3733
  {
3440
3734
  src: att.url,
@@ -3443,7 +3737,7 @@ function ThreadDetailScreen({
3443
3737
  },
3444
3738
  idx
3445
3739
  )) }),
3446
- /* @__PURE__ */ jsx12(
3740
+ /* @__PURE__ */ jsx13(
3447
3741
  "span",
3448
3742
  {
3449
3743
  style: {
@@ -3461,7 +3755,7 @@ function ThreadDetailScreen({
3461
3755
  msg.id
3462
3756
  );
3463
3757
  }) }),
3464
- sendError && /* @__PURE__ */ jsx12(
3758
+ sendError && /* @__PURE__ */ jsx13(
3465
3759
  "div",
3466
3760
  {
3467
3761
  style: {
@@ -3473,7 +3767,7 @@ function ThreadDetailScreen({
3473
3767
  borderRadius: 8,
3474
3768
  marginBottom: 8
3475
3769
  },
3476
- children: /* @__PURE__ */ jsx12(
3770
+ children: /* @__PURE__ */ jsx13(
3477
3771
  "span",
3478
3772
  {
3479
3773
  style: {
@@ -3487,8 +3781,8 @@ function ThreadDetailScreen({
3487
3781
  )
3488
3782
  }
3489
3783
  ),
3490
- replyImages.images.length > 0 && /* @__PURE__ */ jsx12("div", { style: { paddingTop: 8 }, children: /* @__PURE__ */ jsx12(ImagePreviewStrip, { images: replyImages.images, onRemove: replyImages.removeImage }) }),
3491
- /* @__PURE__ */ jsxs11(
3784
+ replyImages.images.length > 0 && /* @__PURE__ */ jsx13("div", { style: { paddingTop: 8 }, children: /* @__PURE__ */ jsx13(ImagePreviewStrip, { images: replyImages.images, onRemove: replyImages.removeImage }) }),
3785
+ /* @__PURE__ */ jsxs12(
3492
3786
  "div",
3493
3787
  {
3494
3788
  style: {
@@ -3499,7 +3793,7 @@ function ThreadDetailScreen({
3499
3793
  gap: 8
3500
3794
  },
3501
3795
  children: [
3502
- /* @__PURE__ */ jsx12(
3796
+ /* @__PURE__ */ jsx13(
3503
3797
  "button",
3504
3798
  {
3505
3799
  type: "button",
@@ -3518,7 +3812,7 @@ function ThreadDetailScreen({
3518
3812
  children: "\u{1F4CE}"
3519
3813
  }
3520
3814
  ),
3521
- /* @__PURE__ */ jsx12(
3815
+ /* @__PURE__ */ jsx13(
3522
3816
  "input",
3523
3817
  {
3524
3818
  type: "text",
@@ -3534,7 +3828,7 @@ function ThreadDetailScreen({
3534
3828
  }
3535
3829
  }
3536
3830
  ),
3537
- /* @__PURE__ */ jsx12(
3831
+ /* @__PURE__ */ jsx13(
3538
3832
  "button",
3539
3833
  {
3540
3834
  style: {
@@ -3562,7 +3856,7 @@ function ThreadDetailScreen({
3562
3856
 
3563
3857
  // src/widget/screens/ComposeMessageScreen.tsx
3564
3858
  import { useState as useState8 } from "react";
3565
- import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
3859
+ import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
3566
3860
  var inputStyle2 = {
3567
3861
  backgroundColor: "#27272a",
3568
3862
  border: "1px solid #3f3f46",
@@ -3593,9 +3887,9 @@ function ComposeMessageScreen({ nav }) {
3593
3887
  nav.pop();
3594
3888
  }
3595
3889
  };
3596
- return /* @__PURE__ */ jsxs12("div", { children: [
3597
- /* @__PURE__ */ jsxs12("div", { style: { marginBottom: 20 }, children: [
3598
- /* @__PURE__ */ jsx13(
3890
+ return /* @__PURE__ */ jsxs13("div", { children: [
3891
+ /* @__PURE__ */ jsxs13("div", { style: { marginBottom: 20 }, children: [
3892
+ /* @__PURE__ */ jsx14(
3599
3893
  "div",
3600
3894
  {
3601
3895
  style: {
@@ -3607,9 +3901,9 @@ function ComposeMessageScreen({ nav }) {
3607
3901
  children: "New Message"
3608
3902
  }
3609
3903
  ),
3610
- /* @__PURE__ */ jsx13("div", { style: { fontSize: 14, color: colors.textMuted }, children: "Send a message to the QA team" })
3904
+ /* @__PURE__ */ jsx14("div", { style: { fontSize: 14, color: colors.textMuted }, children: "Send a message to the QA team" })
3611
3905
  ] }),
3612
- /* @__PURE__ */ jsxs12(
3906
+ /* @__PURE__ */ jsxs13(
3613
3907
  "div",
3614
3908
  {
3615
3909
  style: {
@@ -3619,7 +3913,7 @@ function ComposeMessageScreen({ nav }) {
3619
3913
  border: `1px solid ${colors.border}`
3620
3914
  },
3621
3915
  children: [
3622
- /* @__PURE__ */ jsx13(
3916
+ /* @__PURE__ */ jsx14(
3623
3917
  "label",
3624
3918
  {
3625
3919
  style: {
@@ -3632,7 +3926,7 @@ function ComposeMessageScreen({ nav }) {
3632
3926
  children: "Subject"
3633
3927
  }
3634
3928
  ),
3635
- /* @__PURE__ */ jsx13(
3929
+ /* @__PURE__ */ jsx14(
3636
3930
  "input",
3637
3931
  {
3638
3932
  type: "text",
@@ -3647,7 +3941,7 @@ function ComposeMessageScreen({ nav }) {
3647
3941
  }
3648
3942
  }
3649
3943
  ),
3650
- /* @__PURE__ */ jsx13(
3944
+ /* @__PURE__ */ jsx14(
3651
3945
  "label",
3652
3946
  {
3653
3947
  style: {
@@ -3661,7 +3955,7 @@ function ComposeMessageScreen({ nav }) {
3661
3955
  children: "Message"
3662
3956
  }
3663
3957
  ),
3664
- /* @__PURE__ */ jsx13(
3958
+ /* @__PURE__ */ jsx14(
3665
3959
  "textarea",
3666
3960
  {
3667
3961
  value: message,
@@ -3680,7 +3974,7 @@ function ComposeMessageScreen({ nav }) {
3680
3974
  }
3681
3975
  }
3682
3976
  ),
3683
- /* @__PURE__ */ jsx13(
3977
+ /* @__PURE__ */ jsx14(
3684
3978
  ImagePickerButtons,
3685
3979
  {
3686
3980
  images: images.images,
@@ -3691,7 +3985,7 @@ function ComposeMessageScreen({ nav }) {
3691
3985
  label: "Attachments (optional)"
3692
3986
  }
3693
3987
  ),
3694
- /* @__PURE__ */ jsx13(
3988
+ /* @__PURE__ */ jsx14(
3695
3989
  "button",
3696
3990
  {
3697
3991
  style: {
@@ -3720,7 +4014,7 @@ function ComposeMessageScreen({ nav }) {
3720
4014
 
3721
4015
  // src/widget/screens/ProfileScreen.tsx
3722
4016
  import { useState as useState9, useEffect as useEffect6 } from "react";
3723
- import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
4017
+ import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
3724
4018
  function ProfileScreen({ nav }) {
3725
4019
  const { testerInfo, assignments, updateTesterProfile, refreshTesterInfo } = useBugBear();
3726
4020
  const [editing, setEditing] = useState9(false);
@@ -3767,22 +4061,22 @@ function ProfileScreen({ nav }) {
3767
4061
  }
3768
4062
  };
3769
4063
  if (saved) {
3770
- return /* @__PURE__ */ jsxs13("div", { style: styles4.emptyState, children: [
3771
- /* @__PURE__ */ jsx14("span", { style: styles4.emptyEmoji, children: "\u2705" }),
3772
- /* @__PURE__ */ jsx14("span", { style: styles4.emptyTitle, children: "Profile saved!" })
4064
+ return /* @__PURE__ */ jsxs14("div", { style: styles4.emptyState, children: [
4065
+ /* @__PURE__ */ jsx15("span", { style: styles4.emptyEmoji, children: "\u2705" }),
4066
+ /* @__PURE__ */ jsx15("span", { style: styles4.emptyTitle, children: "Profile saved!" })
3773
4067
  ] });
3774
4068
  }
3775
4069
  if (!testerInfo) {
3776
- return /* @__PURE__ */ jsxs13("div", { style: styles4.emptyState, children: [
3777
- /* @__PURE__ */ jsx14("span", { style: styles4.emptyEmoji, children: "\u{1F464}" }),
3778
- /* @__PURE__ */ jsx14("span", { style: styles4.emptyTitle, children: "No profile found" })
4070
+ return /* @__PURE__ */ jsxs14("div", { style: styles4.emptyState, children: [
4071
+ /* @__PURE__ */ jsx15("span", { style: styles4.emptyEmoji, children: "\u{1F464}" }),
4072
+ /* @__PURE__ */ jsx15("span", { style: styles4.emptyTitle, children: "No profile found" })
3779
4073
  ] });
3780
4074
  }
3781
4075
  if (editing) {
3782
- return /* @__PURE__ */ jsxs13("div", { children: [
3783
- /* @__PURE__ */ jsxs13("div", { style: styles4.editHeader, children: [
3784
- /* @__PURE__ */ jsx14("span", { style: styles4.editTitle, children: "Edit Profile" }),
3785
- /* @__PURE__ */ jsx14(
4076
+ return /* @__PURE__ */ jsxs14("div", { children: [
4077
+ /* @__PURE__ */ jsxs14("div", { style: styles4.editHeader, children: [
4078
+ /* @__PURE__ */ jsx15("span", { style: styles4.editTitle, children: "Edit Profile" }),
4079
+ /* @__PURE__ */ jsx15(
3786
4080
  "button",
3787
4081
  {
3788
4082
  style: styles4.cancelButton,
@@ -3794,9 +4088,9 @@ function ProfileScreen({ nav }) {
3794
4088
  }
3795
4089
  )
3796
4090
  ] }),
3797
- /* @__PURE__ */ jsxs13("div", { style: styles4.field, children: [
3798
- /* @__PURE__ */ jsx14("label", { style: styles4.label, children: "Name" }),
3799
- /* @__PURE__ */ jsx14(
4091
+ /* @__PURE__ */ jsxs14("div", { style: styles4.field, children: [
4092
+ /* @__PURE__ */ jsx15("label", { style: styles4.label, children: "Name" }),
4093
+ /* @__PURE__ */ jsx15(
3800
4094
  "input",
3801
4095
  {
3802
4096
  style: styles4.input,
@@ -3806,15 +4100,15 @@ function ProfileScreen({ nav }) {
3806
4100
  }
3807
4101
  )
3808
4102
  ] }),
3809
- /* @__PURE__ */ jsxs13("div", { style: styles4.field, children: [
3810
- /* @__PURE__ */ jsx14("label", { style: styles4.label, children: "Primary Email" }),
3811
- /* @__PURE__ */ jsx14("span", { style: styles4.emailFixed, children: testerInfo.email })
4103
+ /* @__PURE__ */ jsxs14("div", { style: styles4.field, children: [
4104
+ /* @__PURE__ */ jsx15("label", { style: styles4.label, children: "Primary Email" }),
4105
+ /* @__PURE__ */ jsx15("span", { style: styles4.emailFixed, children: testerInfo.email })
3812
4106
  ] }),
3813
- /* @__PURE__ */ jsxs13("div", { style: styles4.field, children: [
3814
- /* @__PURE__ */ jsx14("label", { style: styles4.label, children: "Additional Emails" }),
3815
- additionalEmails.map((email) => /* @__PURE__ */ jsxs13("div", { style: styles4.emailRow, children: [
3816
- /* @__PURE__ */ jsx14("span", { style: styles4.emailText, children: email }),
3817
- /* @__PURE__ */ jsx14(
4107
+ /* @__PURE__ */ jsxs14("div", { style: styles4.field, children: [
4108
+ /* @__PURE__ */ jsx15("label", { style: styles4.label, children: "Additional Emails" }),
4109
+ additionalEmails.map((email) => /* @__PURE__ */ jsxs14("div", { style: styles4.emailRow, children: [
4110
+ /* @__PURE__ */ jsx15("span", { style: styles4.emailText, children: email }),
4111
+ /* @__PURE__ */ jsx15(
3818
4112
  "button",
3819
4113
  {
3820
4114
  style: styles4.removeEmailButton,
@@ -3823,8 +4117,8 @@ function ProfileScreen({ nav }) {
3823
4117
  }
3824
4118
  )
3825
4119
  ] }, email)),
3826
- /* @__PURE__ */ jsxs13("div", { style: styles4.addEmailRow, children: [
3827
- /* @__PURE__ */ jsx14(
4120
+ /* @__PURE__ */ jsxs14("div", { style: styles4.addEmailRow, children: [
4121
+ /* @__PURE__ */ jsx15(
3828
4122
  "input",
3829
4123
  {
3830
4124
  style: { ...styles4.input, flex: 1, marginRight: 8 },
@@ -3837,18 +4131,18 @@ function ProfileScreen({ nav }) {
3837
4131
  }
3838
4132
  }
3839
4133
  ),
3840
- /* @__PURE__ */ jsx14("button", { style: styles4.addButton, onClick: handleAddEmail, children: "Add" })
4134
+ /* @__PURE__ */ jsx15("button", { style: styles4.addButton, onClick: handleAddEmail, children: "Add" })
3841
4135
  ] })
3842
4136
  ] }),
3843
- /* @__PURE__ */ jsxs13("div", { style: styles4.field, children: [
3844
- /* @__PURE__ */ jsx14("label", { style: styles4.label, children: "Testing Platforms" }),
3845
- /* @__PURE__ */ jsx14("div", { style: styles4.platformRow, children: [
4137
+ /* @__PURE__ */ jsxs14("div", { style: styles4.field, children: [
4138
+ /* @__PURE__ */ jsx15("label", { style: styles4.label, children: "Testing Platforms" }),
4139
+ /* @__PURE__ */ jsx15("div", { style: styles4.platformRow, children: [
3846
4140
  { key: "ios", label: "\u{1F4F1} iOS" },
3847
4141
  { key: "android", label: "\u{1F916} Android" },
3848
4142
  { key: "web", label: "\u{1F310} Web" }
3849
4143
  ].map(({ key, label }) => {
3850
4144
  const isActive = platforms.includes(key);
3851
- return /* @__PURE__ */ jsx14(
4145
+ return /* @__PURE__ */ jsx15(
3852
4146
  "button",
3853
4147
  {
3854
4148
  style: {
@@ -3858,13 +4152,13 @@ function ProfileScreen({ nav }) {
3858
4152
  onClick: () => setPlatforms(
3859
4153
  (prev) => prev.includes(key) ? prev.filter((p) => p !== key) : [...prev, key]
3860
4154
  ),
3861
- children: /* @__PURE__ */ jsx14("span", { style: isActive ? styles4.platformTextActive : styles4.platformText, children: label })
4155
+ children: /* @__PURE__ */ jsx15("span", { style: isActive ? styles4.platformTextActive : styles4.platformText, children: label })
3862
4156
  },
3863
4157
  key
3864
4158
  );
3865
4159
  }) })
3866
4160
  ] }),
3867
- /* @__PURE__ */ jsx14(
4161
+ /* @__PURE__ */ jsx15(
3868
4162
  "button",
3869
4163
  {
3870
4164
  style: { ...styles4.primaryButton, marginTop: 20 },
@@ -3875,45 +4169,45 @@ function ProfileScreen({ nav }) {
3875
4169
  )
3876
4170
  ] });
3877
4171
  }
3878
- return /* @__PURE__ */ jsxs13("div", { children: [
3879
- /* @__PURE__ */ jsxs13("div", { style: styles4.profileCard, children: [
3880
- /* @__PURE__ */ jsx14("div", { style: styles4.avatar, children: /* @__PURE__ */ jsx14("span", { style: styles4.avatarText, children: testerInfo.name.charAt(0).toUpperCase() }) }),
3881
- /* @__PURE__ */ jsx14("span", { style: styles4.profileName, children: testerInfo.name }),
3882
- /* @__PURE__ */ jsx14("span", { style: styles4.profileEmail, children: testerInfo.email })
4172
+ return /* @__PURE__ */ jsxs14("div", { children: [
4173
+ /* @__PURE__ */ jsxs14("div", { style: styles4.profileCard, children: [
4174
+ /* @__PURE__ */ jsx15("div", { style: styles4.avatar, children: /* @__PURE__ */ jsx15("span", { style: styles4.avatarText, children: testerInfo.name.charAt(0).toUpperCase() }) }),
4175
+ /* @__PURE__ */ jsx15("span", { style: styles4.profileName, children: testerInfo.name }),
4176
+ /* @__PURE__ */ jsx15("span", { style: styles4.profileEmail, children: testerInfo.email })
3883
4177
  ] }),
3884
- /* @__PURE__ */ jsxs13("div", { style: styles4.statsRow, children: [
3885
- /* @__PURE__ */ jsxs13("div", { style: styles4.statItem, children: [
3886
- /* @__PURE__ */ jsx14("span", { style: styles4.statNumber, children: completedCount }),
3887
- /* @__PURE__ */ jsx14("span", { style: styles4.statLabel, children: "Completed" })
4178
+ /* @__PURE__ */ jsxs14("div", { style: styles4.statsRow, children: [
4179
+ /* @__PURE__ */ jsxs14("div", { style: styles4.statItem, children: [
4180
+ /* @__PURE__ */ jsx15("span", { style: styles4.statNumber, children: completedCount }),
4181
+ /* @__PURE__ */ jsx15("span", { style: styles4.statLabel, children: "Completed" })
3888
4182
  ] }),
3889
- /* @__PURE__ */ jsx14("div", { style: styles4.statDivider }),
3890
- /* @__PURE__ */ jsxs13("div", { style: styles4.statItem, children: [
3891
- /* @__PURE__ */ jsx14("span", { style: styles4.statNumber, children: assignments.length }),
3892
- /* @__PURE__ */ jsx14("span", { style: styles4.statLabel, children: "Total Assigned" })
4183
+ /* @__PURE__ */ jsx15("div", { style: styles4.statDivider }),
4184
+ /* @__PURE__ */ jsxs14("div", { style: styles4.statItem, children: [
4185
+ /* @__PURE__ */ jsx15("span", { style: styles4.statNumber, children: assignments.length }),
4186
+ /* @__PURE__ */ jsx15("span", { style: styles4.statLabel, children: "Total Assigned" })
3893
4187
  ] })
3894
4188
  ] }),
3895
- /* @__PURE__ */ jsx14(
4189
+ /* @__PURE__ */ jsx15(
3896
4190
  "button",
3897
4191
  {
3898
4192
  style: styles4.detailsToggle,
3899
4193
  onClick: () => setShowDetails(!showDetails),
3900
- children: /* @__PURE__ */ jsxs13("span", { style: styles4.detailsToggleText, children: [
4194
+ children: /* @__PURE__ */ jsxs14("span", { style: styles4.detailsToggleText, children: [
3901
4195
  showDetails ? "\u25BC" : "\u25B6",
3902
4196
  " Details"
3903
4197
  ] })
3904
4198
  }
3905
4199
  ),
3906
- showDetails && /* @__PURE__ */ jsxs13("div", { style: styles4.detailsSection, children: [
3907
- additionalEmails.length > 0 && /* @__PURE__ */ jsxs13("div", { style: styles4.detailBlock, children: [
3908
- /* @__PURE__ */ jsx14("span", { style: styles4.detailLabel, children: "Additional Emails" }),
3909
- additionalEmails.map((e) => /* @__PURE__ */ jsx14("span", { style: styles4.detailValue, children: e }, e))
4200
+ showDetails && /* @__PURE__ */ jsxs14("div", { style: styles4.detailsSection, children: [
4201
+ additionalEmails.length > 0 && /* @__PURE__ */ jsxs14("div", { style: styles4.detailBlock, children: [
4202
+ /* @__PURE__ */ jsx15("span", { style: styles4.detailLabel, children: "Additional Emails" }),
4203
+ additionalEmails.map((e) => /* @__PURE__ */ jsx15("span", { style: styles4.detailValue, children: e }, e))
3910
4204
  ] }),
3911
- platforms.length > 0 && /* @__PURE__ */ jsxs13("div", { style: styles4.detailBlock, children: [
3912
- /* @__PURE__ */ jsx14("span", { style: styles4.detailLabel, children: "Platforms" }),
3913
- /* @__PURE__ */ jsx14("div", { style: styles4.platformTags, children: platforms.map((p) => /* @__PURE__ */ jsx14("span", { style: styles4.platformTag, children: /* @__PURE__ */ jsx14("span", { style: styles4.platformTagText, children: p === "ios" ? "\u{1F4F1} iOS" : p === "android" ? "\u{1F916} Android" : "\u{1F310} Web" }) }, p)) })
4205
+ platforms.length > 0 && /* @__PURE__ */ jsxs14("div", { style: styles4.detailBlock, children: [
4206
+ /* @__PURE__ */ jsx15("span", { style: styles4.detailLabel, children: "Platforms" }),
4207
+ /* @__PURE__ */ jsx15("div", { style: styles4.platformTags, children: platforms.map((p) => /* @__PURE__ */ jsx15("span", { style: styles4.platformTag, children: /* @__PURE__ */ jsx15("span", { style: styles4.platformTagText, children: p === "ios" ? "\u{1F4F1} iOS" : p === "android" ? "\u{1F916} Android" : "\u{1F310} Web" }) }, p)) })
3914
4208
  ] })
3915
4209
  ] }),
3916
- /* @__PURE__ */ jsx14(
4210
+ /* @__PURE__ */ jsx15(
3917
4211
  "button",
3918
4212
  {
3919
4213
  style: { ...styles4.primaryButton, marginTop: 20 },
@@ -4197,7 +4491,7 @@ var styles4 = {
4197
4491
 
4198
4492
  // src/widget/screens/IssueListScreen.tsx
4199
4493
  import { useState as useState10, useEffect as useEffect7 } from "react";
4200
- import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
4494
+ import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
4201
4495
  var CATEGORY_CONFIG = {
4202
4496
  open: { label: "Open Issues", accent: "#f97316", emptyIcon: "\u2705", emptyText: "No open issues" },
4203
4497
  done: { label: "Done", accent: "#22c55e", emptyIcon: "\u{1F389}", emptyText: "No completed issues yet" },
@@ -4240,15 +4534,15 @@ function IssueListScreen({ nav, category }) {
4240
4534
  };
4241
4535
  }, [client, category]);
4242
4536
  if (loading) {
4243
- return /* @__PURE__ */ jsx15("div", { style: { padding: "40px 0", textAlign: "center" }, children: /* @__PURE__ */ jsx15("div", { style: { color: colors.textMuted, fontSize: 14 }, children: "Loading..." }) });
4537
+ return /* @__PURE__ */ jsx16(IssueListScreenSkeleton, {});
4244
4538
  }
4245
4539
  if (issues.length === 0) {
4246
- return /* @__PURE__ */ jsxs14("div", { style: { padding: "40px 0", textAlign: "center" }, children: [
4247
- /* @__PURE__ */ jsx15("div", { style: { fontSize: 36, marginBottom: 8 }, children: config.emptyIcon }),
4248
- /* @__PURE__ */ jsx15("div", { style: { color: colors.textMuted, fontSize: 14 }, children: config.emptyText })
4540
+ return /* @__PURE__ */ jsxs15("div", { style: { padding: "40px 0", textAlign: "center" }, children: [
4541
+ /* @__PURE__ */ jsx16("div", { style: { fontSize: 36, marginBottom: 8 }, children: config.emptyIcon }),
4542
+ /* @__PURE__ */ jsx16("div", { style: { color: colors.textMuted, fontSize: 14 }, children: config.emptyText })
4249
4543
  ] });
4250
4544
  }
4251
- return /* @__PURE__ */ jsx15("div", { children: issues.map((issue) => /* @__PURE__ */ jsxs14(
4545
+ return /* @__PURE__ */ jsx16("div", { children: issues.map((issue) => /* @__PURE__ */ jsxs15(
4252
4546
  "div",
4253
4547
  {
4254
4548
  role: "button",
@@ -4267,8 +4561,8 @@ function IssueListScreen({ nav, category }) {
4267
4561
  userSelect: "none"
4268
4562
  },
4269
4563
  children: [
4270
- /* @__PURE__ */ jsxs14("div", { style: { display: "flex", alignItems: "flex-start", gap: 8 }, children: [
4271
- issue.severity && /* @__PURE__ */ jsx15(
4564
+ /* @__PURE__ */ jsxs15("div", { style: { display: "flex", alignItems: "flex-start", gap: 8 }, children: [
4565
+ issue.severity && /* @__PURE__ */ jsx16(
4272
4566
  "span",
4273
4567
  {
4274
4568
  style: {
@@ -4281,7 +4575,7 @@ function IssueListScreen({ nav, category }) {
4281
4575
  }
4282
4576
  }
4283
4577
  ),
4284
- /* @__PURE__ */ jsx15("span", { style: {
4578
+ /* @__PURE__ */ jsx16("span", { style: {
4285
4579
  fontSize: 13,
4286
4580
  fontWeight: 600,
4287
4581
  color: colors.textPrimary,
@@ -4291,11 +4585,11 @@ function IssueListScreen({ nav, category }) {
4291
4585
  whiteSpace: "nowrap"
4292
4586
  }, children: issue.title })
4293
4587
  ] }),
4294
- /* @__PURE__ */ jsxs14("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 6 }, children: [
4295
- issue.route && /* @__PURE__ */ jsx15("span", { style: { fontSize: 11, color: colors.textDim, maxWidth: "60%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: issue.route }),
4296
- /* @__PURE__ */ jsx15("span", { style: { fontSize: 11, color: colors.textDim, marginLeft: "auto" }, children: formatRelativeTime(issue.updatedAt) })
4588
+ /* @__PURE__ */ jsxs15("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 6 }, children: [
4589
+ issue.route && /* @__PURE__ */ jsx16("span", { style: { fontSize: 11, color: colors.textDim, maxWidth: "60%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: issue.route }),
4590
+ /* @__PURE__ */ jsx16("span", { style: { fontSize: 11, color: colors.textDim, marginLeft: "auto" }, children: formatRelativeTime(issue.updatedAt) })
4297
4591
  ] }),
4298
- category === "done" && issue.verifiedByName && /* @__PURE__ */ jsxs14("div", { style: {
4592
+ category === "done" && issue.verifiedByName && /* @__PURE__ */ jsxs15("div", { style: {
4299
4593
  display: "inline-flex",
4300
4594
  alignItems: "center",
4301
4595
  gap: 4,
@@ -4311,7 +4605,7 @@ function IssueListScreen({ nav, category }) {
4311
4605
  "\u2714 Verified by ",
4312
4606
  issue.verifiedByName
4313
4607
  ] }),
4314
- category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ jsxs14("div", { style: {
4608
+ category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ jsxs15("div", { style: {
4315
4609
  display: "inline-flex",
4316
4610
  alignItems: "center",
4317
4611
  gap: 4,
@@ -4338,7 +4632,7 @@ function IssueListScreen({ nav, category }) {
4338
4632
  }
4339
4633
 
4340
4634
  // src/widget/screens/IssueDetailScreen.tsx
4341
- import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
4635
+ import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
4342
4636
  var STATUS_LABELS = {
4343
4637
  new: { label: "New", bg: "#1e3a5f", color: "#60a5fa" },
4344
4638
  triaging: { label: "Triaging", bg: "#1e3a5f", color: "#60a5fa" },
@@ -4362,9 +4656,9 @@ var SEVERITY_CONFIG = {
4362
4656
  function IssueDetailScreen({ nav, issue }) {
4363
4657
  const statusConfig = STATUS_LABELS[issue.status] || { label: issue.status, bg: "#27272a", color: "#a1a1aa" };
4364
4658
  const severityConfig = issue.severity ? SEVERITY_CONFIG[issue.severity] : null;
4365
- return /* @__PURE__ */ jsxs15("div", { children: [
4366
- /* @__PURE__ */ jsxs15("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginBottom: 12 }, children: [
4367
- /* @__PURE__ */ jsx16("span", { style: {
4659
+ return /* @__PURE__ */ jsxs16("div", { children: [
4660
+ /* @__PURE__ */ jsxs16("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginBottom: 12 }, children: [
4661
+ /* @__PURE__ */ jsx17("span", { style: {
4368
4662
  backgroundColor: statusConfig.bg,
4369
4663
  color: statusConfig.color,
4370
4664
  fontSize: 11,
@@ -4372,7 +4666,7 @@ function IssueDetailScreen({ nav, issue }) {
4372
4666
  padding: "3px 10px",
4373
4667
  borderRadius: 6
4374
4668
  }, children: statusConfig.label }),
4375
- severityConfig && /* @__PURE__ */ jsx16("span", { style: {
4669
+ severityConfig && /* @__PURE__ */ jsx17("span", { style: {
4376
4670
  backgroundColor: severityConfig.bg,
4377
4671
  color: severityConfig.color,
4378
4672
  fontSize: 11,
@@ -4381,9 +4675,9 @@ function IssueDetailScreen({ nav, issue }) {
4381
4675
  borderRadius: 6
4382
4676
  }, children: severityConfig.label })
4383
4677
  ] }),
4384
- /* @__PURE__ */ jsx16("h3", { style: { fontSize: 16, fontWeight: 700, color: colors.textPrimary, margin: "0 0 8px 0", lineHeight: 1.3 }, children: issue.title }),
4385
- issue.route && /* @__PURE__ */ jsx16("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 12 }, children: issue.route }),
4386
- issue.description && /* @__PURE__ */ jsx16("div", { style: {
4678
+ /* @__PURE__ */ jsx17("h3", { style: { fontSize: 16, fontWeight: 700, color: colors.textPrimary, margin: "0 0 8px 0", lineHeight: 1.3 }, children: issue.title }),
4679
+ issue.route && /* @__PURE__ */ jsx17("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 12 }, children: issue.route }),
4680
+ issue.description && /* @__PURE__ */ jsx17("div", { style: {
4387
4681
  backgroundColor: colors.card,
4388
4682
  border: `1px solid ${colors.border}`,
4389
4683
  borderRadius: 8,
@@ -4395,56 +4689,56 @@ function IssueDetailScreen({ nav, issue }) {
4395
4689
  whiteSpace: "pre-wrap",
4396
4690
  wordBreak: "break-word"
4397
4691
  }, children: issue.description }),
4398
- issue.verifiedByName && /* @__PURE__ */ jsxs15("div", { style: {
4692
+ issue.verifiedByName && /* @__PURE__ */ jsxs16("div", { style: {
4399
4693
  backgroundColor: "#14532d",
4400
4694
  border: "1px solid #166534",
4401
4695
  borderRadius: 8,
4402
4696
  padding: 12,
4403
4697
  marginBottom: 12
4404
4698
  }, children: [
4405
- /* @__PURE__ */ jsxs15("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4406
- /* @__PURE__ */ jsx16("span", { style: { fontSize: 16 }, children: "\u2705" }),
4407
- /* @__PURE__ */ jsx16("span", { style: { fontSize: 13, fontWeight: 600, color: "#4ade80" }, children: "Retesting Proof" })
4699
+ /* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4700
+ /* @__PURE__ */ jsx17("span", { style: { fontSize: 16 }, children: "\u2705" }),
4701
+ /* @__PURE__ */ jsx17("span", { style: { fontSize: 13, fontWeight: 600, color: "#4ade80" }, children: "Retesting Proof" })
4408
4702
  ] }),
4409
- /* @__PURE__ */ jsxs15("div", { style: { fontSize: 12, color: "#86efac" }, children: [
4703
+ /* @__PURE__ */ jsxs16("div", { style: { fontSize: 12, color: "#86efac" }, children: [
4410
4704
  "Verified by ",
4411
- /* @__PURE__ */ jsx16("strong", { children: issue.verifiedByName }),
4412
- issue.verifiedAt && /* @__PURE__ */ jsxs15("span", { children: [
4705
+ /* @__PURE__ */ jsx17("strong", { children: issue.verifiedByName }),
4706
+ issue.verifiedAt && /* @__PURE__ */ jsxs16("span", { children: [
4413
4707
  " on ",
4414
4708
  new Date(issue.verifiedAt).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" })
4415
4709
  ] })
4416
4710
  ] })
4417
4711
  ] }),
4418
- issue.originalBugTitle && /* @__PURE__ */ jsxs15("div", { style: {
4712
+ issue.originalBugTitle && /* @__PURE__ */ jsxs16("div", { style: {
4419
4713
  backgroundColor: "#422006",
4420
4714
  border: "1px solid #854d0e",
4421
4715
  borderRadius: 8,
4422
4716
  padding: 12,
4423
4717
  marginBottom: 12
4424
4718
  }, children: [
4425
- /* @__PURE__ */ jsxs15("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4426
- /* @__PURE__ */ jsx16("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
4427
- /* @__PURE__ */ jsx16("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Original Bug" })
4719
+ /* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4720
+ /* @__PURE__ */ jsx17("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
4721
+ /* @__PURE__ */ jsx17("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Original Bug" })
4428
4722
  ] }),
4429
- /* @__PURE__ */ jsxs15("div", { style: { fontSize: 12, color: "#fde68a" }, children: [
4723
+ /* @__PURE__ */ jsxs16("div", { style: { fontSize: 12, color: "#fde68a" }, children: [
4430
4724
  "Retest of: ",
4431
- /* @__PURE__ */ jsx16("strong", { children: issue.originalBugTitle })
4725
+ /* @__PURE__ */ jsx17("strong", { children: issue.originalBugTitle })
4432
4726
  ] })
4433
4727
  ] }),
4434
- issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ jsxs15("div", { style: { marginBottom: 12 }, children: [
4435
- /* @__PURE__ */ jsxs15("div", { style: { fontSize: 12, fontWeight: 600, color: colors.textMuted, marginBottom: 8 }, children: [
4728
+ issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ jsxs16("div", { style: { marginBottom: 12 }, children: [
4729
+ /* @__PURE__ */ jsxs16("div", { style: { fontSize: 12, fontWeight: 600, color: colors.textMuted, marginBottom: 8 }, children: [
4436
4730
  "Screenshots (",
4437
4731
  issue.screenshotUrls.length,
4438
4732
  ")"
4439
4733
  ] }),
4440
- /* @__PURE__ */ jsx16("div", { style: { display: "flex", gap: 8, overflowX: "auto" }, children: issue.screenshotUrls.map((url, i) => /* @__PURE__ */ jsx16(
4734
+ /* @__PURE__ */ jsx17("div", { style: { display: "flex", gap: 8, overflowX: "auto" }, children: issue.screenshotUrls.map((url, i) => /* @__PURE__ */ jsx17(
4441
4735
  "a",
4442
4736
  {
4443
4737
  href: url,
4444
4738
  target: "_blank",
4445
4739
  rel: "noopener noreferrer",
4446
4740
  style: { flexShrink: 0 },
4447
- children: /* @__PURE__ */ jsx16(
4741
+ children: /* @__PURE__ */ jsx17(
4448
4742
  "img",
4449
4743
  {
4450
4744
  src: url,
@@ -4462,16 +4756,16 @@ function IssueDetailScreen({ nav, issue }) {
4462
4756
  i
4463
4757
  )) })
4464
4758
  ] }),
4465
- /* @__PURE__ */ jsxs15("div", { style: {
4759
+ /* @__PURE__ */ jsxs16("div", { style: {
4466
4760
  borderTop: `1px solid ${colors.border}`,
4467
4761
  paddingTop: 12,
4468
4762
  marginTop: 4
4469
4763
  }, children: [
4470
- issue.reporterName && /* @__PURE__ */ jsxs15("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 4 }, children: [
4764
+ issue.reporterName && /* @__PURE__ */ jsxs16("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 4 }, children: [
4471
4765
  "Reported by ",
4472
4766
  issue.reporterName
4473
4767
  ] }),
4474
- /* @__PURE__ */ jsxs15("div", { style: { fontSize: 11, color: colors.textDim }, children: [
4768
+ /* @__PURE__ */ jsxs16("div", { style: { fontSize: 11, color: colors.textDim }, children: [
4475
4769
  "Created ",
4476
4770
  formatRelativeTime(issue.createdAt),
4477
4771
  " \xB7 Updated ",
@@ -4485,9 +4779,9 @@ function IssueDetailScreen({ nav, issue }) {
4485
4779
  var BUGBEAR_LOGO_BASE64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAJhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAASQBAACAAAAFAAAAISgAQADAAAAAQABAACgAgAEAAAAAQAAAGCgAwAEAAAAAQAAAGAAAAAAMjAyNjowMToyNCAxNjoyMTozOABbbVCuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpJcHRjNHhtcEV4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPmZjNzJlN2Q2LTYyYTEtNDE1ZS04MjY5LWM2NjA4MjY0OWRiMDwvSXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyNi0wMS0yNFQxNjoyMTozODwveG1wOkNyZWF0ZURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+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";
4486
4780
 
4487
4781
  // src/BugBearPanel.tsx
4488
- import { Fragment as Fragment4, jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
4782
+ import { Fragment as Fragment4, jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
4489
4783
  function BugBearIcon({ size = 24 }) {
4490
- return /* @__PURE__ */ jsx17(
4784
+ return /* @__PURE__ */ jsx18(
4491
4785
  "img",
4492
4786
  {
4493
4787
  src: BUGBEAR_LOGO_BASE64,
@@ -4652,37 +4946,37 @@ function BugBearPanel({
4652
4946
  const renderScreen = () => {
4653
4947
  switch (currentScreen.name) {
4654
4948
  case "HOME":
4655
- return /* @__PURE__ */ jsx17(HomeScreen, { nav });
4949
+ return /* @__PURE__ */ jsx18(HomeScreen, { nav });
4656
4950
  case "TEST_DETAIL":
4657
- return /* @__PURE__ */ jsx17(TestDetailScreen, { testId: currentScreen.testId, nav });
4951
+ return /* @__PURE__ */ jsx18(TestDetailScreen, { testId: currentScreen.testId, nav });
4658
4952
  case "TEST_LIST":
4659
- return /* @__PURE__ */ jsx17(TestListScreen, { nav });
4953
+ return /* @__PURE__ */ jsx18(TestListScreen, { nav });
4660
4954
  case "TEST_FEEDBACK":
4661
- return /* @__PURE__ */ jsx17(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
4955
+ return /* @__PURE__ */ jsx18(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
4662
4956
  case "REPORT":
4663
- return /* @__PURE__ */ jsx17(ReportScreen, { nav, prefill: currentScreen.prefill });
4957
+ return /* @__PURE__ */ jsx18(ReportScreen, { nav, prefill: currentScreen.prefill });
4664
4958
  case "REPORT_SUCCESS":
4665
- return /* @__PURE__ */ jsx17(ReportSuccessScreen, { nav });
4959
+ return /* @__PURE__ */ jsx18(ReportSuccessScreen, { nav });
4666
4960
  case "MESSAGE_LIST":
4667
- return /* @__PURE__ */ jsx17(MessageListScreen, { nav });
4961
+ return /* @__PURE__ */ jsx18(MessageListScreen, { nav });
4668
4962
  case "THREAD_DETAIL":
4669
- return /* @__PURE__ */ jsx17(ThreadDetailScreen, { thread: currentScreen.thread, nav });
4963
+ return /* @__PURE__ */ jsx18(ThreadDetailScreen, { thread: currentScreen.thread, nav });
4670
4964
  case "COMPOSE_MESSAGE":
4671
- return /* @__PURE__ */ jsx17(ComposeMessageScreen, { nav });
4965
+ return /* @__PURE__ */ jsx18(ComposeMessageScreen, { nav });
4672
4966
  case "ISSUE_LIST":
4673
- return /* @__PURE__ */ jsx17(IssueListScreen, { nav, category: currentScreen.category });
4967
+ return /* @__PURE__ */ jsx18(IssueListScreen, { nav, category: currentScreen.category });
4674
4968
  case "ISSUE_DETAIL":
4675
- return /* @__PURE__ */ jsx17(IssueDetailScreen, { nav, issue: currentScreen.issue });
4969
+ return /* @__PURE__ */ jsx18(IssueDetailScreen, { nav, issue: currentScreen.issue });
4676
4970
  case "PROFILE":
4677
- return /* @__PURE__ */ jsx17(ProfileScreen, { nav });
4971
+ return /* @__PURE__ */ jsx18(ProfileScreen, { nav });
4678
4972
  default:
4679
- return /* @__PURE__ */ jsx17(HomeScreen, { nav });
4973
+ return /* @__PURE__ */ jsx18(HomeScreen, { nav });
4680
4974
  }
4681
4975
  };
4682
4976
  if (typeof document === "undefined") return null;
4683
4977
  const headerTitle = getHeaderTitle();
4684
4978
  return createPortal(
4685
- /* @__PURE__ */ jsxs16(
4979
+ /* @__PURE__ */ jsxs17(
4686
4980
  "div",
4687
4981
  {
4688
4982
  ref: panelRef,
@@ -4701,7 +4995,7 @@ function BugBearPanel({
4701
4995
  },
4702
4996
  onMouseDown: handleMouseDown,
4703
4997
  children: [
4704
- collapsed && /* @__PURE__ */ jsxs16(
4998
+ collapsed && /* @__PURE__ */ jsxs17(
4705
4999
  "button",
4706
5000
  {
4707
5001
  onClick: () => setCollapsed(false),
@@ -4723,9 +5017,9 @@ function BugBearPanel({
4723
5017
  fontWeight: 500
4724
5018
  },
4725
5019
  children: [
4726
- /* @__PURE__ */ jsx17(BugBearIcon, { size: 24 }),
4727
- /* @__PURE__ */ jsx17("span", { children: "BugBear" }),
4728
- badgeCount > 0 && /* @__PURE__ */ jsx17("span", { style: {
5020
+ /* @__PURE__ */ jsx18(BugBearIcon, { size: 24 }),
5021
+ /* @__PURE__ */ jsx18("span", { children: "BugBear" }),
5022
+ badgeCount > 0 && /* @__PURE__ */ jsx18("span", { style: {
4729
5023
  backgroundColor: "#fff",
4730
5024
  color: colors.blue,
4731
5025
  fontSize: "0.75rem",
@@ -4736,7 +5030,7 @@ function BugBearPanel({
4736
5030
  ]
4737
5031
  }
4738
5032
  ),
4739
- !collapsed && /* @__PURE__ */ jsxs16("div", { style: {
5033
+ !collapsed && /* @__PURE__ */ jsxs17("div", { style: {
4740
5034
  width: PANEL_WIDTH,
4741
5035
  backgroundColor: colors.bg,
4742
5036
  borderRadius: 12,
@@ -4744,7 +5038,7 @@ function BugBearPanel({
4744
5038
  overflow: "hidden",
4745
5039
  boxShadow: "0 25px 50px -12px rgba(0,0,0,0.5)"
4746
5040
  }, children: [
4747
- /* @__PURE__ */ jsxs16(
5041
+ /* @__PURE__ */ jsxs17(
4748
5042
  "div",
4749
5043
  {
4750
5044
  "data-drag-handle": true,
@@ -4760,7 +5054,7 @@ function BugBearPanel({
4760
5054
  cursor: draggable ? isDragging ? "grabbing" : "grab" : "default"
4761
5055
  },
4762
5056
  children: [
4763
- /* @__PURE__ */ jsx17("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ jsx17(
5057
+ /* @__PURE__ */ jsx18("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ jsx18(
4764
5058
  "button",
4765
5059
  {
4766
5060
  onClick: pop,
@@ -4776,14 +5070,14 @@ function BugBearPanel({
4776
5070
  },
4777
5071
  children: "\u2190 Back"
4778
5072
  }
4779
- ) : /* @__PURE__ */ jsxs16(Fragment4, { children: [
4780
- /* @__PURE__ */ jsx17(BugBearIcon, { size: 28 }),
4781
- /* @__PURE__ */ jsxs16("div", { children: [
4782
- /* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
4783
- /* @__PURE__ */ jsx17("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
4784
- draggable && /* @__PURE__ */ jsx17("span", { style: { color: colors.textMuted, fontSize: "0.75rem" }, title: "Drag to move, double-click to reset", children: "\u22EE\u22EE" })
5073
+ ) : /* @__PURE__ */ jsxs17(Fragment4, { children: [
5074
+ /* @__PURE__ */ jsx18(BugBearIcon, { size: 28 }),
5075
+ /* @__PURE__ */ jsxs17("div", { children: [
5076
+ /* @__PURE__ */ jsxs17("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
5077
+ /* @__PURE__ */ jsx18("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
5078
+ draggable && /* @__PURE__ */ jsx18("span", { style: { color: colors.textMuted, fontSize: "0.75rem" }, title: "Drag to move, double-click to reset", children: "\u22EE\u22EE" })
4785
5079
  ] }),
4786
- testerInfo && /* @__PURE__ */ jsxs16(
5080
+ testerInfo && /* @__PURE__ */ jsxs17(
4787
5081
  "button",
4788
5082
  {
4789
5083
  onClick: () => push({ name: "PROFILE" }),
@@ -4801,13 +5095,13 @@ function BugBearPanel({
4801
5095
  },
4802
5096
  children: [
4803
5097
  testerInfo.name,
4804
- /* @__PURE__ */ jsx17("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
5098
+ /* @__PURE__ */ jsx18("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
4805
5099
  ]
4806
5100
  }
4807
5101
  )
4808
5102
  ] })
4809
5103
  ] }) }),
4810
- headerTitle ? /* @__PURE__ */ jsx17("span", { style: {
5104
+ headerTitle ? /* @__PURE__ */ jsx18("span", { style: {
4811
5105
  fontSize: "0.8125rem",
4812
5106
  fontWeight: 600,
4813
5107
  color: colors.textSecondary,
@@ -4817,7 +5111,7 @@ function BugBearPanel({
4817
5111
  textOverflow: "ellipsis",
4818
5112
  whiteSpace: "nowrap"
4819
5113
  }, children: headerTitle }) : null,
4820
- /* @__PURE__ */ jsx17(
5114
+ /* @__PURE__ */ jsx18(
4821
5115
  "button",
4822
5116
  {
4823
5117
  onClick: handleClose,
@@ -4841,13 +5135,13 @@ function BugBearPanel({
4841
5135
  ]
4842
5136
  }
4843
5137
  ),
4844
- /* @__PURE__ */ jsx17("div", { style: {
5138
+ /* @__PURE__ */ jsx18("div", { style: {
4845
5139
  padding: 16,
4846
5140
  maxHeight: 400,
4847
5141
  overflowY: "auto",
4848
5142
  backgroundColor: colors.bg,
4849
5143
  color: colors.textSecondary
4850
- }, children: isLoading ? /* @__PURE__ */ jsx17("div", { style: { padding: "60px 0", textAlign: "center" }, children: /* @__PURE__ */ jsx17("div", { style: { color: colors.textMuted, fontSize: "0.875rem" }, children: "Loading..." }) }) : renderScreen() })
5144
+ }, children: isLoading ? /* @__PURE__ */ jsx18("div", { style: { padding: "60px 0", textAlign: "center" }, children: /* @__PURE__ */ jsx18("div", { style: { color: colors.textMuted, fontSize: "0.875rem" }, children: "Loading..." }) }) : renderScreen() })
4851
5145
  ] })
4852
5146
  ]
4853
5147
  }
@@ -4859,7 +5153,7 @@ function BugBearPanel({
4859
5153
  // src/BugBearErrorBoundary.tsx
4860
5154
  import { Component } from "react";
4861
5155
  import { captureError, contextCapture as contextCapture2 } from "@bbearai/core";
4862
- import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
5156
+ import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
4863
5157
  var BugBearErrorBoundary = class extends Component {
4864
5158
  constructor(props) {
4865
5159
  super(props);
@@ -4904,7 +5198,7 @@ var BugBearErrorBoundary = class extends Component {
4904
5198
  if (fallback) {
4905
5199
  return fallback;
4906
5200
  }
4907
- return /* @__PURE__ */ jsxs17(
5201
+ return /* @__PURE__ */ jsxs18(
4908
5202
  "div",
4909
5203
  {
4910
5204
  style: {
@@ -4916,13 +5210,13 @@ var BugBearErrorBoundary = class extends Component {
4916
5210
  fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
4917
5211
  },
4918
5212
  children: [
4919
- /* @__PURE__ */ jsxs17("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
4920
- /* @__PURE__ */ jsx18("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
4921
- /* @__PURE__ */ jsx18("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
5213
+ /* @__PURE__ */ jsxs18("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
5214
+ /* @__PURE__ */ jsx19("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
5215
+ /* @__PURE__ */ jsx19("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
4922
5216
  ] }),
4923
- /* @__PURE__ */ jsx18("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
4924
- /* @__PURE__ */ jsxs17("div", { style: { display: "flex", gap: "8px" }, children: [
4925
- /* @__PURE__ */ jsx18(
5217
+ /* @__PURE__ */ jsx19("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
5218
+ /* @__PURE__ */ jsxs18("div", { style: { display: "flex", gap: "8px" }, children: [
5219
+ /* @__PURE__ */ jsx19(
4926
5220
  "button",
4927
5221
  {
4928
5222
  onClick: this.reset,
@@ -4939,7 +5233,7 @@ var BugBearErrorBoundary = class extends Component {
4939
5233
  children: "Try Again"
4940
5234
  }
4941
5235
  ),
4942
- /* @__PURE__ */ jsx18(
5236
+ /* @__PURE__ */ jsx19(
4943
5237
  "button",
4944
5238
  {
4945
5239
  onClick: () => window.location.reload(),
@@ -4957,7 +5251,7 @@ var BugBearErrorBoundary = class extends Component {
4957
5251
  }
4958
5252
  )
4959
5253
  ] }),
4960
- /* @__PURE__ */ jsx18("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
5254
+ /* @__PURE__ */ jsx19("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
4961
5255
  ]
4962
5256
  }
4963
5257
  );