@bbearai/react 0.4.1 → 0.4.2
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 +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +459 -86
- package/dist/index.mjs +453 -80
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -41,6 +41,10 @@ var BugBearContext = createContext({
|
|
|
41
41
|
},
|
|
42
42
|
createThread: async () => ({ success: false }),
|
|
43
43
|
uploadImage: async () => null,
|
|
44
|
+
// Issue tracking
|
|
45
|
+
issueCounts: { open: 0, done: 0, reopened: 0 },
|
|
46
|
+
refreshIssueCounts: async () => {
|
|
47
|
+
},
|
|
44
48
|
onError: void 0
|
|
45
49
|
});
|
|
46
50
|
function useBugBear() {
|
|
@@ -58,6 +62,7 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
58
62
|
const [sessionFindings, setSessionFindings] = useState([]);
|
|
59
63
|
const [threads, setThreads] = useState([]);
|
|
60
64
|
const [unreadCount, setUnreadCount] = useState(0);
|
|
65
|
+
const [issueCounts, setIssueCounts] = useState({ open: 0, done: 0, reopened: 0 });
|
|
61
66
|
const refreshAssignments = useCallback(async () => {
|
|
62
67
|
if (!client) return;
|
|
63
68
|
const newAssignments = await client.getAssignedTests();
|
|
@@ -109,6 +114,11 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
109
114
|
const totalUnread = newThreads.reduce((sum, t) => sum + t.unreadCount, 0);
|
|
110
115
|
setUnreadCount(totalUnread);
|
|
111
116
|
}, [client]);
|
|
117
|
+
const refreshIssueCounts = useCallback(async () => {
|
|
118
|
+
if (!client) return;
|
|
119
|
+
const counts = await client.getIssueCounts();
|
|
120
|
+
setIssueCounts(counts);
|
|
121
|
+
}, [client]);
|
|
112
122
|
const getThreadMessages = useCallback(async (threadId) => {
|
|
113
123
|
if (!client) return [];
|
|
114
124
|
return client.getThreadMessages(threadId);
|
|
@@ -150,16 +160,18 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
150
160
|
setTesterInfo(info);
|
|
151
161
|
setIsTester(!!info);
|
|
152
162
|
if (info && qaEnabled) {
|
|
153
|
-
const [newAssignments, session, newThreads] = await Promise.all([
|
|
163
|
+
const [newAssignments, session, newThreads, counts] = await Promise.all([
|
|
154
164
|
bugBearClient.getAssignedTests(),
|
|
155
165
|
bugBearClient.getActiveSession(),
|
|
156
|
-
bugBearClient.getThreadsForTester()
|
|
166
|
+
bugBearClient.getThreadsForTester(),
|
|
167
|
+
bugBearClient.getIssueCounts()
|
|
157
168
|
]);
|
|
158
169
|
setAssignments(newAssignments);
|
|
159
170
|
setActiveSession(session);
|
|
160
171
|
setThreads(newThreads);
|
|
161
172
|
const totalUnread = newThreads.reduce((sum, t) => sum + t.unreadCount, 0);
|
|
162
173
|
setUnreadCount(totalUnread);
|
|
174
|
+
setIssueCounts(counts);
|
|
163
175
|
if (session) {
|
|
164
176
|
const findings = await bugBearClient.getSessionFindings(session.id);
|
|
165
177
|
setSessionFindings(findings);
|
|
@@ -241,6 +253,9 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
241
253
|
markAsRead,
|
|
242
254
|
createThread,
|
|
243
255
|
uploadImage,
|
|
256
|
+
// Issue tracking
|
|
257
|
+
issueCounts,
|
|
258
|
+
refreshIssueCounts,
|
|
244
259
|
onError: config.onError
|
|
245
260
|
},
|
|
246
261
|
children
|
|
@@ -249,7 +264,7 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
249
264
|
}
|
|
250
265
|
|
|
251
266
|
// src/BugBearPanel.tsx
|
|
252
|
-
import { useState as
|
|
267
|
+
import { useState as useState11, useRef as useRef3, useEffect as useEffect8, useCallback as useCallback5 } from "react";
|
|
253
268
|
import { createPortal } from "react-dom";
|
|
254
269
|
|
|
255
270
|
// src/widget/navigation.ts
|
|
@@ -369,10 +384,11 @@ function getThreadTypeIcon(type) {
|
|
|
369
384
|
import { useEffect as useEffect2 } from "react";
|
|
370
385
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
371
386
|
function HomeScreen({ nav }) {
|
|
372
|
-
const { assignments, unreadCount, threads, refreshAssignments, refreshThreads } = useBugBear();
|
|
387
|
+
const { assignments, unreadCount, threads, refreshAssignments, refreshThreads, issueCounts, refreshIssueCounts } = useBugBear();
|
|
373
388
|
useEffect2(() => {
|
|
374
389
|
refreshAssignments();
|
|
375
390
|
refreshThreads();
|
|
391
|
+
refreshIssueCounts();
|
|
376
392
|
}, []);
|
|
377
393
|
const pendingAssignments = assignments.filter((a) => a.status === "pending" || a.status === "in_progress");
|
|
378
394
|
const pendingCount = pendingAssignments.length;
|
|
@@ -657,6 +673,89 @@ function HomeScreen({ nav }) {
|
|
|
657
673
|
]
|
|
658
674
|
}
|
|
659
675
|
),
|
|
676
|
+
/* @__PURE__ */ jsxs("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr", gap: 10, marginBottom: 20 }, children: [
|
|
677
|
+
/* @__PURE__ */ jsxs(
|
|
678
|
+
"div",
|
|
679
|
+
{
|
|
680
|
+
role: "button",
|
|
681
|
+
tabIndex: 0,
|
|
682
|
+
onClick: () => nav.push({ name: "ISSUE_LIST", category: "open" }),
|
|
683
|
+
onKeyDown: (e) => {
|
|
684
|
+
if (e.key === "Enter" || e.key === " ") nav.push({ name: "ISSUE_LIST", category: "open" });
|
|
685
|
+
},
|
|
686
|
+
style: {
|
|
687
|
+
backgroundColor: "#27272a",
|
|
688
|
+
border: "1px solid #3f3f46",
|
|
689
|
+
borderTop: "3px solid #f97316",
|
|
690
|
+
borderRadius: 10,
|
|
691
|
+
padding: "12px 8px",
|
|
692
|
+
display: "flex",
|
|
693
|
+
flexDirection: "column",
|
|
694
|
+
alignItems: "center",
|
|
695
|
+
cursor: "pointer",
|
|
696
|
+
userSelect: "none"
|
|
697
|
+
},
|
|
698
|
+
children: [
|
|
699
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 22, fontWeight: 700, color: "#f97316" }, children: issueCounts.open }),
|
|
700
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Open" })
|
|
701
|
+
]
|
|
702
|
+
}
|
|
703
|
+
),
|
|
704
|
+
/* @__PURE__ */ jsxs(
|
|
705
|
+
"div",
|
|
706
|
+
{
|
|
707
|
+
role: "button",
|
|
708
|
+
tabIndex: 0,
|
|
709
|
+
onClick: () => nav.push({ name: "ISSUE_LIST", category: "done" }),
|
|
710
|
+
onKeyDown: (e) => {
|
|
711
|
+
if (e.key === "Enter" || e.key === " ") nav.push({ name: "ISSUE_LIST", category: "done" });
|
|
712
|
+
},
|
|
713
|
+
style: {
|
|
714
|
+
backgroundColor: "#27272a",
|
|
715
|
+
border: "1px solid #3f3f46",
|
|
716
|
+
borderTop: "3px solid #22c55e",
|
|
717
|
+
borderRadius: 10,
|
|
718
|
+
padding: "12px 8px",
|
|
719
|
+
display: "flex",
|
|
720
|
+
flexDirection: "column",
|
|
721
|
+
alignItems: "center",
|
|
722
|
+
cursor: "pointer",
|
|
723
|
+
userSelect: "none"
|
|
724
|
+
},
|
|
725
|
+
children: [
|
|
726
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 22, fontWeight: 700, color: "#22c55e" }, children: issueCounts.done }),
|
|
727
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Done" })
|
|
728
|
+
]
|
|
729
|
+
}
|
|
730
|
+
),
|
|
731
|
+
/* @__PURE__ */ jsxs(
|
|
732
|
+
"div",
|
|
733
|
+
{
|
|
734
|
+
role: "button",
|
|
735
|
+
tabIndex: 0,
|
|
736
|
+
onClick: () => nav.push({ name: "ISSUE_LIST", category: "reopened" }),
|
|
737
|
+
onKeyDown: (e) => {
|
|
738
|
+
if (e.key === "Enter" || e.key === " ") nav.push({ name: "ISSUE_LIST", category: "reopened" });
|
|
739
|
+
},
|
|
740
|
+
style: {
|
|
741
|
+
backgroundColor: "#27272a",
|
|
742
|
+
border: "1px solid #3f3f46",
|
|
743
|
+
borderTop: "3px solid #ef4444",
|
|
744
|
+
borderRadius: 10,
|
|
745
|
+
padding: "12px 8px",
|
|
746
|
+
display: "flex",
|
|
747
|
+
flexDirection: "column",
|
|
748
|
+
alignItems: "center",
|
|
749
|
+
cursor: "pointer",
|
|
750
|
+
userSelect: "none"
|
|
751
|
+
},
|
|
752
|
+
children: [
|
|
753
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 22, fontWeight: 700, color: "#ef4444" }, children: issueCounts.reopened }),
|
|
754
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Reopened" })
|
|
755
|
+
]
|
|
756
|
+
}
|
|
757
|
+
)
|
|
758
|
+
] }),
|
|
660
759
|
totalTests > 0 && /* @__PURE__ */ jsxs("div", { style: { marginBottom: 16 }, children: [
|
|
661
760
|
/* @__PURE__ */ jsx2(
|
|
662
761
|
"div",
|
|
@@ -696,6 +795,7 @@ function HomeScreen({ nav }) {
|
|
|
696
795
|
onClick: () => {
|
|
697
796
|
refreshAssignments();
|
|
698
797
|
refreshThreads();
|
|
798
|
+
refreshIssueCounts();
|
|
699
799
|
},
|
|
700
800
|
style: {
|
|
701
801
|
background: "none",
|
|
@@ -1579,36 +1679,21 @@ function TestListScreen({ nav }) {
|
|
|
1579
1679
|
const filterAssignment = (a) => {
|
|
1580
1680
|
if (roleFilter && a.testCase.role?.id !== roleFilter) return false;
|
|
1581
1681
|
if (filter === "pending") return a.status === "pending" || a.status === "in_progress";
|
|
1582
|
-
if (filter === "
|
|
1682
|
+
if (filter === "done") return a.status === "passed";
|
|
1683
|
+
if (filter === "reopened") return a.status === "failed";
|
|
1583
1684
|
return true;
|
|
1584
1685
|
};
|
|
1585
1686
|
const pendingCount = assignments.filter(
|
|
1586
1687
|
(a) => a.status === "pending" || a.status === "in_progress"
|
|
1587
1688
|
).length;
|
|
1588
|
-
const doneCount = assignments.filter(
|
|
1589
|
-
|
|
1590
|
-
).length;
|
|
1689
|
+
const doneCount = assignments.filter((a) => a.status === "passed").length;
|
|
1690
|
+
const reopenedCount = assignments.filter((a) => a.status === "failed").length;
|
|
1591
1691
|
const filters = [
|
|
1592
1692
|
{ key: "all", label: "All", count: assignments.length },
|
|
1593
1693
|
{ key: "pending", label: "To Do", count: pendingCount },
|
|
1594
|
-
{ key: "
|
|
1694
|
+
{ key: "done", label: "Done", count: doneCount },
|
|
1695
|
+
{ key: "reopened", label: "Re Opened", count: reopenedCount }
|
|
1595
1696
|
];
|
|
1596
|
-
const getStatusColor = (status) => {
|
|
1597
|
-
switch (status) {
|
|
1598
|
-
case "passed":
|
|
1599
|
-
return colors.green;
|
|
1600
|
-
case "failed":
|
|
1601
|
-
return colors.red;
|
|
1602
|
-
case "skipped":
|
|
1603
|
-
return colors.yellow;
|
|
1604
|
-
case "in_progress":
|
|
1605
|
-
return colors.blue;
|
|
1606
|
-
case "blocked":
|
|
1607
|
-
return colors.red;
|
|
1608
|
-
default:
|
|
1609
|
-
return colors.textMuted;
|
|
1610
|
-
}
|
|
1611
|
-
};
|
|
1612
1697
|
return /* @__PURE__ */ jsxs3("div", { children: [
|
|
1613
1698
|
/* @__PURE__ */ jsx4("div", { style: { display: "flex", gap: 8, marginBottom: availableRoles.length >= 2 ? 8 : 16 }, children: filters.map((f) => /* @__PURE__ */ jsxs3(
|
|
1614
1699
|
"button",
|
|
@@ -1909,10 +1994,14 @@ function TestListScreen({ nav }) {
|
|
|
1909
1994
|
{
|
|
1910
1995
|
style: {
|
|
1911
1996
|
fontSize: 10,
|
|
1912
|
-
|
|
1913
|
-
fontWeight: 500,
|
|
1997
|
+
fontWeight: 600,
|
|
1914
1998
|
marginLeft: 8,
|
|
1915
|
-
flexShrink: 0
|
|
1999
|
+
flexShrink: 0,
|
|
2000
|
+
padding: "3px 8px",
|
|
2001
|
+
borderRadius: 6,
|
|
2002
|
+
color: assignment.status === "passed" ? "#4ade80" : assignment.status === "failed" ? "#f87171" : assignment.status === "in_progress" ? "#60a5fa" : "#d4d4d8",
|
|
2003
|
+
backgroundColor: assignment.status === "passed" ? "#14532d" : assignment.status === "failed" ? "#450a0a" : assignment.status === "in_progress" ? "#172554" : "#27272a",
|
|
2004
|
+
border: assignment.status === "passed" ? "1px solid #166534" : assignment.status === "failed" ? "1px solid #7f1d1d" : assignment.status === "in_progress" ? "1px solid #1e3a5f" : "1px solid #3f3f46"
|
|
1916
2005
|
},
|
|
1917
2006
|
children: badge.label
|
|
1918
2007
|
}
|
|
@@ -1937,8 +2026,8 @@ function TestListScreen({ nav }) {
|
|
|
1937
2026
|
padding: 32
|
|
1938
2027
|
},
|
|
1939
2028
|
children: [
|
|
1940
|
-
/* @__PURE__ */ jsx4("span", { style: { fontSize: 32, marginBottom: 8 }, children: filter === "pending" ? "\u{1F389}" : "\u{1F4CB}" }),
|
|
1941
|
-
/* @__PURE__ */ jsx4("span", { style: { fontSize: 14, color: colors.textMuted }, children: filter === "pending" ? "All tests completed!" : filter === "
|
|
2029
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 32, marginBottom: 8 }, children: filter === "pending" ? "\u{1F389}" : filter === "reopened" ? "\u{1F44D}" : "\u{1F4CB}" }),
|
|
2030
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 14, color: colors.textMuted }, children: filter === "pending" ? "All tests completed!" : filter === "done" ? "No passed tests yet" : filter === "reopened" ? "No reopened issues" : "No tests assigned" })
|
|
1942
2031
|
]
|
|
1943
2032
|
}
|
|
1944
2033
|
),
|
|
@@ -4015,13 +4104,289 @@ var styles4 = {
|
|
|
4015
4104
|
}
|
|
4016
4105
|
};
|
|
4017
4106
|
|
|
4107
|
+
// src/widget/screens/IssueListScreen.tsx
|
|
4108
|
+
import { useState as useState10, useEffect as useEffect7 } from "react";
|
|
4109
|
+
import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
4110
|
+
var CATEGORY_CONFIG = {
|
|
4111
|
+
open: { label: "Open Issues", accent: "#f97316", emptyIcon: "\u2705", emptyText: "No open issues" },
|
|
4112
|
+
done: { label: "Done", accent: "#22c55e", emptyIcon: "\u{1F389}", emptyText: "No completed issues yet" },
|
|
4113
|
+
reopened: { label: "Reopened", accent: "#ef4444", emptyIcon: "\u{1F44D}", emptyText: "No reopened issues" }
|
|
4114
|
+
};
|
|
4115
|
+
var SEVERITY_COLORS = {
|
|
4116
|
+
critical: "#ef4444",
|
|
4117
|
+
high: "#f97316",
|
|
4118
|
+
medium: "#eab308",
|
|
4119
|
+
low: "#71717a"
|
|
4120
|
+
};
|
|
4121
|
+
function IssueListScreen({ nav, category }) {
|
|
4122
|
+
const { client } = useBugBear();
|
|
4123
|
+
const [issues, setIssues] = useState10([]);
|
|
4124
|
+
const [loading, setLoading] = useState10(true);
|
|
4125
|
+
const config = CATEGORY_CONFIG[category];
|
|
4126
|
+
useEffect7(() => {
|
|
4127
|
+
let cancelled = false;
|
|
4128
|
+
setLoading(true);
|
|
4129
|
+
(async () => {
|
|
4130
|
+
if (!client) return;
|
|
4131
|
+
const data = await client.getIssues(category);
|
|
4132
|
+
if (!cancelled) {
|
|
4133
|
+
setIssues(data);
|
|
4134
|
+
setLoading(false);
|
|
4135
|
+
}
|
|
4136
|
+
})();
|
|
4137
|
+
return () => {
|
|
4138
|
+
cancelled = true;
|
|
4139
|
+
};
|
|
4140
|
+
}, [client, category]);
|
|
4141
|
+
if (loading) {
|
|
4142
|
+
return /* @__PURE__ */ jsx14("div", { style: { padding: "40px 0", textAlign: "center" }, children: /* @__PURE__ */ jsx14("div", { style: { color: colors.textMuted, fontSize: 14 }, children: "Loading..." }) });
|
|
4143
|
+
}
|
|
4144
|
+
if (issues.length === 0) {
|
|
4145
|
+
return /* @__PURE__ */ jsxs13("div", { style: { padding: "40px 0", textAlign: "center" }, children: [
|
|
4146
|
+
/* @__PURE__ */ jsx14("div", { style: { fontSize: 36, marginBottom: 8 }, children: config.emptyIcon }),
|
|
4147
|
+
/* @__PURE__ */ jsx14("div", { style: { color: colors.textMuted, fontSize: 14 }, children: config.emptyText })
|
|
4148
|
+
] });
|
|
4149
|
+
}
|
|
4150
|
+
return /* @__PURE__ */ jsx14("div", { children: issues.map((issue) => /* @__PURE__ */ jsxs13(
|
|
4151
|
+
"div",
|
|
4152
|
+
{
|
|
4153
|
+
role: "button",
|
|
4154
|
+
tabIndex: 0,
|
|
4155
|
+
onClick: () => nav.push({ name: "ISSUE_DETAIL", issue }),
|
|
4156
|
+
onKeyDown: (e) => {
|
|
4157
|
+
if (e.key === "Enter" || e.key === " ") nav.push({ name: "ISSUE_DETAIL", issue });
|
|
4158
|
+
},
|
|
4159
|
+
style: {
|
|
4160
|
+
backgroundColor: colors.card,
|
|
4161
|
+
border: `1px solid ${colors.border}`,
|
|
4162
|
+
borderRadius: 10,
|
|
4163
|
+
padding: "12px 14px",
|
|
4164
|
+
marginBottom: 8,
|
|
4165
|
+
cursor: "pointer",
|
|
4166
|
+
userSelect: "none"
|
|
4167
|
+
},
|
|
4168
|
+
children: [
|
|
4169
|
+
/* @__PURE__ */ jsxs13("div", { style: { display: "flex", alignItems: "flex-start", gap: 8 }, children: [
|
|
4170
|
+
issue.severity && /* @__PURE__ */ jsx14(
|
|
4171
|
+
"span",
|
|
4172
|
+
{
|
|
4173
|
+
style: {
|
|
4174
|
+
width: 8,
|
|
4175
|
+
height: 8,
|
|
4176
|
+
borderRadius: 4,
|
|
4177
|
+
backgroundColor: SEVERITY_COLORS[issue.severity] || colors.textDim,
|
|
4178
|
+
flexShrink: 0,
|
|
4179
|
+
marginTop: 5
|
|
4180
|
+
}
|
|
4181
|
+
}
|
|
4182
|
+
),
|
|
4183
|
+
/* @__PURE__ */ jsx14("span", { style: {
|
|
4184
|
+
fontSize: 13,
|
|
4185
|
+
fontWeight: 600,
|
|
4186
|
+
color: colors.textPrimary,
|
|
4187
|
+
flex: 1,
|
|
4188
|
+
overflow: "hidden",
|
|
4189
|
+
textOverflow: "ellipsis",
|
|
4190
|
+
whiteSpace: "nowrap"
|
|
4191
|
+
}, children: issue.title })
|
|
4192
|
+
] }),
|
|
4193
|
+
/* @__PURE__ */ jsxs13("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 6 }, children: [
|
|
4194
|
+
issue.route && /* @__PURE__ */ jsx14("span", { style: { fontSize: 11, color: colors.textDim, maxWidth: "60%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: issue.route }),
|
|
4195
|
+
/* @__PURE__ */ jsx14("span", { style: { fontSize: 11, color: colors.textDim, marginLeft: "auto" }, children: formatRelativeTime(issue.updatedAt) })
|
|
4196
|
+
] }),
|
|
4197
|
+
category === "done" && issue.verifiedByName && /* @__PURE__ */ jsxs13("div", { style: {
|
|
4198
|
+
display: "inline-flex",
|
|
4199
|
+
alignItems: "center",
|
|
4200
|
+
gap: 4,
|
|
4201
|
+
backgroundColor: "#14532d",
|
|
4202
|
+
border: "1px solid #166534",
|
|
4203
|
+
borderRadius: 6,
|
|
4204
|
+
padding: "2px 8px",
|
|
4205
|
+
marginTop: 6,
|
|
4206
|
+
fontSize: 10,
|
|
4207
|
+
fontWeight: 600,
|
|
4208
|
+
color: "#4ade80"
|
|
4209
|
+
}, children: [
|
|
4210
|
+
"\u2714 Verified by ",
|
|
4211
|
+
issue.verifiedByName
|
|
4212
|
+
] }),
|
|
4213
|
+
category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ jsxs13("div", { style: {
|
|
4214
|
+
display: "inline-flex",
|
|
4215
|
+
alignItems: "center",
|
|
4216
|
+
gap: 4,
|
|
4217
|
+
backgroundColor: "#422006",
|
|
4218
|
+
border: "1px solid #854d0e",
|
|
4219
|
+
borderRadius: 6,
|
|
4220
|
+
padding: "2px 8px",
|
|
4221
|
+
marginTop: 6,
|
|
4222
|
+
fontSize: 10,
|
|
4223
|
+
fontWeight: 600,
|
|
4224
|
+
color: "#fbbf24",
|
|
4225
|
+
maxWidth: "100%",
|
|
4226
|
+
overflow: "hidden",
|
|
4227
|
+
textOverflow: "ellipsis",
|
|
4228
|
+
whiteSpace: "nowrap"
|
|
4229
|
+
}, children: [
|
|
4230
|
+
"\u{1F504} Retest of: ",
|
|
4231
|
+
issue.originalBugTitle
|
|
4232
|
+
] })
|
|
4233
|
+
]
|
|
4234
|
+
},
|
|
4235
|
+
issue.id
|
|
4236
|
+
)) });
|
|
4237
|
+
}
|
|
4238
|
+
|
|
4239
|
+
// src/widget/screens/IssueDetailScreen.tsx
|
|
4240
|
+
import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
4241
|
+
var STATUS_LABELS = {
|
|
4242
|
+
new: { label: "New", bg: "#1e3a5f", color: "#60a5fa" },
|
|
4243
|
+
triaging: { label: "Triaging", bg: "#1e3a5f", color: "#60a5fa" },
|
|
4244
|
+
confirmed: { label: "Confirmed", bg: "#422006", color: "#fbbf24" },
|
|
4245
|
+
in_progress: { label: "In Progress", bg: "#1e3a5f", color: "#60a5fa" },
|
|
4246
|
+
fixed: { label: "Fixed", bg: "#14532d", color: "#4ade80" },
|
|
4247
|
+
ready_to_test: { label: "Ready to Test", bg: "#422006", color: "#fbbf24" },
|
|
4248
|
+
verified: { label: "Verified", bg: "#14532d", color: "#4ade80" },
|
|
4249
|
+
resolved: { label: "Resolved", bg: "#14532d", color: "#4ade80" },
|
|
4250
|
+
reviewed: { label: "Reviewed", bg: "#14532d", color: "#4ade80" },
|
|
4251
|
+
closed: { label: "Closed", bg: "#27272a", color: "#71717a" },
|
|
4252
|
+
wont_fix: { label: "Won't Fix", bg: "#27272a", color: "#71717a" },
|
|
4253
|
+
duplicate: { label: "Duplicate", bg: "#27272a", color: "#71717a" }
|
|
4254
|
+
};
|
|
4255
|
+
var SEVERITY_CONFIG = {
|
|
4256
|
+
critical: { label: "Critical", color: "#ef4444", bg: "#7f1d1d" },
|
|
4257
|
+
high: { label: "High", color: "#f97316", bg: "#431407" },
|
|
4258
|
+
medium: { label: "Medium", color: "#eab308", bg: "#422006" },
|
|
4259
|
+
low: { label: "Low", color: "#71717a", bg: "#27272a" }
|
|
4260
|
+
};
|
|
4261
|
+
function IssueDetailScreen({ nav, issue }) {
|
|
4262
|
+
const statusConfig = STATUS_LABELS[issue.status] || { label: issue.status, bg: "#27272a", color: "#a1a1aa" };
|
|
4263
|
+
const severityConfig = issue.severity ? SEVERITY_CONFIG[issue.severity] : null;
|
|
4264
|
+
return /* @__PURE__ */ jsxs14("div", { children: [
|
|
4265
|
+
/* @__PURE__ */ jsxs14("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginBottom: 12 }, children: [
|
|
4266
|
+
/* @__PURE__ */ jsx15("span", { style: {
|
|
4267
|
+
backgroundColor: statusConfig.bg,
|
|
4268
|
+
color: statusConfig.color,
|
|
4269
|
+
fontSize: 11,
|
|
4270
|
+
fontWeight: 600,
|
|
4271
|
+
padding: "3px 10px",
|
|
4272
|
+
borderRadius: 6
|
|
4273
|
+
}, children: statusConfig.label }),
|
|
4274
|
+
severityConfig && /* @__PURE__ */ jsx15("span", { style: {
|
|
4275
|
+
backgroundColor: severityConfig.bg,
|
|
4276
|
+
color: severityConfig.color,
|
|
4277
|
+
fontSize: 11,
|
|
4278
|
+
fontWeight: 600,
|
|
4279
|
+
padding: "3px 10px",
|
|
4280
|
+
borderRadius: 6
|
|
4281
|
+
}, children: severityConfig.label })
|
|
4282
|
+
] }),
|
|
4283
|
+
/* @__PURE__ */ jsx15("h3", { style: { fontSize: 16, fontWeight: 700, color: colors.textPrimary, margin: "0 0 8px 0", lineHeight: 1.3 }, children: issue.title }),
|
|
4284
|
+
issue.route && /* @__PURE__ */ jsx15("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 12 }, children: issue.route }),
|
|
4285
|
+
issue.description && /* @__PURE__ */ jsx15("div", { style: {
|
|
4286
|
+
backgroundColor: colors.card,
|
|
4287
|
+
border: `1px solid ${colors.border}`,
|
|
4288
|
+
borderRadius: 8,
|
|
4289
|
+
padding: 12,
|
|
4290
|
+
marginBottom: 12,
|
|
4291
|
+
fontSize: 13,
|
|
4292
|
+
color: colors.textSecondary,
|
|
4293
|
+
lineHeight: 1.5,
|
|
4294
|
+
whiteSpace: "pre-wrap",
|
|
4295
|
+
wordBreak: "break-word"
|
|
4296
|
+
}, children: issue.description }),
|
|
4297
|
+
issue.verifiedByName && /* @__PURE__ */ jsxs14("div", { style: {
|
|
4298
|
+
backgroundColor: "#14532d",
|
|
4299
|
+
border: "1px solid #166534",
|
|
4300
|
+
borderRadius: 8,
|
|
4301
|
+
padding: 12,
|
|
4302
|
+
marginBottom: 12
|
|
4303
|
+
}, children: [
|
|
4304
|
+
/* @__PURE__ */ jsxs14("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
|
|
4305
|
+
/* @__PURE__ */ jsx15("span", { style: { fontSize: 16 }, children: "\u2705" }),
|
|
4306
|
+
/* @__PURE__ */ jsx15("span", { style: { fontSize: 13, fontWeight: 600, color: "#4ade80" }, children: "Retesting Proof" })
|
|
4307
|
+
] }),
|
|
4308
|
+
/* @__PURE__ */ jsxs14("div", { style: { fontSize: 12, color: "#86efac" }, children: [
|
|
4309
|
+
"Verified by ",
|
|
4310
|
+
/* @__PURE__ */ jsx15("strong", { children: issue.verifiedByName }),
|
|
4311
|
+
issue.verifiedAt && /* @__PURE__ */ jsxs14("span", { children: [
|
|
4312
|
+
" on ",
|
|
4313
|
+
new Date(issue.verifiedAt).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" })
|
|
4314
|
+
] })
|
|
4315
|
+
] })
|
|
4316
|
+
] }),
|
|
4317
|
+
issue.originalBugTitle && /* @__PURE__ */ jsxs14("div", { style: {
|
|
4318
|
+
backgroundColor: "#422006",
|
|
4319
|
+
border: "1px solid #854d0e",
|
|
4320
|
+
borderRadius: 8,
|
|
4321
|
+
padding: 12,
|
|
4322
|
+
marginBottom: 12
|
|
4323
|
+
}, children: [
|
|
4324
|
+
/* @__PURE__ */ jsxs14("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
|
|
4325
|
+
/* @__PURE__ */ jsx15("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
|
|
4326
|
+
/* @__PURE__ */ jsx15("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Original Bug" })
|
|
4327
|
+
] }),
|
|
4328
|
+
/* @__PURE__ */ jsxs14("div", { style: { fontSize: 12, color: "#fde68a" }, children: [
|
|
4329
|
+
"Retest of: ",
|
|
4330
|
+
/* @__PURE__ */ jsx15("strong", { children: issue.originalBugTitle })
|
|
4331
|
+
] })
|
|
4332
|
+
] }),
|
|
4333
|
+
issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ jsxs14("div", { style: { marginBottom: 12 }, children: [
|
|
4334
|
+
/* @__PURE__ */ jsxs14("div", { style: { fontSize: 12, fontWeight: 600, color: colors.textMuted, marginBottom: 8 }, children: [
|
|
4335
|
+
"Screenshots (",
|
|
4336
|
+
issue.screenshotUrls.length,
|
|
4337
|
+
")"
|
|
4338
|
+
] }),
|
|
4339
|
+
/* @__PURE__ */ jsx15("div", { style: { display: "flex", gap: 8, overflowX: "auto" }, children: issue.screenshotUrls.map((url, i) => /* @__PURE__ */ jsx15(
|
|
4340
|
+
"a",
|
|
4341
|
+
{
|
|
4342
|
+
href: url,
|
|
4343
|
+
target: "_blank",
|
|
4344
|
+
rel: "noopener noreferrer",
|
|
4345
|
+
style: { flexShrink: 0 },
|
|
4346
|
+
children: /* @__PURE__ */ jsx15(
|
|
4347
|
+
"img",
|
|
4348
|
+
{
|
|
4349
|
+
src: url,
|
|
4350
|
+
alt: `Screenshot ${i + 1}`,
|
|
4351
|
+
style: {
|
|
4352
|
+
width: 80,
|
|
4353
|
+
height: 60,
|
|
4354
|
+
objectFit: "cover",
|
|
4355
|
+
borderRadius: 6,
|
|
4356
|
+
border: `1px solid ${colors.border}`
|
|
4357
|
+
}
|
|
4358
|
+
}
|
|
4359
|
+
)
|
|
4360
|
+
},
|
|
4361
|
+
i
|
|
4362
|
+
)) })
|
|
4363
|
+
] }),
|
|
4364
|
+
/* @__PURE__ */ jsxs14("div", { style: {
|
|
4365
|
+
borderTop: `1px solid ${colors.border}`,
|
|
4366
|
+
paddingTop: 12,
|
|
4367
|
+
marginTop: 4
|
|
4368
|
+
}, children: [
|
|
4369
|
+
issue.reporterName && /* @__PURE__ */ jsxs14("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 4 }, children: [
|
|
4370
|
+
"Reported by ",
|
|
4371
|
+
issue.reporterName
|
|
4372
|
+
] }),
|
|
4373
|
+
/* @__PURE__ */ jsxs14("div", { style: { fontSize: 11, color: colors.textDim }, children: [
|
|
4374
|
+
"Created ",
|
|
4375
|
+
formatRelativeTime(issue.createdAt),
|
|
4376
|
+
" \xB7 Updated ",
|
|
4377
|
+
formatRelativeTime(issue.updatedAt)
|
|
4378
|
+
] })
|
|
4379
|
+
] })
|
|
4380
|
+
] });
|
|
4381
|
+
}
|
|
4382
|
+
|
|
4018
4383
|
// src/widget/logo.ts
|
|
4019
4384
|
var BUGBEAR_LOGO_BASE64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAJhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAASQBAACAAAAFAAAAISgAQADAAAAAQABAACgAgAEAAAAAQAAAGCgAwAEAAAAAQAAAGAAAAAAMjAyNjowMToyNCAxNjoyMTozOABbbVCuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpJcHRjNHhtcEV4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPmZjNzJlN2Q2LTYyYTEtNDE1ZS04MjY5LWM2NjA4MjY0OWRiMDwvSXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyNi0wMS0yNFQxNjoyMTozODwveG1wOkNyZWF0ZURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+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";
|
|
4020
4385
|
|
|
4021
4386
|
// src/BugBearPanel.tsx
|
|
4022
|
-
import { Fragment as Fragment4, jsx as
|
|
4387
|
+
import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
4023
4388
|
function BugBearIcon({ size = 24 }) {
|
|
4024
|
-
return /* @__PURE__ */
|
|
4389
|
+
return /* @__PURE__ */ jsx16(
|
|
4025
4390
|
"img",
|
|
4026
4391
|
{
|
|
4027
4392
|
src: BUGBEAR_LOGO_BASE64,
|
|
@@ -4066,12 +4431,12 @@ function BugBearPanel({
|
|
|
4066
4431
|
}) {
|
|
4067
4432
|
const { shouldShowWidget, testerInfo, assignments, isLoading, unreadCount } = useBugBear();
|
|
4068
4433
|
const { currentScreen, canGoBack, push, pop, replace, reset } = useNavigation();
|
|
4069
|
-
const [collapsed, setCollapsed] =
|
|
4070
|
-
const [panelPosition, setPanelPosition] =
|
|
4071
|
-
const [isDragging, setIsDragging] =
|
|
4434
|
+
const [collapsed, setCollapsed] = useState11(defaultCollapsed);
|
|
4435
|
+
const [panelPosition, setPanelPosition] = useState11(null);
|
|
4436
|
+
const [isDragging, setIsDragging] = useState11(false);
|
|
4072
4437
|
const dragStartRef = useRef3(null);
|
|
4073
4438
|
const panelRef = useRef3(null);
|
|
4074
|
-
|
|
4439
|
+
useEffect8(() => {
|
|
4075
4440
|
if (typeof window === "undefined") return;
|
|
4076
4441
|
try {
|
|
4077
4442
|
const saved = localStorage.getItem(STORAGE_KEY);
|
|
@@ -4085,7 +4450,7 @@ function BugBearPanel({
|
|
|
4085
4450
|
setPanelPosition(getDefaultPosition(position));
|
|
4086
4451
|
}
|
|
4087
4452
|
}, [position]);
|
|
4088
|
-
|
|
4453
|
+
useEffect8(() => {
|
|
4089
4454
|
if (panelPosition && typeof window !== "undefined") {
|
|
4090
4455
|
try {
|
|
4091
4456
|
localStorage.setItem(STORAGE_KEY, JSON.stringify(panelPosition));
|
|
@@ -4093,7 +4458,7 @@ function BugBearPanel({
|
|
|
4093
4458
|
}
|
|
4094
4459
|
}
|
|
4095
4460
|
}, [panelPosition]);
|
|
4096
|
-
|
|
4461
|
+
useEffect8(() => {
|
|
4097
4462
|
if (typeof window === "undefined") return;
|
|
4098
4463
|
const handleResize = () => {
|
|
4099
4464
|
setPanelPosition((prev) => prev ? clampPosition(prev) : getDefaultPosition(position));
|
|
@@ -4114,7 +4479,7 @@ function BugBearPanel({
|
|
|
4114
4479
|
panelY: panelPosition.y
|
|
4115
4480
|
};
|
|
4116
4481
|
}, [draggable, panelPosition]);
|
|
4117
|
-
|
|
4482
|
+
useEffect8(() => {
|
|
4118
4483
|
if (!isDragging) return;
|
|
4119
4484
|
const handleMouseMove = (e) => {
|
|
4120
4485
|
if (!dragStartRef.current) return;
|
|
@@ -4168,6 +4533,10 @@ function BugBearPanel({
|
|
|
4168
4533
|
return currentScreen.thread.subject || "Thread";
|
|
4169
4534
|
case "COMPOSE_MESSAGE":
|
|
4170
4535
|
return "New Message";
|
|
4536
|
+
case "ISSUE_LIST":
|
|
4537
|
+
return currentScreen.category === "open" ? "Open Issues" : currentScreen.category === "done" ? "Done" : "Reopened";
|
|
4538
|
+
case "ISSUE_DETAIL":
|
|
4539
|
+
return "Issue Detail";
|
|
4171
4540
|
case "PROFILE":
|
|
4172
4541
|
return "Profile";
|
|
4173
4542
|
default:
|
|
@@ -4182,33 +4551,37 @@ function BugBearPanel({
|
|
|
4182
4551
|
const renderScreen = () => {
|
|
4183
4552
|
switch (currentScreen.name) {
|
|
4184
4553
|
case "HOME":
|
|
4185
|
-
return /* @__PURE__ */
|
|
4554
|
+
return /* @__PURE__ */ jsx16(HomeScreen, { nav });
|
|
4186
4555
|
case "TEST_DETAIL":
|
|
4187
|
-
return /* @__PURE__ */
|
|
4556
|
+
return /* @__PURE__ */ jsx16(TestDetailScreen, { testId: currentScreen.testId, nav });
|
|
4188
4557
|
case "TEST_LIST":
|
|
4189
|
-
return /* @__PURE__ */
|
|
4558
|
+
return /* @__PURE__ */ jsx16(TestListScreen, { nav });
|
|
4190
4559
|
case "TEST_FEEDBACK":
|
|
4191
|
-
return /* @__PURE__ */
|
|
4560
|
+
return /* @__PURE__ */ jsx16(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
|
|
4192
4561
|
case "REPORT":
|
|
4193
|
-
return /* @__PURE__ */
|
|
4562
|
+
return /* @__PURE__ */ jsx16(ReportScreen, { nav, prefill: currentScreen.prefill });
|
|
4194
4563
|
case "REPORT_SUCCESS":
|
|
4195
|
-
return /* @__PURE__ */
|
|
4564
|
+
return /* @__PURE__ */ jsx16(ReportSuccessScreen, { nav });
|
|
4196
4565
|
case "MESSAGE_LIST":
|
|
4197
|
-
return /* @__PURE__ */
|
|
4566
|
+
return /* @__PURE__ */ jsx16(MessageListScreen, { nav });
|
|
4198
4567
|
case "THREAD_DETAIL":
|
|
4199
|
-
return /* @__PURE__ */
|
|
4568
|
+
return /* @__PURE__ */ jsx16(ThreadDetailScreen, { thread: currentScreen.thread, nav });
|
|
4200
4569
|
case "COMPOSE_MESSAGE":
|
|
4201
|
-
return /* @__PURE__ */
|
|
4570
|
+
return /* @__PURE__ */ jsx16(ComposeMessageScreen, { nav });
|
|
4571
|
+
case "ISSUE_LIST":
|
|
4572
|
+
return /* @__PURE__ */ jsx16(IssueListScreen, { nav, category: currentScreen.category });
|
|
4573
|
+
case "ISSUE_DETAIL":
|
|
4574
|
+
return /* @__PURE__ */ jsx16(IssueDetailScreen, { nav, issue: currentScreen.issue });
|
|
4202
4575
|
case "PROFILE":
|
|
4203
|
-
return /* @__PURE__ */
|
|
4576
|
+
return /* @__PURE__ */ jsx16(ProfileScreen, { nav });
|
|
4204
4577
|
default:
|
|
4205
|
-
return /* @__PURE__ */
|
|
4578
|
+
return /* @__PURE__ */ jsx16(HomeScreen, { nav });
|
|
4206
4579
|
}
|
|
4207
4580
|
};
|
|
4208
4581
|
if (typeof document === "undefined") return null;
|
|
4209
4582
|
const headerTitle = getHeaderTitle();
|
|
4210
4583
|
return createPortal(
|
|
4211
|
-
/* @__PURE__ */
|
|
4584
|
+
/* @__PURE__ */ jsxs15(
|
|
4212
4585
|
"div",
|
|
4213
4586
|
{
|
|
4214
4587
|
ref: panelRef,
|
|
@@ -4227,7 +4600,7 @@ function BugBearPanel({
|
|
|
4227
4600
|
},
|
|
4228
4601
|
onMouseDown: handleMouseDown,
|
|
4229
4602
|
children: [
|
|
4230
|
-
collapsed && /* @__PURE__ */
|
|
4603
|
+
collapsed && /* @__PURE__ */ jsxs15(
|
|
4231
4604
|
"button",
|
|
4232
4605
|
{
|
|
4233
4606
|
onClick: () => setCollapsed(false),
|
|
@@ -4249,9 +4622,9 @@ function BugBearPanel({
|
|
|
4249
4622
|
fontWeight: 500
|
|
4250
4623
|
},
|
|
4251
4624
|
children: [
|
|
4252
|
-
/* @__PURE__ */
|
|
4253
|
-
/* @__PURE__ */
|
|
4254
|
-
badgeCount > 0 && /* @__PURE__ */
|
|
4625
|
+
/* @__PURE__ */ jsx16(BugBearIcon, { size: 24 }),
|
|
4626
|
+
/* @__PURE__ */ jsx16("span", { children: "BugBear" }),
|
|
4627
|
+
badgeCount > 0 && /* @__PURE__ */ jsx16("span", { style: {
|
|
4255
4628
|
backgroundColor: "#fff",
|
|
4256
4629
|
color: colors.blue,
|
|
4257
4630
|
fontSize: "0.75rem",
|
|
@@ -4262,7 +4635,7 @@ function BugBearPanel({
|
|
|
4262
4635
|
]
|
|
4263
4636
|
}
|
|
4264
4637
|
),
|
|
4265
|
-
!collapsed && /* @__PURE__ */
|
|
4638
|
+
!collapsed && /* @__PURE__ */ jsxs15("div", { style: {
|
|
4266
4639
|
width: PANEL_WIDTH,
|
|
4267
4640
|
backgroundColor: colors.bg,
|
|
4268
4641
|
borderRadius: 12,
|
|
@@ -4270,7 +4643,7 @@ function BugBearPanel({
|
|
|
4270
4643
|
overflow: "hidden",
|
|
4271
4644
|
boxShadow: "0 25px 50px -12px rgba(0,0,0,0.5)"
|
|
4272
4645
|
}, children: [
|
|
4273
|
-
/* @__PURE__ */
|
|
4646
|
+
/* @__PURE__ */ jsxs15(
|
|
4274
4647
|
"div",
|
|
4275
4648
|
{
|
|
4276
4649
|
"data-drag-handle": true,
|
|
@@ -4286,7 +4659,7 @@ function BugBearPanel({
|
|
|
4286
4659
|
cursor: draggable ? isDragging ? "grabbing" : "grab" : "default"
|
|
4287
4660
|
},
|
|
4288
4661
|
children: [
|
|
4289
|
-
/* @__PURE__ */
|
|
4662
|
+
/* @__PURE__ */ jsx16("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ jsx16(
|
|
4290
4663
|
"button",
|
|
4291
4664
|
{
|
|
4292
4665
|
onClick: pop,
|
|
@@ -4302,14 +4675,14 @@ function BugBearPanel({
|
|
|
4302
4675
|
},
|
|
4303
4676
|
children: "\u2190 Back"
|
|
4304
4677
|
}
|
|
4305
|
-
) : /* @__PURE__ */
|
|
4306
|
-
/* @__PURE__ */
|
|
4307
|
-
/* @__PURE__ */
|
|
4308
|
-
/* @__PURE__ */
|
|
4309
|
-
/* @__PURE__ */
|
|
4310
|
-
draggable && /* @__PURE__ */
|
|
4678
|
+
) : /* @__PURE__ */ jsxs15(Fragment4, { children: [
|
|
4679
|
+
/* @__PURE__ */ jsx16(BugBearIcon, { size: 28 }),
|
|
4680
|
+
/* @__PURE__ */ jsxs15("div", { children: [
|
|
4681
|
+
/* @__PURE__ */ jsxs15("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
4682
|
+
/* @__PURE__ */ jsx16("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
|
|
4683
|
+
draggable && /* @__PURE__ */ jsx16("span", { style: { color: colors.textMuted, fontSize: "0.75rem" }, title: "Drag to move, double-click to reset", children: "\u22EE\u22EE" })
|
|
4311
4684
|
] }),
|
|
4312
|
-
testerInfo && /* @__PURE__ */
|
|
4685
|
+
testerInfo && /* @__PURE__ */ jsxs15(
|
|
4313
4686
|
"button",
|
|
4314
4687
|
{
|
|
4315
4688
|
onClick: () => push({ name: "PROFILE" }),
|
|
@@ -4327,13 +4700,13 @@ function BugBearPanel({
|
|
|
4327
4700
|
},
|
|
4328
4701
|
children: [
|
|
4329
4702
|
testerInfo.name,
|
|
4330
|
-
/* @__PURE__ */
|
|
4703
|
+
/* @__PURE__ */ jsx16("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
|
|
4331
4704
|
]
|
|
4332
4705
|
}
|
|
4333
4706
|
)
|
|
4334
4707
|
] })
|
|
4335
4708
|
] }) }),
|
|
4336
|
-
headerTitle ? /* @__PURE__ */
|
|
4709
|
+
headerTitle ? /* @__PURE__ */ jsx16("span", { style: {
|
|
4337
4710
|
fontSize: "0.8125rem",
|
|
4338
4711
|
fontWeight: 600,
|
|
4339
4712
|
color: colors.textSecondary,
|
|
@@ -4343,7 +4716,7 @@ function BugBearPanel({
|
|
|
4343
4716
|
textOverflow: "ellipsis",
|
|
4344
4717
|
whiteSpace: "nowrap"
|
|
4345
4718
|
}, children: headerTitle }) : null,
|
|
4346
|
-
/* @__PURE__ */
|
|
4719
|
+
/* @__PURE__ */ jsx16(
|
|
4347
4720
|
"button",
|
|
4348
4721
|
{
|
|
4349
4722
|
onClick: handleClose,
|
|
@@ -4367,13 +4740,13 @@ function BugBearPanel({
|
|
|
4367
4740
|
]
|
|
4368
4741
|
}
|
|
4369
4742
|
),
|
|
4370
|
-
/* @__PURE__ */
|
|
4743
|
+
/* @__PURE__ */ jsx16("div", { style: {
|
|
4371
4744
|
padding: 16,
|
|
4372
4745
|
maxHeight: 400,
|
|
4373
4746
|
overflowY: "auto",
|
|
4374
4747
|
backgroundColor: colors.bg,
|
|
4375
4748
|
color: colors.textSecondary
|
|
4376
|
-
}, children: isLoading ? /* @__PURE__ */
|
|
4749
|
+
}, children: isLoading ? /* @__PURE__ */ jsx16("div", { style: { padding: "60px 0", textAlign: "center" }, children: /* @__PURE__ */ jsx16("div", { style: { color: colors.textMuted, fontSize: "0.875rem" }, children: "Loading..." }) }) : renderScreen() })
|
|
4377
4750
|
] })
|
|
4378
4751
|
]
|
|
4379
4752
|
}
|
|
@@ -4385,7 +4758,7 @@ function BugBearPanel({
|
|
|
4385
4758
|
// src/BugBearErrorBoundary.tsx
|
|
4386
4759
|
import { Component } from "react";
|
|
4387
4760
|
import { captureError, contextCapture as contextCapture2 } from "@bbearai/core";
|
|
4388
|
-
import { jsx as
|
|
4761
|
+
import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4389
4762
|
var BugBearErrorBoundary = class extends Component {
|
|
4390
4763
|
constructor(props) {
|
|
4391
4764
|
super(props);
|
|
@@ -4430,7 +4803,7 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4430
4803
|
if (fallback) {
|
|
4431
4804
|
return fallback;
|
|
4432
4805
|
}
|
|
4433
|
-
return /* @__PURE__ */
|
|
4806
|
+
return /* @__PURE__ */ jsxs16(
|
|
4434
4807
|
"div",
|
|
4435
4808
|
{
|
|
4436
4809
|
style: {
|
|
@@ -4442,13 +4815,13 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4442
4815
|
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
|
|
4443
4816
|
},
|
|
4444
4817
|
children: [
|
|
4445
|
-
/* @__PURE__ */
|
|
4446
|
-
/* @__PURE__ */
|
|
4447
|
-
/* @__PURE__ */
|
|
4818
|
+
/* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
|
|
4819
|
+
/* @__PURE__ */ jsx17("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
|
|
4820
|
+
/* @__PURE__ */ jsx17("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
|
|
4448
4821
|
] }),
|
|
4449
|
-
/* @__PURE__ */
|
|
4450
|
-
/* @__PURE__ */
|
|
4451
|
-
/* @__PURE__ */
|
|
4822
|
+
/* @__PURE__ */ jsx17("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
|
|
4823
|
+
/* @__PURE__ */ jsxs16("div", { style: { display: "flex", gap: "8px" }, children: [
|
|
4824
|
+
/* @__PURE__ */ jsx17(
|
|
4452
4825
|
"button",
|
|
4453
4826
|
{
|
|
4454
4827
|
onClick: this.reset,
|
|
@@ -4465,7 +4838,7 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4465
4838
|
children: "Try Again"
|
|
4466
4839
|
}
|
|
4467
4840
|
),
|
|
4468
|
-
/* @__PURE__ */
|
|
4841
|
+
/* @__PURE__ */ jsx17(
|
|
4469
4842
|
"button",
|
|
4470
4843
|
{
|
|
4471
4844
|
onClick: () => window.location.reload(),
|
|
@@ -4483,7 +4856,7 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4483
4856
|
}
|
|
4484
4857
|
)
|
|
4485
4858
|
] }),
|
|
4486
|
-
/* @__PURE__ */
|
|
4859
|
+
/* @__PURE__ */ jsx17("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
|
|
4487
4860
|
]
|
|
4488
4861
|
}
|
|
4489
4862
|
);
|