@bbearai/react 0.4.6 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +729 -435
- package/dist/index.mjs +729 -435
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -84,6 +84,8 @@ var BugBearContext = (0, import_react.createContext)({
|
|
|
84
84
|
issueCounts: { open: 0, done: 0, reopened: 0 },
|
|
85
85
|
refreshIssueCounts: async () => {
|
|
86
86
|
},
|
|
87
|
+
queuedCount: 0,
|
|
88
|
+
dashboardUrl: void 0,
|
|
87
89
|
onError: void 0
|
|
88
90
|
});
|
|
89
91
|
function useBugBear() {
|
|
@@ -102,6 +104,7 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
102
104
|
const [threads, setThreads] = (0, import_react.useState)([]);
|
|
103
105
|
const [unreadCount, setUnreadCount] = (0, import_react.useState)(0);
|
|
104
106
|
const [issueCounts, setIssueCounts] = (0, import_react.useState)({ open: 0, done: 0, reopened: 0 });
|
|
107
|
+
const [queuedCount, setQueuedCount] = (0, import_react.useState)(0);
|
|
105
108
|
const refreshAssignments = (0, import_react.useCallback)(async () => {
|
|
106
109
|
if (!client) return;
|
|
107
110
|
const newAssignments = await client.getAssignedTests();
|
|
@@ -249,18 +252,45 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
249
252
|
hasInitialized.current = true;
|
|
250
253
|
import_core.contextCapture.startCapture();
|
|
251
254
|
const newClient = (0, import_core.createBugBear)(config);
|
|
255
|
+
if (newClient.queue) {
|
|
256
|
+
newClient.queue.onChange(setQueuedCount);
|
|
257
|
+
newClient.initQueue();
|
|
258
|
+
}
|
|
252
259
|
setClient(newClient);
|
|
253
260
|
initializeBugBear(newClient);
|
|
254
261
|
}
|
|
255
262
|
}, [enabled, config, initializeBugBear]);
|
|
263
|
+
(0, import_react.useEffect)(() => {
|
|
264
|
+
if (!client?.queue) return;
|
|
265
|
+
const handleOnline = () => {
|
|
266
|
+
client.queue?.flush();
|
|
267
|
+
};
|
|
268
|
+
window.addEventListener("online", handleOnline);
|
|
269
|
+
if (navigator.onLine && client.queue.count > 0) {
|
|
270
|
+
client.queue.flush();
|
|
271
|
+
}
|
|
272
|
+
return () => window.removeEventListener("online", handleOnline);
|
|
273
|
+
}, [client]);
|
|
256
274
|
(0, import_react.useEffect)(() => {
|
|
257
275
|
if (!client || !isTester || !isQAEnabled) return;
|
|
276
|
+
let unsubscribe;
|
|
277
|
+
if (client.realtimeEnabled) {
|
|
278
|
+
unsubscribe = client.subscribeToChanges({
|
|
279
|
+
onAssignmentChange: refreshAssignments,
|
|
280
|
+
onMessageChange: refreshThreads,
|
|
281
|
+
onReportChange: refreshIssueCounts
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
const pollInterval = client.realtimeEnabled ? 12e4 : 3e4;
|
|
258
285
|
const interval = setInterval(() => {
|
|
259
286
|
refreshThreads();
|
|
260
287
|
refreshIssueCounts();
|
|
261
|
-
},
|
|
262
|
-
return () =>
|
|
263
|
-
|
|
288
|
+
}, pollInterval);
|
|
289
|
+
return () => {
|
|
290
|
+
clearInterval(interval);
|
|
291
|
+
unsubscribe?.();
|
|
292
|
+
};
|
|
293
|
+
}, [client, isTester, isQAEnabled, refreshThreads, refreshIssueCounts, refreshAssignments]);
|
|
264
294
|
const currentAssignment = assignments.find(
|
|
265
295
|
(a) => a.status === "in_progress"
|
|
266
296
|
) || assignments.find(
|
|
@@ -303,6 +333,8 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
303
333
|
// Issue tracking
|
|
304
334
|
issueCounts,
|
|
305
335
|
refreshIssueCounts,
|
|
336
|
+
queuedCount,
|
|
337
|
+
dashboardUrl: config.dashboardUrl,
|
|
306
338
|
onError: config.onError
|
|
307
339
|
},
|
|
308
340
|
children
|
|
@@ -429,9 +461,148 @@ function getThreadTypeIcon(type) {
|
|
|
429
461
|
|
|
430
462
|
// src/widget/screens/HomeScreen.tsx
|
|
431
463
|
var import_react3 = require("react");
|
|
464
|
+
|
|
465
|
+
// src/widget/Skeleton.tsx
|
|
432
466
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
467
|
+
var PULSE_CSS = `@keyframes bb-skeleton-pulse{0%,100%{opacity:.6}50%{opacity:.25}}`;
|
|
468
|
+
var styleInjected = false;
|
|
469
|
+
function injectStyle() {
|
|
470
|
+
if (styleInjected || typeof document === "undefined") return;
|
|
471
|
+
const style = document.createElement("style");
|
|
472
|
+
style.textContent = PULSE_CSS;
|
|
473
|
+
document.head.appendChild(style);
|
|
474
|
+
styleInjected = true;
|
|
475
|
+
}
|
|
476
|
+
function Bar({ width = "100%", height = 12, radius = 6, style }) {
|
|
477
|
+
injectStyle();
|
|
478
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
479
|
+
"div",
|
|
480
|
+
{
|
|
481
|
+
style: {
|
|
482
|
+
width,
|
|
483
|
+
height,
|
|
484
|
+
borderRadius: radius,
|
|
485
|
+
backgroundColor: colors.border,
|
|
486
|
+
animation: "bb-skeleton-pulse 1.5s ease-in-out infinite",
|
|
487
|
+
...style
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
);
|
|
491
|
+
}
|
|
492
|
+
function Circle({ size = 20, style }) {
|
|
493
|
+
injectStyle();
|
|
494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
495
|
+
"div",
|
|
496
|
+
{
|
|
497
|
+
style: {
|
|
498
|
+
width: size,
|
|
499
|
+
height: size,
|
|
500
|
+
borderRadius: size / 2,
|
|
501
|
+
backgroundColor: colors.border,
|
|
502
|
+
animation: "bb-skeleton-pulse 1.5s ease-in-out infinite",
|
|
503
|
+
flexShrink: 0,
|
|
504
|
+
...style
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
);
|
|
508
|
+
}
|
|
509
|
+
function HomeScreenSkeleton() {
|
|
510
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
|
|
511
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "100%", height: 100, radius: 16, style: { marginBottom: 20 } }),
|
|
512
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: 12, marginBottom: 20 }, children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { backgroundColor: colors.card, border: `1px solid ${colors.border}`, borderRadius: 12, padding: 16, display: "flex", flexDirection: "column", alignItems: "center", gap: 8 }, children: [
|
|
513
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Circle, { size: 28 }),
|
|
514
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: 60, height: 10 })
|
|
515
|
+
] }, i)) }),
|
|
516
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr", gap: 10, marginBottom: 20 }, children: [0, 1, 2].map((i) => /* @__PURE__ */ (0, import_jsx_runtime2.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: [
|
|
517
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: 30, height: 18 }),
|
|
518
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: 40, height: 8 })
|
|
519
|
+
] }, i)) }),
|
|
520
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "100%", height: 6, radius: 3, style: { marginBottom: 8 } }),
|
|
521
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: 120, height: 10, style: { margin: "0 auto 16px" } })
|
|
522
|
+
] });
|
|
523
|
+
}
|
|
524
|
+
function TestItemSkeleton({ delay = 0 }) {
|
|
525
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { display: "flex", alignItems: "center", padding: "10px 12px", borderRadius: 8, marginBottom: 4, backgroundColor: colors.card }, children: [
|
|
526
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Circle, { size: 18, style: { marginRight: 10, animationDelay: `${delay}ms` } }),
|
|
527
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { flex: 1 }, children: [
|
|
528
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "70%", height: 11, style: { marginBottom: 4, animationDelay: `${delay}ms` } }),
|
|
529
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "45%", height: 8, style: { animationDelay: `${delay}ms` } })
|
|
530
|
+
] }),
|
|
531
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: 50, height: 18, radius: 6, style: { marginLeft: 8, animationDelay: `${delay}ms` } })
|
|
532
|
+
] });
|
|
533
|
+
}
|
|
534
|
+
function TestListScreenSkeleton() {
|
|
535
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
|
|
536
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { display: "flex", gap: 8, marginBottom: 8 }, children: [55, 50, 50, 70].map((w, i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: w, height: 28, radius: 8, style: { animationDelay: `${i * 50}ms` } }, i)) }),
|
|
537
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "100%", height: 36, radius: 8, style: { marginBottom: 10 } }),
|
|
538
|
+
[0, 1].map((g) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { marginBottom: 12 }, children: [
|
|
539
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, padding: "8px 4px" }, children: [
|
|
540
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: 12, height: 10 }),
|
|
541
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "40%", height: 12 }),
|
|
542
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: 40, height: 4, radius: 2, style: { marginLeft: "auto" } }),
|
|
543
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: 24, height: 10 })
|
|
544
|
+
] }),
|
|
545
|
+
[0, 1, 2].map((i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(TestItemSkeleton, { delay: (g * 3 + i) * 80 }, i))
|
|
546
|
+
] }, g))
|
|
547
|
+
] });
|
|
548
|
+
}
|
|
549
|
+
function IssueListScreenSkeleton() {
|
|
550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
551
|
+
"div",
|
|
552
|
+
{
|
|
553
|
+
style: {
|
|
554
|
+
backgroundColor: colors.card,
|
|
555
|
+
border: `1px solid ${colors.border}`,
|
|
556
|
+
borderRadius: 10,
|
|
557
|
+
padding: "12px 14px",
|
|
558
|
+
marginBottom: 8
|
|
559
|
+
},
|
|
560
|
+
children: [
|
|
561
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
562
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Circle, { size: 8, style: { animationDelay: `${i * 100}ms` } }),
|
|
563
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "65%", height: 11, style: { animationDelay: `${i * 100}ms` } })
|
|
564
|
+
] }),
|
|
565
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 8 }, children: [
|
|
566
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "40%", height: 8, style: { animationDelay: `${i * 100}ms` } }),
|
|
567
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: 40, height: 8, style: { animationDelay: `${i * 100}ms` } })
|
|
568
|
+
] })
|
|
569
|
+
]
|
|
570
|
+
},
|
|
571
|
+
i
|
|
572
|
+
)) });
|
|
573
|
+
}
|
|
574
|
+
function MessageListScreenSkeleton() {
|
|
575
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
|
|
576
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "100%", height: 44, radius: 12, style: { marginBottom: 16 } }),
|
|
577
|
+
[0, 1, 2, 3].map((i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
578
|
+
"div",
|
|
579
|
+
{
|
|
580
|
+
style: {
|
|
581
|
+
display: "flex",
|
|
582
|
+
alignItems: "flex-start",
|
|
583
|
+
padding: 12,
|
|
584
|
+
borderRadius: 10,
|
|
585
|
+
marginBottom: 4,
|
|
586
|
+
backgroundColor: colors.card
|
|
587
|
+
},
|
|
588
|
+
children: [
|
|
589
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Circle, { size: 20, style: { marginRight: 10, marginTop: 2, animationDelay: `${i * 100}ms` } }),
|
|
590
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { flex: 1 }, children: [
|
|
591
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "55%", height: 11, style: { marginBottom: 5, animationDelay: `${i * 100}ms` } }),
|
|
592
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: "80%", height: 9, style: { animationDelay: `${i * 100}ms` } })
|
|
593
|
+
] }),
|
|
594
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Bar, { width: 30, height: 8, style: { marginLeft: 8, animationDelay: `${i * 100}ms` } })
|
|
595
|
+
]
|
|
596
|
+
},
|
|
597
|
+
i
|
|
598
|
+
))
|
|
599
|
+
] });
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
// src/widget/screens/HomeScreen.tsx
|
|
603
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
433
604
|
function HomeScreen({ nav }) {
|
|
434
|
-
const { assignments, unreadCount, threads, refreshAssignments, refreshThreads, issueCounts, refreshIssueCounts } = useBugBear();
|
|
605
|
+
const { assignments, unreadCount, threads, refreshAssignments, refreshThreads, issueCounts, refreshIssueCounts, isLoading } = useBugBear();
|
|
435
606
|
(0, import_react3.useEffect)(() => {
|
|
436
607
|
refreshAssignments();
|
|
437
608
|
refreshThreads();
|
|
@@ -442,8 +613,9 @@ function HomeScreen({ nav }) {
|
|
|
442
613
|
const retestCount = pendingAssignments.filter((a) => a.isVerification).length;
|
|
443
614
|
const completedCount = assignments.filter((a) => a.status === "passed" || a.status === "failed").length;
|
|
444
615
|
const totalTests = assignments.length;
|
|
445
|
-
return /* @__PURE__ */ (0,
|
|
446
|
-
|
|
616
|
+
if (isLoading) return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HomeScreenSkeleton, {});
|
|
617
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
|
|
618
|
+
pendingCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
447
619
|
"div",
|
|
448
620
|
{
|
|
449
621
|
role: "button",
|
|
@@ -465,13 +637,13 @@ function HomeScreen({ nav }) {
|
|
|
465
637
|
userSelect: "none"
|
|
466
638
|
},
|
|
467
639
|
children: [
|
|
468
|
-
/* @__PURE__ */ (0,
|
|
469
|
-
/* @__PURE__ */ (0,
|
|
640
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 48, fontWeight: 700, color: colors.blueLight }, children: pendingCount }),
|
|
641
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { style: { fontSize: 16, color: colors.blueText, marginTop: 2 }, children: [
|
|
470
642
|
"test",
|
|
471
643
|
pendingCount !== 1 ? "s" : "",
|
|
472
644
|
" waiting"
|
|
473
645
|
] }),
|
|
474
|
-
retestCount > 0 && /* @__PURE__ */ (0,
|
|
646
|
+
retestCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
475
647
|
"span",
|
|
476
648
|
{
|
|
477
649
|
style: {
|
|
@@ -495,10 +667,10 @@ function HomeScreen({ nav }) {
|
|
|
495
667
|
]
|
|
496
668
|
}
|
|
497
669
|
),
|
|
498
|
-
/* @__PURE__ */ (0,
|
|
670
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 14, fontWeight: 600, color: colors.blue, marginTop: 12 }, children: "Start Testing \u2192" })
|
|
499
671
|
]
|
|
500
672
|
}
|
|
501
|
-
) : unreadCount > 0 ? /* @__PURE__ */ (0,
|
|
673
|
+
) : unreadCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
502
674
|
"div",
|
|
503
675
|
{
|
|
504
676
|
role: "button",
|
|
@@ -520,15 +692,15 @@ function HomeScreen({ nav }) {
|
|
|
520
692
|
userSelect: "none"
|
|
521
693
|
},
|
|
522
694
|
children: [
|
|
523
|
-
/* @__PURE__ */ (0,
|
|
524
|
-
/* @__PURE__ */ (0,
|
|
695
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 48, fontWeight: 700, color: colors.blueLight }, children: unreadCount }),
|
|
696
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { style: { fontSize: 16, color: colors.blueText, marginTop: 2 }, children: [
|
|
525
697
|
"unread message",
|
|
526
698
|
unreadCount !== 1 ? "s" : ""
|
|
527
699
|
] }),
|
|
528
|
-
/* @__PURE__ */ (0,
|
|
700
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 14, fontWeight: 600, color: colors.blue, marginTop: 12 }, children: "View Messages \u2192" })
|
|
529
701
|
]
|
|
530
702
|
}
|
|
531
|
-
) : /* @__PURE__ */ (0,
|
|
703
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
532
704
|
"div",
|
|
533
705
|
{
|
|
534
706
|
style: {
|
|
@@ -542,9 +714,9 @@ function HomeScreen({ nav }) {
|
|
|
542
714
|
marginBottom: 20
|
|
543
715
|
},
|
|
544
716
|
children: [
|
|
545
|
-
/* @__PURE__ */ (0,
|
|
546
|
-
/* @__PURE__ */ (0,
|
|
547
|
-
totalTests > 0 && /* @__PURE__ */ (0,
|
|
717
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 36, marginBottom: 8 }, children: "\u2705" }),
|
|
718
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 18, fontWeight: 600, color: colors.textPrimary }, children: "All caught up!" }),
|
|
719
|
+
totalTests > 0 && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { style: { fontSize: 14, color: colors.textMuted, marginTop: 4 }, children: [
|
|
548
720
|
completedCount,
|
|
549
721
|
"/",
|
|
550
722
|
totalTests,
|
|
@@ -553,7 +725,7 @@ function HomeScreen({ nav }) {
|
|
|
553
725
|
]
|
|
554
726
|
}
|
|
555
727
|
),
|
|
556
|
-
/* @__PURE__ */ (0,
|
|
728
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
557
729
|
"div",
|
|
558
730
|
{
|
|
559
731
|
style: {
|
|
@@ -563,7 +735,7 @@ function HomeScreen({ nav }) {
|
|
|
563
735
|
marginBottom: 20
|
|
564
736
|
},
|
|
565
737
|
children: [
|
|
566
|
-
/* @__PURE__ */ (0,
|
|
738
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
567
739
|
"div",
|
|
568
740
|
{
|
|
569
741
|
role: "button",
|
|
@@ -585,9 +757,9 @@ function HomeScreen({ nav }) {
|
|
|
585
757
|
userSelect: "none"
|
|
586
758
|
},
|
|
587
759
|
children: [
|
|
588
|
-
/* @__PURE__ */ (0,
|
|
589
|
-
/* @__PURE__ */ (0,
|
|
590
|
-
pendingCount > 0 && /* @__PURE__ */ (0,
|
|
760
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u2705" }),
|
|
761
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Tests" }),
|
|
762
|
+
pendingCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
591
763
|
"span",
|
|
592
764
|
{
|
|
593
765
|
style: {
|
|
@@ -613,7 +785,7 @@ function HomeScreen({ nav }) {
|
|
|
613
785
|
]
|
|
614
786
|
}
|
|
615
787
|
),
|
|
616
|
-
/* @__PURE__ */ (0,
|
|
788
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
617
789
|
"div",
|
|
618
790
|
{
|
|
619
791
|
role: "button",
|
|
@@ -635,12 +807,12 @@ function HomeScreen({ nav }) {
|
|
|
635
807
|
userSelect: "none"
|
|
636
808
|
},
|
|
637
809
|
children: [
|
|
638
|
-
/* @__PURE__ */ (0,
|
|
639
|
-
/* @__PURE__ */ (0,
|
|
810
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u{1F41B}" }),
|
|
811
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Report Bug" })
|
|
640
812
|
]
|
|
641
813
|
}
|
|
642
814
|
),
|
|
643
|
-
/* @__PURE__ */ (0,
|
|
815
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
644
816
|
"div",
|
|
645
817
|
{
|
|
646
818
|
role: "button",
|
|
@@ -662,12 +834,12 @@ function HomeScreen({ nav }) {
|
|
|
662
834
|
userSelect: "none"
|
|
663
835
|
},
|
|
664
836
|
children: [
|
|
665
|
-
/* @__PURE__ */ (0,
|
|
666
|
-
/* @__PURE__ */ (0,
|
|
837
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u{1F4A1}" }),
|
|
838
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Feedback" })
|
|
667
839
|
]
|
|
668
840
|
}
|
|
669
841
|
),
|
|
670
|
-
/* @__PURE__ */ (0,
|
|
842
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
671
843
|
"div",
|
|
672
844
|
{
|
|
673
845
|
role: "button",
|
|
@@ -689,9 +861,9 @@ function HomeScreen({ nav }) {
|
|
|
689
861
|
userSelect: "none"
|
|
690
862
|
},
|
|
691
863
|
children: [
|
|
692
|
-
/* @__PURE__ */ (0,
|
|
693
|
-
/* @__PURE__ */ (0,
|
|
694
|
-
unreadCount > 0 && /* @__PURE__ */ (0,
|
|
864
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 28, marginBottom: 8 }, children: "\u{1F4AC}" }),
|
|
865
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textPrimary }, children: "Messages" }),
|
|
866
|
+
unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
695
867
|
"span",
|
|
696
868
|
{
|
|
697
869
|
style: {
|
|
@@ -720,8 +892,8 @@ function HomeScreen({ nav }) {
|
|
|
720
892
|
]
|
|
721
893
|
}
|
|
722
894
|
),
|
|
723
|
-
/* @__PURE__ */ (0,
|
|
724
|
-
/* @__PURE__ */ (0,
|
|
895
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr", gap: 10, marginBottom: 20 }, children: [
|
|
896
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
725
897
|
"div",
|
|
726
898
|
{
|
|
727
899
|
role: "button",
|
|
@@ -743,12 +915,12 @@ function HomeScreen({ nav }) {
|
|
|
743
915
|
userSelect: "none"
|
|
744
916
|
},
|
|
745
917
|
children: [
|
|
746
|
-
/* @__PURE__ */ (0,
|
|
747
|
-
/* @__PURE__ */ (0,
|
|
918
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 22, fontWeight: 700, color: "#f97316" }, children: issueCounts.open }),
|
|
919
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Open" })
|
|
748
920
|
]
|
|
749
921
|
}
|
|
750
922
|
),
|
|
751
|
-
/* @__PURE__ */ (0,
|
|
923
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
752
924
|
"div",
|
|
753
925
|
{
|
|
754
926
|
role: "button",
|
|
@@ -770,12 +942,12 @@ function HomeScreen({ nav }) {
|
|
|
770
942
|
userSelect: "none"
|
|
771
943
|
},
|
|
772
944
|
children: [
|
|
773
|
-
/* @__PURE__ */ (0,
|
|
774
|
-
/* @__PURE__ */ (0,
|
|
945
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 22, fontWeight: 700, color: "#22c55e" }, children: issueCounts.done }),
|
|
946
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Done" })
|
|
775
947
|
]
|
|
776
948
|
}
|
|
777
949
|
),
|
|
778
|
-
/* @__PURE__ */ (0,
|
|
950
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
779
951
|
"div",
|
|
780
952
|
{
|
|
781
953
|
role: "button",
|
|
@@ -797,14 +969,14 @@ function HomeScreen({ nav }) {
|
|
|
797
969
|
userSelect: "none"
|
|
798
970
|
},
|
|
799
971
|
children: [
|
|
800
|
-
/* @__PURE__ */ (0,
|
|
801
|
-
/* @__PURE__ */ (0,
|
|
972
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 22, fontWeight: 700, color: "#ef4444" }, children: issueCounts.reopened }),
|
|
973
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Reopened" })
|
|
802
974
|
]
|
|
803
975
|
}
|
|
804
976
|
)
|
|
805
977
|
] }),
|
|
806
|
-
totalTests > 0 && /* @__PURE__ */ (0,
|
|
807
|
-
/* @__PURE__ */ (0,
|
|
978
|
+
totalTests > 0 && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { style: { marginBottom: 16 }, children: [
|
|
979
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
808
980
|
"div",
|
|
809
981
|
{
|
|
810
982
|
style: {
|
|
@@ -814,7 +986,7 @@ function HomeScreen({ nav }) {
|
|
|
814
986
|
overflow: "hidden",
|
|
815
987
|
marginBottom: 6
|
|
816
988
|
},
|
|
817
|
-
children: /* @__PURE__ */ (0,
|
|
989
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
818
990
|
"div",
|
|
819
991
|
{
|
|
820
992
|
style: {
|
|
@@ -828,14 +1000,14 @@ function HomeScreen({ nav }) {
|
|
|
828
1000
|
)
|
|
829
1001
|
}
|
|
830
1002
|
),
|
|
831
|
-
/* @__PURE__ */ (0,
|
|
1003
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { style: { fontSize: 12, color: colors.textMuted, textAlign: "center" }, children: [
|
|
832
1004
|
completedCount,
|
|
833
1005
|
"/",
|
|
834
1006
|
totalTests,
|
|
835
1007
|
" tests completed"
|
|
836
1008
|
] })
|
|
837
1009
|
] }),
|
|
838
|
-
/* @__PURE__ */ (0,
|
|
1010
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { style: { display: "flex", justifyContent: "center", padding: "8px 0" }, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
839
1011
|
"button",
|
|
840
1012
|
{
|
|
841
1013
|
type: "button",
|
|
@@ -860,7 +1032,7 @@ function HomeScreen({ nav }) {
|
|
|
860
1032
|
|
|
861
1033
|
// src/widget/screens/TestDetailScreen.tsx
|
|
862
1034
|
var import_react4 = require("react");
|
|
863
|
-
var
|
|
1035
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
864
1036
|
function TestDetailScreen({ testId, nav }) {
|
|
865
1037
|
const { client, assignments, currentAssignment, refreshAssignments, onNavigate } = useBugBear();
|
|
866
1038
|
const displayedAssignment = testId ? assignments.find((a) => a.id === testId) || currentAssignment : currentAssignment;
|
|
@@ -948,7 +1120,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
948
1120
|
}
|
|
949
1121
|
}, [client, displayedAssignment, selectedSkipReason, skipNotes, refreshAssignments, assignments, nav]);
|
|
950
1122
|
if (!displayedAssignment) {
|
|
951
|
-
return /* @__PURE__ */ (0,
|
|
1123
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
952
1124
|
"div",
|
|
953
1125
|
{
|
|
954
1126
|
style: {
|
|
@@ -959,10 +1131,10 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
959
1131
|
padding: 40
|
|
960
1132
|
},
|
|
961
1133
|
children: [
|
|
962
|
-
/* @__PURE__ */ (0,
|
|
963
|
-
/* @__PURE__ */ (0,
|
|
964
|
-
/* @__PURE__ */ (0,
|
|
965
|
-
/* @__PURE__ */ (0,
|
|
1134
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: { fontSize: 48, marginBottom: 12 }, children: "\u2705" }),
|
|
1135
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: { fontSize: 18, fontWeight: 600, color: colors.textPrimary, marginBottom: 4 }, children: "No tests assigned" }),
|
|
1136
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: { fontSize: 14, color: colors.textMuted, marginBottom: 20 }, children: "Check back later for new tests" }),
|
|
1137
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
966
1138
|
"button",
|
|
967
1139
|
{
|
|
968
1140
|
type: "button",
|
|
@@ -995,8 +1167,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
995
1167
|
{ reason: "dependency", label: "\u{1F517} Needs another test first" },
|
|
996
1168
|
{ reason: "other", label: "\u{1F4DD} Other reason" }
|
|
997
1169
|
];
|
|
998
|
-
return /* @__PURE__ */ (0,
|
|
999
|
-
/* @__PURE__ */ (0,
|
|
1170
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { paddingBottom: 16 }, children: [
|
|
1171
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1000
1172
|
"div",
|
|
1001
1173
|
{
|
|
1002
1174
|
style: {
|
|
@@ -1006,14 +1178,14 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1006
1178
|
marginBottom: 12
|
|
1007
1179
|
},
|
|
1008
1180
|
children: [
|
|
1009
|
-
/* @__PURE__ */ (0,
|
|
1010
|
-
/* @__PURE__ */ (0,
|
|
1181
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
1182
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { style: { fontSize: 13, color: colors.textMuted }, children: [
|
|
1011
1183
|
"Test ",
|
|
1012
1184
|
currentIndex + 1,
|
|
1013
1185
|
" of ",
|
|
1014
1186
|
allTests.length
|
|
1015
1187
|
] }),
|
|
1016
|
-
displayedAssignment.status === "in_progress" && assignmentElapsedTime > 0 && /* @__PURE__ */ (0,
|
|
1188
|
+
displayedAssignment.status === "in_progress" && assignmentElapsedTime > 0 && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1017
1189
|
"span",
|
|
1018
1190
|
{
|
|
1019
1191
|
style: {
|
|
@@ -1032,7 +1204,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1032
1204
|
}
|
|
1033
1205
|
)
|
|
1034
1206
|
] }),
|
|
1035
|
-
/* @__PURE__ */ (0,
|
|
1207
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1036
1208
|
"button",
|
|
1037
1209
|
{
|
|
1038
1210
|
type: "button",
|
|
@@ -1052,7 +1224,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1052
1224
|
]
|
|
1053
1225
|
}
|
|
1054
1226
|
),
|
|
1055
|
-
displayedAssignment.isVerification && /* @__PURE__ */ (0,
|
|
1227
|
+
displayedAssignment.isVerification && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1056
1228
|
"div",
|
|
1057
1229
|
{
|
|
1058
1230
|
style: {
|
|
@@ -1066,14 +1238,14 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1066
1238
|
marginBottom: 10
|
|
1067
1239
|
},
|
|
1068
1240
|
children: [
|
|
1069
|
-
/* @__PURE__ */ (0,
|
|
1070
|
-
/* @__PURE__ */ (0,
|
|
1071
|
-
/* @__PURE__ */ (0,
|
|
1241
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: { fontSize: 14 }, children: "\u{1F504}" }),
|
|
1242
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Retest" }),
|
|
1243
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: { fontSize: 12, color: "#d97706" }, children: "\u2014 Verify bug fix" })
|
|
1072
1244
|
]
|
|
1073
1245
|
}
|
|
1074
1246
|
),
|
|
1075
|
-
/* @__PURE__ */ (0,
|
|
1076
|
-
testCase.testKey && /* @__PURE__ */ (0,
|
|
1247
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { fontSize: 20, fontWeight: 700, color: colors.textPrimary, marginBottom: 4 }, children: testCase.title }),
|
|
1248
|
+
testCase.testKey && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1077
1249
|
"div",
|
|
1078
1250
|
{
|
|
1079
1251
|
style: {
|
|
@@ -1085,7 +1257,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1085
1257
|
children: testCase.testKey
|
|
1086
1258
|
}
|
|
1087
1259
|
),
|
|
1088
|
-
/* @__PURE__ */ (0,
|
|
1260
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1089
1261
|
"button",
|
|
1090
1262
|
{
|
|
1091
1263
|
type: "button",
|
|
@@ -1101,7 +1273,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1101
1273
|
cursor: "pointer",
|
|
1102
1274
|
textAlign: "left"
|
|
1103
1275
|
},
|
|
1104
|
-
children: /* @__PURE__ */ (0,
|
|
1276
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { style: { fontSize: 14, fontWeight: 500, color: colors.textSecondary }, children: [
|
|
1105
1277
|
showSteps ? "\u25BC" : "\u25B6",
|
|
1106
1278
|
" ",
|
|
1107
1279
|
info.icon,
|
|
@@ -1110,9 +1282,9 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1110
1282
|
] })
|
|
1111
1283
|
}
|
|
1112
1284
|
),
|
|
1113
|
-
showSteps && /* @__PURE__ */ (0,
|
|
1114
|
-
template === "steps" && steps.map((step, idx) => /* @__PURE__ */ (0,
|
|
1115
|
-
/* @__PURE__ */ (0,
|
|
1285
|
+
showSteps && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { marginBottom: 16 }, children: [
|
|
1286
|
+
template === "steps" && steps.map((step, idx) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { display: "flex", marginBottom: 10 }, children: [
|
|
1287
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1116
1288
|
"div",
|
|
1117
1289
|
{
|
|
1118
1290
|
style: {
|
|
@@ -1127,12 +1299,12 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1127
1299
|
marginTop: 2,
|
|
1128
1300
|
flexShrink: 0
|
|
1129
1301
|
},
|
|
1130
|
-
children: /* @__PURE__ */ (0,
|
|
1302
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: { fontSize: 12, fontWeight: 600, color: "#fff" }, children: step.stepNumber })
|
|
1131
1303
|
}
|
|
1132
1304
|
),
|
|
1133
|
-
/* @__PURE__ */ (0,
|
|
1134
|
-
/* @__PURE__ */ (0,
|
|
1135
|
-
step.expectedResult && /* @__PURE__ */ (0,
|
|
1305
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { flex: 1 }, children: [
|
|
1306
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: { fontSize: 14, color: colors.textPrimary, lineHeight: "20px" }, children: step.action }),
|
|
1307
|
+
step.expectedResult && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1136
1308
|
"div",
|
|
1137
1309
|
{
|
|
1138
1310
|
style: {
|
|
@@ -1149,8 +1321,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1149
1321
|
)
|
|
1150
1322
|
] })
|
|
1151
1323
|
] }, idx)),
|
|
1152
|
-
template === "checklist" && /* @__PURE__ */ (0,
|
|
1153
|
-
steps.map((step, idx) => /* @__PURE__ */ (0,
|
|
1324
|
+
template === "checklist" && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
1325
|
+
steps.map((step, idx) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1154
1326
|
"button",
|
|
1155
1327
|
{
|
|
1156
1328
|
type: "button",
|
|
@@ -1176,7 +1348,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1176
1348
|
textAlign: "left"
|
|
1177
1349
|
},
|
|
1178
1350
|
children: [
|
|
1179
|
-
/* @__PURE__ */ (0,
|
|
1351
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1180
1352
|
"div",
|
|
1181
1353
|
{
|
|
1182
1354
|
style: {
|
|
@@ -1191,10 +1363,10 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1191
1363
|
alignItems: "center",
|
|
1192
1364
|
flexShrink: 0
|
|
1193
1365
|
},
|
|
1194
|
-
children: criteriaResults[idx] === true && /* @__PURE__ */ (0,
|
|
1366
|
+
children: criteriaResults[idx] === true && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: { color: "#fff", fontSize: 14, fontWeight: "bold" }, children: "\u2713" })
|
|
1195
1367
|
}
|
|
1196
1368
|
),
|
|
1197
|
-
/* @__PURE__ */ (0,
|
|
1369
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1198
1370
|
"span",
|
|
1199
1371
|
{
|
|
1200
1372
|
style: {
|
|
@@ -1210,7 +1382,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1210
1382
|
},
|
|
1211
1383
|
idx
|
|
1212
1384
|
)),
|
|
1213
|
-
Object.keys(criteriaResults).length > 0 && /* @__PURE__ */ (0,
|
|
1385
|
+
Object.keys(criteriaResults).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { display: "flex", justifyContent: "flex-end", paddingTop: 4 }, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1214
1386
|
"button",
|
|
1215
1387
|
{
|
|
1216
1388
|
type: "button",
|
|
@@ -1227,8 +1399,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1227
1399
|
}
|
|
1228
1400
|
) })
|
|
1229
1401
|
] }),
|
|
1230
|
-
template === "rubric" && steps.map((step, idx) => /* @__PURE__ */ (0,
|
|
1231
|
-
/* @__PURE__ */ (0,
|
|
1402
|
+
template === "rubric" && steps.map((step, idx) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { marginBottom: 14 }, children: [
|
|
1403
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1232
1404
|
"div",
|
|
1233
1405
|
{
|
|
1234
1406
|
style: {
|
|
@@ -1244,7 +1416,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1244
1416
|
]
|
|
1245
1417
|
}
|
|
1246
1418
|
),
|
|
1247
|
-
step.expectedResult && /* @__PURE__ */ (0,
|
|
1419
|
+
step.expectedResult && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1248
1420
|
"div",
|
|
1249
1421
|
{
|
|
1250
1422
|
style: {
|
|
@@ -1256,8 +1428,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1256
1428
|
children: step.expectedResult
|
|
1257
1429
|
}
|
|
1258
1430
|
),
|
|
1259
|
-
rubricMode === "pass_fail" ? /* @__PURE__ */ (0,
|
|
1260
|
-
/* @__PURE__ */ (0,
|
|
1431
|
+
rubricMode === "pass_fail" ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { display: "flex", gap: 8, marginLeft: 16 }, children: [
|
|
1432
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1261
1433
|
"button",
|
|
1262
1434
|
{
|
|
1263
1435
|
type: "button",
|
|
@@ -1278,7 +1450,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1278
1450
|
children: "\u2713 Pass"
|
|
1279
1451
|
}
|
|
1280
1452
|
),
|
|
1281
|
-
/* @__PURE__ */ (0,
|
|
1453
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1282
1454
|
"button",
|
|
1283
1455
|
{
|
|
1284
1456
|
type: "button",
|
|
@@ -1299,7 +1471,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1299
1471
|
children: "\u2717 Fail"
|
|
1300
1472
|
}
|
|
1301
1473
|
)
|
|
1302
|
-
] }) : /* @__PURE__ */ (0,
|
|
1474
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { display: "flex", gap: 6, marginLeft: 16 }, children: [1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1303
1475
|
"button",
|
|
1304
1476
|
{
|
|
1305
1477
|
type: "button",
|
|
@@ -1323,7 +1495,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1323
1495
|
n
|
|
1324
1496
|
)) })
|
|
1325
1497
|
] }, idx)),
|
|
1326
|
-
template === "freeform" && /* @__PURE__ */ (0,
|
|
1498
|
+
template === "freeform" && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1327
1499
|
"div",
|
|
1328
1500
|
{
|
|
1329
1501
|
style: {
|
|
@@ -1333,15 +1505,15 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1333
1505
|
border: "1px solid #854d0e"
|
|
1334
1506
|
},
|
|
1335
1507
|
children: [
|
|
1336
|
-
/* @__PURE__ */ (0,
|
|
1337
|
-
/* @__PURE__ */ (0,
|
|
1338
|
-
/* @__PURE__ */ (0,
|
|
1339
|
-
/* @__PURE__ */ (0,
|
|
1508
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { fontSize: 14, color: "#fde68a", marginBottom: 6 }, children: "Review the area and note:" }),
|
|
1509
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 What works well" }),
|
|
1510
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 Issues or concerns" }),
|
|
1511
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { fontSize: 13, color: "#fde68a", marginLeft: 8, marginBottom: 2 }, children: "\u2022 Suggestions" })
|
|
1340
1512
|
]
|
|
1341
1513
|
}
|
|
1342
1514
|
)
|
|
1343
1515
|
] }),
|
|
1344
|
-
testCase.expectedResult && /* @__PURE__ */ (0,
|
|
1516
|
+
testCase.expectedResult && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1345
1517
|
"div",
|
|
1346
1518
|
{
|
|
1347
1519
|
style: {
|
|
@@ -1352,12 +1524,12 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1352
1524
|
marginBottom: 12
|
|
1353
1525
|
},
|
|
1354
1526
|
children: [
|
|
1355
|
-
/* @__PURE__ */ (0,
|
|
1356
|
-
/* @__PURE__ */ (0,
|
|
1527
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { fontSize: 13, fontWeight: 600, color: colors.green, marginBottom: 4 }, children: "\u2705 Expected Result" }),
|
|
1528
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { fontSize: 14, color: "#bbf7d0", lineHeight: "20px" }, children: testCase.expectedResult })
|
|
1357
1529
|
]
|
|
1358
1530
|
}
|
|
1359
1531
|
),
|
|
1360
|
-
testCase.targetRoute && onNavigate && /* @__PURE__ */ (0,
|
|
1532
|
+
testCase.targetRoute && onNavigate && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1361
1533
|
"button",
|
|
1362
1534
|
{
|
|
1363
1535
|
type: "button",
|
|
@@ -1379,7 +1551,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1379
1551
|
children: "\u{1F9ED} Go to test location"
|
|
1380
1552
|
}
|
|
1381
1553
|
),
|
|
1382
|
-
/* @__PURE__ */ (0,
|
|
1554
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1383
1555
|
"button",
|
|
1384
1556
|
{
|
|
1385
1557
|
type: "button",
|
|
@@ -1403,7 +1575,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1403
1575
|
]
|
|
1404
1576
|
}
|
|
1405
1577
|
),
|
|
1406
|
-
showDetails && /* @__PURE__ */ (0,
|
|
1578
|
+
showDetails && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1407
1579
|
"div",
|
|
1408
1580
|
{
|
|
1409
1581
|
style: {
|
|
@@ -1414,7 +1586,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1414
1586
|
marginBottom: 16
|
|
1415
1587
|
},
|
|
1416
1588
|
children: [
|
|
1417
|
-
testCase.testKey && /* @__PURE__ */ (0,
|
|
1589
|
+
testCase.testKey && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1418
1590
|
"div",
|
|
1419
1591
|
{
|
|
1420
1592
|
style: {
|
|
@@ -1432,16 +1604,16 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1432
1604
|
]
|
|
1433
1605
|
}
|
|
1434
1606
|
),
|
|
1435
|
-
testCase.description && /* @__PURE__ */ (0,
|
|
1436
|
-
testCase.group && /* @__PURE__ */ (0,
|
|
1607
|
+
testCase.description && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { fontSize: 13, color: colors.textSecondary, lineHeight: "18px" }, children: testCase.description }),
|
|
1608
|
+
testCase.group && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { marginTop: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
|
|
1437
1609
|
"\u{1F4C1} ",
|
|
1438
1610
|
testCase.group.name
|
|
1439
1611
|
] }) })
|
|
1440
1612
|
]
|
|
1441
1613
|
}
|
|
1442
1614
|
),
|
|
1443
|
-
/* @__PURE__ */ (0,
|
|
1444
|
-
/* @__PURE__ */ (0,
|
|
1615
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { display: "flex", gap: 10, marginTop: 8 }, children: [
|
|
1616
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1445
1617
|
"button",
|
|
1446
1618
|
{
|
|
1447
1619
|
type: "button",
|
|
@@ -1464,7 +1636,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1464
1636
|
children: isSubmitting ? "Failing..." : "Fail"
|
|
1465
1637
|
}
|
|
1466
1638
|
),
|
|
1467
|
-
/* @__PURE__ */ (0,
|
|
1639
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1468
1640
|
"button",
|
|
1469
1641
|
{
|
|
1470
1642
|
type: "button",
|
|
@@ -1487,7 +1659,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1487
1659
|
children: "Skip"
|
|
1488
1660
|
}
|
|
1489
1661
|
),
|
|
1490
|
-
/* @__PURE__ */ (0,
|
|
1662
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1491
1663
|
"button",
|
|
1492
1664
|
{
|
|
1493
1665
|
type: "button",
|
|
@@ -1511,7 +1683,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1511
1683
|
}
|
|
1512
1684
|
)
|
|
1513
1685
|
] }),
|
|
1514
|
-
showSkipModal && /* @__PURE__ */ (0,
|
|
1686
|
+
showSkipModal && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1515
1687
|
"div",
|
|
1516
1688
|
{
|
|
1517
1689
|
style: {
|
|
@@ -1524,7 +1696,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1524
1696
|
zIndex: 9999,
|
|
1525
1697
|
padding: 24
|
|
1526
1698
|
},
|
|
1527
|
-
children: /* @__PURE__ */ (0,
|
|
1699
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1528
1700
|
"div",
|
|
1529
1701
|
{
|
|
1530
1702
|
style: {
|
|
@@ -1536,7 +1708,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1536
1708
|
width: "100%"
|
|
1537
1709
|
},
|
|
1538
1710
|
children: [
|
|
1539
|
-
/* @__PURE__ */ (0,
|
|
1711
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1540
1712
|
"div",
|
|
1541
1713
|
{
|
|
1542
1714
|
style: {
|
|
@@ -1548,8 +1720,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1548
1720
|
children: "Skip this test?"
|
|
1549
1721
|
}
|
|
1550
1722
|
),
|
|
1551
|
-
/* @__PURE__ */ (0,
|
|
1552
|
-
skipReasons.map(({ reason, label }) => /* @__PURE__ */ (0,
|
|
1723
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { fontSize: 14, color: colors.textMuted, marginBottom: 12 }, children: "Select a reason:" }),
|
|
1724
|
+
skipReasons.map(({ reason, label }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1553
1725
|
"button",
|
|
1554
1726
|
{
|
|
1555
1727
|
type: "button",
|
|
@@ -1575,7 +1747,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1575
1747
|
},
|
|
1576
1748
|
reason
|
|
1577
1749
|
)),
|
|
1578
|
-
/* @__PURE__ */ (0,
|
|
1750
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1579
1751
|
"textarea",
|
|
1580
1752
|
{
|
|
1581
1753
|
value: skipNotes,
|
|
@@ -1598,8 +1770,8 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1598
1770
|
}
|
|
1599
1771
|
}
|
|
1600
1772
|
),
|
|
1601
|
-
/* @__PURE__ */ (0,
|
|
1602
|
-
/* @__PURE__ */ (0,
|
|
1773
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { display: "flex", gap: 10, marginTop: 14 }, children: [
|
|
1774
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1603
1775
|
"button",
|
|
1604
1776
|
{
|
|
1605
1777
|
type: "button",
|
|
@@ -1623,7 +1795,7 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1623
1795
|
children: "Cancel"
|
|
1624
1796
|
}
|
|
1625
1797
|
),
|
|
1626
|
-
/* @__PURE__ */ (0,
|
|
1798
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1627
1799
|
"button",
|
|
1628
1800
|
{
|
|
1629
1801
|
type: "button",
|
|
@@ -1657,11 +1829,14 @@ function TestDetailScreen({ testId, nav }) {
|
|
|
1657
1829
|
|
|
1658
1830
|
// src/widget/screens/TestListScreen.tsx
|
|
1659
1831
|
var import_react5 = require("react");
|
|
1660
|
-
var
|
|
1832
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1661
1833
|
function TestListScreen({ nav }) {
|
|
1662
|
-
const { assignments, currentAssignment, refreshAssignments } = useBugBear();
|
|
1834
|
+
const { assignments, currentAssignment, refreshAssignments, isLoading } = useBugBear();
|
|
1663
1835
|
const [filter, setFilter] = (0, import_react5.useState)("all");
|
|
1664
1836
|
const [roleFilter, setRoleFilter] = (0, import_react5.useState)(null);
|
|
1837
|
+
const [trackFilter, setTrackFilter] = (0, import_react5.useState)(null);
|
|
1838
|
+
const [searchQuery, setSearchQuery] = (0, import_react5.useState)("");
|
|
1839
|
+
const [sortMode, setSortMode] = (0, import_react5.useState)("priority");
|
|
1665
1840
|
const [collapsedFolders, setCollapsedFolders] = (0, import_react5.useState)(/* @__PURE__ */ new Set());
|
|
1666
1841
|
const availableRoles = (0, import_react5.useMemo)(() => {
|
|
1667
1842
|
const roleMap = /* @__PURE__ */ new Map();
|
|
@@ -1670,6 +1845,13 @@ function TestListScreen({ nav }) {
|
|
|
1670
1845
|
}
|
|
1671
1846
|
return Array.from(roleMap.values());
|
|
1672
1847
|
}, [assignments]);
|
|
1848
|
+
const availableTracks = (0, import_react5.useMemo)(() => {
|
|
1849
|
+
const trackMap = /* @__PURE__ */ new Map();
|
|
1850
|
+
for (const a of assignments) {
|
|
1851
|
+
if (a.testCase.track) trackMap.set(a.testCase.track.id, a.testCase.track);
|
|
1852
|
+
}
|
|
1853
|
+
return Array.from(trackMap.values());
|
|
1854
|
+
}, [assignments]);
|
|
1673
1855
|
const selectedRole = availableRoles.find((r) => r.id === roleFilter);
|
|
1674
1856
|
const groupedAssignments = (0, import_react5.useMemo)(() => {
|
|
1675
1857
|
const groups = /* @__PURE__ */ new Map();
|
|
@@ -1703,6 +1885,12 @@ function TestListScreen({ nav }) {
|
|
|
1703
1885
|
folder.assignments.sort((a, b) => {
|
|
1704
1886
|
if (a.isVerification && !b.isVerification) return -1;
|
|
1705
1887
|
if (!a.isVerification && b.isVerification) return 1;
|
|
1888
|
+
if (sortMode === "alpha") {
|
|
1889
|
+
return a.testCase.title.localeCompare(b.testCase.title);
|
|
1890
|
+
}
|
|
1891
|
+
if (sortMode === "recent") {
|
|
1892
|
+
return 0;
|
|
1893
|
+
}
|
|
1706
1894
|
const sd = (statusOrder[a.status] ?? 5) - (statusOrder[b.status] ?? 5);
|
|
1707
1895
|
if (sd !== 0) return sd;
|
|
1708
1896
|
return (priorityOrder[a.testCase.priority] ?? 4) - (priorityOrder[b.testCase.priority] ?? 4);
|
|
@@ -1714,7 +1902,7 @@ function TestListScreen({ nav }) {
|
|
|
1714
1902
|
if (!b.group) return -1;
|
|
1715
1903
|
return a.group.sortOrder - b.group.sortOrder;
|
|
1716
1904
|
});
|
|
1717
|
-
}, [assignments]);
|
|
1905
|
+
}, [assignments, sortMode]);
|
|
1718
1906
|
const toggleFolder = (0, import_react5.useCallback)((id) => {
|
|
1719
1907
|
setCollapsedFolders((prev) => {
|
|
1720
1908
|
const next = new Set(prev);
|
|
@@ -1723,13 +1911,20 @@ function TestListScreen({ nav }) {
|
|
|
1723
1911
|
return next;
|
|
1724
1912
|
});
|
|
1725
1913
|
}, []);
|
|
1726
|
-
const filterAssignment = (a) => {
|
|
1914
|
+
const filterAssignment = (0, import_react5.useCallback)((a) => {
|
|
1727
1915
|
if (roleFilter && a.testCase.role?.id !== roleFilter) return false;
|
|
1916
|
+
if (trackFilter && a.testCase.track?.id !== trackFilter) return false;
|
|
1917
|
+
if (searchQuery) {
|
|
1918
|
+
const q = searchQuery.toLowerCase();
|
|
1919
|
+
const titleMatch = a.testCase.title.toLowerCase().includes(q);
|
|
1920
|
+
const keyMatch = a.testCase.testKey.toLowerCase().includes(q);
|
|
1921
|
+
if (!titleMatch && !keyMatch) return false;
|
|
1922
|
+
}
|
|
1728
1923
|
if (filter === "pending") return a.status === "pending" || a.status === "in_progress";
|
|
1729
1924
|
if (filter === "done") return a.status === "passed";
|
|
1730
1925
|
if (filter === "reopened") return a.status === "failed";
|
|
1731
1926
|
return true;
|
|
1732
|
-
};
|
|
1927
|
+
}, [roleFilter, trackFilter, searchQuery, filter]);
|
|
1733
1928
|
const pendingCount = assignments.filter(
|
|
1734
1929
|
(a) => a.status === "pending" || a.status === "in_progress"
|
|
1735
1930
|
).length;
|
|
@@ -1741,8 +1936,9 @@ function TestListScreen({ nav }) {
|
|
|
1741
1936
|
{ key: "done", label: "Done", count: doneCount },
|
|
1742
1937
|
{ key: "reopened", label: "Re Opened", count: reopenedCount }
|
|
1743
1938
|
];
|
|
1744
|
-
return /* @__PURE__ */ (0,
|
|
1745
|
-
|
|
1939
|
+
if (isLoading) return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TestListScreenSkeleton, {});
|
|
1940
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { children: [
|
|
1941
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { display: "flex", gap: 8, marginBottom: availableRoles.length >= 2 ? 8 : 16 }, children: filters.map((f) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1746
1942
|
"button",
|
|
1747
1943
|
{
|
|
1748
1944
|
type: "button",
|
|
@@ -1769,9 +1965,9 @@ function TestListScreen({ nav }) {
|
|
|
1769
1965
|
},
|
|
1770
1966
|
f.key
|
|
1771
1967
|
)) }),
|
|
1772
|
-
availableRoles.length >= 2 && /* @__PURE__ */ (0,
|
|
1773
|
-
/* @__PURE__ */ (0,
|
|
1774
|
-
/* @__PURE__ */ (0,
|
|
1968
|
+
availableRoles.length >= 2 && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: { marginBottom: 12 }, children: [
|
|
1969
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: { display: "flex", gap: 6, flexWrap: "wrap", marginBottom: selectedRole?.loginHint ? 8 : 0 }, children: [
|
|
1970
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1775
1971
|
"button",
|
|
1776
1972
|
{
|
|
1777
1973
|
type: "button",
|
|
@@ -1794,7 +1990,7 @@ function TestListScreen({ nav }) {
|
|
|
1794
1990
|
),
|
|
1795
1991
|
availableRoles.map((role) => {
|
|
1796
1992
|
const isActive = roleFilter === role.id;
|
|
1797
|
-
return /* @__PURE__ */ (0,
|
|
1993
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1798
1994
|
"button",
|
|
1799
1995
|
{
|
|
1800
1996
|
type: "button",
|
|
@@ -1816,7 +2012,7 @@ function TestListScreen({ nav }) {
|
|
|
1816
2012
|
fontWeight: isActive ? 600 : 400
|
|
1817
2013
|
},
|
|
1818
2014
|
children: [
|
|
1819
|
-
/* @__PURE__ */ (0,
|
|
2015
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style: {
|
|
1820
2016
|
width: 6,
|
|
1821
2017
|
height: 6,
|
|
1822
2018
|
borderRadius: 3,
|
|
@@ -1830,7 +2026,7 @@ function TestListScreen({ nav }) {
|
|
|
1830
2026
|
);
|
|
1831
2027
|
})
|
|
1832
2028
|
] }),
|
|
1833
|
-
selectedRole?.loginHint && /* @__PURE__ */ (0,
|
|
2029
|
+
selectedRole?.loginHint && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: {
|
|
1834
2030
|
fontSize: 11,
|
|
1835
2031
|
color: colors.textSecondary,
|
|
1836
2032
|
backgroundColor: selectedRole.color + "10",
|
|
@@ -1842,6 +2038,103 @@ function TestListScreen({ nav }) {
|
|
|
1842
2038
|
selectedRole.loginHint
|
|
1843
2039
|
] })
|
|
1844
2040
|
] }),
|
|
2041
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { marginBottom: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2042
|
+
"input",
|
|
2043
|
+
{
|
|
2044
|
+
type: "text",
|
|
2045
|
+
value: searchQuery,
|
|
2046
|
+
onChange: (e) => setSearchQuery(e.target.value),
|
|
2047
|
+
placeholder: "Search tests...",
|
|
2048
|
+
style: {
|
|
2049
|
+
width: "100%",
|
|
2050
|
+
padding: "8px 12px",
|
|
2051
|
+
borderRadius: 8,
|
|
2052
|
+
border: `1px solid ${colors.border}`,
|
|
2053
|
+
backgroundColor: colors.card,
|
|
2054
|
+
color: colors.textPrimary,
|
|
2055
|
+
fontSize: 13,
|
|
2056
|
+
outline: "none",
|
|
2057
|
+
boxSizing: "border-box"
|
|
2058
|
+
}
|
|
2059
|
+
}
|
|
2060
|
+
) }),
|
|
2061
|
+
(availableTracks.length >= 2 || true) && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 6, marginBottom: 12 }, children: [
|
|
2062
|
+
availableTracks.length >= 2 && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: { display: "flex", gap: 4, flex: 1, overflow: "auto" }, children: [
|
|
2063
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2064
|
+
"button",
|
|
2065
|
+
{
|
|
2066
|
+
type: "button",
|
|
2067
|
+
onClick: () => setTrackFilter(null),
|
|
2068
|
+
style: {
|
|
2069
|
+
padding: "3px 8px",
|
|
2070
|
+
borderRadius: 6,
|
|
2071
|
+
backgroundColor: !trackFilter ? colors.card : "transparent",
|
|
2072
|
+
border: !trackFilter ? `1px solid ${colors.border}` : "1px solid transparent",
|
|
2073
|
+
cursor: "pointer",
|
|
2074
|
+
fontSize: 11,
|
|
2075
|
+
color: !trackFilter ? colors.textPrimary : colors.textMuted,
|
|
2076
|
+
fontWeight: !trackFilter ? 600 : 400,
|
|
2077
|
+
whiteSpace: "nowrap"
|
|
2078
|
+
},
|
|
2079
|
+
children: "All Tracks"
|
|
2080
|
+
}
|
|
2081
|
+
),
|
|
2082
|
+
availableTracks.map((track) => {
|
|
2083
|
+
const isActive = trackFilter === track.id;
|
|
2084
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
2085
|
+
"button",
|
|
2086
|
+
{
|
|
2087
|
+
type: "button",
|
|
2088
|
+
onClick: () => setTrackFilter(isActive ? null : track.id),
|
|
2089
|
+
style: {
|
|
2090
|
+
display: "flex",
|
|
2091
|
+
alignItems: "center",
|
|
2092
|
+
gap: 4,
|
|
2093
|
+
padding: "3px 8px",
|
|
2094
|
+
borderRadius: 6,
|
|
2095
|
+
backgroundColor: isActive ? track.color + "20" : "transparent",
|
|
2096
|
+
border: isActive ? `1px solid ${track.color}60` : "1px solid transparent",
|
|
2097
|
+
cursor: "pointer",
|
|
2098
|
+
fontSize: 11,
|
|
2099
|
+
color: isActive ? track.color : colors.textMuted,
|
|
2100
|
+
fontWeight: isActive ? 600 : 400,
|
|
2101
|
+
whiteSpace: "nowrap"
|
|
2102
|
+
},
|
|
2103
|
+
children: [
|
|
2104
|
+
track.icon,
|
|
2105
|
+
" ",
|
|
2106
|
+
track.name
|
|
2107
|
+
]
|
|
2108
|
+
},
|
|
2109
|
+
track.id
|
|
2110
|
+
);
|
|
2111
|
+
})
|
|
2112
|
+
] }),
|
|
2113
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { display: "flex", gap: 2, marginLeft: "auto", flexShrink: 0 }, children: [
|
|
2114
|
+
{ key: "priority", label: "\u2195 Priority" },
|
|
2115
|
+
{ key: "recent", label: "\u{1F550} Recent" },
|
|
2116
|
+
{ key: "alpha", label: "A-Z" }
|
|
2117
|
+
].map((s) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2118
|
+
"button",
|
|
2119
|
+
{
|
|
2120
|
+
type: "button",
|
|
2121
|
+
onClick: () => setSortMode(s.key),
|
|
2122
|
+
style: {
|
|
2123
|
+
padding: "3px 8px",
|
|
2124
|
+
borderRadius: 6,
|
|
2125
|
+
backgroundColor: sortMode === s.key ? colors.card : "transparent",
|
|
2126
|
+
border: sortMode === s.key ? `1px solid ${colors.border}` : "1px solid transparent",
|
|
2127
|
+
cursor: "pointer",
|
|
2128
|
+
fontSize: 10,
|
|
2129
|
+
color: sortMode === s.key ? colors.textPrimary : colors.textMuted,
|
|
2130
|
+
fontWeight: sortMode === s.key ? 600 : 400,
|
|
2131
|
+
whiteSpace: "nowrap"
|
|
2132
|
+
},
|
|
2133
|
+
children: s.label
|
|
2134
|
+
},
|
|
2135
|
+
s.key
|
|
2136
|
+
)) })
|
|
2137
|
+
] }),
|
|
1845
2138
|
groupedAssignments.map((folder) => {
|
|
1846
2139
|
const folderId = folder.group?.id || "ungrouped";
|
|
1847
2140
|
const isCollapsed = collapsedFolders.has(folderId);
|
|
@@ -1849,8 +2142,8 @@ function TestListScreen({ nav }) {
|
|
|
1849
2142
|
if (filtered.length === 0 && filter !== "all") return null;
|
|
1850
2143
|
const completedInFolder = folder.stats.passed + folder.stats.failed;
|
|
1851
2144
|
const progressPercent = folder.stats.total > 0 ? Math.round(completedInFolder / folder.stats.total * 100) : 0;
|
|
1852
|
-
return /* @__PURE__ */ (0,
|
|
1853
|
-
/* @__PURE__ */ (0,
|
|
2145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: { marginBottom: 12 }, children: [
|
|
2146
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1854
2147
|
"button",
|
|
1855
2148
|
{
|
|
1856
2149
|
type: "button",
|
|
@@ -1870,8 +2163,8 @@ function TestListScreen({ nav }) {
|
|
|
1870
2163
|
textAlign: "left"
|
|
1871
2164
|
},
|
|
1872
2165
|
children: [
|
|
1873
|
-
/* @__PURE__ */ (0,
|
|
1874
|
-
/* @__PURE__ */ (0,
|
|
2166
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style: { fontSize: 10, color: colors.textMuted, width: 14 }, children: isCollapsed ? "\u25B6" : "\u25BC" }),
|
|
2167
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1875
2168
|
"span",
|
|
1876
2169
|
{
|
|
1877
2170
|
style: {
|
|
@@ -1886,7 +2179,7 @@ function TestListScreen({ nav }) {
|
|
|
1886
2179
|
children: folder.group?.name || "Ungrouped"
|
|
1887
2180
|
}
|
|
1888
2181
|
),
|
|
1889
|
-
/* @__PURE__ */ (0,
|
|
2182
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1890
2183
|
"div",
|
|
1891
2184
|
{
|
|
1892
2185
|
style: {
|
|
@@ -1897,7 +2190,7 @@ function TestListScreen({ nav }) {
|
|
|
1897
2190
|
overflow: "hidden",
|
|
1898
2191
|
flexShrink: 0
|
|
1899
2192
|
},
|
|
1900
|
-
children: /* @__PURE__ */ (0,
|
|
2193
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1901
2194
|
"div",
|
|
1902
2195
|
{
|
|
1903
2196
|
style: {
|
|
@@ -1911,7 +2204,7 @@ function TestListScreen({ nav }) {
|
|
|
1911
2204
|
)
|
|
1912
2205
|
}
|
|
1913
2206
|
),
|
|
1914
|
-
/* @__PURE__ */ (0,
|
|
2207
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1915
2208
|
"span",
|
|
1916
2209
|
{
|
|
1917
2210
|
style: {
|
|
@@ -1935,7 +2228,7 @@ function TestListScreen({ nav }) {
|
|
|
1935
2228
|
const badge = getStatusBadge(assignment.status);
|
|
1936
2229
|
const isCurrent = currentAssignment?.id === assignment.id;
|
|
1937
2230
|
const priorityColor = assignment.testCase.priority === "P0" ? colors.red : assignment.testCase.priority === "P1" ? colors.orange : colors.textDim;
|
|
1938
|
-
return /* @__PURE__ */ (0,
|
|
2231
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1939
2232
|
"button",
|
|
1940
2233
|
{
|
|
1941
2234
|
type: "button",
|
|
@@ -1957,9 +2250,9 @@ function TestListScreen({ nav }) {
|
|
|
1957
2250
|
textAlign: "left"
|
|
1958
2251
|
},
|
|
1959
2252
|
children: [
|
|
1960
|
-
/* @__PURE__ */ (0,
|
|
1961
|
-
/* @__PURE__ */ (0,
|
|
1962
|
-
/* @__PURE__ */ (0,
|
|
2253
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style: { fontSize: 16, marginRight: 10, width: 20, flexShrink: 0 }, children: badge.icon }),
|
|
2254
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
2255
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1963
2256
|
"div",
|
|
1964
2257
|
{
|
|
1965
2258
|
style: {
|
|
@@ -1973,9 +2266,9 @@ function TestListScreen({ nav }) {
|
|
|
1973
2266
|
children: assignment.testCase.title
|
|
1974
2267
|
}
|
|
1975
2268
|
),
|
|
1976
|
-
/* @__PURE__ */ (0,
|
|
1977
|
-
assignment.isVerification && /* @__PURE__ */ (0,
|
|
1978
|
-
/* @__PURE__ */ (0,
|
|
2269
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [
|
|
2270
|
+
assignment.isVerification && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
2271
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1979
2272
|
"span",
|
|
1980
2273
|
{
|
|
1981
2274
|
style: {
|
|
@@ -1990,9 +2283,9 @@ function TestListScreen({ nav }) {
|
|
|
1990
2283
|
children: "Retest"
|
|
1991
2284
|
}
|
|
1992
2285
|
),
|
|
1993
|
-
/* @__PURE__ */ (0,
|
|
2286
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" })
|
|
1994
2287
|
] }),
|
|
1995
|
-
/* @__PURE__ */ (0,
|
|
2288
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1996
2289
|
"span",
|
|
1997
2290
|
{
|
|
1998
2291
|
style: {
|
|
@@ -2003,8 +2296,8 @@ function TestListScreen({ nav }) {
|
|
|
2003
2296
|
children: assignment.testCase.testKey
|
|
2004
2297
|
}
|
|
2005
2298
|
),
|
|
2006
|
-
/* @__PURE__ */ (0,
|
|
2007
|
-
/* @__PURE__ */ (0,
|
|
2299
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" }),
|
|
2300
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2008
2301
|
"span",
|
|
2009
2302
|
{
|
|
2010
2303
|
style: {
|
|
@@ -2015,9 +2308,9 @@ function TestListScreen({ nav }) {
|
|
|
2015
2308
|
children: assignment.testCase.priority
|
|
2016
2309
|
}
|
|
2017
2310
|
),
|
|
2018
|
-
assignment.testCase.role && /* @__PURE__ */ (0,
|
|
2019
|
-
/* @__PURE__ */ (0,
|
|
2020
|
-
/* @__PURE__ */ (0,
|
|
2311
|
+
assignment.testCase.role && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
2312
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style: { fontSize: 11, color: colors.textDim }, children: "\xB7" }),
|
|
2313
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { style: {
|
|
2021
2314
|
display: "inline-flex",
|
|
2022
2315
|
alignItems: "center",
|
|
2023
2316
|
gap: 3,
|
|
@@ -2025,7 +2318,7 @@ function TestListScreen({ nav }) {
|
|
|
2025
2318
|
color: assignment.testCase.role.color,
|
|
2026
2319
|
fontWeight: 500
|
|
2027
2320
|
}, children: [
|
|
2028
|
-
/* @__PURE__ */ (0,
|
|
2321
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style: {
|
|
2029
2322
|
width: 5,
|
|
2030
2323
|
height: 5,
|
|
2031
2324
|
borderRadius: 3,
|
|
@@ -2036,7 +2329,7 @@ function TestListScreen({ nav }) {
|
|
|
2036
2329
|
] })
|
|
2037
2330
|
] })
|
|
2038
2331
|
] }),
|
|
2039
|
-
/* @__PURE__ */ (0,
|
|
2332
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2040
2333
|
"span",
|
|
2041
2334
|
{
|
|
2042
2335
|
style: {
|
|
@@ -2063,7 +2356,7 @@ function TestListScreen({ nav }) {
|
|
|
2063
2356
|
groupedAssignments.every((folder) => {
|
|
2064
2357
|
const filtered = folder.assignments.filter(filterAssignment);
|
|
2065
2358
|
return filtered.length === 0;
|
|
2066
|
-
}) && /* @__PURE__ */ (0,
|
|
2359
|
+
}) && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
2067
2360
|
"div",
|
|
2068
2361
|
{
|
|
2069
2362
|
style: {
|
|
@@ -2073,12 +2366,12 @@ function TestListScreen({ nav }) {
|
|
|
2073
2366
|
padding: 32
|
|
2074
2367
|
},
|
|
2075
2368
|
children: [
|
|
2076
|
-
/* @__PURE__ */ (0,
|
|
2077
|
-
/* @__PURE__ */ (0,
|
|
2369
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style: { fontSize: 32, marginBottom: 8 }, children: filter === "pending" ? "\u{1F389}" : filter === "reopened" ? "\u{1F44D}" : "\u{1F4CB}" }),
|
|
2370
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("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" })
|
|
2078
2371
|
]
|
|
2079
2372
|
}
|
|
2080
2373
|
),
|
|
2081
|
-
/* @__PURE__ */ (0,
|
|
2374
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { display: "flex", justifyContent: "center", paddingTop: 12, paddingBottom: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2082
2375
|
"button",
|
|
2083
2376
|
{
|
|
2084
2377
|
type: "button",
|
|
@@ -2174,13 +2467,13 @@ function useImageAttachments(uploadFn, maxImages, bucket = "screenshots") {
|
|
|
2174
2467
|
}
|
|
2175
2468
|
|
|
2176
2469
|
// src/widget/ImagePreviewStrip.tsx
|
|
2177
|
-
var
|
|
2470
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
2178
2471
|
function ImagePreviewStrip({ images, onRemove }) {
|
|
2179
2472
|
if (images.length === 0) return null;
|
|
2180
|
-
return /* @__PURE__ */ (0,
|
|
2181
|
-
images.map((img) => /* @__PURE__ */ (0,
|
|
2182
|
-
/* @__PURE__ */ (0,
|
|
2183
|
-
img.status === "uploading" && /* @__PURE__ */ (0,
|
|
2473
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { display: "flex", gap: 8, overflowX: "auto", paddingTop: 4 }, children: [
|
|
2474
|
+
images.map((img) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { position: "relative", width: 64, height: 64, flexShrink: 0, borderRadius: 8, overflow: "hidden" }, children: [
|
|
2475
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: img.localUri, alt: img.name, style: { width: 64, height: 64, objectFit: "cover", borderRadius: 8 } }),
|
|
2476
|
+
img.status === "uploading" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: {
|
|
2184
2477
|
position: "absolute",
|
|
2185
2478
|
inset: 0,
|
|
2186
2479
|
backgroundColor: "rgba(0,0,0,0.5)",
|
|
@@ -2188,7 +2481,7 @@ function ImagePreviewStrip({ images, onRemove }) {
|
|
|
2188
2481
|
alignItems: "center",
|
|
2189
2482
|
justifyContent: "center",
|
|
2190
2483
|
borderRadius: 8
|
|
2191
|
-
}, children: /* @__PURE__ */ (0,
|
|
2484
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: {
|
|
2192
2485
|
width: 16,
|
|
2193
2486
|
height: 16,
|
|
2194
2487
|
border: "2px solid #fff",
|
|
@@ -2196,7 +2489,7 @@ function ImagePreviewStrip({ images, onRemove }) {
|
|
|
2196
2489
|
borderRadius: "50%",
|
|
2197
2490
|
animation: "bb-spin 0.6s linear infinite"
|
|
2198
2491
|
} }) }),
|
|
2199
|
-
img.status === "error" && /* @__PURE__ */ (0,
|
|
2492
|
+
img.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: {
|
|
2200
2493
|
position: "absolute",
|
|
2201
2494
|
inset: 0,
|
|
2202
2495
|
backgroundColor: "rgba(127,29,29,0.7)",
|
|
@@ -2204,8 +2497,8 @@ function ImagePreviewStrip({ images, onRemove }) {
|
|
|
2204
2497
|
alignItems: "center",
|
|
2205
2498
|
justifyContent: "center",
|
|
2206
2499
|
borderRadius: 8
|
|
2207
|
-
}, children: /* @__PURE__ */ (0,
|
|
2208
|
-
/* @__PURE__ */ (0,
|
|
2500
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { color: "#fca5a5", fontSize: 18, fontWeight: "bold" }, children: "!" }) }),
|
|
2501
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2209
2502
|
"button",
|
|
2210
2503
|
{
|
|
2211
2504
|
type: "button",
|
|
@@ -2232,18 +2525,18 @@ function ImagePreviewStrip({ images, onRemove }) {
|
|
|
2232
2525
|
}
|
|
2233
2526
|
)
|
|
2234
2527
|
] }, img.id)),
|
|
2235
|
-
/* @__PURE__ */ (0,
|
|
2528
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("style", { children: `@keyframes bb-spin { to { transform: rotate(360deg); } }` })
|
|
2236
2529
|
] });
|
|
2237
2530
|
}
|
|
2238
2531
|
|
|
2239
2532
|
// src/widget/ImagePickerButtons.tsx
|
|
2240
|
-
var
|
|
2533
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
2241
2534
|
function ImagePickerButtons({ images, maxImages, onPickGallery, onPickCamera, onRemove, label }) {
|
|
2242
2535
|
const disabled = images.length >= maxImages;
|
|
2243
|
-
return /* @__PURE__ */ (0,
|
|
2244
|
-
label && /* @__PURE__ */ (0,
|
|
2245
|
-
/* @__PURE__ */ (0,
|
|
2246
|
-
/* @__PURE__ */ (0,
|
|
2536
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: { marginTop: 12, marginBottom: 4 }, children: [
|
|
2537
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { fontSize: 14, fontWeight: 500, color: "#e4e4e7", marginBottom: 8 }, children: label }),
|
|
2538
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 8 }, children: [
|
|
2539
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2247
2540
|
"button",
|
|
2248
2541
|
{
|
|
2249
2542
|
type: "button",
|
|
@@ -2264,7 +2557,7 @@ function ImagePickerButtons({ images, maxImages, onPickGallery, onPickCamera, on
|
|
|
2264
2557
|
children: "Gallery"
|
|
2265
2558
|
}
|
|
2266
2559
|
),
|
|
2267
|
-
/* @__PURE__ */ (0,
|
|
2560
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2268
2561
|
"button",
|
|
2269
2562
|
{
|
|
2270
2563
|
type: "button",
|
|
@@ -2285,18 +2578,18 @@ function ImagePickerButtons({ images, maxImages, onPickGallery, onPickCamera, on
|
|
|
2285
2578
|
children: "Camera"
|
|
2286
2579
|
}
|
|
2287
2580
|
),
|
|
2288
|
-
/* @__PURE__ */ (0,
|
|
2581
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { style: { fontSize: 12, color: colors.textDim, marginLeft: 4 }, children: [
|
|
2289
2582
|
images.length,
|
|
2290
2583
|
"/",
|
|
2291
2584
|
maxImages
|
|
2292
2585
|
] })
|
|
2293
2586
|
] }),
|
|
2294
|
-
/* @__PURE__ */ (0,
|
|
2587
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ImagePreviewStrip, { images, onRemove })
|
|
2295
2588
|
] });
|
|
2296
2589
|
}
|
|
2297
2590
|
|
|
2298
2591
|
// src/widget/screens/TestFeedbackScreen.tsx
|
|
2299
|
-
var
|
|
2592
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
2300
2593
|
function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
2301
2594
|
const { client, assignments, refreshAssignments, uploadImage } = useBugBear();
|
|
2302
2595
|
const images = useImageAttachments(uploadImage, 3, "screenshots");
|
|
@@ -2365,10 +2658,10 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2365
2658
|
{ key: "stepsUnclear", label: "Steps are unclear" },
|
|
2366
2659
|
{ key: "expectedResultUnclear", label: "Expected result unclear" }
|
|
2367
2660
|
];
|
|
2368
|
-
return /* @__PURE__ */ (0,
|
|
2369
|
-
/* @__PURE__ */ (0,
|
|
2370
|
-
/* @__PURE__ */ (0,
|
|
2371
|
-
/* @__PURE__ */ (0,
|
|
2661
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles.container, children: [
|
|
2662
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles.header, children: status === "passed" ? "\u2705 Test Passed!" : "\u274C Test Failed" }),
|
|
2663
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles.subheader, children: "Rate this test case" }),
|
|
2664
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles.starRow, children: [1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2372
2665
|
"button",
|
|
2373
2666
|
{
|
|
2374
2667
|
onClick: () => setRating(n),
|
|
@@ -2380,9 +2673,9 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2380
2673
|
},
|
|
2381
2674
|
n
|
|
2382
2675
|
)) }),
|
|
2383
|
-
showFlags && /* @__PURE__ */ (0,
|
|
2384
|
-
/* @__PURE__ */ (0,
|
|
2385
|
-
flagOptions.map(({ key, label }) => /* @__PURE__ */ (0,
|
|
2676
|
+
showFlags && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles.flagsSection, children: [
|
|
2677
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles.flagsLabel, children: "What could be improved?" }),
|
|
2678
|
+
flagOptions.map(({ key, label }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2386
2679
|
"button",
|
|
2387
2680
|
{
|
|
2388
2681
|
onClick: () => toggleFlag(key),
|
|
@@ -2391,17 +2684,17 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2391
2684
|
...flags[key] ? styles.flagItemActive : {}
|
|
2392
2685
|
},
|
|
2393
2686
|
children: [
|
|
2394
|
-
/* @__PURE__ */ (0,
|
|
2687
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2395
2688
|
"div",
|
|
2396
2689
|
{
|
|
2397
2690
|
style: {
|
|
2398
2691
|
...styles.flagCheck,
|
|
2399
2692
|
...flags[key] ? styles.flagCheckActive : {}
|
|
2400
2693
|
},
|
|
2401
|
-
children: flags[key] && /* @__PURE__ */ (0,
|
|
2694
|
+
children: flags[key] && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { style: styles.flagCheckmark, children: "\u2713" })
|
|
2402
2695
|
}
|
|
2403
2696
|
),
|
|
2404
|
-
/* @__PURE__ */ (0,
|
|
2697
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2405
2698
|
"span",
|
|
2406
2699
|
{
|
|
2407
2700
|
style: {
|
|
@@ -2416,7 +2709,7 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2416
2709
|
key
|
|
2417
2710
|
))
|
|
2418
2711
|
] }),
|
|
2419
|
-
/* @__PURE__ */ (0,
|
|
2712
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2420
2713
|
"textarea",
|
|
2421
2714
|
{
|
|
2422
2715
|
style: styles.noteInput,
|
|
@@ -2426,7 +2719,7 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2426
2719
|
rows: 3
|
|
2427
2720
|
}
|
|
2428
2721
|
),
|
|
2429
|
-
/* @__PURE__ */ (0,
|
|
2722
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2430
2723
|
ImagePickerButtons,
|
|
2431
2724
|
{
|
|
2432
2725
|
images: images.images,
|
|
@@ -2437,9 +2730,9 @@ function TestFeedbackScreen({ status, assignmentId, nav }) {
|
|
|
2437
2730
|
label: "Screenshots (optional)"
|
|
2438
2731
|
}
|
|
2439
2732
|
),
|
|
2440
|
-
/* @__PURE__ */ (0,
|
|
2441
|
-
/* @__PURE__ */ (0,
|
|
2442
|
-
/* @__PURE__ */ (0,
|
|
2733
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles.actions, children: [
|
|
2734
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { style: styles.skipButton, onClick: handleSkip, children: "Skip" }),
|
|
2735
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2443
2736
|
"button",
|
|
2444
2737
|
{
|
|
2445
2738
|
style: {
|
|
@@ -2592,7 +2885,7 @@ var styles = {
|
|
|
2592
2885
|
var import_react8 = __toESM(require("react"));
|
|
2593
2886
|
|
|
2594
2887
|
// src/widget/CategoryDropdown.tsx
|
|
2595
|
-
var
|
|
2888
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
2596
2889
|
var categoryOptions = [
|
|
2597
2890
|
{ value: "ui_ux", label: "UI/UX", icon: "\u{1F3A8}" },
|
|
2598
2891
|
{ value: "functional", label: "Functional", icon: "\u2699\uFE0F" },
|
|
@@ -2601,7 +2894,7 @@ var categoryOptions = [
|
|
|
2601
2894
|
{ value: "other", label: "Other", icon: "\u{1F4DD}" }
|
|
2602
2895
|
];
|
|
2603
2896
|
function CategoryDropdown({ value, onChange, optional = true, disabled = false }) {
|
|
2604
|
-
return /* @__PURE__ */ (0,
|
|
2897
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
2605
2898
|
"select",
|
|
2606
2899
|
{
|
|
2607
2900
|
value: value || "",
|
|
@@ -2624,8 +2917,8 @@ function CategoryDropdown({ value, onChange, optional = true, disabled = false }
|
|
|
2624
2917
|
paddingRight: 32
|
|
2625
2918
|
},
|
|
2626
2919
|
children: [
|
|
2627
|
-
/* @__PURE__ */ (0,
|
|
2628
|
-
categoryOptions.map(({ value: value2, label, icon }) => /* @__PURE__ */ (0,
|
|
2920
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("option", { value: "", children: optional ? "Select category (optional)" : "Select category" }),
|
|
2921
|
+
categoryOptions.map(({ value: value2, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("option", { value: value2, children: [
|
|
2629
2922
|
icon,
|
|
2630
2923
|
" ",
|
|
2631
2924
|
label
|
|
@@ -2636,7 +2929,7 @@ function CategoryDropdown({ value, onChange, optional = true, disabled = false }
|
|
|
2636
2929
|
}
|
|
2637
2930
|
|
|
2638
2931
|
// src/widget/screens/ReportScreen.tsx
|
|
2639
|
-
var
|
|
2932
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
2640
2933
|
function ReportScreen({ nav, prefill }) {
|
|
2641
2934
|
const { client, refreshAssignments, uploadImage } = useBugBear();
|
|
2642
2935
|
const images = useImageAttachments(uploadImage, 5, "screenshots");
|
|
@@ -2711,17 +3004,17 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2711
3004
|
{ sev: "medium", color: "#eab308" },
|
|
2712
3005
|
{ sev: "low", color: "#6b7280" }
|
|
2713
3006
|
];
|
|
2714
|
-
return /* @__PURE__ */ (0,
|
|
2715
|
-
/* @__PURE__ */ (0,
|
|
2716
|
-
/* @__PURE__ */ (0,
|
|
2717
|
-
/* @__PURE__ */ (0,
|
|
2718
|
-
/* @__PURE__ */ (0,
|
|
2719
|
-
/* @__PURE__ */ (0,
|
|
3007
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { children: isRetestFailure ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
|
|
3008
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles2.retestBanner, children: [
|
|
3009
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
|
|
3010
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
|
|
3011
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.retestTitle, children: "Bug Still Present" }),
|
|
3012
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.retestSubtitle, children: "The fix did not resolve this issue" })
|
|
2720
3013
|
] })
|
|
2721
3014
|
] }),
|
|
2722
|
-
/* @__PURE__ */ (0,
|
|
2723
|
-
/* @__PURE__ */ (0,
|
|
2724
|
-
/* @__PURE__ */ (0,
|
|
3015
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles2.section, children: [
|
|
3016
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.label, children: "Severity" }),
|
|
3017
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2725
3018
|
"button",
|
|
2726
3019
|
{
|
|
2727
3020
|
onClick: () => setSeverity(sev),
|
|
@@ -2729,18 +3022,18 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2729
3022
|
...styles2.sevButton,
|
|
2730
3023
|
...severity === sev ? { backgroundColor: `${color}30`, borderColor: color } : {}
|
|
2731
3024
|
},
|
|
2732
|
-
children: /* @__PURE__ */ (0,
|
|
3025
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { ...styles2.sevText, ...severity === sev ? { color } : {} }, children: sev })
|
|
2733
3026
|
},
|
|
2734
3027
|
sev
|
|
2735
3028
|
)) })
|
|
2736
3029
|
] }),
|
|
2737
|
-
/* @__PURE__ */ (0,
|
|
2738
|
-
/* @__PURE__ */ (0,
|
|
2739
|
-
/* @__PURE__ */ (0,
|
|
3030
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles2.section, children: [
|
|
3031
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.label, children: "Category (optional)" }),
|
|
3032
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
|
|
2740
3033
|
] }),
|
|
2741
|
-
/* @__PURE__ */ (0,
|
|
2742
|
-
/* @__PURE__ */ (0,
|
|
2743
|
-
/* @__PURE__ */ (0,
|
|
3034
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles2.section, children: [
|
|
3035
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.label, children: "What went wrong?" }),
|
|
3036
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2744
3037
|
"textarea",
|
|
2745
3038
|
{
|
|
2746
3039
|
style: styles2.descInput,
|
|
@@ -2751,7 +3044,7 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2751
3044
|
}
|
|
2752
3045
|
)
|
|
2753
3046
|
] }),
|
|
2754
|
-
/* @__PURE__ */ (0,
|
|
3047
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2755
3048
|
ImagePickerButtons,
|
|
2756
3049
|
{
|
|
2757
3050
|
images: images.images,
|
|
@@ -2762,8 +3055,8 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2762
3055
|
label: "Attachments (optional)"
|
|
2763
3056
|
}
|
|
2764
3057
|
),
|
|
2765
|
-
error && /* @__PURE__ */ (0,
|
|
2766
|
-
/* @__PURE__ */ (0,
|
|
3058
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.errorBanner, children: error }),
|
|
3059
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2767
3060
|
"button",
|
|
2768
3061
|
{
|
|
2769
3062
|
style: {
|
|
@@ -2776,9 +3069,9 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2776
3069
|
children: images.isUploading ? "Uploading images..." : submitting ? "Submitting..." : error ? "Retry" : "Submit Failed Retest"
|
|
2777
3070
|
}
|
|
2778
3071
|
)
|
|
2779
|
-
] }) : /* @__PURE__ */ (0,
|
|
2780
|
-
/* @__PURE__ */ (0,
|
|
2781
|
-
/* @__PURE__ */ (0,
|
|
3072
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
|
|
3073
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.label, children: "What are you reporting?" }),
|
|
3074
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.typeRow, children: typeOptions.map(({ type, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
2782
3075
|
"button",
|
|
2783
3076
|
{
|
|
2784
3077
|
onClick: () => setReportType(type),
|
|
@@ -2787,8 +3080,8 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2787
3080
|
...reportType === type ? styles2.typeCardActive : {}
|
|
2788
3081
|
},
|
|
2789
3082
|
children: [
|
|
2790
|
-
/* @__PURE__ */ (0,
|
|
2791
|
-
/* @__PURE__ */ (0,
|
|
3083
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.typeIcon, children: icon }),
|
|
3084
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2792
3085
|
"div",
|
|
2793
3086
|
{
|
|
2794
3087
|
style: {
|
|
@@ -2802,9 +3095,9 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2802
3095
|
},
|
|
2803
3096
|
type
|
|
2804
3097
|
)) }),
|
|
2805
|
-
isBugType && /* @__PURE__ */ (0,
|
|
2806
|
-
/* @__PURE__ */ (0,
|
|
2807
|
-
/* @__PURE__ */ (0,
|
|
3098
|
+
isBugType && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles2.section, children: [
|
|
3099
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.label, children: "Severity" }),
|
|
3100
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2808
3101
|
"button",
|
|
2809
3102
|
{
|
|
2810
3103
|
onClick: () => setSeverity(sev),
|
|
@@ -2815,7 +3108,7 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2815
3108
|
borderColor: color
|
|
2816
3109
|
} : {}
|
|
2817
3110
|
},
|
|
2818
|
-
children: /* @__PURE__ */ (0,
|
|
3111
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2819
3112
|
"span",
|
|
2820
3113
|
{
|
|
2821
3114
|
style: {
|
|
@@ -2829,13 +3122,13 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2829
3122
|
sev
|
|
2830
3123
|
)) })
|
|
2831
3124
|
] }),
|
|
2832
|
-
isBugType && /* @__PURE__ */ (0,
|
|
2833
|
-
/* @__PURE__ */ (0,
|
|
2834
|
-
/* @__PURE__ */ (0,
|
|
3125
|
+
isBugType && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles2.section, children: [
|
|
3126
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.label, children: "Category (optional)" }),
|
|
3127
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
|
|
2835
3128
|
] }),
|
|
2836
|
-
/* @__PURE__ */ (0,
|
|
2837
|
-
/* @__PURE__ */ (0,
|
|
2838
|
-
/* @__PURE__ */ (0,
|
|
3129
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles2.section, children: [
|
|
3130
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.label, children: "What happened?" }),
|
|
3131
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2839
3132
|
"textarea",
|
|
2840
3133
|
{
|
|
2841
3134
|
style: styles2.descInput,
|
|
@@ -2846,9 +3139,9 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2846
3139
|
}
|
|
2847
3140
|
)
|
|
2848
3141
|
] }),
|
|
2849
|
-
isBugType && /* @__PURE__ */ (0,
|
|
2850
|
-
/* @__PURE__ */ (0,
|
|
2851
|
-
/* @__PURE__ */ (0,
|
|
3142
|
+
isBugType && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles2.section, children: [
|
|
3143
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.label, children: "Where did it happen?" }),
|
|
3144
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2852
3145
|
"input",
|
|
2853
3146
|
{
|
|
2854
3147
|
style: styles2.routeInput,
|
|
@@ -2857,13 +3150,13 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2857
3150
|
placeholder: observedRoute.current
|
|
2858
3151
|
}
|
|
2859
3152
|
),
|
|
2860
|
-
/* @__PURE__ */ (0,
|
|
3153
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles2.routeHint, children: [
|
|
2861
3154
|
"Leave blank to use current page (",
|
|
2862
3155
|
observedRoute.current,
|
|
2863
3156
|
")"
|
|
2864
3157
|
] })
|
|
2865
3158
|
] }),
|
|
2866
|
-
/* @__PURE__ */ (0,
|
|
3159
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2867
3160
|
ImagePickerButtons,
|
|
2868
3161
|
{
|
|
2869
3162
|
images: images.images,
|
|
@@ -2874,8 +3167,8 @@ function ReportScreen({ nav, prefill }) {
|
|
|
2874
3167
|
label: "Screenshots (optional)"
|
|
2875
3168
|
}
|
|
2876
3169
|
),
|
|
2877
|
-
error && /* @__PURE__ */ (0,
|
|
2878
|
-
/* @__PURE__ */ (0,
|
|
3170
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles2.errorBanner, children: error }),
|
|
3171
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2879
3172
|
"button",
|
|
2880
3173
|
{
|
|
2881
3174
|
style: {
|
|
@@ -3040,16 +3333,16 @@ var styles2 = {
|
|
|
3040
3333
|
|
|
3041
3334
|
// src/widget/screens/ReportSuccessScreen.tsx
|
|
3042
3335
|
var import_react9 = require("react");
|
|
3043
|
-
var
|
|
3336
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
3044
3337
|
function ReportSuccessScreen({ nav }) {
|
|
3045
3338
|
(0, import_react9.useEffect)(() => {
|
|
3046
3339
|
const timer = setTimeout(() => nav.reset(), 2e3);
|
|
3047
3340
|
return () => clearTimeout(timer);
|
|
3048
3341
|
}, [nav]);
|
|
3049
|
-
return /* @__PURE__ */ (0,
|
|
3050
|
-
/* @__PURE__ */ (0,
|
|
3051
|
-
/* @__PURE__ */ (0,
|
|
3052
|
-
/* @__PURE__ */ (0,
|
|
3342
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { style: styles3.container, children: [
|
|
3343
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: styles3.emoji, children: "\u{1F389}" }),
|
|
3344
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: styles3.title, children: "Report submitted!" }),
|
|
3345
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: styles3.subtitle, children: "Thank you for your feedback" })
|
|
3053
3346
|
] });
|
|
3054
3347
|
}
|
|
3055
3348
|
var styles3 = {
|
|
@@ -3078,11 +3371,12 @@ var styles3 = {
|
|
|
3078
3371
|
};
|
|
3079
3372
|
|
|
3080
3373
|
// src/widget/screens/MessageListScreen.tsx
|
|
3081
|
-
var
|
|
3374
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
3082
3375
|
function MessageListScreen({ nav }) {
|
|
3083
|
-
const { threads, unreadCount, refreshThreads } = useBugBear();
|
|
3084
|
-
return /* @__PURE__ */ (0,
|
|
3085
|
-
|
|
3376
|
+
const { threads, unreadCount, refreshThreads, isLoading } = useBugBear();
|
|
3377
|
+
if (isLoading) return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MessageListScreenSkeleton, {});
|
|
3378
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { children: [
|
|
3379
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
3086
3380
|
"button",
|
|
3087
3381
|
{
|
|
3088
3382
|
style: {
|
|
@@ -3101,7 +3395,7 @@ function MessageListScreen({ nav }) {
|
|
|
3101
3395
|
children: "\u2709\uFE0F New Message"
|
|
3102
3396
|
}
|
|
3103
3397
|
),
|
|
3104
|
-
threads.length === 0 ? /* @__PURE__ */ (0,
|
|
3398
|
+
threads.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
3105
3399
|
"div",
|
|
3106
3400
|
{
|
|
3107
3401
|
style: {
|
|
@@ -3112,8 +3406,8 @@ function MessageListScreen({ nav }) {
|
|
|
3112
3406
|
paddingBottom: 40
|
|
3113
3407
|
},
|
|
3114
3408
|
children: [
|
|
3115
|
-
/* @__PURE__ */ (0,
|
|
3116
|
-
/* @__PURE__ */ (0,
|
|
3409
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: { fontSize: 36, marginBottom: 12 }, children: "\u{1F4AC}" }),
|
|
3410
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
3117
3411
|
"span",
|
|
3118
3412
|
{
|
|
3119
3413
|
style: {
|
|
@@ -3125,7 +3419,7 @@ function MessageListScreen({ nav }) {
|
|
|
3125
3419
|
children: "No messages yet"
|
|
3126
3420
|
}
|
|
3127
3421
|
),
|
|
3128
|
-
/* @__PURE__ */ (0,
|
|
3422
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
3129
3423
|
"span",
|
|
3130
3424
|
{
|
|
3131
3425
|
style: {
|
|
@@ -3138,7 +3432,7 @@ function MessageListScreen({ nav }) {
|
|
|
3138
3432
|
)
|
|
3139
3433
|
]
|
|
3140
3434
|
}
|
|
3141
|
-
) : /* @__PURE__ */ (0,
|
|
3435
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { children: threads.map((thread) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
3142
3436
|
"button",
|
|
3143
3437
|
{
|
|
3144
3438
|
style: {
|
|
@@ -3156,8 +3450,8 @@ function MessageListScreen({ nav }) {
|
|
|
3156
3450
|
},
|
|
3157
3451
|
onClick: () => nav.push({ name: "THREAD_DETAIL", thread }),
|
|
3158
3452
|
children: [
|
|
3159
|
-
/* @__PURE__ */ (0,
|
|
3160
|
-
/* @__PURE__ */ (0,
|
|
3453
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: { display: "flex", flex: 1, minWidth: 0 }, children: [
|
|
3454
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
3161
3455
|
"span",
|
|
3162
3456
|
{
|
|
3163
3457
|
style: {
|
|
@@ -3169,7 +3463,7 @@ function MessageListScreen({ nav }) {
|
|
|
3169
3463
|
children: getThreadTypeIcon(thread.threadType)
|
|
3170
3464
|
}
|
|
3171
3465
|
),
|
|
3172
|
-
/* @__PURE__ */ (0,
|
|
3466
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
3173
3467
|
"div",
|
|
3174
3468
|
{
|
|
3175
3469
|
style: {
|
|
@@ -3177,7 +3471,7 @@ function MessageListScreen({ nav }) {
|
|
|
3177
3471
|
minWidth: 0
|
|
3178
3472
|
},
|
|
3179
3473
|
children: [
|
|
3180
|
-
/* @__PURE__ */ (0,
|
|
3474
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
3181
3475
|
"div",
|
|
3182
3476
|
{
|
|
3183
3477
|
style: {
|
|
@@ -3186,8 +3480,8 @@ function MessageListScreen({ nav }) {
|
|
|
3186
3480
|
gap: 4
|
|
3187
3481
|
},
|
|
3188
3482
|
children: [
|
|
3189
|
-
thread.isPinned && /* @__PURE__ */ (0,
|
|
3190
|
-
/* @__PURE__ */ (0,
|
|
3483
|
+
thread.isPinned && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: { fontSize: 12, flexShrink: 0 }, children: "\u{1F4CC}" }),
|
|
3484
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
3191
3485
|
"span",
|
|
3192
3486
|
{
|
|
3193
3487
|
style: {
|
|
@@ -3204,7 +3498,7 @@ function MessageListScreen({ nav }) {
|
|
|
3204
3498
|
]
|
|
3205
3499
|
}
|
|
3206
3500
|
),
|
|
3207
|
-
thread.lastMessage && /* @__PURE__ */ (0,
|
|
3501
|
+
thread.lastMessage && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
3208
3502
|
"span",
|
|
3209
3503
|
{
|
|
3210
3504
|
style: {
|
|
@@ -3228,7 +3522,7 @@ function MessageListScreen({ nav }) {
|
|
|
3228
3522
|
}
|
|
3229
3523
|
)
|
|
3230
3524
|
] }),
|
|
3231
|
-
/* @__PURE__ */ (0,
|
|
3525
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
3232
3526
|
"div",
|
|
3233
3527
|
{
|
|
3234
3528
|
style: {
|
|
@@ -3240,8 +3534,8 @@ function MessageListScreen({ nav }) {
|
|
|
3240
3534
|
flexShrink: 0
|
|
3241
3535
|
},
|
|
3242
3536
|
children: [
|
|
3243
|
-
/* @__PURE__ */ (0,
|
|
3244
|
-
thread.unreadCount > 0 && /* @__PURE__ */ (0,
|
|
3537
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: { fontSize: 11, color: colors.textDim }, children: formatRelativeTime(thread.lastMessageAt) }),
|
|
3538
|
+
thread.unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
3245
3539
|
"span",
|
|
3246
3540
|
{
|
|
3247
3541
|
style: {
|
|
@@ -3268,7 +3562,7 @@ function MessageListScreen({ nav }) {
|
|
|
3268
3562
|
},
|
|
3269
3563
|
thread.id
|
|
3270
3564
|
)) }),
|
|
3271
|
-
/* @__PURE__ */ (0,
|
|
3565
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
3272
3566
|
"div",
|
|
3273
3567
|
{
|
|
3274
3568
|
style: {
|
|
@@ -3280,7 +3574,7 @@ function MessageListScreen({ nav }) {
|
|
|
3280
3574
|
paddingRight: 4
|
|
3281
3575
|
},
|
|
3282
3576
|
children: [
|
|
3283
|
-
/* @__PURE__ */ (0,
|
|
3577
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
|
|
3284
3578
|
threads.length,
|
|
3285
3579
|
" thread",
|
|
3286
3580
|
threads.length !== 1 ? "s" : "",
|
|
@@ -3289,7 +3583,7 @@ function MessageListScreen({ nav }) {
|
|
|
3289
3583
|
unreadCount,
|
|
3290
3584
|
" unread"
|
|
3291
3585
|
] }),
|
|
3292
|
-
/* @__PURE__ */ (0,
|
|
3586
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
3293
3587
|
"button",
|
|
3294
3588
|
{
|
|
3295
3589
|
style: {
|
|
@@ -3312,7 +3606,7 @@ function MessageListScreen({ nav }) {
|
|
|
3312
3606
|
|
|
3313
3607
|
// src/widget/screens/ThreadDetailScreen.tsx
|
|
3314
3608
|
var import_react10 = require("react");
|
|
3315
|
-
var
|
|
3609
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
3316
3610
|
var inputStyle = {
|
|
3317
3611
|
backgroundColor: "#27272a",
|
|
3318
3612
|
border: "1px solid #3f3f46",
|
|
@@ -3384,8 +3678,8 @@ function ThreadDetailScreen({
|
|
|
3384
3678
|
handleSend();
|
|
3385
3679
|
}
|
|
3386
3680
|
};
|
|
3387
|
-
return /* @__PURE__ */ (0,
|
|
3388
|
-
/* @__PURE__ */ (0,
|
|
3681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: { display: "flex", flexDirection: "column", flex: 1 }, children: [
|
|
3682
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
3389
3683
|
"div",
|
|
3390
3684
|
{
|
|
3391
3685
|
style: {
|
|
@@ -3397,8 +3691,8 @@ function ThreadDetailScreen({
|
|
|
3397
3691
|
borderBottom: `1px solid ${colors.border}`
|
|
3398
3692
|
},
|
|
3399
3693
|
children: [
|
|
3400
|
-
/* @__PURE__ */ (0,
|
|
3401
|
-
/* @__PURE__ */ (0,
|
|
3694
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: { fontSize: 20 }, children: getThreadTypeIcon(thread.threadType) }),
|
|
3695
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3402
3696
|
"span",
|
|
3403
3697
|
{
|
|
3404
3698
|
style: {
|
|
@@ -3418,7 +3712,7 @@ function ThreadDetailScreen({
|
|
|
3418
3712
|
]
|
|
3419
3713
|
}
|
|
3420
3714
|
),
|
|
3421
|
-
loading ? /* @__PURE__ */ (0,
|
|
3715
|
+
loading ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3422
3716
|
"div",
|
|
3423
3717
|
{
|
|
3424
3718
|
style: {
|
|
@@ -3426,11 +3720,11 @@ function ThreadDetailScreen({
|
|
|
3426
3720
|
paddingBottom: 40,
|
|
3427
3721
|
textAlign: "center"
|
|
3428
3722
|
},
|
|
3429
|
-
children: /* @__PURE__ */ (0,
|
|
3723
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: { fontSize: 14, color: colors.textMuted }, children: "Loading messages..." })
|
|
3430
3724
|
}
|
|
3431
|
-
) : /* @__PURE__ */ (0,
|
|
3725
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: { paddingBottom: 8, marginBottom: 8 }, children: messages.map((msg) => {
|
|
3432
3726
|
const isTester = msg.senderType === "tester";
|
|
3433
|
-
return /* @__PURE__ */ (0,
|
|
3727
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
3434
3728
|
"div",
|
|
3435
3729
|
{
|
|
3436
3730
|
style: {
|
|
@@ -3446,7 +3740,7 @@ function ThreadDetailScreen({
|
|
|
3446
3740
|
borderBottomRightRadius: isTester ? 4 : 16
|
|
3447
3741
|
},
|
|
3448
3742
|
children: [
|
|
3449
|
-
/* @__PURE__ */ (0,
|
|
3743
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3450
3744
|
"span",
|
|
3451
3745
|
{
|
|
3452
3746
|
style: {
|
|
@@ -3459,7 +3753,7 @@ function ThreadDetailScreen({
|
|
|
3459
3753
|
children: isTester ? "You" : msg.senderName
|
|
3460
3754
|
}
|
|
3461
3755
|
),
|
|
3462
|
-
/* @__PURE__ */ (0,
|
|
3756
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3463
3757
|
"span",
|
|
3464
3758
|
{
|
|
3465
3759
|
style: {
|
|
@@ -3473,7 +3767,7 @@ function ThreadDetailScreen({
|
|
|
3473
3767
|
children: msg.content
|
|
3474
3768
|
}
|
|
3475
3769
|
),
|
|
3476
|
-
msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */ (0,
|
|
3770
|
+
msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("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__ */ (0, import_jsx_runtime13.jsx)(
|
|
3477
3771
|
"img",
|
|
3478
3772
|
{
|
|
3479
3773
|
src: att.url,
|
|
@@ -3482,7 +3776,7 @@ function ThreadDetailScreen({
|
|
|
3482
3776
|
},
|
|
3483
3777
|
idx
|
|
3484
3778
|
)) }),
|
|
3485
|
-
/* @__PURE__ */ (0,
|
|
3779
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3486
3780
|
"span",
|
|
3487
3781
|
{
|
|
3488
3782
|
style: {
|
|
@@ -3500,7 +3794,7 @@ function ThreadDetailScreen({
|
|
|
3500
3794
|
msg.id
|
|
3501
3795
|
);
|
|
3502
3796
|
}) }),
|
|
3503
|
-
sendError && /* @__PURE__ */ (0,
|
|
3797
|
+
sendError && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3504
3798
|
"div",
|
|
3505
3799
|
{
|
|
3506
3800
|
style: {
|
|
@@ -3512,7 +3806,7 @@ function ThreadDetailScreen({
|
|
|
3512
3806
|
borderRadius: 8,
|
|
3513
3807
|
marginBottom: 8
|
|
3514
3808
|
},
|
|
3515
|
-
children: /* @__PURE__ */ (0,
|
|
3809
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3516
3810
|
"span",
|
|
3517
3811
|
{
|
|
3518
3812
|
style: {
|
|
@@ -3526,8 +3820,8 @@ function ThreadDetailScreen({
|
|
|
3526
3820
|
)
|
|
3527
3821
|
}
|
|
3528
3822
|
),
|
|
3529
|
-
replyImages.images.length > 0 && /* @__PURE__ */ (0,
|
|
3530
|
-
/* @__PURE__ */ (0,
|
|
3823
|
+
replyImages.images.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: { paddingTop: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ImagePreviewStrip, { images: replyImages.images, onRemove: replyImages.removeImage }) }),
|
|
3824
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
3531
3825
|
"div",
|
|
3532
3826
|
{
|
|
3533
3827
|
style: {
|
|
@@ -3538,7 +3832,7 @@ function ThreadDetailScreen({
|
|
|
3538
3832
|
gap: 8
|
|
3539
3833
|
},
|
|
3540
3834
|
children: [
|
|
3541
|
-
/* @__PURE__ */ (0,
|
|
3835
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3542
3836
|
"button",
|
|
3543
3837
|
{
|
|
3544
3838
|
type: "button",
|
|
@@ -3557,7 +3851,7 @@ function ThreadDetailScreen({
|
|
|
3557
3851
|
children: "\u{1F4CE}"
|
|
3558
3852
|
}
|
|
3559
3853
|
),
|
|
3560
|
-
/* @__PURE__ */ (0,
|
|
3854
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3561
3855
|
"input",
|
|
3562
3856
|
{
|
|
3563
3857
|
type: "text",
|
|
@@ -3573,7 +3867,7 @@ function ThreadDetailScreen({
|
|
|
3573
3867
|
}
|
|
3574
3868
|
}
|
|
3575
3869
|
),
|
|
3576
|
-
/* @__PURE__ */ (0,
|
|
3870
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3577
3871
|
"button",
|
|
3578
3872
|
{
|
|
3579
3873
|
style: {
|
|
@@ -3601,7 +3895,7 @@ function ThreadDetailScreen({
|
|
|
3601
3895
|
|
|
3602
3896
|
// src/widget/screens/ComposeMessageScreen.tsx
|
|
3603
3897
|
var import_react11 = require("react");
|
|
3604
|
-
var
|
|
3898
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
3605
3899
|
var inputStyle2 = {
|
|
3606
3900
|
backgroundColor: "#27272a",
|
|
3607
3901
|
border: "1px solid #3f3f46",
|
|
@@ -3632,9 +3926,9 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3632
3926
|
nav.pop();
|
|
3633
3927
|
}
|
|
3634
3928
|
};
|
|
3635
|
-
return /* @__PURE__ */ (0,
|
|
3636
|
-
/* @__PURE__ */ (0,
|
|
3637
|
-
/* @__PURE__ */ (0,
|
|
3929
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { children: [
|
|
3930
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: { marginBottom: 20 }, children: [
|
|
3931
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3638
3932
|
"div",
|
|
3639
3933
|
{
|
|
3640
3934
|
style: {
|
|
@@ -3646,9 +3940,9 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3646
3940
|
children: "New Message"
|
|
3647
3941
|
}
|
|
3648
3942
|
),
|
|
3649
|
-
/* @__PURE__ */ (0,
|
|
3943
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: { fontSize: 14, color: colors.textMuted }, children: "Send a message to the QA team" })
|
|
3650
3944
|
] }),
|
|
3651
|
-
/* @__PURE__ */ (0,
|
|
3945
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
3652
3946
|
"div",
|
|
3653
3947
|
{
|
|
3654
3948
|
style: {
|
|
@@ -3658,7 +3952,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3658
3952
|
border: `1px solid ${colors.border}`
|
|
3659
3953
|
},
|
|
3660
3954
|
children: [
|
|
3661
|
-
/* @__PURE__ */ (0,
|
|
3955
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3662
3956
|
"label",
|
|
3663
3957
|
{
|
|
3664
3958
|
style: {
|
|
@@ -3671,7 +3965,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3671
3965
|
children: "Subject"
|
|
3672
3966
|
}
|
|
3673
3967
|
),
|
|
3674
|
-
/* @__PURE__ */ (0,
|
|
3968
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3675
3969
|
"input",
|
|
3676
3970
|
{
|
|
3677
3971
|
type: "text",
|
|
@@ -3686,7 +3980,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3686
3980
|
}
|
|
3687
3981
|
}
|
|
3688
3982
|
),
|
|
3689
|
-
/* @__PURE__ */ (0,
|
|
3983
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3690
3984
|
"label",
|
|
3691
3985
|
{
|
|
3692
3986
|
style: {
|
|
@@ -3700,7 +3994,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3700
3994
|
children: "Message"
|
|
3701
3995
|
}
|
|
3702
3996
|
),
|
|
3703
|
-
/* @__PURE__ */ (0,
|
|
3997
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3704
3998
|
"textarea",
|
|
3705
3999
|
{
|
|
3706
4000
|
value: message,
|
|
@@ -3719,7 +4013,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3719
4013
|
}
|
|
3720
4014
|
}
|
|
3721
4015
|
),
|
|
3722
|
-
/* @__PURE__ */ (0,
|
|
4016
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3723
4017
|
ImagePickerButtons,
|
|
3724
4018
|
{
|
|
3725
4019
|
images: images.images,
|
|
@@ -3730,7 +4024,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3730
4024
|
label: "Attachments (optional)"
|
|
3731
4025
|
}
|
|
3732
4026
|
),
|
|
3733
|
-
/* @__PURE__ */ (0,
|
|
4027
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3734
4028
|
"button",
|
|
3735
4029
|
{
|
|
3736
4030
|
style: {
|
|
@@ -3759,7 +4053,7 @@ function ComposeMessageScreen({ nav }) {
|
|
|
3759
4053
|
|
|
3760
4054
|
// src/widget/screens/ProfileScreen.tsx
|
|
3761
4055
|
var import_react12 = require("react");
|
|
3762
|
-
var
|
|
4056
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
3763
4057
|
function ProfileScreen({ nav }) {
|
|
3764
4058
|
const { testerInfo, assignments, updateTesterProfile, refreshTesterInfo } = useBugBear();
|
|
3765
4059
|
const [editing, setEditing] = (0, import_react12.useState)(false);
|
|
@@ -3806,22 +4100,22 @@ function ProfileScreen({ nav }) {
|
|
|
3806
4100
|
}
|
|
3807
4101
|
};
|
|
3808
4102
|
if (saved) {
|
|
3809
|
-
return /* @__PURE__ */ (0,
|
|
3810
|
-
/* @__PURE__ */ (0,
|
|
3811
|
-
/* @__PURE__ */ (0,
|
|
4103
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.emptyState, children: [
|
|
4104
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.emptyEmoji, children: "\u2705" }),
|
|
4105
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.emptyTitle, children: "Profile saved!" })
|
|
3812
4106
|
] });
|
|
3813
4107
|
}
|
|
3814
4108
|
if (!testerInfo) {
|
|
3815
|
-
return /* @__PURE__ */ (0,
|
|
3816
|
-
/* @__PURE__ */ (0,
|
|
3817
|
-
/* @__PURE__ */ (0,
|
|
4109
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.emptyState, children: [
|
|
4110
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.emptyEmoji, children: "\u{1F464}" }),
|
|
4111
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.emptyTitle, children: "No profile found" })
|
|
3818
4112
|
] });
|
|
3819
4113
|
}
|
|
3820
4114
|
if (editing) {
|
|
3821
|
-
return /* @__PURE__ */ (0,
|
|
3822
|
-
/* @__PURE__ */ (0,
|
|
3823
|
-
/* @__PURE__ */ (0,
|
|
3824
|
-
/* @__PURE__ */ (0,
|
|
4115
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { children: [
|
|
4116
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.editHeader, children: [
|
|
4117
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.editTitle, children: "Edit Profile" }),
|
|
4118
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3825
4119
|
"button",
|
|
3826
4120
|
{
|
|
3827
4121
|
style: styles4.cancelButton,
|
|
@@ -3833,9 +4127,9 @@ function ProfileScreen({ nav }) {
|
|
|
3833
4127
|
}
|
|
3834
4128
|
)
|
|
3835
4129
|
] }),
|
|
3836
|
-
/* @__PURE__ */ (0,
|
|
3837
|
-
/* @__PURE__ */ (0,
|
|
3838
|
-
/* @__PURE__ */ (0,
|
|
4130
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.field, children: [
|
|
4131
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("label", { style: styles4.label, children: "Name" }),
|
|
4132
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3839
4133
|
"input",
|
|
3840
4134
|
{
|
|
3841
4135
|
style: styles4.input,
|
|
@@ -3845,15 +4139,15 @@ function ProfileScreen({ nav }) {
|
|
|
3845
4139
|
}
|
|
3846
4140
|
)
|
|
3847
4141
|
] }),
|
|
3848
|
-
/* @__PURE__ */ (0,
|
|
3849
|
-
/* @__PURE__ */ (0,
|
|
3850
|
-
/* @__PURE__ */ (0,
|
|
4142
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.field, children: [
|
|
4143
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("label", { style: styles4.label, children: "Primary Email" }),
|
|
4144
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.emailFixed, children: testerInfo.email })
|
|
3851
4145
|
] }),
|
|
3852
|
-
/* @__PURE__ */ (0,
|
|
3853
|
-
/* @__PURE__ */ (0,
|
|
3854
|
-
additionalEmails.map((email) => /* @__PURE__ */ (0,
|
|
3855
|
-
/* @__PURE__ */ (0,
|
|
3856
|
-
/* @__PURE__ */ (0,
|
|
4146
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.field, children: [
|
|
4147
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("label", { style: styles4.label, children: "Additional Emails" }),
|
|
4148
|
+
additionalEmails.map((email) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.emailRow, children: [
|
|
4149
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.emailText, children: email }),
|
|
4150
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3857
4151
|
"button",
|
|
3858
4152
|
{
|
|
3859
4153
|
style: styles4.removeEmailButton,
|
|
@@ -3862,8 +4156,8 @@ function ProfileScreen({ nav }) {
|
|
|
3862
4156
|
}
|
|
3863
4157
|
)
|
|
3864
4158
|
] }, email)),
|
|
3865
|
-
/* @__PURE__ */ (0,
|
|
3866
|
-
/* @__PURE__ */ (0,
|
|
4159
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.addEmailRow, children: [
|
|
4160
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3867
4161
|
"input",
|
|
3868
4162
|
{
|
|
3869
4163
|
style: { ...styles4.input, flex: 1, marginRight: 8 },
|
|
@@ -3876,18 +4170,18 @@ function ProfileScreen({ nav }) {
|
|
|
3876
4170
|
}
|
|
3877
4171
|
}
|
|
3878
4172
|
),
|
|
3879
|
-
/* @__PURE__ */ (0,
|
|
4173
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("button", { style: styles4.addButton, onClick: handleAddEmail, children: "Add" })
|
|
3880
4174
|
] })
|
|
3881
4175
|
] }),
|
|
3882
|
-
/* @__PURE__ */ (0,
|
|
3883
|
-
/* @__PURE__ */ (0,
|
|
3884
|
-
/* @__PURE__ */ (0,
|
|
4176
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.field, children: [
|
|
4177
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("label", { style: styles4.label, children: "Testing Platforms" }),
|
|
4178
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: styles4.platformRow, children: [
|
|
3885
4179
|
{ key: "ios", label: "\u{1F4F1} iOS" },
|
|
3886
4180
|
{ key: "android", label: "\u{1F916} Android" },
|
|
3887
4181
|
{ key: "web", label: "\u{1F310} Web" }
|
|
3888
4182
|
].map(({ key, label }) => {
|
|
3889
4183
|
const isActive = platforms.includes(key);
|
|
3890
|
-
return /* @__PURE__ */ (0,
|
|
4184
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3891
4185
|
"button",
|
|
3892
4186
|
{
|
|
3893
4187
|
style: {
|
|
@@ -3897,13 +4191,13 @@ function ProfileScreen({ nav }) {
|
|
|
3897
4191
|
onClick: () => setPlatforms(
|
|
3898
4192
|
(prev) => prev.includes(key) ? prev.filter((p) => p !== key) : [...prev, key]
|
|
3899
4193
|
),
|
|
3900
|
-
children: /* @__PURE__ */ (0,
|
|
4194
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: isActive ? styles4.platformTextActive : styles4.platformText, children: label })
|
|
3901
4195
|
},
|
|
3902
4196
|
key
|
|
3903
4197
|
);
|
|
3904
4198
|
}) })
|
|
3905
4199
|
] }),
|
|
3906
|
-
/* @__PURE__ */ (0,
|
|
4200
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3907
4201
|
"button",
|
|
3908
4202
|
{
|
|
3909
4203
|
style: { ...styles4.primaryButton, marginTop: 20 },
|
|
@@ -3914,45 +4208,45 @@ function ProfileScreen({ nav }) {
|
|
|
3914
4208
|
)
|
|
3915
4209
|
] });
|
|
3916
4210
|
}
|
|
3917
|
-
return /* @__PURE__ */ (0,
|
|
3918
|
-
/* @__PURE__ */ (0,
|
|
3919
|
-
/* @__PURE__ */ (0,
|
|
3920
|
-
/* @__PURE__ */ (0,
|
|
3921
|
-
/* @__PURE__ */ (0,
|
|
4211
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { children: [
|
|
4212
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.profileCard, children: [
|
|
4213
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: styles4.avatar, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.avatarText, children: testerInfo.name.charAt(0).toUpperCase() }) }),
|
|
4214
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.profileName, children: testerInfo.name }),
|
|
4215
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.profileEmail, children: testerInfo.email })
|
|
3922
4216
|
] }),
|
|
3923
|
-
/* @__PURE__ */ (0,
|
|
3924
|
-
/* @__PURE__ */ (0,
|
|
3925
|
-
/* @__PURE__ */ (0,
|
|
3926
|
-
/* @__PURE__ */ (0,
|
|
4217
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.statsRow, children: [
|
|
4218
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.statItem, children: [
|
|
4219
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.statNumber, children: completedCount }),
|
|
4220
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.statLabel, children: "Completed" })
|
|
3927
4221
|
] }),
|
|
3928
|
-
/* @__PURE__ */ (0,
|
|
3929
|
-
/* @__PURE__ */ (0,
|
|
3930
|
-
/* @__PURE__ */ (0,
|
|
3931
|
-
/* @__PURE__ */ (0,
|
|
4222
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: styles4.statDivider }),
|
|
4223
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.statItem, children: [
|
|
4224
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.statNumber, children: assignments.length }),
|
|
4225
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.statLabel, children: "Total Assigned" })
|
|
3932
4226
|
] })
|
|
3933
4227
|
] }),
|
|
3934
|
-
/* @__PURE__ */ (0,
|
|
4228
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3935
4229
|
"button",
|
|
3936
4230
|
{
|
|
3937
4231
|
style: styles4.detailsToggle,
|
|
3938
4232
|
onClick: () => setShowDetails(!showDetails),
|
|
3939
|
-
children: /* @__PURE__ */ (0,
|
|
4233
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { style: styles4.detailsToggleText, children: [
|
|
3940
4234
|
showDetails ? "\u25BC" : "\u25B6",
|
|
3941
4235
|
" Details"
|
|
3942
4236
|
] })
|
|
3943
4237
|
}
|
|
3944
4238
|
),
|
|
3945
|
-
showDetails && /* @__PURE__ */ (0,
|
|
3946
|
-
additionalEmails.length > 0 && /* @__PURE__ */ (0,
|
|
3947
|
-
/* @__PURE__ */ (0,
|
|
3948
|
-
additionalEmails.map((e) => /* @__PURE__ */ (0,
|
|
4239
|
+
showDetails && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.detailsSection, children: [
|
|
4240
|
+
additionalEmails.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.detailBlock, children: [
|
|
4241
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.detailLabel, children: "Additional Emails" }),
|
|
4242
|
+
additionalEmails.map((e) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.detailValue, children: e }, e))
|
|
3949
4243
|
] }),
|
|
3950
|
-
platforms.length > 0 && /* @__PURE__ */ (0,
|
|
3951
|
-
/* @__PURE__ */ (0,
|
|
3952
|
-
/* @__PURE__ */ (0,
|
|
4244
|
+
platforms.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: styles4.detailBlock, children: [
|
|
4245
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.detailLabel, children: "Platforms" }),
|
|
4246
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: styles4.platformTags, children: platforms.map((p) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.platformTag, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: styles4.platformTagText, children: p === "ios" ? "\u{1F4F1} iOS" : p === "android" ? "\u{1F916} Android" : "\u{1F310} Web" }) }, p)) })
|
|
3953
4247
|
] })
|
|
3954
4248
|
] }),
|
|
3955
|
-
/* @__PURE__ */ (0,
|
|
4249
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3956
4250
|
"button",
|
|
3957
4251
|
{
|
|
3958
4252
|
style: { ...styles4.primaryButton, marginTop: 20 },
|
|
@@ -4236,7 +4530,7 @@ var styles4 = {
|
|
|
4236
4530
|
|
|
4237
4531
|
// src/widget/screens/IssueListScreen.tsx
|
|
4238
4532
|
var import_react13 = require("react");
|
|
4239
|
-
var
|
|
4533
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
4240
4534
|
var CATEGORY_CONFIG = {
|
|
4241
4535
|
open: { label: "Open Issues", accent: "#f97316", emptyIcon: "\u2705", emptyText: "No open issues" },
|
|
4242
4536
|
done: { label: "Done", accent: "#22c55e", emptyIcon: "\u{1F389}", emptyText: "No completed issues yet" },
|
|
@@ -4279,15 +4573,15 @@ function IssueListScreen({ nav, category }) {
|
|
|
4279
4573
|
};
|
|
4280
4574
|
}, [client, category]);
|
|
4281
4575
|
if (loading) {
|
|
4282
|
-
return /* @__PURE__ */ (0,
|
|
4576
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(IssueListScreenSkeleton, {});
|
|
4283
4577
|
}
|
|
4284
4578
|
if (issues.length === 0) {
|
|
4285
|
-
return /* @__PURE__ */ (0,
|
|
4286
|
-
/* @__PURE__ */ (0,
|
|
4287
|
-
/* @__PURE__ */ (0,
|
|
4579
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { padding: "40px 0", textAlign: "center" }, children: [
|
|
4580
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { fontSize: 36, marginBottom: 8 }, children: config.emptyIcon }),
|
|
4581
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { color: colors.textMuted, fontSize: 14 }, children: config.emptyText })
|
|
4288
4582
|
] });
|
|
4289
4583
|
}
|
|
4290
|
-
return /* @__PURE__ */ (0,
|
|
4584
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { children: issues.map((issue) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
4291
4585
|
"div",
|
|
4292
4586
|
{
|
|
4293
4587
|
role: "button",
|
|
@@ -4306,8 +4600,8 @@ function IssueListScreen({ nav, category }) {
|
|
|
4306
4600
|
userSelect: "none"
|
|
4307
4601
|
},
|
|
4308
4602
|
children: [
|
|
4309
|
-
/* @__PURE__ */ (0,
|
|
4310
|
-
issue.severity && /* @__PURE__ */ (0,
|
|
4603
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", gap: 8 }, children: [
|
|
4604
|
+
issue.severity && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
4311
4605
|
"span",
|
|
4312
4606
|
{
|
|
4313
4607
|
style: {
|
|
@@ -4320,7 +4614,7 @@ function IssueListScreen({ nav, category }) {
|
|
|
4320
4614
|
}
|
|
4321
4615
|
}
|
|
4322
4616
|
),
|
|
4323
|
-
/* @__PURE__ */ (0,
|
|
4617
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: {
|
|
4324
4618
|
fontSize: 13,
|
|
4325
4619
|
fontWeight: 600,
|
|
4326
4620
|
color: colors.textPrimary,
|
|
@@ -4330,11 +4624,11 @@ function IssueListScreen({ nav, category }) {
|
|
|
4330
4624
|
whiteSpace: "nowrap"
|
|
4331
4625
|
}, children: issue.title })
|
|
4332
4626
|
] }),
|
|
4333
|
-
/* @__PURE__ */ (0,
|
|
4334
|
-
issue.route && /* @__PURE__ */ (0,
|
|
4335
|
-
/* @__PURE__ */ (0,
|
|
4627
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 6 }, children: [
|
|
4628
|
+
issue.route && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: 11, color: colors.textDim, maxWidth: "60%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: issue.route }),
|
|
4629
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: 11, color: colors.textDim, marginLeft: "auto" }, children: formatRelativeTime(issue.updatedAt) })
|
|
4336
4630
|
] }),
|
|
4337
|
-
category === "done" && issue.verifiedByName && /* @__PURE__ */ (0,
|
|
4631
|
+
category === "done" && issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
|
|
4338
4632
|
display: "inline-flex",
|
|
4339
4633
|
alignItems: "center",
|
|
4340
4634
|
gap: 4,
|
|
@@ -4350,7 +4644,7 @@ function IssueListScreen({ nav, category }) {
|
|
|
4350
4644
|
"\u2714 Verified by ",
|
|
4351
4645
|
issue.verifiedByName
|
|
4352
4646
|
] }),
|
|
4353
|
-
category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ (0,
|
|
4647
|
+
category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
|
|
4354
4648
|
display: "inline-flex",
|
|
4355
4649
|
alignItems: "center",
|
|
4356
4650
|
gap: 4,
|
|
@@ -4377,7 +4671,7 @@ function IssueListScreen({ nav, category }) {
|
|
|
4377
4671
|
}
|
|
4378
4672
|
|
|
4379
4673
|
// src/widget/screens/IssueDetailScreen.tsx
|
|
4380
|
-
var
|
|
4674
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
4381
4675
|
var STATUS_LABELS = {
|
|
4382
4676
|
new: { label: "New", bg: "#1e3a5f", color: "#60a5fa" },
|
|
4383
4677
|
triaging: { label: "Triaging", bg: "#1e3a5f", color: "#60a5fa" },
|
|
@@ -4401,9 +4695,9 @@ var SEVERITY_CONFIG = {
|
|
|
4401
4695
|
function IssueDetailScreen({ nav, issue }) {
|
|
4402
4696
|
const statusConfig = STATUS_LABELS[issue.status] || { label: issue.status, bg: "#27272a", color: "#a1a1aa" };
|
|
4403
4697
|
const severityConfig = issue.severity ? SEVERITY_CONFIG[issue.severity] : null;
|
|
4404
|
-
return /* @__PURE__ */ (0,
|
|
4405
|
-
/* @__PURE__ */ (0,
|
|
4406
|
-
/* @__PURE__ */ (0,
|
|
4698
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
|
|
4699
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginBottom: 12 }, children: [
|
|
4700
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: {
|
|
4407
4701
|
backgroundColor: statusConfig.bg,
|
|
4408
4702
|
color: statusConfig.color,
|
|
4409
4703
|
fontSize: 11,
|
|
@@ -4411,7 +4705,7 @@ function IssueDetailScreen({ nav, issue }) {
|
|
|
4411
4705
|
padding: "3px 10px",
|
|
4412
4706
|
borderRadius: 6
|
|
4413
4707
|
}, children: statusConfig.label }),
|
|
4414
|
-
severityConfig && /* @__PURE__ */ (0,
|
|
4708
|
+
severityConfig && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: {
|
|
4415
4709
|
backgroundColor: severityConfig.bg,
|
|
4416
4710
|
color: severityConfig.color,
|
|
4417
4711
|
fontSize: 11,
|
|
@@ -4420,9 +4714,9 @@ function IssueDetailScreen({ nav, issue }) {
|
|
|
4420
4714
|
borderRadius: 6
|
|
4421
4715
|
}, children: severityConfig.label })
|
|
4422
4716
|
] }),
|
|
4423
|
-
/* @__PURE__ */ (0,
|
|
4424
|
-
issue.route && /* @__PURE__ */ (0,
|
|
4425
|
-
issue.description && /* @__PURE__ */ (0,
|
|
4717
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h3", { style: { fontSize: 16, fontWeight: 700, color: colors.textPrimary, margin: "0 0 8px 0", lineHeight: 1.3 }, children: issue.title }),
|
|
4718
|
+
issue.route && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 12 }, children: issue.route }),
|
|
4719
|
+
issue.description && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: {
|
|
4426
4720
|
backgroundColor: colors.card,
|
|
4427
4721
|
border: `1px solid ${colors.border}`,
|
|
4428
4722
|
borderRadius: 8,
|
|
@@ -4434,56 +4728,56 @@ function IssueDetailScreen({ nav, issue }) {
|
|
|
4434
4728
|
whiteSpace: "pre-wrap",
|
|
4435
4729
|
wordBreak: "break-word"
|
|
4436
4730
|
}, children: issue.description }),
|
|
4437
|
-
issue.verifiedByName && /* @__PURE__ */ (0,
|
|
4731
|
+
issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: {
|
|
4438
4732
|
backgroundColor: "#14532d",
|
|
4439
4733
|
border: "1px solid #166534",
|
|
4440
4734
|
borderRadius: 8,
|
|
4441
4735
|
padding: 12,
|
|
4442
4736
|
marginBottom: 12
|
|
4443
4737
|
}, children: [
|
|
4444
|
-
/* @__PURE__ */ (0,
|
|
4445
|
-
/* @__PURE__ */ (0,
|
|
4446
|
-
/* @__PURE__ */ (0,
|
|
4738
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
|
|
4739
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: 16 }, children: "\u2705" }),
|
|
4740
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: 13, fontWeight: 600, color: "#4ade80" }, children: "Retesting Proof" })
|
|
4447
4741
|
] }),
|
|
4448
|
-
/* @__PURE__ */ (0,
|
|
4742
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { fontSize: 12, color: "#86efac" }, children: [
|
|
4449
4743
|
"Verified by ",
|
|
4450
|
-
/* @__PURE__ */ (0,
|
|
4451
|
-
issue.verifiedAt && /* @__PURE__ */ (0,
|
|
4744
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: issue.verifiedByName }),
|
|
4745
|
+
issue.verifiedAt && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { children: [
|
|
4452
4746
|
" on ",
|
|
4453
4747
|
new Date(issue.verifiedAt).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" })
|
|
4454
4748
|
] })
|
|
4455
4749
|
] })
|
|
4456
4750
|
] }),
|
|
4457
|
-
issue.originalBugTitle && /* @__PURE__ */ (0,
|
|
4751
|
+
issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: {
|
|
4458
4752
|
backgroundColor: "#422006",
|
|
4459
4753
|
border: "1px solid #854d0e",
|
|
4460
4754
|
borderRadius: 8,
|
|
4461
4755
|
padding: 12,
|
|
4462
4756
|
marginBottom: 12
|
|
4463
4757
|
}, children: [
|
|
4464
|
-
/* @__PURE__ */ (0,
|
|
4465
|
-
/* @__PURE__ */ (0,
|
|
4466
|
-
/* @__PURE__ */ (0,
|
|
4758
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
|
|
4759
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
|
|
4760
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Original Bug" })
|
|
4467
4761
|
] }),
|
|
4468
|
-
/* @__PURE__ */ (0,
|
|
4762
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { fontSize: 12, color: "#fde68a" }, children: [
|
|
4469
4763
|
"Retest of: ",
|
|
4470
|
-
/* @__PURE__ */ (0,
|
|
4764
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: issue.originalBugTitle })
|
|
4471
4765
|
] })
|
|
4472
4766
|
] }),
|
|
4473
|
-
issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ (0,
|
|
4474
|
-
/* @__PURE__ */ (0,
|
|
4767
|
+
issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { marginBottom: 12 }, children: [
|
|
4768
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { fontSize: 12, fontWeight: 600, color: colors.textMuted, marginBottom: 8 }, children: [
|
|
4475
4769
|
"Screenshots (",
|
|
4476
4770
|
issue.screenshotUrls.length,
|
|
4477
4771
|
")"
|
|
4478
4772
|
] }),
|
|
4479
|
-
/* @__PURE__ */ (0,
|
|
4773
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { display: "flex", gap: 8, overflowX: "auto" }, children: issue.screenshotUrls.map((url, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4480
4774
|
"a",
|
|
4481
4775
|
{
|
|
4482
4776
|
href: url,
|
|
4483
4777
|
target: "_blank",
|
|
4484
4778
|
rel: "noopener noreferrer",
|
|
4485
4779
|
style: { flexShrink: 0 },
|
|
4486
|
-
children: /* @__PURE__ */ (0,
|
|
4780
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4487
4781
|
"img",
|
|
4488
4782
|
{
|
|
4489
4783
|
src: url,
|
|
@@ -4501,16 +4795,16 @@ function IssueDetailScreen({ nav, issue }) {
|
|
|
4501
4795
|
i
|
|
4502
4796
|
)) })
|
|
4503
4797
|
] }),
|
|
4504
|
-
/* @__PURE__ */ (0,
|
|
4798
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: {
|
|
4505
4799
|
borderTop: `1px solid ${colors.border}`,
|
|
4506
4800
|
paddingTop: 12,
|
|
4507
4801
|
marginTop: 4
|
|
4508
4802
|
}, children: [
|
|
4509
|
-
issue.reporterName && /* @__PURE__ */ (0,
|
|
4803
|
+
issue.reporterName && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 4 }, children: [
|
|
4510
4804
|
"Reported by ",
|
|
4511
4805
|
issue.reporterName
|
|
4512
4806
|
] }),
|
|
4513
|
-
/* @__PURE__ */ (0,
|
|
4807
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { fontSize: 11, color: colors.textDim }, children: [
|
|
4514
4808
|
"Created ",
|
|
4515
4809
|
formatRelativeTime(issue.createdAt),
|
|
4516
4810
|
" \xB7 Updated ",
|
|
@@ -4524,9 +4818,9 @@ function IssueDetailScreen({ nav, issue }) {
|
|
|
4524
4818
|
var BUGBEAR_LOGO_BASE64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAJhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAASQBAACAAAAFAAAAISgAQADAAAAAQABAACgAgAEAAAAAQAAAGCgAwAEAAAAAQAAAGAAAAAAMjAyNjowMToyNCAxNjoyMTozOABbbVCuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpJcHRjNHhtcEV4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPmZjNzJlN2Q2LTYyYTEtNDE1ZS04MjY5LWM2NjA4MjY0OWRiMDwvSXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyNi0wMS0yNFQxNjoyMTozODwveG1wOkNyZWF0ZURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+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";
|
|
4525
4819
|
|
|
4526
4820
|
// src/BugBearPanel.tsx
|
|
4527
|
-
var
|
|
4821
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
4528
4822
|
function BugBearIcon({ size = 24 }) {
|
|
4529
|
-
return /* @__PURE__ */ (0,
|
|
4823
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
4530
4824
|
"img",
|
|
4531
4825
|
{
|
|
4532
4826
|
src: BUGBEAR_LOGO_BASE64,
|
|
@@ -4691,37 +4985,37 @@ function BugBearPanel({
|
|
|
4691
4985
|
const renderScreen = () => {
|
|
4692
4986
|
switch (currentScreen.name) {
|
|
4693
4987
|
case "HOME":
|
|
4694
|
-
return /* @__PURE__ */ (0,
|
|
4988
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(HomeScreen, { nav });
|
|
4695
4989
|
case "TEST_DETAIL":
|
|
4696
|
-
return /* @__PURE__ */ (0,
|
|
4990
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TestDetailScreen, { testId: currentScreen.testId, nav });
|
|
4697
4991
|
case "TEST_LIST":
|
|
4698
|
-
return /* @__PURE__ */ (0,
|
|
4992
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TestListScreen, { nav });
|
|
4699
4993
|
case "TEST_FEEDBACK":
|
|
4700
|
-
return /* @__PURE__ */ (0,
|
|
4994
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
|
|
4701
4995
|
case "REPORT":
|
|
4702
|
-
return /* @__PURE__ */ (0,
|
|
4996
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ReportScreen, { nav, prefill: currentScreen.prefill });
|
|
4703
4997
|
case "REPORT_SUCCESS":
|
|
4704
|
-
return /* @__PURE__ */ (0,
|
|
4998
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ReportSuccessScreen, { nav });
|
|
4705
4999
|
case "MESSAGE_LIST":
|
|
4706
|
-
return /* @__PURE__ */ (0,
|
|
5000
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(MessageListScreen, { nav });
|
|
4707
5001
|
case "THREAD_DETAIL":
|
|
4708
|
-
return /* @__PURE__ */ (0,
|
|
5002
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ThreadDetailScreen, { thread: currentScreen.thread, nav });
|
|
4709
5003
|
case "COMPOSE_MESSAGE":
|
|
4710
|
-
return /* @__PURE__ */ (0,
|
|
5004
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ComposeMessageScreen, { nav });
|
|
4711
5005
|
case "ISSUE_LIST":
|
|
4712
|
-
return /* @__PURE__ */ (0,
|
|
5006
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IssueListScreen, { nav, category: currentScreen.category });
|
|
4713
5007
|
case "ISSUE_DETAIL":
|
|
4714
|
-
return /* @__PURE__ */ (0,
|
|
5008
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IssueDetailScreen, { nav, issue: currentScreen.issue });
|
|
4715
5009
|
case "PROFILE":
|
|
4716
|
-
return /* @__PURE__ */ (0,
|
|
5010
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ProfileScreen, { nav });
|
|
4717
5011
|
default:
|
|
4718
|
-
return /* @__PURE__ */ (0,
|
|
5012
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(HomeScreen, { nav });
|
|
4719
5013
|
}
|
|
4720
5014
|
};
|
|
4721
5015
|
if (typeof document === "undefined") return null;
|
|
4722
5016
|
const headerTitle = getHeaderTitle();
|
|
4723
5017
|
return (0, import_react_dom.createPortal)(
|
|
4724
|
-
/* @__PURE__ */ (0,
|
|
5018
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
4725
5019
|
"div",
|
|
4726
5020
|
{
|
|
4727
5021
|
ref: panelRef,
|
|
@@ -4740,7 +5034,7 @@ function BugBearPanel({
|
|
|
4740
5034
|
},
|
|
4741
5035
|
onMouseDown: handleMouseDown,
|
|
4742
5036
|
children: [
|
|
4743
|
-
collapsed && /* @__PURE__ */ (0,
|
|
5037
|
+
collapsed && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
4744
5038
|
"button",
|
|
4745
5039
|
{
|
|
4746
5040
|
onClick: () => setCollapsed(false),
|
|
@@ -4762,9 +5056,9 @@ function BugBearPanel({
|
|
|
4762
5056
|
fontWeight: 500
|
|
4763
5057
|
},
|
|
4764
5058
|
children: [
|
|
4765
|
-
/* @__PURE__ */ (0,
|
|
4766
|
-
/* @__PURE__ */ (0,
|
|
4767
|
-
badgeCount > 0 && /* @__PURE__ */ (0,
|
|
5059
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(BugBearIcon, { size: 24 }),
|
|
5060
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "BugBear" }),
|
|
5061
|
+
badgeCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { style: {
|
|
4768
5062
|
backgroundColor: "#fff",
|
|
4769
5063
|
color: colors.blue,
|
|
4770
5064
|
fontSize: "0.75rem",
|
|
@@ -4775,7 +5069,7 @@ function BugBearPanel({
|
|
|
4775
5069
|
]
|
|
4776
5070
|
}
|
|
4777
5071
|
),
|
|
4778
|
-
!collapsed && /* @__PURE__ */ (0,
|
|
5072
|
+
!collapsed && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: {
|
|
4779
5073
|
width: PANEL_WIDTH,
|
|
4780
5074
|
backgroundColor: colors.bg,
|
|
4781
5075
|
borderRadius: 12,
|
|
@@ -4783,7 +5077,7 @@ function BugBearPanel({
|
|
|
4783
5077
|
overflow: "hidden",
|
|
4784
5078
|
boxShadow: "0 25px 50px -12px rgba(0,0,0,0.5)"
|
|
4785
5079
|
}, children: [
|
|
4786
|
-
/* @__PURE__ */ (0,
|
|
5080
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
4787
5081
|
"div",
|
|
4788
5082
|
{
|
|
4789
5083
|
"data-drag-handle": true,
|
|
@@ -4799,7 +5093,7 @@ function BugBearPanel({
|
|
|
4799
5093
|
cursor: draggable ? isDragging ? "grabbing" : "grab" : "default"
|
|
4800
5094
|
},
|
|
4801
5095
|
children: [
|
|
4802
|
-
/* @__PURE__ */ (0,
|
|
5096
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
4803
5097
|
"button",
|
|
4804
5098
|
{
|
|
4805
5099
|
onClick: pop,
|
|
@@ -4815,14 +5109,14 @@ function BugBearPanel({
|
|
|
4815
5109
|
},
|
|
4816
5110
|
children: "\u2190 Back"
|
|
4817
5111
|
}
|
|
4818
|
-
) : /* @__PURE__ */ (0,
|
|
4819
|
-
/* @__PURE__ */ (0,
|
|
4820
|
-
/* @__PURE__ */ (0,
|
|
4821
|
-
/* @__PURE__ */ (0,
|
|
4822
|
-
/* @__PURE__ */ (0,
|
|
4823
|
-
draggable && /* @__PURE__ */ (0,
|
|
5112
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
|
|
5113
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(BugBearIcon, { size: 28 }),
|
|
5114
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
|
|
5115
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
5116
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
|
|
5117
|
+
draggable && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { style: { color: colors.textMuted, fontSize: "0.75rem" }, title: "Drag to move, double-click to reset", children: "\u22EE\u22EE" })
|
|
4824
5118
|
] }),
|
|
4825
|
-
testerInfo && /* @__PURE__ */ (0,
|
|
5119
|
+
testerInfo && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
4826
5120
|
"button",
|
|
4827
5121
|
{
|
|
4828
5122
|
onClick: () => push({ name: "PROFILE" }),
|
|
@@ -4840,13 +5134,13 @@ function BugBearPanel({
|
|
|
4840
5134
|
},
|
|
4841
5135
|
children: [
|
|
4842
5136
|
testerInfo.name,
|
|
4843
|
-
/* @__PURE__ */ (0,
|
|
5137
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
|
|
4844
5138
|
]
|
|
4845
5139
|
}
|
|
4846
5140
|
)
|
|
4847
5141
|
] })
|
|
4848
5142
|
] }) }),
|
|
4849
|
-
headerTitle ? /* @__PURE__ */ (0,
|
|
5143
|
+
headerTitle ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { style: {
|
|
4850
5144
|
fontSize: "0.8125rem",
|
|
4851
5145
|
fontWeight: 600,
|
|
4852
5146
|
color: colors.textSecondary,
|
|
@@ -4856,7 +5150,7 @@ function BugBearPanel({
|
|
|
4856
5150
|
textOverflow: "ellipsis",
|
|
4857
5151
|
whiteSpace: "nowrap"
|
|
4858
5152
|
}, children: headerTitle }) : null,
|
|
4859
|
-
/* @__PURE__ */ (0,
|
|
5153
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
4860
5154
|
"button",
|
|
4861
5155
|
{
|
|
4862
5156
|
onClick: handleClose,
|
|
@@ -4880,13 +5174,13 @@ function BugBearPanel({
|
|
|
4880
5174
|
]
|
|
4881
5175
|
}
|
|
4882
5176
|
),
|
|
4883
|
-
/* @__PURE__ */ (0,
|
|
5177
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: {
|
|
4884
5178
|
padding: 16,
|
|
4885
5179
|
maxHeight: 400,
|
|
4886
5180
|
overflowY: "auto",
|
|
4887
5181
|
backgroundColor: colors.bg,
|
|
4888
5182
|
color: colors.textSecondary
|
|
4889
|
-
}, children: isLoading ? /* @__PURE__ */ (0,
|
|
5183
|
+
}, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { padding: "60px 0", textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { color: colors.textMuted, fontSize: "0.875rem" }, children: "Loading..." }) }) : renderScreen() })
|
|
4890
5184
|
] })
|
|
4891
5185
|
]
|
|
4892
5186
|
}
|
|
@@ -4898,7 +5192,7 @@ function BugBearPanel({
|
|
|
4898
5192
|
// src/BugBearErrorBoundary.tsx
|
|
4899
5193
|
var import_react15 = require("react");
|
|
4900
5194
|
var import_core2 = require("@bbearai/core");
|
|
4901
|
-
var
|
|
5195
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
4902
5196
|
var BugBearErrorBoundary = class extends import_react15.Component {
|
|
4903
5197
|
constructor(props) {
|
|
4904
5198
|
super(props);
|
|
@@ -4943,7 +5237,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
|
|
|
4943
5237
|
if (fallback) {
|
|
4944
5238
|
return fallback;
|
|
4945
5239
|
}
|
|
4946
|
-
return /* @__PURE__ */ (0,
|
|
5240
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4947
5241
|
"div",
|
|
4948
5242
|
{
|
|
4949
5243
|
style: {
|
|
@@ -4955,13 +5249,13 @@ var BugBearErrorBoundary = class extends import_react15.Component {
|
|
|
4955
5249
|
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
|
|
4956
5250
|
},
|
|
4957
5251
|
children: [
|
|
4958
|
-
/* @__PURE__ */ (0,
|
|
4959
|
-
/* @__PURE__ */ (0,
|
|
4960
|
-
/* @__PURE__ */ (0,
|
|
5252
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
|
|
5253
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
|
|
5254
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
|
|
4961
5255
|
] }),
|
|
4962
|
-
/* @__PURE__ */ (0,
|
|
4963
|
-
/* @__PURE__ */ (0,
|
|
4964
|
-
/* @__PURE__ */ (0,
|
|
5256
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
|
|
5257
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { display: "flex", gap: "8px" }, children: [
|
|
5258
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4965
5259
|
"button",
|
|
4966
5260
|
{
|
|
4967
5261
|
onClick: this.reset,
|
|
@@ -4978,7 +5272,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
|
|
|
4978
5272
|
children: "Try Again"
|
|
4979
5273
|
}
|
|
4980
5274
|
),
|
|
4981
|
-
/* @__PURE__ */ (0,
|
|
5275
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4982
5276
|
"button",
|
|
4983
5277
|
{
|
|
4984
5278
|
onClick: () => window.location.reload(),
|
|
@@ -4996,7 +5290,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
|
|
|
4996
5290
|
}
|
|
4997
5291
|
)
|
|
4998
5292
|
] }),
|
|
4999
|
-
/* @__PURE__ */ (0,
|
|
5293
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
|
|
5000
5294
|
]
|
|
5001
5295
|
}
|
|
5002
5296
|
);
|