@bbearai/react 0.4.6 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +1020 -437
- package/dist/index.mjs +1020 -437
- package/package.json +2 -2
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
|
-
},
|
|
223
|
-
return () =>
|
|
224
|
-
|
|
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, dashboardUrl, 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__ */
|
|
407
|
-
|
|
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__ */
|
|
430
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
485
|
-
/* @__PURE__ */
|
|
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__ */
|
|
661
|
+
/* @__PURE__ */ jsx3("span", { style: { fontSize: 14, fontWeight: 600, color: colors.blue, marginTop: 12 }, children: "View Messages \u2192" })
|
|
490
662
|
]
|
|
491
663
|
}
|
|
492
|
-
) : /* @__PURE__ */
|
|
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__ */
|
|
507
|
-
/* @__PURE__ */
|
|
508
|
-
totalTests > 0 && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
550
|
-
/* @__PURE__ */
|
|
551
|
-
pendingCount > 0 && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
600
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
627
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
654
|
-
/* @__PURE__ */
|
|
655
|
-
unreadCount > 0 && /* @__PURE__ */
|
|
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__ */
|
|
685
|
-
/* @__PURE__ */
|
|
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__ */
|
|
708
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
735
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
762
|
-
/* @__PURE__ */
|
|
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__ */
|
|
768
|
-
/* @__PURE__ */
|
|
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__ */
|
|
950
|
+
children: /* @__PURE__ */ jsx3(
|
|
779
951
|
"div",
|
|
780
952
|
{
|
|
781
953
|
style: {
|
|
@@ -789,14 +961,41 @@ function HomeScreen({ nav }) {
|
|
|
789
961
|
)
|
|
790
962
|
}
|
|
791
963
|
),
|
|
792
|
-
/* @__PURE__ */
|
|
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
|
-
|
|
971
|
+
dashboardUrl && /* @__PURE__ */ jsxs2(
|
|
972
|
+
"a",
|
|
973
|
+
{
|
|
974
|
+
href: dashboardUrl,
|
|
975
|
+
target: "_blank",
|
|
976
|
+
rel: "noopener noreferrer",
|
|
977
|
+
style: {
|
|
978
|
+
display: "flex",
|
|
979
|
+
alignItems: "center",
|
|
980
|
+
backgroundColor: colors.card,
|
|
981
|
+
border: `1px solid ${colors.border}`,
|
|
982
|
+
borderRadius: 12,
|
|
983
|
+
padding: 14,
|
|
984
|
+
marginBottom: 16,
|
|
985
|
+
textDecoration: "none",
|
|
986
|
+
cursor: "pointer"
|
|
987
|
+
},
|
|
988
|
+
children: [
|
|
989
|
+
/* @__PURE__ */ jsx3("span", { style: { fontSize: 22, marginRight: 12 }, children: "\u{1F310}" }),
|
|
990
|
+
/* @__PURE__ */ jsxs2("span", { style: { flex: 1 }, children: [
|
|
991
|
+
/* @__PURE__ */ jsx3("span", { style: { display: "block", fontSize: 14, fontWeight: 600, color: colors.textPrimary }, children: "Open Dashboard" }),
|
|
992
|
+
/* @__PURE__ */ jsx3("span", { style: { display: "block", fontSize: 12, color: colors.textMuted, marginTop: 2 }, children: "View analytics, history & more" })
|
|
993
|
+
] }),
|
|
994
|
+
/* @__PURE__ */ jsx3("span", { style: { fontSize: 16, color: colors.textMuted, marginLeft: 8 }, children: "\u2192" })
|
|
995
|
+
]
|
|
996
|
+
}
|
|
997
|
+
),
|
|
998
|
+
/* @__PURE__ */ jsx3("div", { style: { display: "flex", justifyContent: "center", padding: "8px 0" }, children: /* @__PURE__ */ jsx3(
|
|
800
999
|
"button",
|
|
801
1000
|
{
|
|
802
1001
|
type: "button",
|
|
@@ -821,7 +1020,7 @@ function HomeScreen({ nav }) {
|
|
|
821
1020
|
|
|
822
1021
|
// src/widget/screens/TestDetailScreen.tsx
|
|
823
1022
|
import { useState as useState2, useEffect as useEffect3, useCallback as useCallback2 } from "react";
|
|
824
|
-
import { Fragment, jsx as
|
|
1023
|
+
import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
825
1024
|
function TestDetailScreen({ testId, nav }) {
|
|
826
1025
|
const { client, assignments, currentAssignment, refreshAssignments, onNavigate } = useBugBear();
|
|
827
1026
|
const displayedAssignment = testId ? assignments.find((a) => a.id === testId) || currentAssignment : currentAssignment;
|
|
@@ -886,6 +1085,37 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
886
1085
|
setIsSubmitting(false);
|
|
887
1086
|
}
|
|
888
1087
|
}, [client, displayedAssignment, refreshAssignments, nav, isSubmitting]);
|
|
1088
|
+
const handleReopen = useCallback2(async () => {
|
|
1089
|
+
if (!client || !displayedAssignment || isSubmitting) return;
|
|
1090
|
+
setIsSubmitting(true);
|
|
1091
|
+
try {
|
|
1092
|
+
await client.reopenAssignment(displayedAssignment.id);
|
|
1093
|
+
await refreshAssignments();
|
|
1094
|
+
} finally {
|
|
1095
|
+
setIsSubmitting(false);
|
|
1096
|
+
}
|
|
1097
|
+
}, [client, displayedAssignment, refreshAssignments, isSubmitting]);
|
|
1098
|
+
const handleChangeResult = useCallback2(async (newStatus) => {
|
|
1099
|
+
if (!client || !displayedAssignment || isSubmitting) return;
|
|
1100
|
+
setIsSubmitting(true);
|
|
1101
|
+
try {
|
|
1102
|
+
await client.reopenAssignment(displayedAssignment.id);
|
|
1103
|
+
await client.updateAssignmentStatus(displayedAssignment.id, newStatus);
|
|
1104
|
+
await refreshAssignments();
|
|
1105
|
+
if (newStatus === "failed") {
|
|
1106
|
+
nav.replace({
|
|
1107
|
+
name: "REPORT",
|
|
1108
|
+
prefill: {
|
|
1109
|
+
type: "test_fail",
|
|
1110
|
+
assignmentId: displayedAssignment.id,
|
|
1111
|
+
testCaseId: displayedAssignment.testCase.id
|
|
1112
|
+
}
|
|
1113
|
+
});
|
|
1114
|
+
}
|
|
1115
|
+
} finally {
|
|
1116
|
+
setIsSubmitting(false);
|
|
1117
|
+
}
|
|
1118
|
+
}, [client, displayedAssignment, refreshAssignments, nav, isSubmitting]);
|
|
889
1119
|
const handleSkip = useCallback2(async () => {
|
|
890
1120
|
if (!client || !displayedAssignment || !selectedSkipReason) return;
|
|
891
1121
|
setSkipping(true);
|
|
@@ -909,7 +1139,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
909
1139
|
}
|
|
910
1140
|
}, [client, displayedAssignment, selectedSkipReason, skipNotes, refreshAssignments, assignments, nav]);
|
|
911
1141
|
if (!displayedAssignment) {
|
|
912
|
-
return /* @__PURE__ */
|
|
1142
|
+
return /* @__PURE__ */ jsxs3(
|
|
913
1143
|
"div",
|
|
914
1144
|
{
|
|
915
1145
|
style: {
|
|
@@ -920,10 +1150,10 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
920
1150
|
padding: 40
|
|
921
1151
|
},
|
|
922
1152
|
children: [
|
|
923
|
-
/* @__PURE__ */
|
|
924
|
-
/* @__PURE__ */
|
|
925
|
-
/* @__PURE__ */
|
|
926
|
-
/* @__PURE__ */
|
|
1153
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 48, marginBottom: 12 }, children: "\u2705" }),
|
|
1154
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 18, fontWeight: 600, color: colors.textPrimary, marginBottom: 4 }, children: "No tests assigned" }),
|
|
1155
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 14, color: colors.textMuted, marginBottom: 20 }, children: "Check back later for new tests" }),
|
|
1156
|
+
/* @__PURE__ */ jsx4(
|
|
927
1157
|
"button",
|
|
928
1158
|
{
|
|
929
1159
|
type: "button",
|
|
@@ -956,8 +1186,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
956
1186
|
{ reason: "dependency", label: "\u{1F517} Needs another test first" },
|
|
957
1187
|
{ reason: "other", label: "\u{1F4DD} Other reason" }
|
|
958
1188
|
];
|
|
959
|
-
return /* @__PURE__ */
|
|
960
|
-
/* @__PURE__ */
|
|
1189
|
+
return /* @__PURE__ */ jsxs3("div", { style: { paddingBottom: 16 }, children: [
|
|
1190
|
+
/* @__PURE__ */ jsxs3(
|
|
961
1191
|
"div",
|
|
962
1192
|
{
|
|
963
1193
|
style: {
|
|
@@ -967,14 +1197,14 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
967
1197
|
marginBottom: 12
|
|
968
1198
|
},
|
|
969
1199
|
children: [
|
|
970
|
-
/* @__PURE__ */
|
|
971
|
-
/* @__PURE__ */
|
|
1200
|
+
/* @__PURE__ */ jsxs3("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
1201
|
+
/* @__PURE__ */ jsxs3("span", { style: { fontSize: 13, color: colors.textMuted }, children: [
|
|
972
1202
|
"Test ",
|
|
973
1203
|
currentIndex + 1,
|
|
974
1204
|
" of ",
|
|
975
1205
|
allTests.length
|
|
976
1206
|
] }),
|
|
977
|
-
displayedAssignment.status === "in_progress" && assignmentElapsedTime > 0 && /* @__PURE__ */
|
|
1207
|
+
displayedAssignment.status === "in_progress" && assignmentElapsedTime > 0 && /* @__PURE__ */ jsx4(
|
|
978
1208
|
"span",
|
|
979
1209
|
{
|
|
980
1210
|
style: {
|
|
@@ -993,7 +1223,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
993
1223
|
}
|
|
994
1224
|
)
|
|
995
1225
|
] }),
|
|
996
|
-
/* @__PURE__ */
|
|
1226
|
+
/* @__PURE__ */ jsx4(
|
|
997
1227
|
"button",
|
|
998
1228
|
{
|
|
999
1229
|
type: "button",
|
|
@@ -1013,7 +1243,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1013
1243
|
]
|
|
1014
1244
|
}
|
|
1015
1245
|
),
|
|
1016
|
-
displayedAssignment.isVerification && /* @__PURE__ */
|
|
1246
|
+
displayedAssignment.isVerification && /* @__PURE__ */ jsxs3(
|
|
1017
1247
|
"div",
|
|
1018
1248
|
{
|
|
1019
1249
|
style: {
|
|
@@ -1027,14 +1257,14 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1027
1257
|
marginBottom: 10
|
|
1028
1258
|
},
|
|
1029
1259
|
children: [
|
|
1030
|
-
/* @__PURE__ */
|
|
1031
|
-
/* @__PURE__ */
|
|
1032
|
-
/* @__PURE__ */
|
|
1260
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 14 }, children: "\u{1F504}" }),
|
|
1261
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Retest" }),
|
|
1262
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 12, color: "#d97706" }, children: "\u2014 Verify bug fix" })
|
|
1033
1263
|
]
|
|
1034
1264
|
}
|
|
1035
1265
|
),
|
|
1036
|
-
/* @__PURE__ */
|
|
1037
|
-
testCase.testKey && /* @__PURE__ */
|
|
1266
|
+
/* @__PURE__ */ jsx4("div", { style: { fontSize: 20, fontWeight: 700, color: colors.textPrimary, marginBottom: 4 }, children: testCase.title }),
|
|
1267
|
+
testCase.testKey && /* @__PURE__ */ jsx4(
|
|
1038
1268
|
"div",
|
|
1039
1269
|
{
|
|
1040
1270
|
style: {
|
|
@@ -1046,7 +1276,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1046
1276
|
children: testCase.testKey
|
|
1047
1277
|
}
|
|
1048
1278
|
),
|
|
1049
|
-
/* @__PURE__ */
|
|
1279
|
+
/* @__PURE__ */ jsx4(
|
|
1050
1280
|
"button",
|
|
1051
1281
|
{
|
|
1052
1282
|
type: "button",
|
|
@@ -1062,7 +1292,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1062
1292
|
cursor: "pointer",
|
|
1063
1293
|
textAlign: "left"
|
|
1064
1294
|
},
|
|
1065
|
-
children: /* @__PURE__ */
|
|
1295
|
+
children: /* @__PURE__ */ jsxs3("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textSecondary }, children: [
|
|
1066
1296
|
showSteps ? "\u25BC" : "\u25B6",
|
|
1067
1297
|
" ",
|
|
1068
1298
|
info.icon,
|
|
@@ -1071,9 +1301,9 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1071
1301
|
] })
|
|
1072
1302
|
}
|
|
1073
1303
|
),
|
|
1074
|
-
showSteps && /* @__PURE__ */
|
|
1075
|
-
template === "steps" && steps.map((step, idx) => /* @__PURE__ */
|
|
1076
|
-
/* @__PURE__ */
|
|
1304
|
+
showSteps && /* @__PURE__ */ jsxs3("div", { style: { marginBottom: 16 }, children: [
|
|
1305
|
+
template === "steps" && steps.map((step, idx) => /* @__PURE__ */ jsxs3("div", { style: { display: "flex", marginBottom: 10 }, children: [
|
|
1306
|
+
/* @__PURE__ */ jsx4(
|
|
1077
1307
|
"div",
|
|
1078
1308
|
{
|
|
1079
1309
|
style: {
|
|
@@ -1088,12 +1318,12 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1088
1318
|
marginTop: 2,
|
|
1089
1319
|
flexShrink: 0
|
|
1090
1320
|
},
|
|
1091
|
-
children: /* @__PURE__ */
|
|
1321
|
+
children: /* @__PURE__ */ jsx4("span", { style: { fontSize: 12, fontWeight: 600, color: "#fff" }, children: step.stepNumber })
|
|
1092
1322
|
}
|
|
1093
1323
|
),
|
|
1094
|
-
/* @__PURE__ */
|
|
1095
|
-
/* @__PURE__ */
|
|
1096
|
-
step.expectedResult && /* @__PURE__ */
|
|
1324
|
+
/* @__PURE__ */ jsxs3("div", { style: { flex: 1 }, children: [
|
|
1325
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 14, color: colors.textPrimary, lineHeight: "20px" }, children: step.action }),
|
|
1326
|
+
step.expectedResult && /* @__PURE__ */ jsxs3(
|
|
1097
1327
|
"div",
|
|
1098
1328
|
{
|
|
1099
1329
|
style: {
|
|
@@ -1110,8 +1340,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1110
1340
|
)
|
|
1111
1341
|
] })
|
|
1112
1342
|
] }, idx)),
|
|
1113
|
-
template === "checklist" && /* @__PURE__ */
|
|
1114
|
-
steps.map((step, idx) => /* @__PURE__ */
|
|
1343
|
+
template === "checklist" && /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
1344
|
+
steps.map((step, idx) => /* @__PURE__ */ jsxs3(
|
|
1115
1345
|
"button",
|
|
1116
1346
|
{
|
|
1117
1347
|
type: "button",
|
|
@@ -1137,7 +1367,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1137
1367
|
textAlign: "left"
|
|
1138
1368
|
},
|
|
1139
1369
|
children: [
|
|
1140
|
-
/* @__PURE__ */
|
|
1370
|
+
/* @__PURE__ */ jsx4(
|
|
1141
1371
|
"div",
|
|
1142
1372
|
{
|
|
1143
1373
|
style: {
|
|
@@ -1152,10 +1382,10 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1152
1382
|
alignItems: "center",
|
|
1153
1383
|
flexShrink: 0
|
|
1154
1384
|
},
|
|
1155
|
-
children: criteriaResults[idx] === true && /* @__PURE__ */
|
|
1385
|
+
children: criteriaResults[idx] === true && /* @__PURE__ */ jsx4("span", { style: { color: "#fff", fontSize: 14, fontWeight: "bold" }, children: "\u2713" })
|
|
1156
1386
|
}
|
|
1157
1387
|
),
|
|
1158
|
-
/* @__PURE__ */
|
|
1388
|
+
/* @__PURE__ */ jsx4(
|
|
1159
1389
|
"span",
|
|
1160
1390
|
{
|
|
1161
1391
|
style: {
|
|
@@ -1171,7 +1401,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1171
1401
|
},
|
|
1172
1402
|
idx
|
|
1173
1403
|
)),
|
|
1174
|
-
Object.keys(criteriaResults).length > 0 && /* @__PURE__ */
|
|
1404
|
+
Object.keys(criteriaResults).length > 0 && /* @__PURE__ */ jsx4("div", { style: { display: "flex", justifyContent: "flex-end", paddingTop: 4 }, children: /* @__PURE__ */ jsx4(
|
|
1175
1405
|
"button",
|
|
1176
1406
|
{
|
|
1177
1407
|
type: "button",
|
|
@@ -1188,8 +1418,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1188
1418
|
}
|
|
1189
1419
|
) })
|
|
1190
1420
|
] }),
|
|
1191
|
-
template === "rubric" && steps.map((step, idx) => /* @__PURE__ */
|
|
1192
|
-
/* @__PURE__ */
|
|
1421
|
+
template === "rubric" && steps.map((step, idx) => /* @__PURE__ */ jsxs3("div", { style: { marginBottom: 14 }, children: [
|
|
1422
|
+
/* @__PURE__ */ jsxs3(
|
|
1193
1423
|
"div",
|
|
1194
1424
|
{
|
|
1195
1425
|
style: {
|
|
@@ -1205,7 +1435,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1205
1435
|
]
|
|
1206
1436
|
}
|
|
1207
1437
|
),
|
|
1208
|
-
step.expectedResult && /* @__PURE__ */
|
|
1438
|
+
step.expectedResult && /* @__PURE__ */ jsx4(
|
|
1209
1439
|
"div",
|
|
1210
1440
|
{
|
|
1211
1441
|
style: {
|
|
@@ -1217,8 +1447,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1217
1447
|
children: step.expectedResult
|
|
1218
1448
|
}
|
|
1219
1449
|
),
|
|
1220
|
-
rubricMode === "pass_fail" ? /* @__PURE__ */
|
|
1221
|
-
/* @__PURE__ */
|
|
1450
|
+
rubricMode === "pass_fail" ? /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: 8, marginLeft: 16 }, children: [
|
|
1451
|
+
/* @__PURE__ */ jsx4(
|
|
1222
1452
|
"button",
|
|
1223
1453
|
{
|
|
1224
1454
|
type: "button",
|
|
@@ -1239,7 +1469,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1239
1469
|
children: "\u2713 Pass"
|
|
1240
1470
|
}
|
|
1241
1471
|
),
|
|
1242
|
-
/* @__PURE__ */
|
|
1472
|
+
/* @__PURE__ */ jsx4(
|
|
1243
1473
|
"button",
|
|
1244
1474
|
{
|
|
1245
1475
|
type: "button",
|
|
@@ -1260,7 +1490,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1260
1490
|
children: "\u2717 Fail"
|
|
1261
1491
|
}
|
|
1262
1492
|
)
|
|
1263
|
-
] }) : /* @__PURE__ */
|
|
1493
|
+
] }) : /* @__PURE__ */ jsx4("div", { style: { display: "flex", gap: 6, marginLeft: 16 }, children: [1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ jsx4(
|
|
1264
1494
|
"button",
|
|
1265
1495
|
{
|
|
1266
1496
|
type: "button",
|
|
@@ -1284,7 +1514,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1284
1514
|
n
|
|
1285
1515
|
)) })
|
|
1286
1516
|
] }, idx)),
|
|
1287
|
-
template === "freeform" && /* @__PURE__ */
|
|
1517
|
+
template === "freeform" && /* @__PURE__ */ jsxs3(
|
|
1288
1518
|
"div",
|
|
1289
1519
|
{
|
|
1290
1520
|
style: {
|
|
@@ -1294,15 +1524,15 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1294
1524
|
border: "1px solid #854d0e"
|
|
1295
1525
|
},
|
|
1296
1526
|
children: [
|
|
1297
|
-
/* @__PURE__ */
|
|
1298
|
-
/* @__PURE__ */
|
|
1299
|
-
/* @__PURE__ */
|
|
1300
|
-
/* @__PURE__ */
|
|
1527
|
+
/* @__PURE__ */ jsx4("div", { style: { fontSize: 14, color: "#fde68a", marginBottom: 6 }, children: "Review the area and note:" }),
|
|
1528
|
+
/* @__PURE__ */ jsx4("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 What works well" }),
|
|
1529
|
+
/* @__PURE__ */ jsx4("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 Issues or concerns" }),
|
|
1530
|
+
/* @__PURE__ */ jsx4("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 Suggestions" })
|
|
1301
1531
|
]
|
|
1302
1532
|
}
|
|
1303
1533
|
)
|
|
1304
1534
|
] }),
|
|
1305
|
-
testCase.expectedResult && /* @__PURE__ */
|
|
1535
|
+
testCase.expectedResult && /* @__PURE__ */ jsxs3(
|
|
1306
1536
|
"div",
|
|
1307
1537
|
{
|
|
1308
1538
|
style: {
|
|
@@ -1313,12 +1543,12 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1313
1543
|
marginBottom: 12
|
|
1314
1544
|
},
|
|
1315
1545
|
children: [
|
|
1316
|
-
/* @__PURE__ */
|
|
1317
|
-
/* @__PURE__ */
|
|
1546
|
+
/* @__PURE__ */ jsx4("div", { style: { fontSize: 13, fontWeight: 600, color: colors.green, marginBottom: 4 }, children: "\u2705 Expected Result" }),
|
|
1547
|
+
/* @__PURE__ */ jsx4("div", { style: { fontSize: 14, color: "#bbf7d0", lineHeight: "20px" }, children: testCase.expectedResult })
|
|
1318
1548
|
]
|
|
1319
1549
|
}
|
|
1320
1550
|
),
|
|
1321
|
-
testCase.targetRoute && onNavigate && /* @__PURE__ */
|
|
1551
|
+
testCase.targetRoute && onNavigate && /* @__PURE__ */ jsx4(
|
|
1322
1552
|
"button",
|
|
1323
1553
|
{
|
|
1324
1554
|
type: "button",
|
|
@@ -1340,7 +1570,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1340
1570
|
children: "\u{1F9ED} Go to test location"
|
|
1341
1571
|
}
|
|
1342
1572
|
),
|
|
1343
|
-
/* @__PURE__ */
|
|
1573
|
+
/* @__PURE__ */ jsxs3(
|
|
1344
1574
|
"button",
|
|
1345
1575
|
{
|
|
1346
1576
|
type: "button",
|
|
@@ -1364,7 +1594,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1364
1594
|
]
|
|
1365
1595
|
}
|
|
1366
1596
|
),
|
|
1367
|
-
showDetails && /* @__PURE__ */
|
|
1597
|
+
showDetails && /* @__PURE__ */ jsxs3(
|
|
1368
1598
|
"div",
|
|
1369
1599
|
{
|
|
1370
1600
|
style: {
|
|
@@ -1375,7 +1605,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1375
1605
|
marginBottom: 16
|
|
1376
1606
|
},
|
|
1377
1607
|
children: [
|
|
1378
|
-
testCase.testKey && /* @__PURE__ */
|
|
1608
|
+
testCase.testKey && /* @__PURE__ */ jsxs3(
|
|
1379
1609
|
"div",
|
|
1380
1610
|
{
|
|
1381
1611
|
style: {
|
|
@@ -1393,16 +1623,122 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1393
1623
|
]
|
|
1394
1624
|
}
|
|
1395
1625
|
),
|
|
1396
|
-
testCase.description && /* @__PURE__ */
|
|
1397
|
-
testCase.group && /* @__PURE__ */
|
|
1626
|
+
testCase.description && /* @__PURE__ */ jsx4("div", { style: { fontSize: 13, color: colors.textSecondary, lineHeight: "18px" }, children: testCase.description }),
|
|
1627
|
+
testCase.group && /* @__PURE__ */ jsx4("div", { style: { marginTop: 8 }, children: /* @__PURE__ */ jsxs3("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
|
|
1398
1628
|
"\u{1F4C1} ",
|
|
1399
1629
|
testCase.group.name
|
|
1400
1630
|
] }) })
|
|
1401
1631
|
]
|
|
1402
1632
|
}
|
|
1403
1633
|
),
|
|
1404
|
-
|
|
1405
|
-
/* @__PURE__ */
|
|
1634
|
+
displayedAssignment.status === "passed" || displayedAssignment.status === "failed" || displayedAssignment.status === "skipped" || displayedAssignment.status === "blocked" ? /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
1635
|
+
/* @__PURE__ */ jsxs3(
|
|
1636
|
+
"div",
|
|
1637
|
+
{
|
|
1638
|
+
style: {
|
|
1639
|
+
display: "flex",
|
|
1640
|
+
alignItems: "center",
|
|
1641
|
+
justifyContent: "center",
|
|
1642
|
+
gap: 6,
|
|
1643
|
+
padding: "8px 12px",
|
|
1644
|
+
borderRadius: 8,
|
|
1645
|
+
marginTop: 8,
|
|
1646
|
+
marginBottom: 8,
|
|
1647
|
+
backgroundColor: displayedAssignment.status === "passed" ? colors.greenDark : displayedAssignment.status === "failed" ? colors.redDark : colors.card,
|
|
1648
|
+
border: `1px solid ${displayedAssignment.status === "passed" ? colors.green : displayedAssignment.status === "failed" ? colors.red : colors.border}`
|
|
1649
|
+
},
|
|
1650
|
+
children: [
|
|
1651
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 14 }, children: displayedAssignment.status === "passed" ? "\u2705" : displayedAssignment.status === "failed" ? "\u274C" : displayedAssignment.status === "skipped" ? "\u23ED" : "\u{1F6AB}" }),
|
|
1652
|
+
/* @__PURE__ */ jsxs3(
|
|
1653
|
+
"span",
|
|
1654
|
+
{
|
|
1655
|
+
style: {
|
|
1656
|
+
fontSize: 13,
|
|
1657
|
+
fontWeight: 600,
|
|
1658
|
+
color: displayedAssignment.status === "passed" ? colors.green : displayedAssignment.status === "failed" ? "#fca5a5" : colors.textSecondary
|
|
1659
|
+
},
|
|
1660
|
+
children: [
|
|
1661
|
+
"Marked as ",
|
|
1662
|
+
displayedAssignment.status.charAt(0).toUpperCase() + displayedAssignment.status.slice(1)
|
|
1663
|
+
]
|
|
1664
|
+
}
|
|
1665
|
+
)
|
|
1666
|
+
]
|
|
1667
|
+
}
|
|
1668
|
+
),
|
|
1669
|
+
/* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: 10, marginTop: 4 }, children: [
|
|
1670
|
+
/* @__PURE__ */ jsx4(
|
|
1671
|
+
"button",
|
|
1672
|
+
{
|
|
1673
|
+
type: "button",
|
|
1674
|
+
onClick: handleReopen,
|
|
1675
|
+
disabled: isSubmitting,
|
|
1676
|
+
style: {
|
|
1677
|
+
flex: 1,
|
|
1678
|
+
paddingTop: 14,
|
|
1679
|
+
paddingBottom: 14,
|
|
1680
|
+
borderRadius: 12,
|
|
1681
|
+
textAlign: "center",
|
|
1682
|
+
backgroundColor: colors.card,
|
|
1683
|
+
border: `1px solid ${colors.blue}`,
|
|
1684
|
+
cursor: isSubmitting ? "not-allowed" : "pointer",
|
|
1685
|
+
fontSize: 14,
|
|
1686
|
+
fontWeight: 600,
|
|
1687
|
+
color: colors.blue,
|
|
1688
|
+
opacity: isSubmitting ? 0.5 : 1
|
|
1689
|
+
},
|
|
1690
|
+
children: isSubmitting ? "Reopening..." : "\u{1F504} Reopen Test"
|
|
1691
|
+
}
|
|
1692
|
+
),
|
|
1693
|
+
displayedAssignment.status === "passed" && /* @__PURE__ */ jsx4(
|
|
1694
|
+
"button",
|
|
1695
|
+
{
|
|
1696
|
+
type: "button",
|
|
1697
|
+
onClick: () => handleChangeResult("failed"),
|
|
1698
|
+
disabled: isSubmitting,
|
|
1699
|
+
style: {
|
|
1700
|
+
flex: 1,
|
|
1701
|
+
paddingTop: 14,
|
|
1702
|
+
paddingBottom: 14,
|
|
1703
|
+
borderRadius: 12,
|
|
1704
|
+
textAlign: "center",
|
|
1705
|
+
backgroundColor: colors.redDark,
|
|
1706
|
+
border: `1px solid ${colors.red}`,
|
|
1707
|
+
cursor: isSubmitting ? "not-allowed" : "pointer",
|
|
1708
|
+
fontSize: 14,
|
|
1709
|
+
fontWeight: 600,
|
|
1710
|
+
color: "#fca5a5",
|
|
1711
|
+
opacity: isSubmitting ? 0.5 : 1
|
|
1712
|
+
},
|
|
1713
|
+
children: "Change to Fail"
|
|
1714
|
+
}
|
|
1715
|
+
),
|
|
1716
|
+
displayedAssignment.status === "failed" && /* @__PURE__ */ jsx4(
|
|
1717
|
+
"button",
|
|
1718
|
+
{
|
|
1719
|
+
type: "button",
|
|
1720
|
+
onClick: () => handleChangeResult("passed"),
|
|
1721
|
+
disabled: isSubmitting,
|
|
1722
|
+
style: {
|
|
1723
|
+
flex: 1,
|
|
1724
|
+
paddingTop: 14,
|
|
1725
|
+
paddingBottom: 14,
|
|
1726
|
+
borderRadius: 12,
|
|
1727
|
+
textAlign: "center",
|
|
1728
|
+
backgroundColor: colors.greenDark,
|
|
1729
|
+
border: `1px solid ${colors.green}`,
|
|
1730
|
+
cursor: isSubmitting ? "not-allowed" : "pointer",
|
|
1731
|
+
fontSize: 14,
|
|
1732
|
+
fontWeight: 600,
|
|
1733
|
+
color: "#86efac",
|
|
1734
|
+
opacity: isSubmitting ? 0.5 : 1
|
|
1735
|
+
},
|
|
1736
|
+
children: "Change to Pass"
|
|
1737
|
+
}
|
|
1738
|
+
)
|
|
1739
|
+
] })
|
|
1740
|
+
] }) : /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: 10, marginTop: 8 }, children: [
|
|
1741
|
+
/* @__PURE__ */ jsx4(
|
|
1406
1742
|
"button",
|
|
1407
1743
|
{
|
|
1408
1744
|
type: "button",
|
|
@@ -1425,7 +1761,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1425
1761
|
children: isSubmitting ? "Failing..." : "Fail"
|
|
1426
1762
|
}
|
|
1427
1763
|
),
|
|
1428
|
-
/* @__PURE__ */
|
|
1764
|
+
/* @__PURE__ */ jsx4(
|
|
1429
1765
|
"button",
|
|
1430
1766
|
{
|
|
1431
1767
|
type: "button",
|
|
@@ -1448,7 +1784,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1448
1784
|
children: "Skip"
|
|
1449
1785
|
}
|
|
1450
1786
|
),
|
|
1451
|
-
/* @__PURE__ */
|
|
1787
|
+
/* @__PURE__ */ jsx4(
|
|
1452
1788
|
"button",
|
|
1453
1789
|
{
|
|
1454
1790
|
type: "button",
|
|
@@ -1472,7 +1808,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1472
1808
|
}
|
|
1473
1809
|
)
|
|
1474
1810
|
] }),
|
|
1475
|
-
showSkipModal && /* @__PURE__ */
|
|
1811
|
+
showSkipModal && /* @__PURE__ */ jsx4(
|
|
1476
1812
|
"div",
|
|
1477
1813
|
{
|
|
1478
1814
|
style: {
|
|
@@ -1485,7 +1821,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1485
1821
|
zIndex: 9999,
|
|
1486
1822
|
padding: 24
|
|
1487
1823
|
},
|
|
1488
|
-
children: /* @__PURE__ */
|
|
1824
|
+
children: /* @__PURE__ */ jsxs3(
|
|
1489
1825
|
"div",
|
|
1490
1826
|
{
|
|
1491
1827
|
style: {
|
|
@@ -1497,7 +1833,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1497
1833
|
width: "100%"
|
|
1498
1834
|
},
|
|
1499
1835
|
children: [
|
|
1500
|
-
/* @__PURE__ */
|
|
1836
|
+
/* @__PURE__ */ jsx4(
|
|
1501
1837
|
"div",
|
|
1502
1838
|
{
|
|
1503
1839
|
style: {
|
|
@@ -1509,8 +1845,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1509
1845
|
children: "Skip this test?"
|
|
1510
1846
|
}
|
|
1511
1847
|
),
|
|
1512
|
-
/* @__PURE__ */
|
|
1513
|
-
skipReasons.map(({ reason, label }) => /* @__PURE__ */
|
|
1848
|
+
/* @__PURE__ */ jsx4("div", { style: { fontSize: 14, color: colors.textMuted, marginBottom: 12 }, children: "Select a reason:" }),
|
|
1849
|
+
skipReasons.map(({ reason, label }) => /* @__PURE__ */ jsx4(
|
|
1514
1850
|
"button",
|
|
1515
1851
|
{
|
|
1516
1852
|
type: "button",
|
|
@@ -1536,7 +1872,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1536
1872
|
},
|
|
1537
1873
|
reason
|
|
1538
1874
|
)),
|
|
1539
|
-
/* @__PURE__ */
|
|
1875
|
+
/* @__PURE__ */ jsx4(
|
|
1540
1876
|
"textarea",
|
|
1541
1877
|
{
|
|
1542
1878
|
value: skipNotes,
|
|
@@ -1559,8 +1895,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1559
1895
|
}
|
|
1560
1896
|
}
|
|
1561
1897
|
),
|
|
1562
|
-
/* @__PURE__ */
|
|
1563
|
-
/* @__PURE__ */
|
|
1898
|
+
/* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: 10, marginTop: 14 }, children: [
|
|
1899
|
+
/* @__PURE__ */ jsx4(
|
|
1564
1900
|
"button",
|
|
1565
1901
|
{
|
|
1566
1902
|
type: "button",
|
|
@@ -1584,7 +1920,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1584
1920
|
children: "Cancel"
|
|
1585
1921
|
}
|
|
1586
1922
|
),
|
|
1587
|
-
/* @__PURE__ */
|
|
1923
|
+
/* @__PURE__ */ jsx4(
|
|
1588
1924
|
"button",
|
|
1589
1925
|
{
|
|
1590
1926
|
type: "button",
|
|
@@ -1618,11 +1954,15 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1618
1954
|
|
|
1619
1955
|
// src/widget/screens/TestListScreen.tsx
|
|
1620
1956
|
import { useState as useState3, useMemo, useCallback as useCallback3 } from "react";
|
|
1621
|
-
import { Fragment as Fragment2, jsx as
|
|
1957
|
+
import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1622
1958
|
function TestListScreen({ nav }) {
|
|
1623
|
-
const { assignments, currentAssignment, refreshAssignments } = useBugBear();
|
|
1959
|
+
const { assignments, currentAssignment, refreshAssignments, dashboardUrl, isLoading } = useBugBear();
|
|
1624
1960
|
const [filter, setFilter] = useState3("all");
|
|
1625
1961
|
const [roleFilter, setRoleFilter] = useState3(null);
|
|
1962
|
+
const [trackFilter, setTrackFilter] = useState3(null);
|
|
1963
|
+
const [platformFilter, setPlatformFilter] = useState3("web");
|
|
1964
|
+
const [searchQuery, setSearchQuery] = useState3("");
|
|
1965
|
+
const [sortMode, setSortMode] = useState3("priority");
|
|
1626
1966
|
const [collapsedFolders, setCollapsedFolders] = useState3(/* @__PURE__ */ new Set());
|
|
1627
1967
|
const availableRoles = useMemo(() => {
|
|
1628
1968
|
const roleMap = /* @__PURE__ */ new Map();
|
|
@@ -1631,6 +1971,20 @@ function TestListScreen({ nav }) {
|
|
|
1631
1971
|
}
|
|
1632
1972
|
return Array.from(roleMap.values());
|
|
1633
1973
|
}, [assignments]);
|
|
1974
|
+
const availableTracks = useMemo(() => {
|
|
1975
|
+
const trackMap = /* @__PURE__ */ new Map();
|
|
1976
|
+
for (const a of assignments) {
|
|
1977
|
+
if (a.testCase.track) trackMap.set(a.testCase.track.id, a.testCase.track);
|
|
1978
|
+
}
|
|
1979
|
+
return Array.from(trackMap.values());
|
|
1980
|
+
}, [assignments]);
|
|
1981
|
+
const availablePlatforms = useMemo(() => {
|
|
1982
|
+
const set = /* @__PURE__ */ new Set();
|
|
1983
|
+
for (const a of assignments) {
|
|
1984
|
+
if (a.testCase.platforms) a.testCase.platforms.forEach((p) => set.add(p));
|
|
1985
|
+
}
|
|
1986
|
+
return Array.from(set).sort();
|
|
1987
|
+
}, [assignments]);
|
|
1634
1988
|
const selectedRole = availableRoles.find((r) => r.id === roleFilter);
|
|
1635
1989
|
const groupedAssignments = useMemo(() => {
|
|
1636
1990
|
const groups = /* @__PURE__ */ new Map();
|
|
@@ -1664,6 +2018,12 @@ function TestListScreen({ nav }) {
|
|
|
1664
2018
|
folder.assignments.sort((a, b) => {
|
|
1665
2019
|
if (a.isVerification && !b.isVerification) return -1;
|
|
1666
2020
|
if (!a.isVerification && b.isVerification) return 1;
|
|
2021
|
+
if (sortMode === "alpha") {
|
|
2022
|
+
return a.testCase.title.localeCompare(b.testCase.title);
|
|
2023
|
+
}
|
|
2024
|
+
if (sortMode === "recent") {
|
|
2025
|
+
return 0;
|
|
2026
|
+
}
|
|
1667
2027
|
const sd = (statusOrder[a.status] ?? 5) - (statusOrder[b.status] ?? 5);
|
|
1668
2028
|
if (sd !== 0) return sd;
|
|
1669
2029
|
return (priorityOrder[a.testCase.priority] ?? 4) - (priorityOrder[b.testCase.priority] ?? 4);
|
|
@@ -1675,7 +2035,7 @@ function TestListScreen({ nav }) {
|
|
|
1675
2035
|
if (!b.group) return -1;
|
|
1676
2036
|
return a.group.sortOrder - b.group.sortOrder;
|
|
1677
2037
|
});
|
|
1678
|
-
}, [assignments]);
|
|
2038
|
+
}, [assignments, sortMode]);
|
|
1679
2039
|
const toggleFolder = useCallback3((id) => {
|
|
1680
2040
|
setCollapsedFolders((prev) => {
|
|
1681
2041
|
const next = new Set(prev);
|
|
@@ -1684,13 +2044,21 @@ function TestListScreen({ nav }) {
|
|
|
1684
2044
|
return next;
|
|
1685
2045
|
});
|
|
1686
2046
|
}, []);
|
|
1687
|
-
const filterAssignment = (a) => {
|
|
2047
|
+
const filterAssignment = useCallback3((a) => {
|
|
2048
|
+
if (platformFilter && a.testCase.platforms && !a.testCase.platforms.includes(platformFilter)) return false;
|
|
1688
2049
|
if (roleFilter && a.testCase.role?.id !== roleFilter) return false;
|
|
2050
|
+
if (trackFilter && a.testCase.track?.id !== trackFilter) return false;
|
|
2051
|
+
if (searchQuery) {
|
|
2052
|
+
const q = searchQuery.toLowerCase();
|
|
2053
|
+
const titleMatch = a.testCase.title.toLowerCase().includes(q);
|
|
2054
|
+
const keyMatch = a.testCase.testKey.toLowerCase().includes(q);
|
|
2055
|
+
if (!titleMatch && !keyMatch) return false;
|
|
2056
|
+
}
|
|
1689
2057
|
if (filter === "pending") return a.status === "pending" || a.status === "in_progress";
|
|
1690
2058
|
if (filter === "done") return a.status === "passed";
|
|
1691
2059
|
if (filter === "reopened") return a.status === "failed";
|
|
1692
2060
|
return true;
|
|
1693
|
-
};
|
|
2061
|
+
}, [platformFilter, roleFilter, trackFilter, searchQuery, filter]);
|
|
1694
2062
|
const pendingCount = assignments.filter(
|
|
1695
2063
|
(a) => a.status === "pending" || a.status === "in_progress"
|
|
1696
2064
|
).length;
|
|
@@ -1702,8 +2070,9 @@ function TestListScreen({ nav }) {
|
|
|
1702
2070
|
{ key: "done", label: "Done", count: doneCount },
|
|
1703
2071
|
{ key: "reopened", label: "Re Opened", count: reopenedCount }
|
|
1704
2072
|
];
|
|
1705
|
-
return /* @__PURE__ */
|
|
1706
|
-
|
|
2073
|
+
if (isLoading) return /* @__PURE__ */ jsx5(TestListScreenSkeleton, {});
|
|
2074
|
+
return /* @__PURE__ */ jsxs4("div", { children: [
|
|
2075
|
+
/* @__PURE__ */ jsx5("div", { style: { display: "flex", gap: 8, marginBottom: availableRoles.length >= 2 ? 8 : 16 }, children: filters.map((f) => /* @__PURE__ */ jsxs4(
|
|
1707
2076
|
"button",
|
|
1708
2077
|
{
|
|
1709
2078
|
type: "button",
|
|
@@ -1730,9 +2099,9 @@ function TestListScreen({ nav }) {
|
|
|
1730
2099
|
},
|
|
1731
2100
|
f.key
|
|
1732
2101
|
)) }),
|
|
1733
|
-
availableRoles.length >= 2 && /* @__PURE__ */
|
|
1734
|
-
/* @__PURE__ */
|
|
1735
|
-
/* @__PURE__ */
|
|
2102
|
+
availableRoles.length >= 2 && /* @__PURE__ */ jsxs4("div", { style: { marginBottom: 12 }, children: [
|
|
2103
|
+
/* @__PURE__ */ jsxs4("div", { style: { display: "flex", gap: 6, flexWrap: "wrap", marginBottom: selectedRole?.loginHint ? 8 : 0 }, children: [
|
|
2104
|
+
/* @__PURE__ */ jsx5(
|
|
1736
2105
|
"button",
|
|
1737
2106
|
{
|
|
1738
2107
|
type: "button",
|
|
@@ -1755,7 +2124,7 @@ function TestListScreen({ nav }) {
|
|
|
1755
2124
|
),
|
|
1756
2125
|
availableRoles.map((role) => {
|
|
1757
2126
|
const isActive = roleFilter === role.id;
|
|
1758
|
-
return /* @__PURE__ */
|
|
2127
|
+
return /* @__PURE__ */ jsxs4(
|
|
1759
2128
|
"button",
|
|
1760
2129
|
{
|
|
1761
2130
|
type: "button",
|
|
@@ -1777,7 +2146,7 @@ function TestListScreen({ nav }) {
|
|
|
1777
2146
|
fontWeight: isActive ? 600 : 400
|
|
1778
2147
|
},
|
|
1779
2148
|
children: [
|
|
1780
|
-
/* @__PURE__ */
|
|
2149
|
+
/* @__PURE__ */ jsx5("span", { style: {
|
|
1781
2150
|
width: 6,
|
|
1782
2151
|
height: 6,
|
|
1783
2152
|
borderRadius: 3,
|
|
@@ -1791,7 +2160,7 @@ function TestListScreen({ nav }) {
|
|
|
1791
2160
|
);
|
|
1792
2161
|
})
|
|
1793
2162
|
] }),
|
|
1794
|
-
selectedRole?.loginHint && /* @__PURE__ */
|
|
2163
|
+
selectedRole?.loginHint && /* @__PURE__ */ jsxs4("div", { style: {
|
|
1795
2164
|
fontSize: 11,
|
|
1796
2165
|
color: colors.textSecondary,
|
|
1797
2166
|
backgroundColor: selectedRole.color + "10",
|
|
@@ -1803,6 +2172,156 @@ function TestListScreen({ nav }) {
|
|
|
1803
2172
|
selectedRole.loginHint
|
|
1804
2173
|
] })
|
|
1805
2174
|
] }),
|
|
2175
|
+
/* @__PURE__ */ jsx5("div", { style: { marginBottom: 8 }, children: /* @__PURE__ */ jsx5(
|
|
2176
|
+
"input",
|
|
2177
|
+
{
|
|
2178
|
+
type: "text",
|
|
2179
|
+
value: searchQuery,
|
|
2180
|
+
onChange: (e) => setSearchQuery(e.target.value),
|
|
2181
|
+
placeholder: "Search tests...",
|
|
2182
|
+
style: {
|
|
2183
|
+
width: "100%",
|
|
2184
|
+
padding: "8px 12px",
|
|
2185
|
+
borderRadius: 8,
|
|
2186
|
+
border: `1px solid ${colors.border}`,
|
|
2187
|
+
backgroundColor: colors.card,
|
|
2188
|
+
color: colors.textPrimary,
|
|
2189
|
+
fontSize: 13,
|
|
2190
|
+
outline: "none",
|
|
2191
|
+
boxSizing: "border-box"
|
|
2192
|
+
}
|
|
2193
|
+
}
|
|
2194
|
+
) }),
|
|
2195
|
+
availablePlatforms.length >= 2 && /* @__PURE__ */ jsxs4("div", { style: { display: "flex", gap: 4, marginBottom: 8 }, children: [
|
|
2196
|
+
/* @__PURE__ */ jsx5(
|
|
2197
|
+
"button",
|
|
2198
|
+
{
|
|
2199
|
+
type: "button",
|
|
2200
|
+
onClick: () => setPlatformFilter(null),
|
|
2201
|
+
style: {
|
|
2202
|
+
padding: "3px 8px",
|
|
2203
|
+
borderRadius: 6,
|
|
2204
|
+
backgroundColor: !platformFilter ? colors.card : "transparent",
|
|
2205
|
+
border: !platformFilter ? `1px solid ${colors.border}` : "1px solid transparent",
|
|
2206
|
+
cursor: "pointer",
|
|
2207
|
+
fontSize: 11,
|
|
2208
|
+
color: !platformFilter ? colors.textPrimary : colors.textMuted,
|
|
2209
|
+
fontWeight: !platformFilter ? 600 : 400,
|
|
2210
|
+
whiteSpace: "nowrap"
|
|
2211
|
+
},
|
|
2212
|
+
children: "All Platforms"
|
|
2213
|
+
}
|
|
2214
|
+
),
|
|
2215
|
+
availablePlatforms.map((p) => {
|
|
2216
|
+
const isActive = platformFilter === p;
|
|
2217
|
+
const label = p === "ios" ? "iOS" : p === "android" ? "Android" : p === "web" ? "Web" : p;
|
|
2218
|
+
const icon = p === "ios" ? "\u{1F4F1}" : p === "android" ? "\u{1F916}" : p === "web" ? "\u{1F310}" : "\u{1F4CB}";
|
|
2219
|
+
return /* @__PURE__ */ jsxs4(
|
|
2220
|
+
"button",
|
|
2221
|
+
{
|
|
2222
|
+
type: "button",
|
|
2223
|
+
onClick: () => setPlatformFilter(isActive ? null : p),
|
|
2224
|
+
style: {
|
|
2225
|
+
display: "flex",
|
|
2226
|
+
alignItems: "center",
|
|
2227
|
+
gap: 4,
|
|
2228
|
+
padding: "3px 8px",
|
|
2229
|
+
borderRadius: 6,
|
|
2230
|
+
backgroundColor: isActive ? colors.blue + "20" : "transparent",
|
|
2231
|
+
border: isActive ? `1px solid ${colors.blue}60` : "1px solid transparent",
|
|
2232
|
+
cursor: "pointer",
|
|
2233
|
+
fontSize: 11,
|
|
2234
|
+
color: isActive ? colors.blue : colors.textMuted,
|
|
2235
|
+
fontWeight: isActive ? 600 : 400,
|
|
2236
|
+
whiteSpace: "nowrap"
|
|
2237
|
+
},
|
|
2238
|
+
children: [
|
|
2239
|
+
icon,
|
|
2240
|
+
" ",
|
|
2241
|
+
label
|
|
2242
|
+
]
|
|
2243
|
+
},
|
|
2244
|
+
p
|
|
2245
|
+
);
|
|
2246
|
+
})
|
|
2247
|
+
] }),
|
|
2248
|
+
(availableTracks.length >= 2 || true) && /* @__PURE__ */ jsxs4("div", { style: { display: "flex", alignItems: "center", gap: 6, marginBottom: 12 }, children: [
|
|
2249
|
+
availableTracks.length >= 2 && /* @__PURE__ */ jsxs4("div", { style: { display: "flex", gap: 4, flex: 1, overflow: "auto" }, children: [
|
|
2250
|
+
/* @__PURE__ */ jsx5(
|
|
2251
|
+
"button",
|
|
2252
|
+
{
|
|
2253
|
+
type: "button",
|
|
2254
|
+
onClick: () => setTrackFilter(null),
|
|
2255
|
+
style: {
|
|
2256
|
+
padding: "3px 8px",
|
|
2257
|
+
borderRadius: 6,
|
|
2258
|
+
backgroundColor: !trackFilter ? colors.card : "transparent",
|
|
2259
|
+
border: !trackFilter ? `1px solid ${colors.border}` : "1px solid transparent",
|
|
2260
|
+
cursor: "pointer",
|
|
2261
|
+
fontSize: 11,
|
|
2262
|
+
color: !trackFilter ? colors.textPrimary : colors.textMuted,
|
|
2263
|
+
fontWeight: !trackFilter ? 600 : 400,
|
|
2264
|
+
whiteSpace: "nowrap"
|
|
2265
|
+
},
|
|
2266
|
+
children: "All Tracks"
|
|
2267
|
+
}
|
|
2268
|
+
),
|
|
2269
|
+
availableTracks.map((track) => {
|
|
2270
|
+
const isActive = trackFilter === track.id;
|
|
2271
|
+
return /* @__PURE__ */ jsxs4(
|
|
2272
|
+
"button",
|
|
2273
|
+
{
|
|
2274
|
+
type: "button",
|
|
2275
|
+
onClick: () => setTrackFilter(isActive ? null : track.id),
|
|
2276
|
+
style: {
|
|
2277
|
+
display: "flex",
|
|
2278
|
+
alignItems: "center",
|
|
2279
|
+
gap: 4,
|
|
2280
|
+
padding: "3px 8px",
|
|
2281
|
+
borderRadius: 6,
|
|
2282
|
+
backgroundColor: isActive ? track.color + "20" : "transparent",
|
|
2283
|
+
border: isActive ? `1px solid ${track.color}60` : "1px solid transparent",
|
|
2284
|
+
cursor: "pointer",
|
|
2285
|
+
fontSize: 11,
|
|
2286
|
+
color: isActive ? track.color : colors.textMuted,
|
|
2287
|
+
fontWeight: isActive ? 600 : 400,
|
|
2288
|
+
whiteSpace: "nowrap"
|
|
2289
|
+
},
|
|
2290
|
+
children: [
|
|
2291
|
+
track.icon,
|
|
2292
|
+
" ",
|
|
2293
|
+
track.name
|
|
2294
|
+
]
|
|
2295
|
+
},
|
|
2296
|
+
track.id
|
|
2297
|
+
);
|
|
2298
|
+
})
|
|
2299
|
+
] }),
|
|
2300
|
+
/* @__PURE__ */ jsx5("div", { style: { display: "flex", gap: 2, marginLeft: "auto", flexShrink: 0 }, children: [
|
|
2301
|
+
{ key: "priority", label: "\u2195 Priority" },
|
|
2302
|
+
{ key: "recent", label: "\u{1F550} Recent" },
|
|
2303
|
+
{ key: "alpha", label: "A-Z" }
|
|
2304
|
+
].map((s) => /* @__PURE__ */ jsx5(
|
|
2305
|
+
"button",
|
|
2306
|
+
{
|
|
2307
|
+
type: "button",
|
|
2308
|
+
onClick: () => setSortMode(s.key),
|
|
2309
|
+
style: {
|
|
2310
|
+
padding: "3px 8px",
|
|
2311
|
+
borderRadius: 6,
|
|
2312
|
+
backgroundColor: sortMode === s.key ? colors.card : "transparent",
|
|
2313
|
+
border: sortMode === s.key ? `1px solid ${colors.border}` : "1px solid transparent",
|
|
2314
|
+
cursor: "pointer",
|
|
2315
|
+
fontSize: 10,
|
|
2316
|
+
color: sortMode === s.key ? colors.textPrimary : colors.textMuted,
|
|
2317
|
+
fontWeight: sortMode === s.key ? 600 : 400,
|
|
2318
|
+
whiteSpace: "nowrap"
|
|
2319
|
+
},
|
|
2320
|
+
children: s.label
|
|
2321
|
+
},
|
|
2322
|
+
s.key
|
|
2323
|
+
)) })
|
|
2324
|
+
] }),
|
|
1806
2325
|
groupedAssignments.map((folder) => {
|
|
1807
2326
|
const folderId = folder.group?.id || "ungrouped";
|
|
1808
2327
|
const isCollapsed = collapsedFolders.has(folderId);
|
|
@@ -1810,8 +2329,8 @@ function TestListScreen({ nav }) {
|
|
|
1810
2329
|
if (filtered.length === 0 && filter !== "all") return null;
|
|
1811
2330
|
const completedInFolder = folder.stats.passed + folder.stats.failed;
|
|
1812
2331
|
const progressPercent = folder.stats.total > 0 ? Math.round(completedInFolder / folder.stats.total * 100) : 0;
|
|
1813
|
-
return /* @__PURE__ */
|
|
1814
|
-
/* @__PURE__ */
|
|
2332
|
+
return /* @__PURE__ */ jsxs4("div", { style: { marginBottom: 12 }, children: [
|
|
2333
|
+
/* @__PURE__ */ jsxs4(
|
|
1815
2334
|
"button",
|
|
1816
2335
|
{
|
|
1817
2336
|
type: "button",
|
|
@@ -1831,8 +2350,8 @@ function TestListScreen({ nav }) {
|
|
|
1831
2350
|
textAlign: "left"
|
|
1832
2351
|
},
|
|
1833
2352
|
children: [
|
|
1834
|
-
/* @__PURE__ */
|
|
1835
|
-
/* @__PURE__ */
|
|
2353
|
+
/* @__PURE__ */ jsx5("span", { style: { fontSize: 10, color: colors.textMuted, width: 14 }, children: isCollapsed ? "\u25B6" : "\u25BC" }),
|
|
2354
|
+
/* @__PURE__ */ jsx5(
|
|
1836
2355
|
"span",
|
|
1837
2356
|
{
|
|
1838
2357
|
style: {
|
|
@@ -1847,7 +2366,7 @@ function TestListScreen({ nav }) {
|
|
|
1847
2366
|
children: folder.group?.name || "Ungrouped"
|
|
1848
2367
|
}
|
|
1849
2368
|
),
|
|
1850
|
-
/* @__PURE__ */
|
|
2369
|
+
/* @__PURE__ */ jsx5(
|
|
1851
2370
|
"div",
|
|
1852
2371
|
{
|
|
1853
2372
|
style: {
|
|
@@ -1858,7 +2377,7 @@ function TestListScreen({ nav }) {
|
|
|
1858
2377
|
overflow: "hidden",
|
|
1859
2378
|
flexShrink: 0
|
|
1860
2379
|
},
|
|
1861
|
-
children: /* @__PURE__ */
|
|
2380
|
+
children: /* @__PURE__ */ jsx5(
|
|
1862
2381
|
"div",
|
|
1863
2382
|
{
|
|
1864
2383
|
style: {
|
|
@@ -1872,7 +2391,7 @@ function TestListScreen({ nav }) {
|
|
|
1872
2391
|
)
|
|
1873
2392
|
}
|
|
1874
2393
|
),
|
|
1875
|
-
/* @__PURE__ */
|
|
2394
|
+
/* @__PURE__ */ jsxs4(
|
|
1876
2395
|
"span",
|
|
1877
2396
|
{
|
|
1878
2397
|
style: {
|
|
@@ -1896,7 +2415,7 @@ function TestListScreen({ nav }) {
|
|
|
1896
2415
|
const badge = getStatusBadge(assignment.status);
|
|
1897
2416
|
const isCurrent = currentAssignment?.id === assignment.id;
|
|
1898
2417
|
const priorityColor = assignment.testCase.priority === "P0" ? colors.red : assignment.testCase.priority === "P1" ? colors.orange : colors.textDim;
|
|
1899
|
-
return /* @__PURE__ */
|
|
2418
|
+
return /* @__PURE__ */ jsxs4(
|
|
1900
2419
|
"button",
|
|
1901
2420
|
{
|
|
1902
2421
|
type: "button",
|
|
@@ -1918,9 +2437,9 @@ function TestListScreen({ nav }) {
|
|
|
1918
2437
|
textAlign: "left"
|
|
1919
2438
|
},
|
|
1920
2439
|
children: [
|
|
1921
|
-
/* @__PURE__ */
|
|
1922
|
-
/* @__PURE__ */
|
|
1923
|
-
/* @__PURE__ */
|
|
2440
|
+
/* @__PURE__ */ jsx5("span", { style: { fontSize: 16, marginRight: 10, width: 20, flexShrink: 0 }, children: badge.icon }),
|
|
2441
|
+
/* @__PURE__ */ jsxs4("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
2442
|
+
/* @__PURE__ */ jsx5(
|
|
1924
2443
|
"div",
|
|
1925
2444
|
{
|
|
1926
2445
|
style: {
|
|
@@ -1934,9 +2453,9 @@ function TestListScreen({ nav }) {
|
|
|
1934
2453
|
children: assignment.testCase.title
|
|
1935
2454
|
}
|
|
1936
2455
|
),
|
|
1937
|
-
/* @__PURE__ */
|
|
1938
|
-
assignment.isVerification && /* @__PURE__ */
|
|
1939
|
-
/* @__PURE__ */
|
|
2456
|
+
/* @__PURE__ */ jsxs4("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [
|
|
2457
|
+
assignment.isVerification && /* @__PURE__ */ jsxs4(Fragment2, { children: [
|
|
2458
|
+
/* @__PURE__ */ jsx5(
|
|
1940
2459
|
"span",
|
|
1941
2460
|
{
|
|
1942
2461
|
style: {
|
|
@@ -1951,9 +2470,9 @@ function TestListScreen({ nav }) {
|
|
|
1951
2470
|
children: "Retest"
|
|
1952
2471
|
}
|
|
1953
2472
|
),
|
|
1954
|
-
/* @__PURE__ */
|
|
2473
|
+
/* @__PURE__ */ jsx5("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" })
|
|
1955
2474
|
] }),
|
|
1956
|
-
/* @__PURE__ */
|
|
2475
|
+
/* @__PURE__ */ jsx5(
|
|
1957
2476
|
"span",
|
|
1958
2477
|
{
|
|
1959
2478
|
style: {
|
|
@@ -1964,8 +2483,8 @@ function TestListScreen({ nav }) {
|
|
|
1964
2483
|
children: assignment.testCase.testKey
|
|
1965
2484
|
}
|
|
1966
2485
|
),
|
|
1967
|
-
/* @__PURE__ */
|
|
1968
|
-
/* @__PURE__ */
|
|
2486
|
+
/* @__PURE__ */ jsx5("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" }),
|
|
2487
|
+
/* @__PURE__ */ jsx5(
|
|
1969
2488
|
"span",
|
|
1970
2489
|
{
|
|
1971
2490
|
style: {
|
|
@@ -1976,9 +2495,9 @@ function TestListScreen({ nav }) {
|
|
|
1976
2495
|
children: assignment.testCase.priority
|
|
1977
2496
|
}
|
|
1978
2497
|
),
|
|
1979
|
-
assignment.testCase.role && /* @__PURE__ */
|
|
1980
|
-
/* @__PURE__ */
|
|
1981
|
-
/* @__PURE__ */
|
|
2498
|
+
assignment.testCase.role && /* @__PURE__ */ jsxs4(Fragment2, { children: [
|
|
2499
|
+
/* @__PURE__ */ jsx5("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" }),
|
|
2500
|
+
/* @__PURE__ */ jsxs4("span", { style: {
|
|
1982
2501
|
display: "inline-flex",
|
|
1983
2502
|
alignItems: "center",
|
|
1984
2503
|
gap: 3,
|
|
@@ -1986,7 +2505,7 @@ function TestListScreen({ nav }) {
|
|
|
1986
2505
|
color: assignment.testCase.role.color,
|
|
1987
2506
|
fontWeight: 500
|
|
1988
2507
|
}, children: [
|
|
1989
|
-
/* @__PURE__ */
|
|
2508
|
+
/* @__PURE__ */ jsx5("span", { style: {
|
|
1990
2509
|
width: 5,
|
|
1991
2510
|
height: 5,
|
|
1992
2511
|
borderRadius: 3,
|
|
@@ -1997,7 +2516,7 @@ function TestListScreen({ nav }) {
|
|
|
1997
2516
|
] })
|
|
1998
2517
|
] })
|
|
1999
2518
|
] }),
|
|
2000
|
-
/* @__PURE__ */
|
|
2519
|
+
/* @__PURE__ */ jsx5(
|
|
2001
2520
|
"span",
|
|
2002
2521
|
{
|
|
2003
2522
|
style: {
|
|
@@ -2024,7 +2543,7 @@ function TestListScreen({ nav }) {
|
|
|
2024
2543
|
groupedAssignments.every((folder) => {
|
|
2025
2544
|
const filtered = folder.assignments.filter(filterAssignment);
|
|
2026
2545
|
return filtered.length === 0;
|
|
2027
|
-
}) && /* @__PURE__ */
|
|
2546
|
+
}) && /* @__PURE__ */ jsxs4(
|
|
2028
2547
|
"div",
|
|
2029
2548
|
{
|
|
2030
2549
|
style: {
|
|
@@ -2034,12 +2553,32 @@ function TestListScreen({ nav }) {
|
|
|
2034
2553
|
padding: 32
|
|
2035
2554
|
},
|
|
2036
2555
|
children: [
|
|
2037
|
-
/* @__PURE__ */
|
|
2038
|
-
/* @__PURE__ */
|
|
2556
|
+
/* @__PURE__ */ jsx5("span", { style: { fontSize: 32, marginBottom: 8 }, children: filter === "pending" ? "\u{1F389}" : filter === "reopened" ? "\u{1F44D}" : "\u{1F4CB}" }),
|
|
2557
|
+
/* @__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
2558
|
]
|
|
2040
2559
|
}
|
|
2041
2560
|
),
|
|
2042
|
-
|
|
2561
|
+
dashboardUrl && /* @__PURE__ */ jsx5(
|
|
2562
|
+
"a",
|
|
2563
|
+
{
|
|
2564
|
+
href: `${dashboardUrl}/test-cases`,
|
|
2565
|
+
target: "_blank",
|
|
2566
|
+
rel: "noopener noreferrer",
|
|
2567
|
+
style: {
|
|
2568
|
+
display: "flex",
|
|
2569
|
+
alignItems: "center",
|
|
2570
|
+
justifyContent: "center",
|
|
2571
|
+
gap: 6,
|
|
2572
|
+
paddingTop: 12,
|
|
2573
|
+
fontSize: 13,
|
|
2574
|
+
fontWeight: 500,
|
|
2575
|
+
color: colors.blue,
|
|
2576
|
+
textDecoration: "none"
|
|
2577
|
+
},
|
|
2578
|
+
children: "\u{1F310} Manage on Dashboard \u2192"
|
|
2579
|
+
}
|
|
2580
|
+
),
|
|
2581
|
+
/* @__PURE__ */ jsx5("div", { style: { display: "flex", justifyContent: "center", paddingTop: 8, paddingBottom: 8 }, children: /* @__PURE__ */ jsx5(
|
|
2043
2582
|
"button",
|
|
2044
2583
|
{
|
|
2045
2584
|
type: "button",
|
|
@@ -2135,13 +2674,13 @@ function useImageAttachments(uploadFn, maxImages, bucket = "screenshots") {
|
|
|
2135
2674
|
}
|
|
2136
2675
|
|
|
2137
2676
|
// src/widget/ImagePreviewStrip.tsx
|
|
2138
|
-
import { jsx as
|
|
2677
|
+
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
2139
2678
|
function ImagePreviewStrip({ images, onRemove }) {
|
|
2140
2679
|
if (images.length === 0) return null;
|
|
2141
|
-
return /* @__PURE__ */
|
|
2142
|
-
images.map((img) => /* @__PURE__ */
|
|
2143
|
-
/* @__PURE__ */
|
|
2144
|
-
img.status === "uploading" && /* @__PURE__ */
|
|
2680
|
+
return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", gap: 8, overflowX: "auto", paddingTop: 4 }, children: [
|
|
2681
|
+
images.map((img) => /* @__PURE__ */ jsxs5("div", { style: { position: "relative", width: 64, height: 64, flexShrink: 0, borderRadius: 8, overflow: "hidden" }, children: [
|
|
2682
|
+
/* @__PURE__ */ jsx6("img", { src: img.localUri, alt: img.name, style: { width: 64, height: 64, objectFit: "cover", borderRadius: 8 } }),
|
|
2683
|
+
img.status === "uploading" && /* @__PURE__ */ jsx6("div", { style: {
|
|
2145
2684
|
position: "absolute",
|
|
2146
2685
|
inset: 0,
|
|
2147
2686
|
backgroundColor: "rgba(0,0,0,0.5)",
|
|
@@ -2149,7 +2688,7 @@ function ImagePreviewStrip({ images, onRemove }) {
|
|
|
2149
2688
|
alignItems: "center",
|
|
2150
2689
|
justifyContent: "center",
|
|
2151
2690
|
borderRadius: 8
|
|
2152
|
-
}, children: /* @__PURE__ */
|
|
2691
|
+
}, children: /* @__PURE__ */ jsx6("div", { style: {
|
|
2153
2692
|
width: 16,
|
|
2154
2693
|
height: 16,
|
|
2155
2694
|
border: "2px solid #fff",
|
|
@@ -2157,7 +2696,7 @@ function ImagePreviewStrip({ images, onRemove }) {
|
|
|
2157
2696
|
borderRadius: "50%",
|
|
2158
2697
|
animation: "bb-spin 0.6s linear infinite"
|
|
2159
2698
|
} }) }),
|
|
2160
|
-
img.status === "error" && /* @__PURE__ */
|
|
2699
|
+
img.status === "error" && /* @__PURE__ */ jsx6("div", { style: {
|
|
2161
2700
|
position: "absolute",
|
|
2162
2701
|
inset: 0,
|
|
2163
2702
|
backgroundColor: "rgba(127,29,29,0.7)",
|
|
@@ -2165,8 +2704,8 @@ function ImagePreviewStrip({ images, onRemove }) {
|
|
|
2165
2704
|
alignItems: "center",
|
|
2166
2705
|
justifyContent: "center",
|
|
2167
2706
|
borderRadius: 8
|
|
2168
|
-
}, children: /* @__PURE__ */
|
|
2169
|
-
/* @__PURE__ */
|
|
2707
|
+
}, children: /* @__PURE__ */ jsx6("span", { style: { color: "#fca5a5", fontSize: 18, fontWeight: "bold" }, children: "!" }) }),
|
|
2708
|
+
/* @__PURE__ */ jsx6(
|
|
2170
2709
|
"button",
|
|
2171
2710
|
{
|
|
2172
2711
|
type: "button",
|
|
@@ -2193,18 +2732,18 @@ function ImagePreviewStrip({ images, onRemove }) {
|
|
|
2193
2732
|
}
|
|
2194
2733
|
)
|
|
2195
2734
|
] }, img.id)),
|
|
2196
|
-
/* @__PURE__ */
|
|
2735
|
+
/* @__PURE__ */ jsx6("style", { children: `@keyframes bb-spin { to { transform: rotate(360deg); } }` })
|
|
2197
2736
|
] });
|
|
2198
2737
|
}
|
|
2199
2738
|
|
|
2200
2739
|
// src/widget/ImagePickerButtons.tsx
|
|
2201
|
-
import { jsx as
|
|
2740
|
+
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
2202
2741
|
function ImagePickerButtons({ images, maxImages, onPickGallery, onPickCamera, onRemove, label }) {
|
|
2203
2742
|
const disabled = images.length >= maxImages;
|
|
2204
|
-
return /* @__PURE__ */
|
|
2205
|
-
label && /* @__PURE__ */
|
|
2206
|
-
/* @__PURE__ */
|
|
2207
|
-
/* @__PURE__ */
|
|
2743
|
+
return /* @__PURE__ */ jsxs6("div", { style: { marginTop: 12, marginBottom: 4 }, children: [
|
|
2744
|
+
label && /* @__PURE__ */ jsx7("div", { style: { fontSize: 14, fontWeight: 500, color: "#e4e4e7", marginBottom: 8 }, children: label }),
|
|
2745
|
+
/* @__PURE__ */ jsxs6("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 8 }, children: [
|
|
2746
|
+
/* @__PURE__ */ jsx7(
|
|
2208
2747
|
"button",
|
|
2209
2748
|
{
|
|
2210
2749
|
type: "button",
|
|
@@ -2225,7 +2764,7 @@ function ImagePickerButtons({ images, maxImages, onPickGallery, onPickCamera, on
|
|
|
2225
2764
|
children: "Gallery"
|
|
2226
2765
|
}
|
|
2227
2766
|
),
|
|
2228
|
-
/* @__PURE__ */
|
|
2767
|
+
/* @__PURE__ */ jsx7(
|
|
2229
2768
|
"button",
|
|
2230
2769
|
{
|
|
2231
2770
|
type: "button",
|
|
@@ -2246,18 +2785,18 @@ function ImagePickerButtons({ images, maxImages, onPickGallery, onPickCamera, on
|
|
|
2246
2785
|
children: "Camera"
|
|
2247
2786
|
}
|
|
2248
2787
|
),
|
|
2249
|
-
/* @__PURE__ */
|
|
2788
|
+
/* @__PURE__ */ jsxs6("span", { style: { fontSize: 12, color: colors.textDim, marginLeft: 4 }, children: [
|
|
2250
2789
|
images.length,
|
|
2251
2790
|
"/",
|
|
2252
2791
|
maxImages
|
|
2253
2792
|
] })
|
|
2254
2793
|
] }),
|
|
2255
|
-
/* @__PURE__ */
|
|
2794
|
+
/* @__PURE__ */ jsx7(ImagePreviewStrip, { images, onRemove })
|
|
2256
2795
|
] });
|
|
2257
2796
|
}
|
|
2258
2797
|
|
|
2259
2798
|
// src/widget/screens/TestFeedbackScreen.tsx
|
|
2260
|
-
import { jsx as
|
|
2799
|
+
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2261
2800
|
function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
2262
2801
|
const { client, assignments, refreshAssignments, uploadImage } = useBugBear();
|
|
2263
2802
|
const images = useImageAttachments(uploadImage, 3, "screenshots");
|
|
@@ -2326,10 +2865,10 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2326
2865
|
{ key: "stepsUnclear", label: "Steps are unclear" },
|
|
2327
2866
|
{ key: "expectedResultUnclear", label: "Expected result unclear" }
|
|
2328
2867
|
];
|
|
2329
|
-
return /* @__PURE__ */
|
|
2330
|
-
/* @__PURE__ */
|
|
2331
|
-
/* @__PURE__ */
|
|
2332
|
-
/* @__PURE__ */
|
|
2868
|
+
return /* @__PURE__ */ jsxs7("div", { style: styles.container, children: [
|
|
2869
|
+
/* @__PURE__ */ jsx8("div", { style: styles.header, children: status === "passed" ? "\u2705 Test Passed!" : "\u274C Test Failed" }),
|
|
2870
|
+
/* @__PURE__ */ jsx8("div", { style: styles.subheader, children: "Rate this test case" }),
|
|
2871
|
+
/* @__PURE__ */ jsx8("div", { style: styles.starRow, children: [1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ jsx8(
|
|
2333
2872
|
"button",
|
|
2334
2873
|
{
|
|
2335
2874
|
onClick: () => setRating(n),
|
|
@@ -2341,9 +2880,9 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2341
2880
|
},
|
|
2342
2881
|
n
|
|
2343
2882
|
)) }),
|
|
2344
|
-
showFlags && /* @__PURE__ */
|
|
2345
|
-
/* @__PURE__ */
|
|
2346
|
-
flagOptions.map(({ key, label }) => /* @__PURE__ */
|
|
2883
|
+
showFlags && /* @__PURE__ */ jsxs7("div", { style: styles.flagsSection, children: [
|
|
2884
|
+
/* @__PURE__ */ jsx8("div", { style: styles.flagsLabel, children: "What could be improved?" }),
|
|
2885
|
+
flagOptions.map(({ key, label }) => /* @__PURE__ */ jsxs7(
|
|
2347
2886
|
"button",
|
|
2348
2887
|
{
|
|
2349
2888
|
onClick: () => toggleFlag(key),
|
|
@@ -2352,17 +2891,17 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2352
2891
|
...flags[key] ? styles.flagItemActive : {}
|
|
2353
2892
|
},
|
|
2354
2893
|
children: [
|
|
2355
|
-
/* @__PURE__ */
|
|
2894
|
+
/* @__PURE__ */ jsx8(
|
|
2356
2895
|
"div",
|
|
2357
2896
|
{
|
|
2358
2897
|
style: {
|
|
2359
2898
|
...styles.flagCheck,
|
|
2360
2899
|
...flags[key] ? styles.flagCheckActive : {}
|
|
2361
2900
|
},
|
|
2362
|
-
children: flags[key] && /* @__PURE__ */
|
|
2901
|
+
children: flags[key] && /* @__PURE__ */ jsx8("span", { style: styles.flagCheckmark, children: "\u2713" })
|
|
2363
2902
|
}
|
|
2364
2903
|
),
|
|
2365
|
-
/* @__PURE__ */
|
|
2904
|
+
/* @__PURE__ */ jsx8(
|
|
2366
2905
|
"span",
|
|
2367
2906
|
{
|
|
2368
2907
|
style: {
|
|
@@ -2377,7 +2916,7 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2377
2916
|
key
|
|
2378
2917
|
))
|
|
2379
2918
|
] }),
|
|
2380
|
-
/* @__PURE__ */
|
|
2919
|
+
/* @__PURE__ */ jsx8(
|
|
2381
2920
|
"textarea",
|
|
2382
2921
|
{
|
|
2383
2922
|
style: styles.noteInput,
|
|
@@ -2387,7 +2926,7 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2387
2926
|
rows: 3
|
|
2388
2927
|
}
|
|
2389
2928
|
),
|
|
2390
|
-
/* @__PURE__ */
|
|
2929
|
+
/* @__PURE__ */ jsx8(
|
|
2391
2930
|
ImagePickerButtons,
|
|
2392
2931
|
{
|
|
2393
2932
|
images: images.images,
|
|
@@ -2398,9 +2937,9 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2398
2937
|
label: "Screenshots (optional)"
|
|
2399
2938
|
}
|
|
2400
2939
|
),
|
|
2401
|
-
/* @__PURE__ */
|
|
2402
|
-
/* @__PURE__ */
|
|
2403
|
-
/* @__PURE__ */
|
|
2940
|
+
/* @__PURE__ */ jsxs7("div", { style: styles.actions, children: [
|
|
2941
|
+
/* @__PURE__ */ jsx8("button", { style: styles.skipButton, onClick: handleSkip, children: "Skip" }),
|
|
2942
|
+
/* @__PURE__ */ jsx8(
|
|
2404
2943
|
"button",
|
|
2405
2944
|
{
|
|
2406
2945
|
style: {
|
|
@@ -2553,7 +3092,7 @@ var styles = {
|
|
|
2553
3092
|
import React6, { useState as useState6, useRef as useRef2 } from "react";
|
|
2554
3093
|
|
|
2555
3094
|
// src/widget/CategoryDropdown.tsx
|
|
2556
|
-
import { jsx as
|
|
3095
|
+
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2557
3096
|
var categoryOptions = [
|
|
2558
3097
|
{ value: "ui_ux", label: "UI/UX", icon: "\u{1F3A8}" },
|
|
2559
3098
|
{ value: "functional", label: "Functional", icon: "\u2699\uFE0F" },
|
|
@@ -2562,7 +3101,7 @@ var categoryOptions = [
|
|
|
2562
3101
|
{ value: "other", label: "Other", icon: "\u{1F4DD}" }
|
|
2563
3102
|
];
|
|
2564
3103
|
function CategoryDropdown({ value, onChange, optional = true, disabled = false }) {
|
|
2565
|
-
return /* @__PURE__ */
|
|
3104
|
+
return /* @__PURE__ */ jsxs8(
|
|
2566
3105
|
"select",
|
|
2567
3106
|
{
|
|
2568
3107
|
value: value || "",
|
|
@@ -2585,8 +3124,8 @@ function CategoryDropdown({ value, onChange, optional = true, disabled = false }
|
|
|
2585
3124
|
paddingRight: 32
|
|
2586
3125
|
},
|
|
2587
3126
|
children: [
|
|
2588
|
-
/* @__PURE__ */
|
|
2589
|
-
categoryOptions.map(({ value: value2, label, icon }) => /* @__PURE__ */
|
|
3127
|
+
/* @__PURE__ */ jsx9("option", { value: "", children: optional ? "Select category (optional)" : "Select category" }),
|
|
3128
|
+
categoryOptions.map(({ value: value2, label, icon }) => /* @__PURE__ */ jsxs8("option", { value: value2, children: [
|
|
2590
3129
|
icon,
|
|
2591
3130
|
" ",
|
|
2592
3131
|
label
|
|
@@ -2597,7 +3136,7 @@ function CategoryDropdown({ value, onChange, optional = true, disabled = false }
|
|
|
2597
3136
|
}
|
|
2598
3137
|
|
|
2599
3138
|
// src/widget/screens/ReportScreen.tsx
|
|
2600
|
-
import { Fragment as Fragment3, jsx as
|
|
3139
|
+
import { Fragment as Fragment3, jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
2601
3140
|
function ReportScreen({ nav, prefill }) {
|
|
2602
3141
|
const { client, refreshAssignments, uploadImage } = useBugBear();
|
|
2603
3142
|
const images = useImageAttachments(uploadImage, 5, "screenshots");
|
|
@@ -2672,17 +3211,17 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2672
3211
|
{ sev: "medium", color: "#eab308" },
|
|
2673
3212
|
{ sev: "low", color: "#6b7280" }
|
|
2674
3213
|
];
|
|
2675
|
-
return /* @__PURE__ */
|
|
2676
|
-
/* @__PURE__ */
|
|
2677
|
-
/* @__PURE__ */
|
|
2678
|
-
/* @__PURE__ */
|
|
2679
|
-
/* @__PURE__ */
|
|
2680
|
-
/* @__PURE__ */
|
|
3214
|
+
return /* @__PURE__ */ jsx10("div", { children: isRetestFailure ? /* @__PURE__ */ jsxs9(Fragment3, { children: [
|
|
3215
|
+
/* @__PURE__ */ jsxs9("div", { style: styles2.retestBanner, children: [
|
|
3216
|
+
/* @__PURE__ */ jsx10("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
|
|
3217
|
+
/* @__PURE__ */ jsxs9("div", { children: [
|
|
3218
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.retestTitle, children: "Bug Still Present" }),
|
|
3219
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.retestSubtitle, children: "The fix did not resolve this issue" })
|
|
2681
3220
|
] })
|
|
2682
3221
|
] }),
|
|
2683
|
-
/* @__PURE__ */
|
|
2684
|
-
/* @__PURE__ */
|
|
2685
|
-
/* @__PURE__ */
|
|
3222
|
+
/* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
|
|
3223
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.label, children: "Severity" }),
|
|
3224
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ jsx10(
|
|
2686
3225
|
"button",
|
|
2687
3226
|
{
|
|
2688
3227
|
onClick: () => setSeverity(sev),
|
|
@@ -2690,18 +3229,18 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2690
3229
|
...styles2.sevButton,
|
|
2691
3230
|
...severity === sev ? { backgroundColor: `${color}30`, borderColor: color } : {}
|
|
2692
3231
|
},
|
|
2693
|
-
children: /* @__PURE__ */
|
|
3232
|
+
children: /* @__PURE__ */ jsx10("span", { style: { ...styles2.sevText, ...severity === sev ? { color } : {} }, children: sev })
|
|
2694
3233
|
},
|
|
2695
3234
|
sev
|
|
2696
3235
|
)) })
|
|
2697
3236
|
] }),
|
|
2698
|
-
/* @__PURE__ */
|
|
2699
|
-
/* @__PURE__ */
|
|
2700
|
-
/* @__PURE__ */
|
|
3237
|
+
/* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
|
|
3238
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.label, children: "Category (optional)" }),
|
|
3239
|
+
/* @__PURE__ */ jsx10(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
|
|
2701
3240
|
] }),
|
|
2702
|
-
/* @__PURE__ */
|
|
2703
|
-
/* @__PURE__ */
|
|
2704
|
-
/* @__PURE__ */
|
|
3241
|
+
/* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
|
|
3242
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.label, children: "What went wrong?" }),
|
|
3243
|
+
/* @__PURE__ */ jsx10(
|
|
2705
3244
|
"textarea",
|
|
2706
3245
|
{
|
|
2707
3246
|
style: styles2.descInput,
|
|
@@ -2712,7 +3251,7 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2712
3251
|
}
|
|
2713
3252
|
)
|
|
2714
3253
|
] }),
|
|
2715
|
-
/* @__PURE__ */
|
|
3254
|
+
/* @__PURE__ */ jsx10(
|
|
2716
3255
|
ImagePickerButtons,
|
|
2717
3256
|
{
|
|
2718
3257
|
images: images.images,
|
|
@@ -2723,8 +3262,8 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2723
3262
|
label: "Attachments (optional)"
|
|
2724
3263
|
}
|
|
2725
3264
|
),
|
|
2726
|
-
error && /* @__PURE__ */
|
|
2727
|
-
/* @__PURE__ */
|
|
3265
|
+
error && /* @__PURE__ */ jsx10("div", { style: styles2.errorBanner, children: error }),
|
|
3266
|
+
/* @__PURE__ */ jsx10(
|
|
2728
3267
|
"button",
|
|
2729
3268
|
{
|
|
2730
3269
|
style: {
|
|
@@ -2737,9 +3276,9 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2737
3276
|
children: images.isUploading ? "Uploading images..." : submitting ? "Submitting..." : error ? "Retry" : "Submit Failed Retest"
|
|
2738
3277
|
}
|
|
2739
3278
|
)
|
|
2740
|
-
] }) : /* @__PURE__ */
|
|
2741
|
-
/* @__PURE__ */
|
|
2742
|
-
/* @__PURE__ */
|
|
3279
|
+
] }) : /* @__PURE__ */ jsxs9(Fragment3, { children: [
|
|
3280
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.label, children: "What are you reporting?" }),
|
|
3281
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.typeRow, children: typeOptions.map(({ type, label, icon }) => /* @__PURE__ */ jsxs9(
|
|
2743
3282
|
"button",
|
|
2744
3283
|
{
|
|
2745
3284
|
onClick: () => setReportType(type),
|
|
@@ -2748,8 +3287,8 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2748
3287
|
...reportType === type ? styles2.typeCardActive : {}
|
|
2749
3288
|
},
|
|
2750
3289
|
children: [
|
|
2751
|
-
/* @__PURE__ */
|
|
2752
|
-
/* @__PURE__ */
|
|
3290
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.typeIcon, children: icon }),
|
|
3291
|
+
/* @__PURE__ */ jsx10(
|
|
2753
3292
|
"div",
|
|
2754
3293
|
{
|
|
2755
3294
|
style: {
|
|
@@ -2763,9 +3302,9 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2763
3302
|
},
|
|
2764
3303
|
type
|
|
2765
3304
|
)) }),
|
|
2766
|
-
isBugType && /* @__PURE__ */
|
|
2767
|
-
/* @__PURE__ */
|
|
2768
|
-
/* @__PURE__ */
|
|
3305
|
+
isBugType && /* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
|
|
3306
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.label, children: "Severity" }),
|
|
3307
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ jsx10(
|
|
2769
3308
|
"button",
|
|
2770
3309
|
{
|
|
2771
3310
|
onClick: () => setSeverity(sev),
|
|
@@ -2776,7 +3315,7 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2776
3315
|
borderColor: color
|
|
2777
3316
|
} : {}
|
|
2778
3317
|
},
|
|
2779
|
-
children: /* @__PURE__ */
|
|
3318
|
+
children: /* @__PURE__ */ jsx10(
|
|
2780
3319
|
"span",
|
|
2781
3320
|
{
|
|
2782
3321
|
style: {
|
|
@@ -2790,13 +3329,13 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2790
3329
|
sev
|
|
2791
3330
|
)) })
|
|
2792
3331
|
] }),
|
|
2793
|
-
isBugType && /* @__PURE__ */
|
|
2794
|
-
/* @__PURE__ */
|
|
2795
|
-
/* @__PURE__ */
|
|
3332
|
+
isBugType && /* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
|
|
3333
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.label, children: "Category (optional)" }),
|
|
3334
|
+
/* @__PURE__ */ jsx10(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
|
|
2796
3335
|
] }),
|
|
2797
|
-
/* @__PURE__ */
|
|
2798
|
-
/* @__PURE__ */
|
|
2799
|
-
/* @__PURE__ */
|
|
3336
|
+
/* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
|
|
3337
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.label, children: "What happened?" }),
|
|
3338
|
+
/* @__PURE__ */ jsx10(
|
|
2800
3339
|
"textarea",
|
|
2801
3340
|
{
|
|
2802
3341
|
style: styles2.descInput,
|
|
@@ -2807,9 +3346,9 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2807
3346
|
}
|
|
2808
3347
|
)
|
|
2809
3348
|
] }),
|
|
2810
|
-
isBugType && /* @__PURE__ */
|
|
2811
|
-
/* @__PURE__ */
|
|
2812
|
-
/* @__PURE__ */
|
|
3349
|
+
isBugType && /* @__PURE__ */ jsxs9("div", { style: styles2.section, children: [
|
|
3350
|
+
/* @__PURE__ */ jsx10("div", { style: styles2.label, children: "Where did it happen?" }),
|
|
3351
|
+
/* @__PURE__ */ jsx10(
|
|
2813
3352
|
"input",
|
|
2814
3353
|
{
|
|
2815
3354
|
style: styles2.routeInput,
|
|
@@ -2818,13 +3357,13 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2818
3357
|
placeholder: observedRoute.current
|
|
2819
3358
|
}
|
|
2820
3359
|
),
|
|
2821
|
-
/* @__PURE__ */
|
|
3360
|
+
/* @__PURE__ */ jsxs9("div", { style: styles2.routeHint, children: [
|
|
2822
3361
|
"Leave blank to use current page (",
|
|
2823
3362
|
observedRoute.current,
|
|
2824
3363
|
")"
|
|
2825
3364
|
] })
|
|
2826
3365
|
] }),
|
|
2827
|
-
/* @__PURE__ */
|
|
3366
|
+
/* @__PURE__ */ jsx10(
|
|
2828
3367
|
ImagePickerButtons,
|
|
2829
3368
|
{
|
|
2830
3369
|
images: images.images,
|
|
@@ -2835,8 +3374,8 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2835
3374
|
label: "Screenshots (optional)"
|
|
2836
3375
|
}
|
|
2837
3376
|
),
|
|
2838
|
-
error && /* @__PURE__ */
|
|
2839
|
-
/* @__PURE__ */
|
|
3377
|
+
error && /* @__PURE__ */ jsx10("div", { style: styles2.errorBanner, children: error }),
|
|
3378
|
+
/* @__PURE__ */ jsx10(
|
|
2840
3379
|
"button",
|
|
2841
3380
|
{
|
|
2842
3381
|
style: {
|
|
@@ -3001,16 +3540,16 @@ var styles2 = {
|
|
|
3001
3540
|
|
|
3002
3541
|
// src/widget/screens/ReportSuccessScreen.tsx
|
|
3003
3542
|
import { useEffect as useEffect4 } from "react";
|
|
3004
|
-
import { jsx as
|
|
3543
|
+
import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3005
3544
|
function ReportSuccessScreen({ nav }) {
|
|
3006
3545
|
useEffect4(() => {
|
|
3007
3546
|
const timer = setTimeout(() => nav.reset(), 2e3);
|
|
3008
3547
|
return () => clearTimeout(timer);
|
|
3009
3548
|
}, [nav]);
|
|
3010
|
-
return /* @__PURE__ */
|
|
3011
|
-
/* @__PURE__ */
|
|
3012
|
-
/* @__PURE__ */
|
|
3013
|
-
/* @__PURE__ */
|
|
3549
|
+
return /* @__PURE__ */ jsxs10("div", { style: styles3.container, children: [
|
|
3550
|
+
/* @__PURE__ */ jsx11("div", { style: styles3.emoji, children: "\u{1F389}" }),
|
|
3551
|
+
/* @__PURE__ */ jsx11("div", { style: styles3.title, children: "Report submitted!" }),
|
|
3552
|
+
/* @__PURE__ */ jsx11("div", { style: styles3.subtitle, children: "Thank you for your feedback" })
|
|
3014
3553
|
] });
|
|
3015
3554
|
}
|
|
3016
3555
|
var styles3 = {
|
|
@@ -3039,11 +3578,12 @@ var styles3 = {
|
|
|
3039
3578
|
};
|
|
3040
3579
|
|
|
3041
3580
|
// src/widget/screens/MessageListScreen.tsx
|
|
3042
|
-
import { jsx as
|
|
3581
|
+
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3043
3582
|
function MessageListScreen({ nav }) {
|
|
3044
|
-
const { threads, unreadCount, refreshThreads } = useBugBear();
|
|
3045
|
-
return /* @__PURE__ */
|
|
3046
|
-
|
|
3583
|
+
const { threads, unreadCount, refreshThreads, dashboardUrl, isLoading } = useBugBear();
|
|
3584
|
+
if (isLoading) return /* @__PURE__ */ jsx12(MessageListScreenSkeleton, {});
|
|
3585
|
+
return /* @__PURE__ */ jsxs11("div", { children: [
|
|
3586
|
+
/* @__PURE__ */ jsx12(
|
|
3047
3587
|
"button",
|
|
3048
3588
|
{
|
|
3049
3589
|
style: {
|
|
@@ -3062,7 +3602,7 @@ function MessageListScreen({ nav }) {
|
|
|
3062
3602
|
children: "\u2709\uFE0F New Message"
|
|
3063
3603
|
}
|
|
3064
3604
|
),
|
|
3065
|
-
threads.length === 0 ? /* @__PURE__ */
|
|
3605
|
+
threads.length === 0 ? /* @__PURE__ */ jsxs11(
|
|
3066
3606
|
"div",
|
|
3067
3607
|
{
|
|
3068
3608
|
style: {
|
|
@@ -3073,8 +3613,8 @@ function MessageListScreen({ nav }) {
|
|
|
3073
3613
|
paddingBottom: 40
|
|
3074
3614
|
},
|
|
3075
3615
|
children: [
|
|
3076
|
-
/* @__PURE__ */
|
|
3077
|
-
/* @__PURE__ */
|
|
3616
|
+
/* @__PURE__ */ jsx12("span", { style: { fontSize: 36, marginBottom: 12 }, children: "\u{1F4AC}" }),
|
|
3617
|
+
/* @__PURE__ */ jsx12(
|
|
3078
3618
|
"span",
|
|
3079
3619
|
{
|
|
3080
3620
|
style: {
|
|
@@ -3086,7 +3626,7 @@ function MessageListScreen({ nav }) {
|
|
|
3086
3626
|
children: "No messages yet"
|
|
3087
3627
|
}
|
|
3088
3628
|
),
|
|
3089
|
-
/* @__PURE__ */
|
|
3629
|
+
/* @__PURE__ */ jsx12(
|
|
3090
3630
|
"span",
|
|
3091
3631
|
{
|
|
3092
3632
|
style: {
|
|
@@ -3099,7 +3639,7 @@ function MessageListScreen({ nav }) {
|
|
|
3099
3639
|
)
|
|
3100
3640
|
]
|
|
3101
3641
|
}
|
|
3102
|
-
) : /* @__PURE__ */
|
|
3642
|
+
) : /* @__PURE__ */ jsx12("div", { children: threads.map((thread) => /* @__PURE__ */ jsxs11(
|
|
3103
3643
|
"button",
|
|
3104
3644
|
{
|
|
3105
3645
|
style: {
|
|
@@ -3117,8 +3657,8 @@ function MessageListScreen({ nav }) {
|
|
|
3117
3657
|
},
|
|
3118
3658
|
onClick: () => nav.push({ name: "THREAD_DETAIL", thread }),
|
|
3119
3659
|
children: [
|
|
3120
|
-
/* @__PURE__ */
|
|
3121
|
-
/* @__PURE__ */
|
|
3660
|
+
/* @__PURE__ */ jsxs11("div", { style: { display: "flex", flex: 1, minWidth: 0 }, children: [
|
|
3661
|
+
/* @__PURE__ */ jsx12(
|
|
3122
3662
|
"span",
|
|
3123
3663
|
{
|
|
3124
3664
|
style: {
|
|
@@ -3130,7 +3670,7 @@ function MessageListScreen({ nav }) {
|
|
|
3130
3670
|
children: getThreadTypeIcon(thread.threadType)
|
|
3131
3671
|
}
|
|
3132
3672
|
),
|
|
3133
|
-
/* @__PURE__ */
|
|
3673
|
+
/* @__PURE__ */ jsxs11(
|
|
3134
3674
|
"div",
|
|
3135
3675
|
{
|
|
3136
3676
|
style: {
|
|
@@ -3138,7 +3678,7 @@ function MessageListScreen({ nav }) {
|
|
|
3138
3678
|
minWidth: 0
|
|
3139
3679
|
},
|
|
3140
3680
|
children: [
|
|
3141
|
-
/* @__PURE__ */
|
|
3681
|
+
/* @__PURE__ */ jsxs11(
|
|
3142
3682
|
"div",
|
|
3143
3683
|
{
|
|
3144
3684
|
style: {
|
|
@@ -3147,8 +3687,8 @@ function MessageListScreen({ nav }) {
|
|
|
3147
3687
|
gap: 4
|
|
3148
3688
|
},
|
|
3149
3689
|
children: [
|
|
3150
|
-
thread.isPinned && /* @__PURE__ */
|
|
3151
|
-
/* @__PURE__ */
|
|
3690
|
+
thread.isPinned && /* @__PURE__ */ jsx12("span", { style: { fontSize: 12, flexShrink: 0 }, children: "\u{1F4CC}" }),
|
|
3691
|
+
/* @__PURE__ */ jsx12(
|
|
3152
3692
|
"span",
|
|
3153
3693
|
{
|
|
3154
3694
|
style: {
|
|
@@ -3165,7 +3705,7 @@ function MessageListScreen({ nav }) {
|
|
|
3165
3705
|
]
|
|
3166
3706
|
}
|
|
3167
3707
|
),
|
|
3168
|
-
thread.lastMessage && /* @__PURE__ */
|
|
3708
|
+
thread.lastMessage && /* @__PURE__ */ jsxs11(
|
|
3169
3709
|
"span",
|
|
3170
3710
|
{
|
|
3171
3711
|
style: {
|
|
@@ -3189,7 +3729,7 @@ function MessageListScreen({ nav }) {
|
|
|
3189
3729
|
}
|
|
3190
3730
|
)
|
|
3191
3731
|
] }),
|
|
3192
|
-
/* @__PURE__ */
|
|
3732
|
+
/* @__PURE__ */ jsxs11(
|
|
3193
3733
|
"div",
|
|
3194
3734
|
{
|
|
3195
3735
|
style: {
|
|
@@ -3201,8 +3741,8 @@ function MessageListScreen({ nav }) {
|
|
|
3201
3741
|
flexShrink: 0
|
|
3202
3742
|
},
|
|
3203
3743
|
children: [
|
|
3204
|
-
/* @__PURE__ */
|
|
3205
|
-
thread.unreadCount > 0 && /* @__PURE__ */
|
|
3744
|
+
/* @__PURE__ */ jsx12("span", { style: { fontSize: 11, color: colors.textDim }, children: formatRelativeTime(thread.lastMessageAt) }),
|
|
3745
|
+
thread.unreadCount > 0 && /* @__PURE__ */ jsx12(
|
|
3206
3746
|
"span",
|
|
3207
3747
|
{
|
|
3208
3748
|
style: {
|
|
@@ -3229,19 +3769,39 @@ function MessageListScreen({ nav }) {
|
|
|
3229
3769
|
},
|
|
3230
3770
|
thread.id
|
|
3231
3771
|
)) }),
|
|
3232
|
-
/* @__PURE__ */
|
|
3772
|
+
dashboardUrl && /* @__PURE__ */ jsx12(
|
|
3773
|
+
"a",
|
|
3774
|
+
{
|
|
3775
|
+
href: `${dashboardUrl}/discussions`,
|
|
3776
|
+
target: "_blank",
|
|
3777
|
+
rel: "noopener noreferrer",
|
|
3778
|
+
style: {
|
|
3779
|
+
display: "flex",
|
|
3780
|
+
alignItems: "center",
|
|
3781
|
+
justifyContent: "center",
|
|
3782
|
+
gap: 6,
|
|
3783
|
+
paddingTop: 12,
|
|
3784
|
+
fontSize: 13,
|
|
3785
|
+
fontWeight: 500,
|
|
3786
|
+
color: colors.blue,
|
|
3787
|
+
textDecoration: "none"
|
|
3788
|
+
},
|
|
3789
|
+
children: "\u{1F310} View on Dashboard \u2192"
|
|
3790
|
+
}
|
|
3791
|
+
),
|
|
3792
|
+
/* @__PURE__ */ jsxs11(
|
|
3233
3793
|
"div",
|
|
3234
3794
|
{
|
|
3235
3795
|
style: {
|
|
3236
3796
|
display: "flex",
|
|
3237
3797
|
justifyContent: "space-between",
|
|
3238
3798
|
alignItems: "center",
|
|
3239
|
-
paddingTop:
|
|
3799
|
+
paddingTop: 8,
|
|
3240
3800
|
paddingLeft: 4,
|
|
3241
3801
|
paddingRight: 4
|
|
3242
3802
|
},
|
|
3243
3803
|
children: [
|
|
3244
|
-
/* @__PURE__ */
|
|
3804
|
+
/* @__PURE__ */ jsxs11("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
|
|
3245
3805
|
threads.length,
|
|
3246
3806
|
" thread",
|
|
3247
3807
|
threads.length !== 1 ? "s" : "",
|
|
@@ -3250,7 +3810,7 @@ function MessageListScreen({ nav }) {
|
|
|
3250
3810
|
unreadCount,
|
|
3251
3811
|
" unread"
|
|
3252
3812
|
] }),
|
|
3253
|
-
/* @__PURE__ */
|
|
3813
|
+
/* @__PURE__ */ jsx12(
|
|
3254
3814
|
"button",
|
|
3255
3815
|
{
|
|
3256
3816
|
style: {
|
|
@@ -3273,7 +3833,7 @@ function MessageListScreen({ nav }) {
|
|
|
3273
3833
|
|
|
3274
3834
|
// src/widget/screens/ThreadDetailScreen.tsx
|
|
3275
3835
|
import { useState as useState7, useEffect as useEffect5 } from "react";
|
|
3276
|
-
import { jsx as
|
|
3836
|
+
import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3277
3837
|
var inputStyle = {
|
|
3278
3838
|
backgroundColor: "#27272a",
|
|
3279
3839
|
border: "1px solid #3f3f46",
|
|
@@ -3345,8 +3905,8 @@ function ThreadDetailScreen({
|
|
|
3345
3905
|
handleSend();
|
|
3346
3906
|
}
|
|
3347
3907
|
};
|
|
3348
|
-
return /* @__PURE__ */
|
|
3349
|
-
/* @__PURE__ */
|
|
3908
|
+
return /* @__PURE__ */ jsxs12("div", { style: { display: "flex", flexDirection: "column", flex: 1 }, children: [
|
|
3909
|
+
/* @__PURE__ */ jsxs12(
|
|
3350
3910
|
"div",
|
|
3351
3911
|
{
|
|
3352
3912
|
style: {
|
|
@@ -3358,8 +3918,8 @@ function ThreadDetailScreen({
|
|
|
3358
3918
|
borderBottom: `1px solid ${colors.border}`
|
|
3359
3919
|
},
|
|
3360
3920
|
children: [
|
|
3361
|
-
/* @__PURE__ */
|
|
3362
|
-
/* @__PURE__ */
|
|
3921
|
+
/* @__PURE__ */ jsx13("span", { style: { fontSize: 20 }, children: getThreadTypeIcon(thread.threadType) }),
|
|
3922
|
+
/* @__PURE__ */ jsx13(
|
|
3363
3923
|
"span",
|
|
3364
3924
|
{
|
|
3365
3925
|
style: {
|
|
@@ -3379,7 +3939,7 @@ function ThreadDetailScreen({
|
|
|
3379
3939
|
]
|
|
3380
3940
|
}
|
|
3381
3941
|
),
|
|
3382
|
-
loading ? /* @__PURE__ */
|
|
3942
|
+
loading ? /* @__PURE__ */ jsx13(
|
|
3383
3943
|
"div",
|
|
3384
3944
|
{
|
|
3385
3945
|
style: {
|
|
@@ -3387,11 +3947,11 @@ function ThreadDetailScreen({
|
|
|
3387
3947
|
paddingBottom: 40,
|
|
3388
3948
|
textAlign: "center"
|
|
3389
3949
|
},
|
|
3390
|
-
children: /* @__PURE__ */
|
|
3950
|
+
children: /* @__PURE__ */ jsx13("span", { style: { fontSize: 14, color: colors.textMuted }, children: "Loading messages..." })
|
|
3391
3951
|
}
|
|
3392
|
-
) : /* @__PURE__ */
|
|
3952
|
+
) : /* @__PURE__ */ jsx13("div", { style: { paddingBottom: 8, marginBottom: 8 }, children: messages.map((msg) => {
|
|
3393
3953
|
const isTester = msg.senderType === "tester";
|
|
3394
|
-
return /* @__PURE__ */
|
|
3954
|
+
return /* @__PURE__ */ jsxs12(
|
|
3395
3955
|
"div",
|
|
3396
3956
|
{
|
|
3397
3957
|
style: {
|
|
@@ -3407,7 +3967,7 @@ function ThreadDetailScreen({
|
|
|
3407
3967
|
borderBottomRightRadius: isTester ? 4 : 16
|
|
3408
3968
|
},
|
|
3409
3969
|
children: [
|
|
3410
|
-
/* @__PURE__ */
|
|
3970
|
+
/* @__PURE__ */ jsx13(
|
|
3411
3971
|
"span",
|
|
3412
3972
|
{
|
|
3413
3973
|
style: {
|
|
@@ -3420,7 +3980,7 @@ function ThreadDetailScreen({
|
|
|
3420
3980
|
children: isTester ? "You" : msg.senderName
|
|
3421
3981
|
}
|
|
3422
3982
|
),
|
|
3423
|
-
/* @__PURE__ */
|
|
3983
|
+
/* @__PURE__ */ jsx13(
|
|
3424
3984
|
"span",
|
|
3425
3985
|
{
|
|
3426
3986
|
style: {
|
|
@@ -3434,7 +3994,7 @@ function ThreadDetailScreen({
|
|
|
3434
3994
|
children: msg.content
|
|
3435
3995
|
}
|
|
3436
3996
|
),
|
|
3437
|
-
msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */
|
|
3997
|
+
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
3998
|
"img",
|
|
3439
3999
|
{
|
|
3440
4000
|
src: att.url,
|
|
@@ -3443,7 +4003,7 @@ function ThreadDetailScreen({
|
|
|
3443
4003
|
},
|
|
3444
4004
|
idx
|
|
3445
4005
|
)) }),
|
|
3446
|
-
/* @__PURE__ */
|
|
4006
|
+
/* @__PURE__ */ jsx13(
|
|
3447
4007
|
"span",
|
|
3448
4008
|
{
|
|
3449
4009
|
style: {
|
|
@@ -3461,7 +4021,7 @@ function ThreadDetailScreen({
|
|
|
3461
4021
|
msg.id
|
|
3462
4022
|
);
|
|
3463
4023
|
}) }),
|
|
3464
|
-
sendError && /* @__PURE__ */
|
|
4024
|
+
sendError && /* @__PURE__ */ jsx13(
|
|
3465
4025
|
"div",
|
|
3466
4026
|
{
|
|
3467
4027
|
style: {
|
|
@@ -3473,7 +4033,7 @@ function ThreadDetailScreen({
|
|
|
3473
4033
|
borderRadius: 8,
|
|
3474
4034
|
marginBottom: 8
|
|
3475
4035
|
},
|
|
3476
|
-
children: /* @__PURE__ */
|
|
4036
|
+
children: /* @__PURE__ */ jsx13(
|
|
3477
4037
|
"span",
|
|
3478
4038
|
{
|
|
3479
4039
|
style: {
|
|
@@ -3487,8 +4047,8 @@ function ThreadDetailScreen({
|
|
|
3487
4047
|
)
|
|
3488
4048
|
}
|
|
3489
4049
|
),
|
|
3490
|
-
replyImages.images.length > 0 && /* @__PURE__ */
|
|
3491
|
-
/* @__PURE__ */
|
|
4050
|
+
replyImages.images.length > 0 && /* @__PURE__ */ jsx13("div", { style: { paddingTop: 8 }, children: /* @__PURE__ */ jsx13(ImagePreviewStrip, { images: replyImages.images, onRemove: replyImages.removeImage }) }),
|
|
4051
|
+
/* @__PURE__ */ jsxs12(
|
|
3492
4052
|
"div",
|
|
3493
4053
|
{
|
|
3494
4054
|
style: {
|
|
@@ -3499,7 +4059,7 @@ function ThreadDetailScreen({
|
|
|
3499
4059
|
gap: 8
|
|
3500
4060
|
},
|
|
3501
4061
|
children: [
|
|
3502
|
-
/* @__PURE__ */
|
|
4062
|
+
/* @__PURE__ */ jsx13(
|
|
3503
4063
|
"button",
|
|
3504
4064
|
{
|
|
3505
4065
|
type: "button",
|
|
@@ -3518,7 +4078,7 @@ function ThreadDetailScreen({
|
|
|
3518
4078
|
children: "\u{1F4CE}"
|
|
3519
4079
|
}
|
|
3520
4080
|
),
|
|
3521
|
-
/* @__PURE__ */
|
|
4081
|
+
/* @__PURE__ */ jsx13(
|
|
3522
4082
|
"input",
|
|
3523
4083
|
{
|
|
3524
4084
|
type: "text",
|
|
@@ -3534,7 +4094,7 @@ function ThreadDetailScreen({
|
|
|
3534
4094
|
}
|
|
3535
4095
|
}
|
|
3536
4096
|
),
|
|
3537
|
-
/* @__PURE__ */
|
|
4097
|
+
/* @__PURE__ */ jsx13(
|
|
3538
4098
|
"button",
|
|
3539
4099
|
{
|
|
3540
4100
|
style: {
|
|
@@ -3562,7 +4122,7 @@ function ThreadDetailScreen({
|
|
|
3562
4122
|
|
|
3563
4123
|
// src/widget/screens/ComposeMessageScreen.tsx
|
|
3564
4124
|
import { useState as useState8 } from "react";
|
|
3565
|
-
import { jsx as
|
|
4125
|
+
import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3566
4126
|
var inputStyle2 = {
|
|
3567
4127
|
backgroundColor: "#27272a",
|
|
3568
4128
|
border: "1px solid #3f3f46",
|
|
@@ -3593,9 +4153,9 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3593
4153
|
nav.pop();
|
|
3594
4154
|
}
|
|
3595
4155
|
};
|
|
3596
|
-
return /* @__PURE__ */
|
|
3597
|
-
/* @__PURE__ */
|
|
3598
|
-
/* @__PURE__ */
|
|
4156
|
+
return /* @__PURE__ */ jsxs13("div", { children: [
|
|
4157
|
+
/* @__PURE__ */ jsxs13("div", { style: { marginBottom: 20 }, children: [
|
|
4158
|
+
/* @__PURE__ */ jsx14(
|
|
3599
4159
|
"div",
|
|
3600
4160
|
{
|
|
3601
4161
|
style: {
|
|
@@ -3607,9 +4167,9 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3607
4167
|
children: "New Message"
|
|
3608
4168
|
}
|
|
3609
4169
|
),
|
|
3610
|
-
/* @__PURE__ */
|
|
4170
|
+
/* @__PURE__ */ jsx14("div", { style: { fontSize: 14, color: colors.textMuted }, children: "Send a message to the QA team" })
|
|
3611
4171
|
] }),
|
|
3612
|
-
/* @__PURE__ */
|
|
4172
|
+
/* @__PURE__ */ jsxs13(
|
|
3613
4173
|
"div",
|
|
3614
4174
|
{
|
|
3615
4175
|
style: {
|
|
@@ -3619,7 +4179,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3619
4179
|
border: `1px solid ${colors.border}`
|
|
3620
4180
|
},
|
|
3621
4181
|
children: [
|
|
3622
|
-
/* @__PURE__ */
|
|
4182
|
+
/* @__PURE__ */ jsx14(
|
|
3623
4183
|
"label",
|
|
3624
4184
|
{
|
|
3625
4185
|
style: {
|
|
@@ -3632,7 +4192,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3632
4192
|
children: "Subject"
|
|
3633
4193
|
}
|
|
3634
4194
|
),
|
|
3635
|
-
/* @__PURE__ */
|
|
4195
|
+
/* @__PURE__ */ jsx14(
|
|
3636
4196
|
"input",
|
|
3637
4197
|
{
|
|
3638
4198
|
type: "text",
|
|
@@ -3647,7 +4207,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3647
4207
|
}
|
|
3648
4208
|
}
|
|
3649
4209
|
),
|
|
3650
|
-
/* @__PURE__ */
|
|
4210
|
+
/* @__PURE__ */ jsx14(
|
|
3651
4211
|
"label",
|
|
3652
4212
|
{
|
|
3653
4213
|
style: {
|
|
@@ -3661,7 +4221,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3661
4221
|
children: "Message"
|
|
3662
4222
|
}
|
|
3663
4223
|
),
|
|
3664
|
-
/* @__PURE__ */
|
|
4224
|
+
/* @__PURE__ */ jsx14(
|
|
3665
4225
|
"textarea",
|
|
3666
4226
|
{
|
|
3667
4227
|
value: message,
|
|
@@ -3680,7 +4240,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3680
4240
|
}
|
|
3681
4241
|
}
|
|
3682
4242
|
),
|
|
3683
|
-
/* @__PURE__ */
|
|
4243
|
+
/* @__PURE__ */ jsx14(
|
|
3684
4244
|
ImagePickerButtons,
|
|
3685
4245
|
{
|
|
3686
4246
|
images: images.images,
|
|
@@ -3691,7 +4251,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3691
4251
|
label: "Attachments (optional)"
|
|
3692
4252
|
}
|
|
3693
4253
|
),
|
|
3694
|
-
/* @__PURE__ */
|
|
4254
|
+
/* @__PURE__ */ jsx14(
|
|
3695
4255
|
"button",
|
|
3696
4256
|
{
|
|
3697
4257
|
style: {
|
|
@@ -3720,7 +4280,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3720
4280
|
|
|
3721
4281
|
// src/widget/screens/ProfileScreen.tsx
|
|
3722
4282
|
import { useState as useState9, useEffect as useEffect6 } from "react";
|
|
3723
|
-
import { jsx as
|
|
4283
|
+
import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3724
4284
|
function ProfileScreen({ nav }) {
|
|
3725
4285
|
const { testerInfo, assignments, updateTesterProfile, refreshTesterInfo } = useBugBear();
|
|
3726
4286
|
const [editing, setEditing] = useState9(false);
|
|
@@ -3767,22 +4327,22 @@ function ProfileScreen({ nav }) {
|
|
|
3767
4327
|
}
|
|
3768
4328
|
};
|
|
3769
4329
|
if (saved) {
|
|
3770
|
-
return /* @__PURE__ */
|
|
3771
|
-
/* @__PURE__ */
|
|
3772
|
-
/* @__PURE__ */
|
|
4330
|
+
return /* @__PURE__ */ jsxs14("div", { style: styles4.emptyState, children: [
|
|
4331
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.emptyEmoji, children: "\u2705" }),
|
|
4332
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.emptyTitle, children: "Profile saved!" })
|
|
3773
4333
|
] });
|
|
3774
4334
|
}
|
|
3775
4335
|
if (!testerInfo) {
|
|
3776
|
-
return /* @__PURE__ */
|
|
3777
|
-
/* @__PURE__ */
|
|
3778
|
-
/* @__PURE__ */
|
|
4336
|
+
return /* @__PURE__ */ jsxs14("div", { style: styles4.emptyState, children: [
|
|
4337
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.emptyEmoji, children: "\u{1F464}" }),
|
|
4338
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.emptyTitle, children: "No profile found" })
|
|
3779
4339
|
] });
|
|
3780
4340
|
}
|
|
3781
4341
|
if (editing) {
|
|
3782
|
-
return /* @__PURE__ */
|
|
3783
|
-
/* @__PURE__ */
|
|
3784
|
-
/* @__PURE__ */
|
|
3785
|
-
/* @__PURE__ */
|
|
4342
|
+
return /* @__PURE__ */ jsxs14("div", { children: [
|
|
4343
|
+
/* @__PURE__ */ jsxs14("div", { style: styles4.editHeader, children: [
|
|
4344
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.editTitle, children: "Edit Profile" }),
|
|
4345
|
+
/* @__PURE__ */ jsx15(
|
|
3786
4346
|
"button",
|
|
3787
4347
|
{
|
|
3788
4348
|
style: styles4.cancelButton,
|
|
@@ -3794,9 +4354,9 @@ function ProfileScreen({ nav }) {
|
|
|
3794
4354
|
}
|
|
3795
4355
|
)
|
|
3796
4356
|
] }),
|
|
3797
|
-
/* @__PURE__ */
|
|
3798
|
-
/* @__PURE__ */
|
|
3799
|
-
/* @__PURE__ */
|
|
4357
|
+
/* @__PURE__ */ jsxs14("div", { style: styles4.field, children: [
|
|
4358
|
+
/* @__PURE__ */ jsx15("label", { style: styles4.label, children: "Name" }),
|
|
4359
|
+
/* @__PURE__ */ jsx15(
|
|
3800
4360
|
"input",
|
|
3801
4361
|
{
|
|
3802
4362
|
style: styles4.input,
|
|
@@ -3806,15 +4366,15 @@ function ProfileScreen({ nav }) {
|
|
|
3806
4366
|
}
|
|
3807
4367
|
)
|
|
3808
4368
|
] }),
|
|
3809
|
-
/* @__PURE__ */
|
|
3810
|
-
/* @__PURE__ */
|
|
3811
|
-
/* @__PURE__ */
|
|
4369
|
+
/* @__PURE__ */ jsxs14("div", { style: styles4.field, children: [
|
|
4370
|
+
/* @__PURE__ */ jsx15("label", { style: styles4.label, children: "Primary Email" }),
|
|
4371
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.emailFixed, children: testerInfo.email })
|
|
3812
4372
|
] }),
|
|
3813
|
-
/* @__PURE__ */
|
|
3814
|
-
/* @__PURE__ */
|
|
3815
|
-
additionalEmails.map((email) => /* @__PURE__ */
|
|
3816
|
-
/* @__PURE__ */
|
|
3817
|
-
/* @__PURE__ */
|
|
4373
|
+
/* @__PURE__ */ jsxs14("div", { style: styles4.field, children: [
|
|
4374
|
+
/* @__PURE__ */ jsx15("label", { style: styles4.label, children: "Additional Emails" }),
|
|
4375
|
+
additionalEmails.map((email) => /* @__PURE__ */ jsxs14("div", { style: styles4.emailRow, children: [
|
|
4376
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.emailText, children: email }),
|
|
4377
|
+
/* @__PURE__ */ jsx15(
|
|
3818
4378
|
"button",
|
|
3819
4379
|
{
|
|
3820
4380
|
style: styles4.removeEmailButton,
|
|
@@ -3823,8 +4383,8 @@ function ProfileScreen({ nav }) {
|
|
|
3823
4383
|
}
|
|
3824
4384
|
)
|
|
3825
4385
|
] }, email)),
|
|
3826
|
-
/* @__PURE__ */
|
|
3827
|
-
/* @__PURE__ */
|
|
4386
|
+
/* @__PURE__ */ jsxs14("div", { style: styles4.addEmailRow, children: [
|
|
4387
|
+
/* @__PURE__ */ jsx15(
|
|
3828
4388
|
"input",
|
|
3829
4389
|
{
|
|
3830
4390
|
style: { ...styles4.input, flex: 1, marginRight: 8 },
|
|
@@ -3837,18 +4397,18 @@ function ProfileScreen({ nav }) {
|
|
|
3837
4397
|
}
|
|
3838
4398
|
}
|
|
3839
4399
|
),
|
|
3840
|
-
/* @__PURE__ */
|
|
4400
|
+
/* @__PURE__ */ jsx15("button", { style: styles4.addButton, onClick: handleAddEmail, children: "Add" })
|
|
3841
4401
|
] })
|
|
3842
4402
|
] }),
|
|
3843
|
-
/* @__PURE__ */
|
|
3844
|
-
/* @__PURE__ */
|
|
3845
|
-
/* @__PURE__ */
|
|
4403
|
+
/* @__PURE__ */ jsxs14("div", { style: styles4.field, children: [
|
|
4404
|
+
/* @__PURE__ */ jsx15("label", { style: styles4.label, children: "Testing Platforms" }),
|
|
4405
|
+
/* @__PURE__ */ jsx15("div", { style: styles4.platformRow, children: [
|
|
3846
4406
|
{ key: "ios", label: "\u{1F4F1} iOS" },
|
|
3847
4407
|
{ key: "android", label: "\u{1F916} Android" },
|
|
3848
4408
|
{ key: "web", label: "\u{1F310} Web" }
|
|
3849
4409
|
].map(({ key, label }) => {
|
|
3850
4410
|
const isActive = platforms.includes(key);
|
|
3851
|
-
return /* @__PURE__ */
|
|
4411
|
+
return /* @__PURE__ */ jsx15(
|
|
3852
4412
|
"button",
|
|
3853
4413
|
{
|
|
3854
4414
|
style: {
|
|
@@ -3858,13 +4418,13 @@ function ProfileScreen({ nav }) {
|
|
|
3858
4418
|
onClick: () => setPlatforms(
|
|
3859
4419
|
(prev) => prev.includes(key) ? prev.filter((p) => p !== key) : [...prev, key]
|
|
3860
4420
|
),
|
|
3861
|
-
children: /* @__PURE__ */
|
|
4421
|
+
children: /* @__PURE__ */ jsx15("span", { style: isActive ? styles4.platformTextActive : styles4.platformText, children: label })
|
|
3862
4422
|
},
|
|
3863
4423
|
key
|
|
3864
4424
|
);
|
|
3865
4425
|
}) })
|
|
3866
4426
|
] }),
|
|
3867
|
-
/* @__PURE__ */
|
|
4427
|
+
/* @__PURE__ */ jsx15(
|
|
3868
4428
|
"button",
|
|
3869
4429
|
{
|
|
3870
4430
|
style: { ...styles4.primaryButton, marginTop: 20 },
|
|
@@ -3875,45 +4435,45 @@ function ProfileScreen({ nav }) {
|
|
|
3875
4435
|
)
|
|
3876
4436
|
] });
|
|
3877
4437
|
}
|
|
3878
|
-
return /* @__PURE__ */
|
|
3879
|
-
/* @__PURE__ */
|
|
3880
|
-
/* @__PURE__ */
|
|
3881
|
-
/* @__PURE__ */
|
|
3882
|
-
/* @__PURE__ */
|
|
4438
|
+
return /* @__PURE__ */ jsxs14("div", { children: [
|
|
4439
|
+
/* @__PURE__ */ jsxs14("div", { style: styles4.profileCard, children: [
|
|
4440
|
+
/* @__PURE__ */ jsx15("div", { style: styles4.avatar, children: /* @__PURE__ */ jsx15("span", { style: styles4.avatarText, children: testerInfo.name.charAt(0).toUpperCase() }) }),
|
|
4441
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.profileName, children: testerInfo.name }),
|
|
4442
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.profileEmail, children: testerInfo.email })
|
|
3883
4443
|
] }),
|
|
3884
|
-
/* @__PURE__ */
|
|
3885
|
-
/* @__PURE__ */
|
|
3886
|
-
/* @__PURE__ */
|
|
3887
|
-
/* @__PURE__ */
|
|
4444
|
+
/* @__PURE__ */ jsxs14("div", { style: styles4.statsRow, children: [
|
|
4445
|
+
/* @__PURE__ */ jsxs14("div", { style: styles4.statItem, children: [
|
|
4446
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.statNumber, children: completedCount }),
|
|
4447
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.statLabel, children: "Completed" })
|
|
3888
4448
|
] }),
|
|
3889
|
-
/* @__PURE__ */
|
|
3890
|
-
/* @__PURE__ */
|
|
3891
|
-
/* @__PURE__ */
|
|
3892
|
-
/* @__PURE__ */
|
|
4449
|
+
/* @__PURE__ */ jsx15("div", { style: styles4.statDivider }),
|
|
4450
|
+
/* @__PURE__ */ jsxs14("div", { style: styles4.statItem, children: [
|
|
4451
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.statNumber, children: assignments.length }),
|
|
4452
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.statLabel, children: "Total Assigned" })
|
|
3893
4453
|
] })
|
|
3894
4454
|
] }),
|
|
3895
|
-
/* @__PURE__ */
|
|
4455
|
+
/* @__PURE__ */ jsx15(
|
|
3896
4456
|
"button",
|
|
3897
4457
|
{
|
|
3898
4458
|
style: styles4.detailsToggle,
|
|
3899
4459
|
onClick: () => setShowDetails(!showDetails),
|
|
3900
|
-
children: /* @__PURE__ */
|
|
4460
|
+
children: /* @__PURE__ */ jsxs14("span", { style: styles4.detailsToggleText, children: [
|
|
3901
4461
|
showDetails ? "\u25BC" : "\u25B6",
|
|
3902
4462
|
" Details"
|
|
3903
4463
|
] })
|
|
3904
4464
|
}
|
|
3905
4465
|
),
|
|
3906
|
-
showDetails && /* @__PURE__ */
|
|
3907
|
-
additionalEmails.length > 0 && /* @__PURE__ */
|
|
3908
|
-
/* @__PURE__ */
|
|
3909
|
-
additionalEmails.map((e) => /* @__PURE__ */
|
|
4466
|
+
showDetails && /* @__PURE__ */ jsxs14("div", { style: styles4.detailsSection, children: [
|
|
4467
|
+
additionalEmails.length > 0 && /* @__PURE__ */ jsxs14("div", { style: styles4.detailBlock, children: [
|
|
4468
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.detailLabel, children: "Additional Emails" }),
|
|
4469
|
+
additionalEmails.map((e) => /* @__PURE__ */ jsx15("span", { style: styles4.detailValue, children: e }, e))
|
|
3910
4470
|
] }),
|
|
3911
|
-
platforms.length > 0 && /* @__PURE__ */
|
|
3912
|
-
/* @__PURE__ */
|
|
3913
|
-
/* @__PURE__ */
|
|
4471
|
+
platforms.length > 0 && /* @__PURE__ */ jsxs14("div", { style: styles4.detailBlock, children: [
|
|
4472
|
+
/* @__PURE__ */ jsx15("span", { style: styles4.detailLabel, children: "Platforms" }),
|
|
4473
|
+
/* @__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
4474
|
] })
|
|
3915
4475
|
] }),
|
|
3916
|
-
/* @__PURE__ */
|
|
4476
|
+
/* @__PURE__ */ jsx15(
|
|
3917
4477
|
"button",
|
|
3918
4478
|
{
|
|
3919
4479
|
style: { ...styles4.primaryButton, marginTop: 20 },
|
|
@@ -4197,7 +4757,7 @@ var styles4 = {
|
|
|
4197
4757
|
|
|
4198
4758
|
// src/widget/screens/IssueListScreen.tsx
|
|
4199
4759
|
import { useState as useState10, useEffect as useEffect7 } from "react";
|
|
4200
|
-
import { jsx as
|
|
4760
|
+
import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
4201
4761
|
var CATEGORY_CONFIG = {
|
|
4202
4762
|
open: { label: "Open Issues", accent: "#f97316", emptyIcon: "\u2705", emptyText: "No open issues" },
|
|
4203
4763
|
done: { label: "Done", accent: "#22c55e", emptyIcon: "\u{1F389}", emptyText: "No completed issues yet" },
|
|
@@ -4240,15 +4800,15 @@ function IssueListScreen({ nav, category }) {
|
|
|
4240
4800
|
};
|
|
4241
4801
|
}, [client, category]);
|
|
4242
4802
|
if (loading) {
|
|
4243
|
-
return /* @__PURE__ */
|
|
4803
|
+
return /* @__PURE__ */ jsx16(IssueListScreenSkeleton, {});
|
|
4244
4804
|
}
|
|
4245
4805
|
if (issues.length === 0) {
|
|
4246
|
-
return /* @__PURE__ */
|
|
4247
|
-
/* @__PURE__ */
|
|
4248
|
-
/* @__PURE__ */
|
|
4806
|
+
return /* @__PURE__ */ jsxs15("div", { style: { padding: "40px 0", textAlign: "center" }, children: [
|
|
4807
|
+
/* @__PURE__ */ jsx16("div", { style: { fontSize: 36, marginBottom: 8 }, children: config.emptyIcon }),
|
|
4808
|
+
/* @__PURE__ */ jsx16("div", { style: { color: colors.textMuted, fontSize: 14 }, children: config.emptyText })
|
|
4249
4809
|
] });
|
|
4250
4810
|
}
|
|
4251
|
-
return /* @__PURE__ */
|
|
4811
|
+
return /* @__PURE__ */ jsx16("div", { children: issues.map((issue) => /* @__PURE__ */ jsxs15(
|
|
4252
4812
|
"div",
|
|
4253
4813
|
{
|
|
4254
4814
|
role: "button",
|
|
@@ -4267,8 +4827,8 @@ function IssueListScreen({ nav, category }) {
|
|
|
4267
4827
|
userSelect: "none"
|
|
4268
4828
|
},
|
|
4269
4829
|
children: [
|
|
4270
|
-
/* @__PURE__ */
|
|
4271
|
-
issue.severity && /* @__PURE__ */
|
|
4830
|
+
/* @__PURE__ */ jsxs15("div", { style: { display: "flex", alignItems: "flex-start", gap: 8 }, children: [
|
|
4831
|
+
issue.severity && /* @__PURE__ */ jsx16(
|
|
4272
4832
|
"span",
|
|
4273
4833
|
{
|
|
4274
4834
|
style: {
|
|
@@ -4281,7 +4841,7 @@ function IssueListScreen({ nav, category }) {
|
|
|
4281
4841
|
}
|
|
4282
4842
|
}
|
|
4283
4843
|
),
|
|
4284
|
-
/* @__PURE__ */
|
|
4844
|
+
/* @__PURE__ */ jsx16("span", { style: {
|
|
4285
4845
|
fontSize: 13,
|
|
4286
4846
|
fontWeight: 600,
|
|
4287
4847
|
color: colors.textPrimary,
|
|
@@ -4291,11 +4851,11 @@ function IssueListScreen({ nav, category }) {
|
|
|
4291
4851
|
whiteSpace: "nowrap"
|
|
4292
4852
|
}, children: issue.title })
|
|
4293
4853
|
] }),
|
|
4294
|
-
/* @__PURE__ */
|
|
4295
|
-
issue.route && /* @__PURE__ */
|
|
4296
|
-
/* @__PURE__ */
|
|
4854
|
+
/* @__PURE__ */ jsxs15("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 6 }, children: [
|
|
4855
|
+
issue.route && /* @__PURE__ */ jsx16("span", { style: { fontSize: 11, color: colors.textDim, maxWidth: "60%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: issue.route }),
|
|
4856
|
+
/* @__PURE__ */ jsx16("span", { style: { fontSize: 11, color: colors.textDim, marginLeft: "auto" }, children: formatRelativeTime(issue.updatedAt) })
|
|
4297
4857
|
] }),
|
|
4298
|
-
category === "done" && issue.verifiedByName && /* @__PURE__ */
|
|
4858
|
+
category === "done" && issue.verifiedByName && /* @__PURE__ */ jsxs15("div", { style: {
|
|
4299
4859
|
display: "inline-flex",
|
|
4300
4860
|
alignItems: "center",
|
|
4301
4861
|
gap: 4,
|
|
@@ -4311,7 +4871,7 @@ function IssueListScreen({ nav, category }) {
|
|
|
4311
4871
|
"\u2714 Verified by ",
|
|
4312
4872
|
issue.verifiedByName
|
|
4313
4873
|
] }),
|
|
4314
|
-
category === "reopened" && issue.originalBugTitle && /* @__PURE__ */
|
|
4874
|
+
category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ jsxs15("div", { style: {
|
|
4315
4875
|
display: "inline-flex",
|
|
4316
4876
|
alignItems: "center",
|
|
4317
4877
|
gap: 4,
|
|
@@ -4338,7 +4898,7 @@ function IssueListScreen({ nav, category }) {
|
|
|
4338
4898
|
}
|
|
4339
4899
|
|
|
4340
4900
|
// src/widget/screens/IssueDetailScreen.tsx
|
|
4341
|
-
import { jsx as
|
|
4901
|
+
import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4342
4902
|
var STATUS_LABELS = {
|
|
4343
4903
|
new: { label: "New", bg: "#1e3a5f", color: "#60a5fa" },
|
|
4344
4904
|
triaging: { label: "Triaging", bg: "#1e3a5f", color: "#60a5fa" },
|
|
@@ -4360,11 +4920,12 @@ var SEVERITY_CONFIG = {
|
|
|
4360
4920
|
low: { label: "Low", color: "#71717a", bg: "#27272a" }
|
|
4361
4921
|
};
|
|
4362
4922
|
function IssueDetailScreen({ nav, issue }) {
|
|
4923
|
+
const { dashboardUrl } = useBugBear();
|
|
4363
4924
|
const statusConfig = STATUS_LABELS[issue.status] || { label: issue.status, bg: "#27272a", color: "#a1a1aa" };
|
|
4364
4925
|
const severityConfig = issue.severity ? SEVERITY_CONFIG[issue.severity] : null;
|
|
4365
|
-
return /* @__PURE__ */
|
|
4366
|
-
/* @__PURE__ */
|
|
4367
|
-
/* @__PURE__ */
|
|
4926
|
+
return /* @__PURE__ */ jsxs16("div", { children: [
|
|
4927
|
+
/* @__PURE__ */ jsxs16("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginBottom: 12 }, children: [
|
|
4928
|
+
/* @__PURE__ */ jsx17("span", { style: {
|
|
4368
4929
|
backgroundColor: statusConfig.bg,
|
|
4369
4930
|
color: statusConfig.color,
|
|
4370
4931
|
fontSize: 11,
|
|
@@ -4372,7 +4933,7 @@ function IssueDetailScreen({ nav, issue }) {
|
|
|
4372
4933
|
padding: "3px 10px",
|
|
4373
4934
|
borderRadius: 6
|
|
4374
4935
|
}, children: statusConfig.label }),
|
|
4375
|
-
severityConfig && /* @__PURE__ */
|
|
4936
|
+
severityConfig && /* @__PURE__ */ jsx17("span", { style: {
|
|
4376
4937
|
backgroundColor: severityConfig.bg,
|
|
4377
4938
|
color: severityConfig.color,
|
|
4378
4939
|
fontSize: 11,
|
|
@@ -4381,9 +4942,9 @@ function IssueDetailScreen({ nav, issue }) {
|
|
|
4381
4942
|
borderRadius: 6
|
|
4382
4943
|
}, children: severityConfig.label })
|
|
4383
4944
|
] }),
|
|
4384
|
-
/* @__PURE__ */
|
|
4385
|
-
issue.route && /* @__PURE__ */
|
|
4386
|
-
issue.description && /* @__PURE__ */
|
|
4945
|
+
/* @__PURE__ */ jsx17("h3", { style: { fontSize: 16, fontWeight: 700, color: colors.textPrimary, margin: "0 0 8px 0", lineHeight: 1.3 }, children: issue.title }),
|
|
4946
|
+
issue.route && /* @__PURE__ */ jsx17("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 12 }, children: issue.route }),
|
|
4947
|
+
issue.description && /* @__PURE__ */ jsx17("div", { style: {
|
|
4387
4948
|
backgroundColor: colors.card,
|
|
4388
4949
|
border: `1px solid ${colors.border}`,
|
|
4389
4950
|
borderRadius: 8,
|
|
@@ -4395,56 +4956,56 @@ function IssueDetailScreen({ nav, issue }) {
|
|
|
4395
4956
|
whiteSpace: "pre-wrap",
|
|
4396
4957
|
wordBreak: "break-word"
|
|
4397
4958
|
}, children: issue.description }),
|
|
4398
|
-
issue.verifiedByName && /* @__PURE__ */
|
|
4959
|
+
issue.verifiedByName && /* @__PURE__ */ jsxs16("div", { style: {
|
|
4399
4960
|
backgroundColor: "#14532d",
|
|
4400
4961
|
border: "1px solid #166534",
|
|
4401
4962
|
borderRadius: 8,
|
|
4402
4963
|
padding: 12,
|
|
4403
4964
|
marginBottom: 12
|
|
4404
4965
|
}, children: [
|
|
4405
|
-
/* @__PURE__ */
|
|
4406
|
-
/* @__PURE__ */
|
|
4407
|
-
/* @__PURE__ */
|
|
4966
|
+
/* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
|
|
4967
|
+
/* @__PURE__ */ jsx17("span", { style: { fontSize: 16 }, children: "\u2705" }),
|
|
4968
|
+
/* @__PURE__ */ jsx17("span", { style: { fontSize: 13, fontWeight: 600, color: "#4ade80" }, children: "Retesting Proof" })
|
|
4408
4969
|
] }),
|
|
4409
|
-
/* @__PURE__ */
|
|
4970
|
+
/* @__PURE__ */ jsxs16("div", { style: { fontSize: 12, color: "#86efac" }, children: [
|
|
4410
4971
|
"Verified by ",
|
|
4411
|
-
/* @__PURE__ */
|
|
4412
|
-
issue.verifiedAt && /* @__PURE__ */
|
|
4972
|
+
/* @__PURE__ */ jsx17("strong", { children: issue.verifiedByName }),
|
|
4973
|
+
issue.verifiedAt && /* @__PURE__ */ jsxs16("span", { children: [
|
|
4413
4974
|
" on ",
|
|
4414
4975
|
new Date(issue.verifiedAt).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" })
|
|
4415
4976
|
] })
|
|
4416
4977
|
] })
|
|
4417
4978
|
] }),
|
|
4418
|
-
issue.originalBugTitle && /* @__PURE__ */
|
|
4979
|
+
issue.originalBugTitle && /* @__PURE__ */ jsxs16("div", { style: {
|
|
4419
4980
|
backgroundColor: "#422006",
|
|
4420
4981
|
border: "1px solid #854d0e",
|
|
4421
4982
|
borderRadius: 8,
|
|
4422
4983
|
padding: 12,
|
|
4423
4984
|
marginBottom: 12
|
|
4424
4985
|
}, children: [
|
|
4425
|
-
/* @__PURE__ */
|
|
4426
|
-
/* @__PURE__ */
|
|
4427
|
-
/* @__PURE__ */
|
|
4986
|
+
/* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
|
|
4987
|
+
/* @__PURE__ */ jsx17("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
|
|
4988
|
+
/* @__PURE__ */ jsx17("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Original Bug" })
|
|
4428
4989
|
] }),
|
|
4429
|
-
/* @__PURE__ */
|
|
4990
|
+
/* @__PURE__ */ jsxs16("div", { style: { fontSize: 12, color: "#fde68a" }, children: [
|
|
4430
4991
|
"Retest of: ",
|
|
4431
|
-
/* @__PURE__ */
|
|
4992
|
+
/* @__PURE__ */ jsx17("strong", { children: issue.originalBugTitle })
|
|
4432
4993
|
] })
|
|
4433
4994
|
] }),
|
|
4434
|
-
issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */
|
|
4435
|
-
/* @__PURE__ */
|
|
4995
|
+
issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ jsxs16("div", { style: { marginBottom: 12 }, children: [
|
|
4996
|
+
/* @__PURE__ */ jsxs16("div", { style: { fontSize: 12, fontWeight: 600, color: colors.textMuted, marginBottom: 8 }, children: [
|
|
4436
4997
|
"Screenshots (",
|
|
4437
4998
|
issue.screenshotUrls.length,
|
|
4438
4999
|
")"
|
|
4439
5000
|
] }),
|
|
4440
|
-
/* @__PURE__ */
|
|
5001
|
+
/* @__PURE__ */ jsx17("div", { style: { display: "flex", gap: 8, overflowX: "auto" }, children: issue.screenshotUrls.map((url, i) => /* @__PURE__ */ jsx17(
|
|
4441
5002
|
"a",
|
|
4442
5003
|
{
|
|
4443
5004
|
href: url,
|
|
4444
5005
|
target: "_blank",
|
|
4445
5006
|
rel: "noopener noreferrer",
|
|
4446
5007
|
style: { flexShrink: 0 },
|
|
4447
|
-
children: /* @__PURE__ */
|
|
5008
|
+
children: /* @__PURE__ */ jsx17(
|
|
4448
5009
|
"img",
|
|
4449
5010
|
{
|
|
4450
5011
|
src: url,
|
|
@@ -4462,22 +5023,44 @@ function IssueDetailScreen({ nav, issue }) {
|
|
|
4462
5023
|
i
|
|
4463
5024
|
)) })
|
|
4464
5025
|
] }),
|
|
4465
|
-
/* @__PURE__ */
|
|
5026
|
+
/* @__PURE__ */ jsxs16("div", { style: {
|
|
4466
5027
|
borderTop: `1px solid ${colors.border}`,
|
|
4467
5028
|
paddingTop: 12,
|
|
4468
5029
|
marginTop: 4
|
|
4469
5030
|
}, children: [
|
|
4470
|
-
issue.reporterName && /* @__PURE__ */
|
|
5031
|
+
issue.reporterName && /* @__PURE__ */ jsxs16("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 4 }, children: [
|
|
4471
5032
|
"Reported by ",
|
|
4472
5033
|
issue.reporterName
|
|
4473
5034
|
] }),
|
|
4474
|
-
/* @__PURE__ */
|
|
5035
|
+
/* @__PURE__ */ jsxs16("div", { style: { fontSize: 11, color: colors.textDim }, children: [
|
|
4475
5036
|
"Created ",
|
|
4476
5037
|
formatRelativeTime(issue.createdAt),
|
|
4477
5038
|
" \xB7 Updated ",
|
|
4478
5039
|
formatRelativeTime(issue.updatedAt)
|
|
4479
5040
|
] })
|
|
4480
|
-
] })
|
|
5041
|
+
] }),
|
|
5042
|
+
dashboardUrl && /* @__PURE__ */ jsx17(
|
|
5043
|
+
"a",
|
|
5044
|
+
{
|
|
5045
|
+
href: `${dashboardUrl}/reports`,
|
|
5046
|
+
target: "_blank",
|
|
5047
|
+
rel: "noopener noreferrer",
|
|
5048
|
+
style: {
|
|
5049
|
+
display: "flex",
|
|
5050
|
+
alignItems: "center",
|
|
5051
|
+
justifyContent: "center",
|
|
5052
|
+
gap: 6,
|
|
5053
|
+
marginTop: 12,
|
|
5054
|
+
padding: "10px 0",
|
|
5055
|
+
fontSize: 13,
|
|
5056
|
+
fontWeight: 500,
|
|
5057
|
+
color: colors.blue,
|
|
5058
|
+
textDecoration: "none",
|
|
5059
|
+
borderTop: `1px solid ${colors.border}`
|
|
5060
|
+
},
|
|
5061
|
+
children: "\u{1F310} View on Dashboard \u2192"
|
|
5062
|
+
}
|
|
5063
|
+
)
|
|
4481
5064
|
] });
|
|
4482
5065
|
}
|
|
4483
5066
|
|
|
@@ -4485,9 +5068,9 @@ function IssueDetailScreen({ nav, issue }) {
|
|
|
4485
5068
|
var BUGBEAR_LOGO_BASE64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAJhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAASQBAACAAAAFAAAAISgAQADAAAAAQABAACgAgAEAAAAAQAAAGCgAwAEAAAAAQAAAGAAAAAAMjAyNjowMToyNCAxNjoyMTozOABbbVCuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpJcHRjNHhtcEV4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPmZjNzJlN2Q2LTYyYTEtNDE1ZS04MjY5LWM2NjA4MjY0OWRiMDwvSXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyNi0wMS0yNFQxNjoyMTozODwveG1wOkNyZWF0ZURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+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";
|
|
4486
5069
|
|
|
4487
5070
|
// src/BugBearPanel.tsx
|
|
4488
|
-
import { Fragment as Fragment4, jsx as
|
|
5071
|
+
import { Fragment as Fragment4, jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4489
5072
|
function BugBearIcon({ size = 24 }) {
|
|
4490
|
-
return /* @__PURE__ */
|
|
5073
|
+
return /* @__PURE__ */ jsx18(
|
|
4491
5074
|
"img",
|
|
4492
5075
|
{
|
|
4493
5076
|
src: BUGBEAR_LOGO_BASE64,
|
|
@@ -4652,37 +5235,37 @@ function BugBearPanel({
|
|
|
4652
5235
|
const renderScreen = () => {
|
|
4653
5236
|
switch (currentScreen.name) {
|
|
4654
5237
|
case "HOME":
|
|
4655
|
-
return /* @__PURE__ */
|
|
5238
|
+
return /* @__PURE__ */ jsx18(HomeScreen, { nav });
|
|
4656
5239
|
case "TEST_DETAIL":
|
|
4657
|
-
return /* @__PURE__ */
|
|
5240
|
+
return /* @__PURE__ */ jsx18(TestDetailScreen, { testId: currentScreen.testId, nav });
|
|
4658
5241
|
case "TEST_LIST":
|
|
4659
|
-
return /* @__PURE__ */
|
|
5242
|
+
return /* @__PURE__ */ jsx18(TestListScreen, { nav });
|
|
4660
5243
|
case "TEST_FEEDBACK":
|
|
4661
|
-
return /* @__PURE__ */
|
|
5244
|
+
return /* @__PURE__ */ jsx18(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
|
|
4662
5245
|
case "REPORT":
|
|
4663
|
-
return /* @__PURE__ */
|
|
5246
|
+
return /* @__PURE__ */ jsx18(ReportScreen, { nav, prefill: currentScreen.prefill });
|
|
4664
5247
|
case "REPORT_SUCCESS":
|
|
4665
|
-
return /* @__PURE__ */
|
|
5248
|
+
return /* @__PURE__ */ jsx18(ReportSuccessScreen, { nav });
|
|
4666
5249
|
case "MESSAGE_LIST":
|
|
4667
|
-
return /* @__PURE__ */
|
|
5250
|
+
return /* @__PURE__ */ jsx18(MessageListScreen, { nav });
|
|
4668
5251
|
case "THREAD_DETAIL":
|
|
4669
|
-
return /* @__PURE__ */
|
|
5252
|
+
return /* @__PURE__ */ jsx18(ThreadDetailScreen, { thread: currentScreen.thread, nav });
|
|
4670
5253
|
case "COMPOSE_MESSAGE":
|
|
4671
|
-
return /* @__PURE__ */
|
|
5254
|
+
return /* @__PURE__ */ jsx18(ComposeMessageScreen, { nav });
|
|
4672
5255
|
case "ISSUE_LIST":
|
|
4673
|
-
return /* @__PURE__ */
|
|
5256
|
+
return /* @__PURE__ */ jsx18(IssueListScreen, { nav, category: currentScreen.category });
|
|
4674
5257
|
case "ISSUE_DETAIL":
|
|
4675
|
-
return /* @__PURE__ */
|
|
5258
|
+
return /* @__PURE__ */ jsx18(IssueDetailScreen, { nav, issue: currentScreen.issue });
|
|
4676
5259
|
case "PROFILE":
|
|
4677
|
-
return /* @__PURE__ */
|
|
5260
|
+
return /* @__PURE__ */ jsx18(ProfileScreen, { nav });
|
|
4678
5261
|
default:
|
|
4679
|
-
return /* @__PURE__ */
|
|
5262
|
+
return /* @__PURE__ */ jsx18(HomeScreen, { nav });
|
|
4680
5263
|
}
|
|
4681
5264
|
};
|
|
4682
5265
|
if (typeof document === "undefined") return null;
|
|
4683
5266
|
const headerTitle = getHeaderTitle();
|
|
4684
5267
|
return createPortal(
|
|
4685
|
-
/* @__PURE__ */
|
|
5268
|
+
/* @__PURE__ */ jsxs17(
|
|
4686
5269
|
"div",
|
|
4687
5270
|
{
|
|
4688
5271
|
ref: panelRef,
|
|
@@ -4701,7 +5284,7 @@ function BugBearPanel({
|
|
|
4701
5284
|
},
|
|
4702
5285
|
onMouseDown: handleMouseDown,
|
|
4703
5286
|
children: [
|
|
4704
|
-
collapsed && /* @__PURE__ */
|
|
5287
|
+
collapsed && /* @__PURE__ */ jsxs17(
|
|
4705
5288
|
"button",
|
|
4706
5289
|
{
|
|
4707
5290
|
onClick: () => setCollapsed(false),
|
|
@@ -4723,9 +5306,9 @@ function BugBearPanel({
|
|
|
4723
5306
|
fontWeight: 500
|
|
4724
5307
|
},
|
|
4725
5308
|
children: [
|
|
4726
|
-
/* @__PURE__ */
|
|
4727
|
-
/* @__PURE__ */
|
|
4728
|
-
badgeCount > 0 && /* @__PURE__ */
|
|
5309
|
+
/* @__PURE__ */ jsx18(BugBearIcon, { size: 24 }),
|
|
5310
|
+
/* @__PURE__ */ jsx18("span", { children: "BugBear" }),
|
|
5311
|
+
badgeCount > 0 && /* @__PURE__ */ jsx18("span", { style: {
|
|
4729
5312
|
backgroundColor: "#fff",
|
|
4730
5313
|
color: colors.blue,
|
|
4731
5314
|
fontSize: "0.75rem",
|
|
@@ -4736,7 +5319,7 @@ function BugBearPanel({
|
|
|
4736
5319
|
]
|
|
4737
5320
|
}
|
|
4738
5321
|
),
|
|
4739
|
-
!collapsed && /* @__PURE__ */
|
|
5322
|
+
!collapsed && /* @__PURE__ */ jsxs17("div", { style: {
|
|
4740
5323
|
width: PANEL_WIDTH,
|
|
4741
5324
|
backgroundColor: colors.bg,
|
|
4742
5325
|
borderRadius: 12,
|
|
@@ -4744,7 +5327,7 @@ function BugBearPanel({
|
|
|
4744
5327
|
overflow: "hidden",
|
|
4745
5328
|
boxShadow: "0 25px 50px -12px rgba(0,0,0,0.5)"
|
|
4746
5329
|
}, children: [
|
|
4747
|
-
/* @__PURE__ */
|
|
5330
|
+
/* @__PURE__ */ jsxs17(
|
|
4748
5331
|
"div",
|
|
4749
5332
|
{
|
|
4750
5333
|
"data-drag-handle": true,
|
|
@@ -4760,7 +5343,7 @@ function BugBearPanel({
|
|
|
4760
5343
|
cursor: draggable ? isDragging ? "grabbing" : "grab" : "default"
|
|
4761
5344
|
},
|
|
4762
5345
|
children: [
|
|
4763
|
-
/* @__PURE__ */
|
|
5346
|
+
/* @__PURE__ */ jsx18("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ jsx18(
|
|
4764
5347
|
"button",
|
|
4765
5348
|
{
|
|
4766
5349
|
onClick: pop,
|
|
@@ -4776,14 +5359,14 @@ function BugBearPanel({
|
|
|
4776
5359
|
},
|
|
4777
5360
|
children: "\u2190 Back"
|
|
4778
5361
|
}
|
|
4779
|
-
) : /* @__PURE__ */
|
|
4780
|
-
/* @__PURE__ */
|
|
4781
|
-
/* @__PURE__ */
|
|
4782
|
-
/* @__PURE__ */
|
|
4783
|
-
/* @__PURE__ */
|
|
4784
|
-
draggable && /* @__PURE__ */
|
|
5362
|
+
) : /* @__PURE__ */ jsxs17(Fragment4, { children: [
|
|
5363
|
+
/* @__PURE__ */ jsx18(BugBearIcon, { size: 28 }),
|
|
5364
|
+
/* @__PURE__ */ jsxs17("div", { children: [
|
|
5365
|
+
/* @__PURE__ */ jsxs17("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
5366
|
+
/* @__PURE__ */ jsx18("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
|
|
5367
|
+
draggable && /* @__PURE__ */ jsx18("span", { style: { color: colors.textMuted, fontSize: "0.75rem" }, title: "Drag to move, double-click to reset", children: "\u22EE\u22EE" })
|
|
4785
5368
|
] }),
|
|
4786
|
-
testerInfo && /* @__PURE__ */
|
|
5369
|
+
testerInfo && /* @__PURE__ */ jsxs17(
|
|
4787
5370
|
"button",
|
|
4788
5371
|
{
|
|
4789
5372
|
onClick: () => push({ name: "PROFILE" }),
|
|
@@ -4801,13 +5384,13 @@ function BugBearPanel({
|
|
|
4801
5384
|
},
|
|
4802
5385
|
children: [
|
|
4803
5386
|
testerInfo.name,
|
|
4804
|
-
/* @__PURE__ */
|
|
5387
|
+
/* @__PURE__ */ jsx18("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
|
|
4805
5388
|
]
|
|
4806
5389
|
}
|
|
4807
5390
|
)
|
|
4808
5391
|
] })
|
|
4809
5392
|
] }) }),
|
|
4810
|
-
headerTitle ? /* @__PURE__ */
|
|
5393
|
+
headerTitle ? /* @__PURE__ */ jsx18("span", { style: {
|
|
4811
5394
|
fontSize: "0.8125rem",
|
|
4812
5395
|
fontWeight: 600,
|
|
4813
5396
|
color: colors.textSecondary,
|
|
@@ -4817,7 +5400,7 @@ function BugBearPanel({
|
|
|
4817
5400
|
textOverflow: "ellipsis",
|
|
4818
5401
|
whiteSpace: "nowrap"
|
|
4819
5402
|
}, children: headerTitle }) : null,
|
|
4820
|
-
/* @__PURE__ */
|
|
5403
|
+
/* @__PURE__ */ jsx18(
|
|
4821
5404
|
"button",
|
|
4822
5405
|
{
|
|
4823
5406
|
onClick: handleClose,
|
|
@@ -4841,13 +5424,13 @@ function BugBearPanel({
|
|
|
4841
5424
|
]
|
|
4842
5425
|
}
|
|
4843
5426
|
),
|
|
4844
|
-
/* @__PURE__ */
|
|
5427
|
+
/* @__PURE__ */ jsx18("div", { style: {
|
|
4845
5428
|
padding: 16,
|
|
4846
5429
|
maxHeight: 400,
|
|
4847
5430
|
overflowY: "auto",
|
|
4848
5431
|
backgroundColor: colors.bg,
|
|
4849
5432
|
color: colors.textSecondary
|
|
4850
|
-
}, children: isLoading ? /* @__PURE__ */
|
|
5433
|
+
}, 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
5434
|
] })
|
|
4852
5435
|
]
|
|
4853
5436
|
}
|
|
@@ -4859,7 +5442,7 @@ function BugBearPanel({
|
|
|
4859
5442
|
// src/BugBearErrorBoundary.tsx
|
|
4860
5443
|
import { Component } from "react";
|
|
4861
5444
|
import { captureError, contextCapture as contextCapture2 } from "@bbearai/core";
|
|
4862
|
-
import { jsx as
|
|
5445
|
+
import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
4863
5446
|
var BugBearErrorBoundary = class extends Component {
|
|
4864
5447
|
constructor(props) {
|
|
4865
5448
|
super(props);
|
|
@@ -4904,7 +5487,7 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4904
5487
|
if (fallback) {
|
|
4905
5488
|
return fallback;
|
|
4906
5489
|
}
|
|
4907
|
-
return /* @__PURE__ */
|
|
5490
|
+
return /* @__PURE__ */ jsxs18(
|
|
4908
5491
|
"div",
|
|
4909
5492
|
{
|
|
4910
5493
|
style: {
|
|
@@ -4916,13 +5499,13 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4916
5499
|
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
|
|
4917
5500
|
},
|
|
4918
5501
|
children: [
|
|
4919
|
-
/* @__PURE__ */
|
|
4920
|
-
/* @__PURE__ */
|
|
4921
|
-
/* @__PURE__ */
|
|
5502
|
+
/* @__PURE__ */ jsxs18("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
|
|
5503
|
+
/* @__PURE__ */ jsx19("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
|
|
5504
|
+
/* @__PURE__ */ jsx19("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
|
|
4922
5505
|
] }),
|
|
4923
|
-
/* @__PURE__ */
|
|
4924
|
-
/* @__PURE__ */
|
|
4925
|
-
/* @__PURE__ */
|
|
5506
|
+
/* @__PURE__ */ jsx19("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
|
|
5507
|
+
/* @__PURE__ */ jsxs18("div", { style: { display: "flex", gap: "8px" }, children: [
|
|
5508
|
+
/* @__PURE__ */ jsx19(
|
|
4926
5509
|
"button",
|
|
4927
5510
|
{
|
|
4928
5511
|
onClick: this.reset,
|
|
@@ -4939,7 +5522,7 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4939
5522
|
children: "Try Again"
|
|
4940
5523
|
}
|
|
4941
5524
|
),
|
|
4942
|
-
/* @__PURE__ */
|
|
5525
|
+
/* @__PURE__ */ jsx19(
|
|
4943
5526
|
"button",
|
|
4944
5527
|
{
|
|
4945
5528
|
onClick: () => window.location.reload(),
|
|
@@ -4957,7 +5540,7 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4957
5540
|
}
|
|
4958
5541
|
)
|
|
4959
5542
|
] }),
|
|
4960
|
-
/* @__PURE__ */
|
|
5543
|
+
/* @__PURE__ */ jsx19("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
|
|
4961
5544
|
]
|
|
4962
5545
|
}
|
|
4963
5546
|
);
|